)>}]
شركة التطبيقات المتكاملة لتصميم وبرمجة البرمجيات الخاصة ش.ش.و.
Integrated Applications Programming Company
Home » Code Library » StaffIdentityUser (Ia.Ftn.Cl.Models.Data)

Public general use code classes and xml files that we've compiled and used over the years:

Staff Support Class for Fixed Telecommunications Network (FTN) Ia.Ftn.Cl.Models.Data Model.

    1: using Microsoft.AspNetCore.Http;
    2: using Microsoft.AspNetCore.Identity;
    3: using System;
    4: using System.Collections.Generic;
    5: using System.Linq;
    6: using System.Security.Claims;
    7:  
    8: namespace Ia.Ftn.Cl.Models.Data
    9: {
   10:     ////////////////////////////////////////////////////////////////////////////
   11:  
   12:     /// <summary publish="true">
   13:     /// Staff Support Class for Fixed Telecommunications Network (FTN) Ia.Ftn.Cl.Models.Data Model.
   14:     /// </summary>
   15:     /// 
   16:     /// <remarks> 
   17:     /// Copyright © 2006-2024 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   18:     /// </remarks> 
   19:     public static class StaffIdentityUser
   20:     {
   21:         private static List<Ia.Ftn.Cl.Models.StaffIdentityUser> staffIdentityUserList;
   22:  
   23:         private static readonly object objectLock = new object();
   24:  
   25:         /////////////////////////////////////////////////////////////////////////////////
   26:  
   27:         /// <summary>
   28:         ///
   29:         /// </summary>
   30:         public static Ia.Ftn.Cl.Models.StaffIdentityUser CurrentStaffIdentityUser(UserManager<Ia.Ftn.Cl.Models.StaffIdentityUser> userManager, ClaimsPrincipal User)
   31:         {
   32:             var staffIdentityUser = userManager.GetUserAsync(User).Result;
   33:  
   34:             if (staffIdentityUser != null)
   35:             {
   36:                 var list = Ia.Ftn.Cl.Models.Data.StaffIdentityUser.List();
   37:  
   38:                 staffIdentityUser = (from l in list where l.Id == staffIdentityUser.Id select l).SingleOrDefault();
   39:             }
   40:  
   41:             return staffIdentityUser;
   42:         }
   43:  
   44:         ////////////////////////////////////////////////////////////////////////////
   45:  
   46:         /// <summary>
   47:         ///
   48:         /// </summary>
   49:         public static List<Ia.Ftn.Cl.Models.StaffIdentityUser> List()
   50:         {
   51:             if (staffIdentityUserList == null || staffIdentityUserList.Count == 0)
   52:             {
   53:                 lock (objectLock)
   54:                 {
   55:                     staffIdentityUserList = Ia.Ftn.Cl.Models.Data.StaffIdentityUser._List();
   56:                 }
   57:             }
   58:  
   59:             return staffIdentityUserList;
   60:         }
   61:  
   62:         ////////////////////////////////////////////////////////////////////////////
   63:  
   64:         /// <summary>
   65:         ///
   66:         /// </summary>
   67:         private static List<Ia.Ftn.Cl.Models.StaffIdentityUser> _List()
   68:         {
   69:             string frameworkId;
   70:             string userId;
   71:             List<Ia.Ftn.Cl.Models.StaffIdentityUser> staffIdentityUserList;
   72:  
   73:             staffIdentityUserList = Ia.Ftn.Cl.Models.Identity.StaffIdentityUserList();
   74:  
   75:             var frameworkList = Ia.Ftn.Cl.Models.Data.Administration.FrameworkList;
   76:  
   77:             if (staffIdentityUserList != null && staffIdentityUserList.Count > 0)
   78:             {
   79:                 if (staffIdentityUserList.Count > 0)
   80:                 {
   81:                     // below: the order of the multiple foreach loops is imporant
   82:  
   83:                     for (int i = 0; i < staffIdentityUserList.Count; i++)
   84:                     {
   85:                         frameworkId = staffIdentityUserList[i].FrameworkId;
   86:                         userId = staffIdentityUserList[i].Id;
   87:  
   88:                         if (!string.IsNullOrEmpty(frameworkId))
   89:                         {
   90:                             staffIdentityUserList[i].Framework = (from u in frameworkList
   91:                                                                   where u.Id == frameworkId
   92:                                                                   select u).SingleOrDefault();
   93:                         }
   94:                     }
   95:  
   96:                     for (int i = 0; i < staffIdentityUserList.Count; i++)
   97:                     {
   98:                         frameworkId = staffIdentityUserList[i].FrameworkId;
   99:  
  100:                         if (!string.IsNullOrEmpty(frameworkId))
  101:                         {
  102:                             if (staffIdentityUserList[i].Framework.Parent != null)
  103:                             {
  104:                                 staffIdentityUserList[i].Head = (from s in staffIdentityUserList
  105:                                                                  where s.IsHead == true && (staffIdentityUserList[i].IsHead == true && s.FrameworkId == staffIdentityUserList[i].Framework.Parent.Id || staffIdentityUserList[i].IsHead == false && s.FrameworkId == staffIdentityUserList[i].Framework.Id)
  106:                                                                  select s).SingleOrDefault();
  107:                             }
  108:                         }
  109:                     }
  110:  
  111:                     for (int i = 0; i < staffIdentityUserList.Count; i++)
  112:                     {
  113:                         frameworkId = staffIdentityUserList[i].FrameworkId;
  114:  
  115:                         if (!string.IsNullOrEmpty(frameworkId))
  116:                         {
  117:                             // below: Subordinates
  118:                             if (staffIdentityUserList[i].IsHead)
  119:                             {
  120:                                 staffIdentityUserList[i].Subordinates = (from s in staffIdentityUserList
  121:                                                                          where s.Id != staffIdentityUserList[i].Id &&
  122:                                                                          (s.Framework != null && s.Framework == staffIdentityUserList[i].Framework && s.IsHead == false)
  123:                                                                          ||
  124:                                                                          (
  125:                                                                          s.Framework != null &&
  126:                                                                          s.Framework.Parent != null &&
  127:                                                                          (s.Framework.Parent == staffIdentityUserList[i].Framework || s.Framework.Parent.Parent != null &&
  128:                                                                           (s.Framework.Parent.Parent == staffIdentityUserList[i].Framework || s.Framework.Parent.Parent.Parent != null &&
  129:                                                                            (s.Framework.Parent.Parent.Parent == staffIdentityUserList[i].Framework || s.Framework.Parent.Parent.Parent != null &&
  130:                                                                             (s.Framework.Parent.Parent.Parent.Parent == staffIdentityUserList[i].Framework)
  131:                                                                            )
  132:                                                                           )
  133:                                                                          )
  134:                                                                          )
  135:                                                                          select s).ToList();
  136:                             }
  137:                             else
  138:                             {
  139:                                 staffIdentityUserList[i].Subordinates = new List<Ia.Ftn.Cl.Models.StaffIdentityUser>();
  140:                             }
  141:  
  142:                             staffIdentityUserList[i].SubordinatesOrSelf = (from s in staffIdentityUserList where s.Id == staffIdentityUserList[i].Id select s).Union(staffIdentityUserList[i].Subordinates).ToList();
  143:  
  144:  
  145:                             // below: Colleagues
  146:                             if (staffIdentityUserList[i].IsHead)
  147:                             {
  148:                                 staffIdentityUserList[i].Colleagues = (from s in staffIdentityUserList
  149:                                                                        where s.Id != staffIdentityUserList[i].Id
  150:                                                                        && s.IsHead
  151:                                                                        && s.Framework.Parent != null && staffIdentityUserList[i].Framework.Parent != null
  152:                                                                        && s.Framework.Parent == staffIdentityUserList[i].Framework.Parent
  153:                                                                        select s).ToList();
  154:                             }
  155:                             else
  156:                             {
  157:                                 staffIdentityUserList[i].Colleagues = (from s in staffIdentityUserList
  158:                                                                        where s.Id != staffIdentityUserList[i].Id
  159:                                                                        && !s.IsHead
  160:                                                                        && s.Framework.Parent == staffIdentityUserList[i].Framework.Parent
  161:                                                                        select s).ToList();
  162:                             }
  163:  
  164:                             staffIdentityUserList[i].ColleaguesOrSelf = (from s in staffIdentityUserList
  165:                                                                          where s.Id == staffIdentityUserList[i].Id
  166:                                                                          select s).Union(staffIdentityUserList[i].Colleagues).ToList();
  167:  
  168:  
  169:                             // below: Heads
  170:                             staffIdentityUserList[i].Heads = new List<Ia.Ftn.Cl.Models.StaffIdentityUser>();
  171:  
  172:                             foreach (var ancestor in staffIdentityUserList[i].Framework.AncestorsOrSelf)
  173:                             {
  174:                                 var head = (from s in staffIdentityUserList where s.Id != staffIdentityUserList[i].Id && s.Framework == ancestor && s.IsHead select s).SingleOrDefault();
  175:  
  176:                                 if (head != null) staffIdentityUserList[i].Heads.Add(head);
  177:                             }
  178:  
  179:                             staffIdentityUserList[i].HeadsOrSelf = (from s in staffIdentityUserList where s.Id == staffIdentityUserList[i].Id select s).Union(staffIdentityUserList[i].Heads).ToList();
  180:                         }
  181:                     }
  182:                 }
  183:  
  184:                 staffIdentityUserList = (from s in staffIdentityUserList select s).OrderByDescending(c => c.IsHead).ThenBy(c => c.FrameworkId).ToList();
  185:             }
  186:             else
  187:             {
  188:                 //throw new ArgumentOutOfRangeException(@"Ia.Ftn.Cl.Model.Data.Staff._List(): userList == null or userList.Count == 0");
  189:             }
  190:  
  191:             return staffIdentityUserList;
  192:         }
  193:  
  194:         ////////////////////////////////////////////////////////////////////////////
  195:  
  196:         /// <summary>
  197:         ///
  198:         /// </summary>
  199:         [Obsolete]
  200:         public static bool Create(Ia.Ftn.Cl.Models.StaffIdentityUser newStaff, out Ia.Cl.Models.Result result)
  201:         {
  202:             var b = false;
  203:             result = new Ia.Cl.Models.Result();
  204:  
  205:             using (var db = new Ia.Ftn.Cl.Db())
  206:             {
  207:                 newStaff.Created = newStaff.Updated = DateTime.UtcNow.AddHours(3);
  208:  
  209:                 db.StaffIdentityUsers.Add(newStaff);
  210:                 db.SaveChanges();
  211:  
  212:                 b = true;
  213:                 result.AddSuccess("Staff " + newStaff.FirstAndMiddleName + " created.");
  214:  
  215:                 staffIdentityUserList = null;
  216:             }
  217:  
  218:             return b;
  219:         }
  220:  
  221:         ////////////////////////////////////////////////////////////////////////////
  222:  
  223:         /// <summary>
  224:         ///
  225:         /// </summary>
  226:         [Obsolete]
  227:         public static Ia.Ftn.Cl.Models.StaffIdentityUser Read(string id)
  228:         {
  229:             Ia.Ftn.Cl.Models.StaffIdentityUser staff;
  230:  
  231:             using (var db = new Ia.Ftn.Cl.Db())
  232:             {
  233:                 staff = (from s in db.StaffIdentityUsers where s.Id == id select s).SingleOrDefault();
  234:             }
  235:  
  236:             return staff;
  237:         }
  238:  
  239:         ////////////////////////////////////////////////////////////////////////////
  240:  
  241:         /// <summary>
  242:         ///
  243:         /// </summary>
  244:         [Obsolete]
  245:         public static List<Ia.Ftn.Cl.Models.StaffIdentityUser> ReadList()
  246:         {
  247:             List<Ia.Ftn.Cl.Models.StaffIdentityUser> list;
  248:  
  249:             using (var db = new Ia.Ftn.Cl.Db())
  250:             {
  251:                 list = (from s in db.StaffIdentityUsers select s).ToList();
  252:             }
  253:  
  254:             return list.ToList();
  255:         }
  256:  
  257:         ////////////////////////////////////////////////////////////////////////////
  258:  
  259:         /// <summary>
  260:         ///
  261:         /// </summary>
  262:         [Obsolete]
  263:         public static bool Update(Ia.Ftn.Cl.Models.StaffIdentityUser updatedStaff, out Ia.Cl.Models.Result result)
  264:         {
  265:             bool b;
  266:             Ia.Ftn.Cl.Models.StaffIdentityUser staff;
  267:  
  268:             b = false;
  269:             result = new Ia.Cl.Models.Result();
  270:  
  271:             using (var db = new Ia.Ftn.Cl.Db())
  272:             {
  273:                 staff = (from s in db.StaffIdentityUsers where s.Id == updatedStaff.Id select s).SingleOrDefault();
  274:  
  275:                 if (staff.Update(updatedStaff))
  276:                 {
  277:                     db.StaffIdentityUsers.Attach(staff);
  278:                     db.Entry(staff).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
  279:                 }
  280:  
  281:                 db.SaveChanges();
  282:  
  283:                 b = true;
  284:                 result.AddSuccess("Staff " + updatedStaff.FirstAndMiddleName + " updated.");
  285:  
  286:                 staffIdentityUserList = null;
  287:             }
  288:  
  289:             return b;
  290:         }
  291:  
  292:         ////////////////////////////////////////////////////////////////////////////
  293:  
  294:         /// <summary>
  295:         ///
  296:         /// </summary>
  297:         [Obsolete]
  298:         public static bool AssignUserId(string staffId, string userId)
  299:         {
  300:             bool b;
  301:             Ia.Ftn.Cl.Models.StaffIdentityUser updatedStaff;
  302:  
  303:             b = false;
  304:  
  305:             using (var db = new Ia.Ftn.Cl.Db())
  306:             {
  307:                 updatedStaff = (from s in db.StaffIdentityUsers where s.Id == staffId select s).SingleOrDefault();
  308:  
  309:                 if (updatedStaff != null)
  310:                 {
  311:                     updatedStaff.Id = userId;
  312:                     updatedStaff.Updated = DateTime.UtcNow.AddHours(3);
  313:  
  314:                     db.StaffIdentityUsers.Attach(updatedStaff);
  315:  
  316:                     var v = db.Entry(updatedStaff);
  317:                     v.State = Microsoft.EntityFrameworkCore.EntityState.Modified;
  318:                     db.SaveChanges();
  319:  
  320:                     b = true;
  321:  
  322:                     staffIdentityUserList = null;
  323:                 }
  324:                 else
  325:                 {
  326:                     b = false;
  327:                 }
  328:             }
  329:  
  330:             return b;
  331:         }
  332:  
  333:         ////////////////////////////////////////////////////////////////////////////
  334:  
  335:         /// <summary>
  336:         ///
  337:         /// </summary>
  338:         [Obsolete]
  339:         public static bool Delete(string id, out Ia.Cl.Models.Result result)
  340:         {
  341:             bool b;
  342:  
  343:             b = false;
  344:             result = new Ia.Cl.Models.Result();
  345:  
  346:             using (var db = new Ia.Ftn.Cl.Db())
  347:             {
  348:                 var staff = (from s in db.StaffIdentityUsers
  349:                              where s.Id == id
  350:                              select s).FirstOrDefault();
  351:  
  352:                 db.StaffIdentityUsers.Remove(staff);
  353:                 db.SaveChanges();
  354:  
  355:                 b = true;
  356:                 result.AddSuccess("Staff " + staff.FirstAndMiddleName + " deleted.");
  357:  
  358:                 staffIdentityUserList = null;
  359:             }
  360:  
  361:             return b;
  362:         }
  363:  
  364:         /*
  365:         ////////////////////////////////////////////////////////////////////////////
  366:         ////////////////////////////////////////////////////////////////////////////
  367: 
  368:         /// <summary>
  369:         ///
  370:         /// </summary>
  371:         [Obsolete]
  372:         public static void CreateStaff(UserManager<Ia.Ftn.Cl.Models.StaffIdentityUser> userManager, RoleManager<IdentityRole> roleManager, Ia.Ftn.Cl.Models.StaffIdentityUser creatorStaff, string firstName, string middleName, string lastName, string frameworkId, bool isHead, string email, string userName, string password, string confirmPassword, out Ia.Cl.Models.Result result)
  373:         {
  374:             bool b;
  375:             string userId;
  376:             DateTime now;
  377:             Ia.Ftn.Cl.Models.StaffIdentityUser _staff;
  378:             Ia.Ftn.Cl.Models.Business.Administration.Framework framework;
  379: 
  380:             b = false;
  381:             result = new Ia.Cl.Models.Result();
  382: 
  383:             if (!string.IsNullOrEmpty(firstName))
  384:             {
  385:                 if (!string.IsNullOrEmpty(lastName))
  386:                 {
  387:                     if (!string.IsNullOrEmpty(frameworkId))
  388:                     {
  389:                         framework = (from f in Ia.Ftn.Cl.Models.Data.Administration.FrameworkList
  390:                                      where f.Id == frameworkId
  391:                                      select f).Single();
  392: 
  393:                         if (!Ia.Ftn.Cl.Models.Business.Authority.FrameworkIsApplication(framework)
  394:                             || Ia.Ftn.Cl.Models.Business.Authority.FrameworkIsApplication(framework) && Ia.Ftn.Cl.Models.Business.Authority.StaffIsApplication(creatorStaff)
  395:                             || Ia.Ftn.Cl.Models.Business.Authority.FrameworkIsApplication(framework) && creatorStaff == null)
  396:                         {
  397:                             if (!isHead || isHead && !Ia.Ftn.Cl.Models.Business.Administration.FrameworkHasAHead(userManager, framework))
  398:                             {
  399:                                 now = DateTime.UtcNow.AddHours(3);
  400: 
  401:                                 var identityUser = userManager.FindByNameAsync(userName).Result;
  402: 
  403:                                 if (identityUser == null)
  404:                                 {
  405:                                     if (string.IsNullOrEmpty(email)) email = userName + "@kuix.com";
  406: 
  407:                                     identityUser = Ia.Ftn.Cl.Models.Data.StaffIdentityUser.CreateUser(userManager, email, userName, password, confirmPassword, out result);
  408: 
  409:                                     if (result.IsSuccessful)
  410:                                     {
  411:                                         userId = identityUser.Id;
  412: 
  413:                                         _staff = new Ia.Ftn.Cl.Models.StaffIdentityUser()
  414:                                         {
  415:                                             FirstName = firstName,
  416:                                             MiddleName = middleName,
  417:                                             LastName = lastName,
  418:                                             IsHead = isHead,
  419:                                             FrameworkId = frameworkId,
  420:                                             Created = now,
  421:                                             Updated = now
  422:                                         };
  423: 
  424:                                         b = Ia.Ftn.Cl.Models.Data.StaffIdentityUser.Create(_staff, out result);
  425: 
  426:                                         if (b)
  427:                                         {
  428:                                             _staff = (from s in Ia.Ftn.Cl.Models.Data.StaffIdentityUser.List(userManager)
  429:                                                       where s.Id == userId
  430:                                                       select s).SingleOrDefault();
  431: 
  432:                                             Ia.Ftn.Cl.Models.Business.Authority.UpdateFrameworkRolesOfStaffIdentityUser(userManager, roleManager, _staff);
  433: 
  434:                                             result.AddSuccess(@"User created: " + userName + " (" + _staff.FullName + ")");
  435:                                         }
  436:                                         else
  437:                                         {
  438:                                             result.AddError(@"CreateUser() succeeded but Staff.Create() failed.");
  439:                                         }
  440:                                     }
  441:                                     else
  442:                                     {
  443:                                         result.AddError("");
  444:                                     }
  445:                                 }
  446:                                 else
  447:                                 {
  448:                                     result.AddError(@"User """ + userName + @""" already exists.");
  449:                                 }
  450:                             }
  451:                             else
  452:                             {
  453:                                 result.AddError("Can't create staff as head because framework already has a head.");
  454:                             }
  455:                         }
  456:                         else
  457:                         {
  458:                             result.AddError("Can't create staff application.");
  459:                         }
  460:                     }
  461:                     else
  462:                     {
  463:                         result.AddError("frameworkId <= 0.");
  464:                     }
  465:                 }
  466:                 else
  467:                 {
  468:                     result.AddError("Last name is null or empty.");
  469:                 }
  470:             }
  471:             else
  472:             {
  473:                 result.AddError("First name is null or empty.");
  474:             }
  475:         }
  476:         */
  477:  
  478:         ////////////////////////////////////////////////////////////////////////////
  479:  
  480:         /// <summary>
  481:         ///
  482:         /// </summary>
  483:         public static Ia.Ftn.Cl.Models.StaffIdentityUser CreateApplicationStaff(UserManager<Ia.Ftn.Cl.Models.StaffIdentityUser> userManager, RoleManager<IdentityRole> roleManager, string firstName, string middleName, string lastName, string email, string userName, string phoneNumber, string password, out IdentityResult identityResult)
  484:         {
  485:             var isHead = true;
  486:  
  487:             var frameworkId = Ia.Ftn.Cl.Models.Business.Authority.FrameworkApplicationId();
  488:  
  489:             return Ia.Ftn.Cl.Models.Identity.CreateUser(userManager, firstName, middleName, lastName, frameworkId, isHead, email, userName, phoneNumber, password, out identityResult);
  490:         }
  491:  
  492:         /*
  493:         ////////////////////////////////////////////////////////////////////////////
  494: 
  495:         /// <summary>
  496:         ///
  497:         /// </summary>
  498:         [Obsolete]
  499:         public static Ia.Ftn.Cl.Models.StaffIdentityUser CreateUser(UserManager<Ia.Ftn.Cl.Models.StaffIdentityUser> userManager, string email, string userName, string password, string confirmPassword, out Ia.Cl.Models.Result result)
  500:         {
  501:             Ia.Ftn.Cl.Models.StaffIdentityUser identityUser;
  502:             IdentityResult identityResult;
  503: 
  504:             var passwordMinLength = 4; // in web.config, system.web/membership/providers/DefaultMembershipProvider: minRequiredPasswordLength="4"
  505: 
  506:             identityUser = null;
  507:             result = new Ia.Cl.Models.Result();
  508: 
  509:             if (!string.IsNullOrEmpty(password) && !string.IsNullOrEmpty(confirmPassword))
  510:             {
  511:                 if (password.Length >= passwordMinLength && confirmPassword.Length >= passwordMinLength)
  512:                 {
  513:                     if (password == confirmPassword)
  514:                     {
  515:                         identityUser = userManager.FindByNameAsync(userName).Result;
  516: 
  517:                         if (identityUser == null)
  518:                         {
  519:                             identityUser = Ia.Ftn.Cl.Models.Identity.CreateUser((userManager, userName, password, email, out identityResult);
  520: 
  521:                             if (identityResult.Succeeded)
  522:                             {
  523:                                 result.AddSuccess("User created.");
  524:                             }
  525:                             else
  526:                             {
  527:                                 result.AddError("User not created.");
  528:                             }
  529:                         }
  530:                         else
  531:                         {
  532:                             result.AddError(@"User """ + userName + @""" already exists.");
  533:                         }
  534:                     }
  535:                     else
  536:                     {
  537:                         result.AddError("Password and its verification do not match.");
  538:                     }
  539:                 }
  540:                 else
  541:                 {
  542:                     result.AddError("New password is too short, less than " + passwordMinLength + ".");
  543:                 }
  544:             }
  545:             else
  546:             {
  547:                 result.AddError("Password is null or empty.");
  548:             }
  549: 
  550:             return identityUser;
  551:         }
  552:         */
  553:  
  554:         /*
  555:         ////////////////////////////////////////////////////////////////////////////
  556:         ////////////////////////////////////////////////////////////////////////////
  557: 
  558:         /// <summary>
  559:         ///
  560:         /// </summary>
  561:         public static Ia.Ftn.Cl.Models.StaffIdentityUser StaffIdentityUser(UserManager<Ia.Ftn.Cl.Models.StaffIdentityUser> userManager, string userId)
  562:         {
  563:             Ia.Ftn.Cl.Models.StaffIdentityUser staffIdentityUser;
  564: 
  565:             //if (HttpContext.Current != null && HttpContext.Current.Session["staffIdentityUser"] != null)
  566:             if (Ia.Ftn.Cl.Models.Cache.Instance.TryGetValue("staffIdentityUser", out staffIdentityUser))
  567:             {
  568:             }
  569:             else
  570:             {
  571:                 lock (objectLock)
  572:                 {
  573:                     staffIdentityUser = Ia.Ftn.Cl.Models.Data.StaffIdentityUser._IdentityUser(userManager, userId);
  574: 
  575:                     //if (HttpContext.Current != null) HttpContext.Current.Session["staffIdentityUser"] = staffIdentityUser;
  576:                     Ia.Ftn.Cl.Models.Cache.Instance.Set("staffIdentityUser", staffIdentityUser);
  577:                 }
  578:             }
  579: 
  580:             return staffIdentityUser;
  581:         }
  582: 
  583:         ////////////////////////////////////////////////////////////////////////////
  584: 
  585:         /// <summary>
  586:         ///
  587:         /// </summary>
  588:         private static Ia.Ftn.Cl.Models.StaffIdentityUser _IdentityUser(UserManager<Ia.Ftn.Cl.Models.StaffIdentityUser> userManager, string userId)
  589:         {
  590:             Ia.Ftn.Cl.Models.StaffIdentityUser staffIdentityUser;
  591: 
  592:             var identityUser = userManager.FindByIdAsync(userId).Result;
  593: 
  594:             if (identityUser != null)
  595:             {
  596:                 if (Guid.TryParse(identityUser.Id, out Guid guid))
  597:                 {
  598:                     staffIdentityUser = (from s in Ia.Ftn.Cl.Models.Data.StaffIdentityUser.List(userManager)
  599:                                          where s.Id == guid.ToString()
  600:                                          select s).SingleOrDefault();
  601:                 }
  602:                 else staffIdentityUser = null;
  603:             }
  604:             else staffIdentityUser = null;
  605: 
  606:             return staffIdentityUser;
  607:         }
  608: 
  609:         ////////////////////////////////////////////////////////////////////////////
  610: 
  611:         /// <summary>
  612:         ///
  613:         /// </summary>
  614:         public static Ia.Ftn.Cl.Models.StaffIdentityUser IdentityUser2(UserManager<Ia.Ftn.Cl.Models.StaffIdentityUser> userManager, string userId)
  615:         {
  616:             Ia.Ftn.Cl.Models.StaffIdentityUser staffIdentityUser;
  617: 
  618:             if (!string.IsNullOrEmpty(userId))
  619:             {
  620:                 staffIdentityUser = (from s in Ia.Ftn.Cl.Models.Data.StaffIdentityUser.List(userManager)
  621:                                      where s.Id == userId
  622:                                      select s).SingleOrDefault();
  623:             }
  624:             else staffIdentityUser = null;
  625: 
  626:             return staffIdentityUser;
  627:         }
  628:         */
  629:  
  630:         ////////////////////////////////////////////////////////////////////////////
  631:  
  632:         /// <summary>
  633:         ///
  634:         /// </summary>
  635:         [Obsolete]
  636:         public static bool NullifyUserId(string staffId)
  637:         {
  638:             bool b;
  639:             Ia.Ftn.Cl.Models.StaffIdentityUser staff;
  640:  
  641:             using (var db = new Ia.Ftn.Cl.Db())
  642:             {
  643:                 staff = (from s in db.StaffIdentityUsers where s.Id == staffId select s).SingleOrDefault();
  644:  
  645:                 staff.Id = Guid.Empty.ToString();
  646:  
  647:                 db.StaffIdentityUsers.Attach(staff);
  648:                 db.Entry(staff).Property(u => u.Id).IsModified = true;
  649:  
  650:                 db.SaveChanges();
  651:  
  652:                 b = true;
  653:  
  654:                 staffIdentityUserList = null;
  655:             }
  656:  
  657:             return b;
  658:         }
  659:  
  660:         ////////////////////////////////////////////////////////////////////////////
  661:  
  662:         /// <summary>
  663:         ///
  664:         /// </summary>
  665:         public static void UnlockoutAllIdentityUsers()
  666:         {
  667:             using (var db = new Ia.Ftn.Cl.Db())
  668:             {
  669:                 //db.Database.ExecuteSqlRaw("update Memberships set IsLockedOut = 0;");
  670:             }
  671:         }
  672:  
  673:         ////////////////////////////////////////////////////////////////////////////
  674:  
  675:         /// <summary>
  676:         ///
  677:         /// </summary>
  678:         public static void SetMembershipIsApprovedToFalseIfUserLastActivityDateIsLessThanDateTime(DateTime dateTime)
  679:         {
  680:             using (var db = new Ia.Ftn.Cl.Db())
  681:             {
  682:                 //db.Database.ExecuteSqlRaw("update Memberships set IsApproved = 0 where UserId in (select u.StaffIdentityUser.Id from Users u where u.LastActivityDate < '" + dateTime.ToString("yyyy-MM-dd") + "'); ");
  683:             }
  684:         }
  685:  
  686:         ////////////////////////////////////////////////////////////////////////////
  687:  
  688:         /// <summary>
  689:         ///
  690:         /// </summary>
  691:         public static void DeleteStaffIfUserLastActivityDateIsLessThanDateTime(DateTime dateTime)
  692:         {
  693:             using (var db = new Ia.Ftn.Cl.Db())
  694:             {
  695:                 //db.Database.ExecuteSqlRaw("delete Staffs where UserId in (select u.StaffIdentityUser.Id from Users u where u.LastActivityDate < '" + dateTime.ToString("yyyy-MM-dd") + "'); ");
  696:                 //db.Database.ExecuteSqlRaw("delete Memberships where UserId in (select u.StaffIdentityUser.Id from Users u where u.LastActivityDate < '" + dateTime.ToString("yyyy-MM-dd") + "'); ");
  697:                 //db.Database.ExecuteSqlRaw("delete UsersInRoles where UserId in (select u.StaffIdentityUser.Id from Users u where u.LastActivityDate < '" + dateTime.ToString("yyyy-MM-dd") + "'); ");
  698:                 //db.Database.ExecuteSqlRaw("delete Profiles where UserId in (select u.StaffIdentityUser.Id from Users u where u.LastActivityDate < '" + dateTime.ToString("yyyy-MM-dd") + "'); ");
  699:                 //db.Database.ExecuteSqlRaw("delete Users where UserId in (select u.StaffIdentityUser.Id from Users u where u.LastActivityDate < '" + dateTime.ToString("yyyy-MM-dd") + "'); ");
  700:             }
  701:         }
  702:  
  703:         ////////////////////////////////////////////////////////////////////////////
  704:  
  705:         /// <summary>
  706:         ///
  707:         /// </summary>
  708:         public static void RemoveInactiveStaff(DateTime dateTime)
  709:         {
  710:             using (var db = new Ia.Ftn.Cl.Db())
  711:             {
  712:                 //var list = Ia.Ftn.Cl.Models.Identity.InactiveSinceDateTimeUserList(dateTime);
  713:  
  714:                 //db.Database.ExecuteSqlRaw("update Memberships set IsLockedOut = 0;");
  715:             }
  716:         }
  717:  
  718:         ////////////////////////////////////////////////////////////////////////////
  719:         ////////////////////////////////////////////////////////////////////////////
  720:     }
  721:  
  722:     ////////////////////////////////////////////////////////////////////////////
  723:     ////////////////////////////////////////////////////////////////////////////
  724: }