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

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

    1: using Microsoft.AspNetCore.Identity;
    2: using Microsoft.AspNetCore.Mvc.Rendering;
    3: using System.Net;
    4:  
    5: namespace Ia.Ftn.Wa.Models.Application
    6: {
    7:     ////////////////////////////////////////////////////////////////////////////
    8:  
    9:     /// <summary publish="true">
   10:     ///
   11:     /// </summary>
   12:     /// 
   13:     /// <remarks> 
   14:     /// Copyright © 2006-2025 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   15:     /// </remarks> 
   16:     public static class Index2
   17:     {
   18:         private static int selectLevel;
   19:  
   20:         ////////////////////////////////////////////////////////////////////////////
   21:  
   22:         /// <summary>
   23:         ///
   24:         /// </summary>
   25:         public static void UserRoleViewModel(UserManager<Ia.Ftn.Cl.Models.StaffIdentityUser> userManager, RoleManager<IdentityRole> roleManager, ref IdentityViewModel currentIdentityViewModel, ref IdentityViewModel identityViewModel)
   26:         {
   27:             UserSelectList_ViewModel(ref identityViewModel);
   28:             RoleSelectList_ViewModel(ref identityViewModel, roleManager);
   29:  
   30:             UserRoleSelectList_ViewModel(ref identityViewModel, userManager);
   31:  
   32:             var roleName = identityViewModel.RoleSelectedValue;
   33:  
   34:             if (!string.IsNullOrEmpty(roleName))
   35:             {
   36:                 identityViewModel.RoleUserListLabel = "Users in role: ";
   37:  
   38:                 var usersInRoleList = Ia.Ftn.Cl.Models.Identity.UsersInRoleList(userManager, roleName);
   39:  
   40:                 foreach (var user in usersInRoleList)
   41:                 {
   42:                     identityViewModel.RoleUserListLabel += user.FirstAndMiddleNameBracketUserName + ", ";
   43:                 }
   44:             }
   45:             else
   46:             {
   47:                 identityViewModel.RoleUserListLabel = string.Empty;
   48:             }
   49:         }
   50:  
   51:  
   52:         ////////////////////////////////////////////////////////////////////////////
   53:  
   54:         /// <summary>
   55:         ///
   56:         /// </summary>
   57:         private static void UserSelectList_ViewModel(ref IdentityViewModel identityViewModel)
   58:         {
   59:             var list = Ia.Ftn.Cl.Models.Identity.StaffIdentityUserList();
   60:  
   61:             identityViewModel.UserSelectList = new SelectList(list, "UserName", "FirstAndMiddleNameBracketUserName");
   62:         }
   63:  
   64:         ////////////////////////////////////////////////////////////////////////////
   65:  
   66:         /// <summary>
   67:         ///
   68:         /// </summary>
   69:         private static void RoleSelectList_ViewModel(ref IdentityViewModel identityViewModel, RoleManager<IdentityRole> roleManager)
   70:         {
   71:             var list = Ia.Ftn.Cl.Models.Identity.RoleList(roleManager);
   72:  
   73:             identityViewModel.RoleSelectList = new SelectList(list, "Name", "Name");
   74:  
   75:             if (identityViewModel.RoleSelectList.Count() == 0)
   76:             {
   77:                 //roleDropDownList.Enabled = false;
   78:                 identityViewModel.AddButtonEnabled = false;
   79:             }
   80:             else
   81:             {
   82:                 //roleDropDownList.Enabled = true;
   83:                 identityViewModel.AddButtonEnabled = true;
   84:             }
   85:         }
   86:  
   87:         ////////////////////////////////////////////////////////////////////////////
   88:  
   89:         /// <summary>
   90:         ///
   91:         /// </summary>
   92:         private static void UserRoleSelectList_ViewModel(ref IdentityViewModel identityViewModel, UserManager<Ia.Ftn.Cl.Models.StaffIdentityUser> userManager)
   93:         {
   94:             var userName = identityViewModel.UserSelectedValue;
   95:  
   96:             if (!string.IsNullOrEmpty(userName))
   97:             {
   98:                 var list = Ia.Ftn.Cl.Models.Identity.RolesForUserList(userManager, userName).ToList();
   99:  
  100:                 identityViewModel.UserRoleSelectList = new SelectList(list);
  101:  
  102:                 if (identityViewModel.UserRoleSelectList.Count() == 0)
  103:                 {
  104:                     //userRoleDropDownList.Enabled = false;
  105:                     identityViewModel.DeleteButtonEnabled = false;
  106:                 }
  107:                 else
  108:                 {
  109:                     //userRoleDropDownList.Enabled = true;
  110:                     identityViewModel.DeleteButtonEnabled = true;
  111:                 }
  112:             }
  113:             else
  114:             {
  115:                 //userRoleDropDownList.Enabled = true;
  116:                 identityViewModel.DeleteButtonEnabled = true;
  117:             }
  118:         }
  119:  
  120:         ////////////////////////////////////////////////////////////////////////////
  121:  
  122:         /// <summary>
  123:         ///
  124:         /// </summary>
  125:         public static void AddUserToRole(UserManager<Ia.Ftn.Cl.Models.StaffIdentityUser> userManager, RoleManager<IdentityRole> roleManager, ref IdentityViewModel identityViewModel)
  126:         {
  127:             var userName = identityViewModel.UserSelectedValue;
  128:             var roleName = identityViewModel.RoleSelectedValue;
  129:  
  130:             identityViewModel.Result = new Ia.Cl.Models.Result();
  131:  
  132:             if (!Ia.Ftn.Cl.Models.Identity.IsUserInRole(userManager, userName, roleName))
  133:             {
  134:                 var identityResult = Ia.Ftn.Cl.Models.Identity.AddUserToRole(userManager, userName, roleName);
  135:  
  136:                 if (identityResult.Succeeded)
  137:                 {
  138:                     identityViewModel.Result.AddSuccess("User added to role");
  139:                 }
  140:                 else
  141:                 {
  142:                     identityViewModel.Result.AddError("Could not add the user to the role: " + identityResult.Errors.First());
  143:                 }
  144:             }
  145:             else
  146:             {
  147:                 identityViewModel.Result.AddError("User is not in role");
  148:             }
  149:         }
  150:  
  151:         ////////////////////////////////////////////////////////////////////////////
  152:  
  153:         /// <summary>
  154:         ///
  155:         /// </summary>
  156:         public static void DeleteUserFromRole(UserManager<Ia.Ftn.Cl.Models.StaffIdentityUser> userManager, RoleManager<IdentityRole> roleManager, ref IdentityViewModel identityViewModel)
  157:         {
  158:             var userName = identityViewModel.UserSelectedValue;
  159:             var roleName = identityViewModel.UserRoleSelectedValue;
  160:  
  161:             identityViewModel.Result = new Ia.Cl.Models.Result();
  162:  
  163:             if (Ia.Ftn.Cl.Models.Identity.IsUserInRole(userManager, userName, roleName))
  164:             {
  165:                 var identityResult = Ia.Ftn.Cl.Models.Identity.RemoveUserFromRole(userManager, roleManager, userName, roleName);
  166:  
  167:                 if (identityResult.Succeeded)
  168:                 {
  169:                     identityViewModel.Result.AddSuccess("User removed from role");
  170:                 }
  171:                 else
  172:                 {
  173:                     identityViewModel.Result.AddError("Could not remove user from role: " + identityResult.Errors.First());
  174:                 }
  175:             }
  176:             else
  177:             {
  178:                 identityViewModel.Result.AddError("User is already in role");
  179:             }
  180:         }
  181:  
  182:         ///////////////////////////////////////////////////////////////////////////////
  183:         ////////////////////////////////////////////////////////////////////////////
  184:  
  185:  
  186:  
  187:  
  188:  
  189:  
  190:  
  191:  
  192:  
  193:  
  194:  
  195:  
  196:  
  197:  
  198:  
  199:         ///////////////////////////////////////////////////////////////////////////////
  200:         ////////////////////////////////////////////////////////////////////////////
  201:  
  202:         /// <summary>
  203:         ///
  204:         /// </summary>
  205:         public static void IdentityPost(ref Ia.Ftn.Wa.Models.Application.IdentityViewModel identityViewModel, string commandName, string userId)
  206:         {
  207:             if (commandName == "insert") Insert(ref identityViewModel);
  208:             else if (commandName == "edit") Edit(ref identityViewModel, userId);
  209:             else if (commandName == "update") Update(ref identityViewModel, userId);
  210:             else if (commandName == "delete") Delete(ref identityViewModel, userId);
  211:             else if (commandName == "cancel") Cancel(ref identityViewModel);
  212:             else
  213:             {
  214:             }
  215:         }
  216:  
  217:         ////////////////////////////////////////////////////////////////////////////
  218:  
  219:         /// <summary>
  220:         ///
  221:         /// </summary>
  222:         private static void Insert(ref Ia.Ftn.Wa.Models.Application.IdentityViewModel identityViewModel)
  223:         {
  224:             Ia.Ftn.Wa.Models.Application.Index2.CreateUser(identityViewModel.UserManager, identityViewModel.RoleManager, ref identityViewModel);
  225:         }
  226:  
  227:         ////////////////////////////////////////////////////////////////////////////
  228:  
  229:         /// <summary>
  230:         ///
  231:         /// </summary>
  232:         private static void Edit(ref Ia.Ftn.Wa.Models.Application.IdentityViewModel identityViewModel, string userId)
  233:         {
  234:             identityViewModel.StaffIdentityUserListEditId = userId;
  235:         }
  236:  
  237:         ////////////////////////////////////////////////////////////////////////////
  238:  
  239:         /// <summary>
  240:         ///
  241:         /// </summary>
  242:         private static void Cancel(ref Ia.Ftn.Wa.Models.Application.IdentityViewModel identityViewModel)
  243:         {
  244:             identityViewModel.StaffIdentityUserListEditId = string.Empty;
  245:         }
  246:  
  247:         ////////////////////////////////////////////////////////////////////////////
  248:  
  249:         /// <summary>
  250:         /// 
  251:         /// </summary>
  252:         private static void Update(ref Ia.Ftn.Wa.Models.Application.IdentityViewModel identityViewModel, string userId)
  253:         {
  254:             Ia.Cl.Models.Result result;
  255:             DateTime now;
  256:  
  257:             identityViewModel.UpdateResult = new Ia.Cl.Models.Result();
  258:  
  259:             identityViewModel.StaffIdentityUserListEditId = userId;
  260:  
  261:             if (Ia.Ftn.Cl.Models.Business.Authority.StaffCanCreateReadUpdateDeleteUsers(identityViewModel.CurrentStaffIdentityUser))
  262:             {
  263:                 now = DateTime.UtcNow.AddHours(3);
  264:  
  265:                 // note = WebUtility.HtmlDecode(identityViewModel.NoteTextAreaEdit);
  266:  
  267:                 var staffIdentityUser = new Ia.Ftn.Cl.Models.StaffIdentityUser()
  268:                 {
  269:                     Id = userId,
  270:                     Updated = now
  271:                 };
  272:  
  273:                 //Ia.Ftn.Wa.Models.Application.Index2.UpdateUser(ref identityViewModel, userId);
  274:  
  275:                 var isSuccess = false;
  276:  
  277:                 if (isSuccess)
  278:                 {
  279:                     identityViewModel.UpdateResult.AddSuccess("User updated (تم تحديث المستخدم)");
  280:  
  281:                     identityViewModel.StaffIdentityUserListEditId = string.Empty;
  282:                 }
  283:                 else identityViewModel.UpdateResult.AddError(""); // result.MessageWithoutCaption);
  284:             }
  285:             else identityViewModel.UpdateResult.AddError("You are not authorized to modify this value (لست مخولاً بتعديل هذه القيمة)");
  286:         }
  287:  
  288:         ////////////////////////////////////////////////////////////////////////////
  289:  
  290:         /// <summary>
  291:         /// 
  292:         /// </summary>
  293:         private static void Delete(ref Ia.Ftn.Wa.Models.Application.IdentityViewModel identityViewModel, string userId)
  294:         {
  295:             Ia.Ftn.Wa.Models.Application.Index2.DeleteUser(identityViewModel.UserManager, ref identityViewModel, userId);
  296:         }
  297:  
  298:         ////////////////////////////////////////////////////////////////////////////
  299:         ////////////////////////////////////////////////////////////////////////////
  300:  
  301:  
  302:  
  303:  
  304:  
  305:  
  306:  
  307:  
  308:  
  309:  
  310:  
  311:  
  312:  
  313:  
  314:  
  315:  
  316:  
  317:  
  318:  
  319:  
  320:  
  321:  
  322:  
  323:         ////////////////////////////////////////////////////////////////////////////
  324:         ////////////////////////////////////////////////////////////////////////////
  325:  
  326:         /// <summary>
  327:         ///
  328:         /// </summary>
  329:         public static void RegisterViewModel(ref IdentityViewModel currentIdentityViewModel, ref IdentityViewModel identityViewModel)
  330:         {
  331:             CompareCurrentAndNewViewModels(ref currentIdentityViewModel, ref identityViewModel);
  332:  
  333:             var identityUsers = Ia.Ftn.Cl.Models.Identity.StaffIdentityUserList();
  334:  
  335:             identityViewModel.StaffIdentityUserList = identityUsers;
  336:  
  337:             var list = (from f in Ia.Ftn.Cl.Models.Data.Administration.FrameworkList where f.Type == "ministry" || f.Type == "supplier" select f).ToList();
  338:  
  339:             if (!string.IsNullOrEmpty(identityViewModel.Framework1SelectedValue))
  340:             {
  341:                 identityViewModel.Framework1SelectList = new SelectList(list, "Id", "ArabicName", identityViewModel.Framework1SelectedValue);
  342:             }
  343:             else
  344:             {
  345:                 identityViewModel.Framework1SelectList = new SelectList(list, "Id", "ArabicName", list[0].Id.ToString());
  346:                 identityViewModel.Framework1SelectedValue = list[0].Id.ToString();
  347:             }
  348:  
  349:             Framework1SelectList_SelectedIndexChanged(ref identityViewModel);
  350:  
  351:             currentIdentityViewModel.Framework1SelectedValue = identityViewModel.Framework1SelectedValue;
  352:             currentIdentityViewModel.Framework2SelectedValue = identityViewModel.Framework2SelectedValue;
  353:             currentIdentityViewModel.Framework3SelectedValue = identityViewModel.Framework3SelectedValue;
  354:             currentIdentityViewModel.Framework4SelectedValue = identityViewModel.Framework4SelectedValue;
  355:             currentIdentityViewModel.Framework5SelectedValue = identityViewModel.Framework5SelectedValue;
  356:             currentIdentityViewModel.Framework6SelectedValue = identityViewModel.Framework6SelectedValue;
  357:         }
  358:  
  359:         ////////////////////////////////////////////////////////////////////////////
  360:  
  361:         /// <summary>
  362:         ///
  363:         /// </summary>
  364:         public static void Framework1SelectList_SelectedIndexChanged(ref IdentityViewModel identityViewModel)
  365:         {
  366:             if (identityViewModel.Framework1SelectList.Count() > 0)
  367:             {
  368:                 if (!string.IsNullOrEmpty(identityViewModel.Framework1SelectedValue))
  369:                 {
  370:                     selectLevel = 1;
  371:  
  372:                     var id = identityViewModel.Framework1SelectedValue;
  373:  
  374:                     var parent = (from f in Ia.Ftn.Cl.Models.Data.Administration.FrameworkList
  375:                                   where f.Id == id
  376:                                   select f).SingleOrDefault();
  377:  
  378:                     if (parent != null)
  379:                     {
  380:                         var list = (from f in Ia.Ftn.Cl.Models.Data.Administration.FrameworkList
  381:                                     where f.Parent != null && f.Parent.Id == parent.Id
  382:                                     select f).ToList();
  383:  
  384:                         if (parent != null && parent.Type == "ministry")
  385:                         {
  386:                             list.Add(new Ia.Ftn.Cl.Models.Business.Administration.Framework { Id = id + "-0", ArabicName = "وزير" });
  387:                         }
  388:                         else if (parent != null && parent.Type == "supplier")
  389:                         {
  390:                             list.Add(new Ia.Ftn.Cl.Models.Business.Administration.Framework { Id = id + "-0", ArabicName = "مدير تنفيذي" });
  391:                             list.Add(new Ia.Ftn.Cl.Models.Business.Administration.Framework { Id = id + "-1", ArabicName = "موظف" });
  392:                         }
  393:  
  394:                         if (list.Count > 0)
  395:                         {
  396:                             if (!string.IsNullOrEmpty(identityViewModel.Framework2SelectedValue))
  397:                             {
  398:                                 identityViewModel.Framework2SelectList = new SelectList(list, "Id", "ArabicName", identityViewModel.Framework2SelectedValue);
  399:                             }
  400:                             else
  401:                             {
  402:                                 identityViewModel.Framework2SelectList = new SelectList(list, "Id", "ArabicName", list[0].Id.ToString());
  403:                                 identityViewModel.Framework2SelectedValue = list[0].Id.ToString();
  404:                             }
  405:  
  406:                             Framework2SelectList_SelectedIndexChanged(ref identityViewModel);
  407:                         }
  408:                     }
  409:                 }
  410:             }
  411:         }
  412:  
  413:         ////////////////////////////////////////////////////////////////////////////
  414:  
  415:         /// <summary>
  416:         ///
  417:         /// </summary>
  418:         public static void Framework2SelectList_SelectedIndexChanged(ref IdentityViewModel identityViewModel)
  419:         {
  420:             if (identityViewModel.Framework2SelectList.Count() > 0)
  421:             {
  422:                 if (!string.IsNullOrEmpty(identityViewModel.Framework2SelectedValue))
  423:                 {
  424:                     selectLevel = 2;
  425:  
  426:                     var id = identityViewModel.Framework2SelectedValue;
  427:  
  428:                     if (!id.Contains("-0") && !id.Contains("-1"))
  429:                     {
  430:                         var list = (from f in Ia.Ftn.Cl.Models.Data.Administration.FrameworkList where f.Parent != null && f.Parent.Id == id select f).ToList();
  431:                         list.Add(new Ia.Ftn.Cl.Models.Business.Administration.Framework { Id = id + "-0", ArabicName = "وكيل" });
  432:  
  433:                         if (list.Count > 0)
  434:                         {
  435:                             if (!string.IsNullOrEmpty(identityViewModel.Framework3SelectedValue))
  436:                             {
  437:                                 identityViewModel.Framework3SelectList = new SelectList(list, "Id", "ArabicName", identityViewModel.Framework3SelectedValue);
  438:                             }
  439:                             else
  440:                             {
  441:                                 identityViewModel.Framework3SelectList = new SelectList(list, "Id", "ArabicName", list[0].Id.ToString());
  442:                                 identityViewModel.Framework3SelectedValue = list[0].Id.ToString();
  443:                             }
  444:  
  445:                             Framework3SelectList_SelectedIndexChanged(ref identityViewModel);
  446:                         }
  447:                     }
  448:                 }
  449:             }
  450:         }
  451:  
  452:         ////////////////////////////////////////////////////////////////////////////
  453:  
  454:         /// <summary>
  455:         ///
  456:         /// </summary>
  457:         public static void Framework3SelectList_SelectedIndexChanged(ref IdentityViewModel identityViewModel)
  458:         {
  459:             if (identityViewModel.Framework3SelectList.Count() > 0)
  460:             {
  461:                 if (!string.IsNullOrEmpty(identityViewModel.Framework3SelectedValue))
  462:                 {
  463:                     selectLevel = 3;
  464:  
  465:                     var id = identityViewModel.Framework3SelectedValue;
  466:  
  467:                     if (!id.Contains("-0") && !id.Contains("-1"))
  468:                     {
  469:                         var list = (from f in Ia.Ftn.Cl.Models.Data.Administration.FrameworkList where f.Parent != null && f.Parent.Id == id select f).ToList();
  470:                         list.Add(new Ia.Ftn.Cl.Models.Business.Administration.Framework { Id = id + "-0", ArabicName = "مدير" });
  471:  
  472:                         if (list.Count > 0)
  473:                         {
  474:                             if (!string.IsNullOrEmpty(identityViewModel.Framework4SelectedValue))
  475:                             {
  476:                                 identityViewModel.Framework4SelectList = new SelectList(list, "Id", "ArabicName", identityViewModel.Framework4SelectedValue);
  477:                             }
  478:                             else
  479:                             {
  480:                                 identityViewModel.Framework4SelectList = new SelectList(list, "Id", "ArabicName", list[0].Id.ToString());
  481:                                 identityViewModel.Framework4SelectedValue = list[0].Id.ToString();
  482:                             }
  483:  
  484:                             Framework4SelectList_SelectedIndexChanged(ref identityViewModel);
  485:                         }
  486:                     }
  487:                 }
  488:             }
  489:         }
  490:  
  491:         ////////////////////////////////////////////////////////////////////////////
  492:  
  493:         /// <summary>
  494:         ///
  495:         /// </summary>
  496:         public static void Framework4SelectList_SelectedIndexChanged(ref IdentityViewModel identityViewModel)
  497:         {
  498:             if (identityViewModel.Framework4SelectList.Count() > 0)
  499:             {
  500:                 if (!string.IsNullOrEmpty(identityViewModel.Framework4SelectedValue))
  501:                 {
  502:                     selectLevel = 4;
  503:  
  504:                     var id = identityViewModel.Framework4SelectedValue;
  505:  
  506:                     if (!id.Contains("-0") && !id.Contains("-1"))
  507:                     {
  508:                         var list = (from f in Ia.Ftn.Cl.Models.Data.Administration.FrameworkList where f.Parent != null && f.Parent.Id == id select f).ToList();
  509:                         list.Add(new Ia.Ftn.Cl.Models.Business.Administration.Framework { Id = id + "-0", ArabicName = "مراقب" });
  510:  
  511:                         if (list.Count > 0)
  512:                         {
  513:                             if (!string.IsNullOrEmpty(identityViewModel.Framework5SelectedValue))
  514:                             {
  515:                                 identityViewModel.Framework5SelectList = new SelectList(list, "Id", "ArabicName", identityViewModel.Framework5SelectedValue);
  516:                             }
  517:                             else
  518:                             {
  519:                                 identityViewModel.Framework5SelectList = new SelectList(list, "Id", "ArabicName", list[0].Id.ToString());
  520:                                 identityViewModel.Framework5SelectedValue = list[0].Id.ToString();
  521:                             }
  522:  
  523:                             Framework5SelectList_SelectedIndexChanged(ref identityViewModel);
  524:                         }
  525:                     }
  526:                 }
  527:             }
  528:         }
  529:  
  530:         ////////////////////////////////////////////////////////////////////////////
  531:  
  532:         /// <summary>
  533:         ///
  534:         /// </summary>
  535:         public static void Framework5SelectList_SelectedIndexChanged(ref IdentityViewModel identityViewModel)
  536:         {
  537:             if (identityViewModel.Framework5SelectList.Count() > 0)
  538:             {
  539:                 if (!string.IsNullOrEmpty(identityViewModel.Framework5SelectedValue))
  540:                 {
  541:                     selectLevel = 5;
  542:  
  543:                     var id = identityViewModel.Framework5SelectedValue;
  544:  
  545:                     if (!id.Contains("-0") && !id.Contains("-1"))
  546:                     {
  547:                         var list = (from f in Ia.Ftn.Cl.Models.Data.Administration.FrameworkList where f.Parent != null && f.Parent.Id == id select f).ToList();
  548:                         list.Add(new Ia.Ftn.Cl.Models.Business.Administration.Framework { Id = id + "-0", ArabicName = "رئيس قسم" });
  549:                         list.Add(new Ia.Ftn.Cl.Models.Business.Administration.Framework { Id = id + "-1", ArabicName = "موظف" });
  550:  
  551:                         if (list.Count > 0)
  552:                         {
  553:                             if (!string.IsNullOrEmpty(identityViewModel.Framework6SelectedValue))
  554:                             {
  555:                                 identityViewModel.Framework6SelectList = new SelectList(list, "Id", "ArabicName", identityViewModel.Framework6SelectedValue);
  556:                             }
  557:                             else
  558:                             {
  559:                                 identityViewModel.Framework6SelectList = new SelectList(list, "Id", "ArabicName", list[0].Id.ToString());
  560:                                 identityViewModel.Framework6SelectedValue = list[0].Id.ToString();
  561:                             }
  562:  
  563:                             //Framework6SelectList_SelectedIndexChanged(ref identityViewModel);
  564:                         }
  565:                     }
  566:                 }
  567:             }
  568:         }
  569:  
  570:         ////////////////////////////////////////////////////////////////////////////
  571:  
  572:         /// <summary>
  573:         ///
  574:         /// </summary>
  575:         public static void CreateUser(UserManager<Ia.Ftn.Cl.Models.StaffIdentityUser> userManager, RoleManager<IdentityRole> roleManager, ref IdentityViewModel identityViewModel)
  576:         {
  577:             bool isHead;
  578:             string frameworkId;
  579:  
  580:             var firstName = WebUtility.HtmlDecode(identityViewModel.CreateUserFirstNameText);
  581:             var middleName = WebUtility.HtmlDecode(identityViewModel.CreateUserMiddleNameText);
  582:             var lastName = WebUtility.HtmlDecode(identityViewModel.CreateUserLastNameText);
  583:  
  584:             switch (selectLevel)
  585:             {
  586:                 case 1:
  587:                     {
  588:                         isHead = identityViewModel.Framework1SelectedValue.Contains("-0") == true;
  589:                         frameworkId = identityViewModel.Framework1SelectedValue.Replace("-0", "");
  590:                         break;
  591:                     }
  592:                 case 2:
  593:                     {
  594:                         isHead = identityViewModel.Framework2SelectedValue.Contains("-0") == true;
  595:                         frameworkId = identityViewModel.Framework2SelectedValue.Replace("-0", "");
  596:                         break;
  597:                     }
  598:                 case 3:
  599:                     {
  600:                         isHead = identityViewModel.Framework3SelectedValue.Contains("-0") == true;
  601:                         frameworkId = identityViewModel.Framework3SelectedValue.Replace("-0", "");
  602:                         break;
  603:                     }
  604:                 case 4:
  605:                     {
  606:                         isHead = identityViewModel.Framework4SelectedValue.Contains("-0") == true;
  607:                         frameworkId = identityViewModel.Framework4SelectedValue.Replace("-0", "");
  608:                         break;
  609:                     }
  610:                 case 5:
  611:                     {
  612:                         isHead = identityViewModel.Framework5SelectedValue.Contains("-0") == true;
  613:                         frameworkId = identityViewModel.Framework5SelectedValue.Replace("-0", "");
  614:  
  615:                         if (!isHead)
  616:                         {
  617:                             isHead = identityViewModel.Framework6SelectedValue.Contains("-0") == true;
  618:                         }
  619:  
  620:                         break;
  621:                     }
  622:  
  623:                 default: isHead = false; frameworkId = string.Empty; break;
  624:             }
  625:  
  626:  
  627:             var email = WebUtility.HtmlDecode(identityViewModel.CreateUserEmailText);
  628:  
  629:             var userName = WebUtility.HtmlDecode(identityViewModel.CreateUserUserNameText);
  630:             var phoneNumber = WebUtility.HtmlDecode(identityViewModel.CreateUserPhoneNumberText);
  631:             var password = WebUtility.HtmlDecode(identityViewModel.CreateUserPasswordText);
  632:             var confirmPassword = WebUtility.HtmlDecode(identityViewModel.CreateUserConfirmPasswordText);
  633:  
  634:             identityViewModel.Result = new Ia.Cl.Models.Result();
  635:  
  636:             if (!string.IsNullOrEmpty(firstName))
  637:             {
  638:                 if (!string.IsNullOrEmpty(lastName))
  639:                 {
  640:                     if (!string.IsNullOrEmpty(frameworkId))
  641:                     {
  642:                         var framework = (from f in Ia.Ftn.Cl.Models.Data.Administration.FrameworkList
  643:                                          where f.Id == frameworkId
  644:                                          select f).Single();
  645:                         var hasAuthority = !Ia.Ftn.Cl.Models.Business.Authority.FrameworkIsApplication(framework)
  646:                             || Ia.Ftn.Cl.Models.Business.Authority.FrameworkIsApplication(framework) && Ia.Ftn.Cl.Models.Business.Authority.StaffIsApplication(identityViewModel.CurrentStaffIdentityUser);
  647:  
  648:                         if (hasAuthority)
  649:                         {
  650:                             if (!isHead || isHead && !Ia.Ftn.Cl.Models.Business.Administration.FrameworkHasAHead(framework))
  651:                             {
  652:                                 if (!string.IsNullOrEmpty(password) && !string.IsNullOrEmpty(confirmPassword))
  653:                                 {
  654:                                     if (password == confirmPassword)
  655:                                     {
  656:                                         var staffIdentityUser = Ia.Ftn.Cl.Models.Identity.CreateUser(userManager, firstName, middleName, lastName, frameworkId, isHead, email, userName, phoneNumber, password, out IdentityResult identityResult);
  657:  
  658:                                         if (identityResult.Succeeded)
  659:                                         {
  660:                                             Ia.Ftn.Cl.Models.Business.Authority.UpdateFrameworkRolesOfStaffIdentityUser(userManager, roleManager, staffIdentityUser);
  661:  
  662:                                             identityViewModel.Result.AddSuccess("User created.");
  663:                                         }
  664:                                         else
  665:                                         {
  666:                                             identityViewModel.Result.AddError("User not created: " + identityResult.Errors.First().Description);
  667:                                         }
  668:                                     }
  669:                                     else
  670:                                     {
  671:                                         identityViewModel.Result.AddError("Password and its verification do not match.");
  672:                                     }
  673:                                 }
  674:                                 else
  675:                                 {
  676:                                     identityViewModel.Result.AddError("Password is null or empty.");
  677:                                 }
  678:                             }
  679:                             else
  680:                             {
  681:                                 identityViewModel.Result.AddError("Can't create staff as head because framework already has a head.");
  682:                             }
  683:                         }
  684:                         else
  685:                         {
  686:                             identityViewModel.Result.AddError("Can't create staff application.");
  687:                         }
  688:                     }
  689:                     else
  690:                     {
  691:                         identityViewModel.Result.AddError("frameworkId is null or empty.");
  692:                     }
  693:                 }
  694:                 else
  695:                 {
  696:                     identityViewModel.Result.AddError("Last name is null or empty.");
  697:                 }
  698:             }
  699:             else
  700:             {
  701:                 identityViewModel.Result.AddError("First name is null or empty.");
  702:             }
  703:         }
  704:  
  705:         /*
  706:         ////////////////////////////////////////////////////////////////////////////
  707: 
  708:         /// <summary>
  709:         ///
  710:         /// </summary>
  711:         protected void UserGridView_RowEditing(object sender, GridViewEditEventArgs e)
  712:         {
  713:             userGridView.EditIndex = e.NewEditIndex;
  714:         }
  715: 
  716:         ////////////////////////////////////////////////////////////////////////////
  717: 
  718:         /// <summary>
  719:         ///
  720:         /// </summary>
  721:         protected void UserGridView_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
  722:         {
  723:             userGridView.EditIndex = -1;
  724:         }
  725: 
  726:         ////////////////////////////////////////////////////////////////////////////
  727: 
  728:         /// <summary>
  729:         ///
  730:         /// </summary>
  731:         protected void UserGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
  732:         {
  733:             bool isSuccess;
  734:             string email, userName;
  735:             Guid providerUserKey;
  736:             DateTime now;
  737:             GridViewRow gridViewRow;
  738:             MembershipUser membershipUser;
  739: 
  740:             isSuccess = false;
  741:             userGridView.EditIndex = -1;
  742:             gridViewRow = userGridView.Rows[e.RowIndex];
  743: 
  744:             if (gridViewRow != null && userGridView.Rows.Count > 0)
  745:             {
  746:                 try
  747:                 {
  748:                     now = DateTime.UtcNow.AddHours(3);
  749: 
  750:                     providerUserKey = Guid.Parse(userGridView.DataKeys[e.RowIndex].Values["ProviderUserKey"].ToString());
  751:                     email = Server.HtmlDecode(((TextBox)gridViewRow.FindControl("userEmailTextBox")).Text);
  752:                     userName = Server.HtmlDecode(((TextBox)gridViewRow.FindControl("userNameTextBox")).Text);
  753: 
  754:                     membershipUser = Membership.GetUser(providerUserKey);
  755: 
  756:                     if (userName.Length > 0)
  757:                     {
  758:                         if (Ia.Ia.Ftn.Cl.Models.Default.IsEmail(email))
  759:                         {
  760:                             membershipUser.Email = email;
  761: 
  762:                             Membership.UpdateUser(membershipUser);
  763: 
  764:                             isSuccess = true;
  765: 
  766:                             updateResultLabel.Text = "Success: User updated. ";
  767:                             updateResultLabel.CssClass = "success";
  768:                         }
  769:                         else
  770:                         {
  771:                             updateResultLabel.Text = "Error: Email is not in correct format (الإيميل غير منطقي). ";
  772:                             updateResultLabel.CssClass = "error";
  773:                         }
  774:                     }
  775:                     else
  776:                     {
  777:                         updateResultLabel.Text = "Error: UserName is not in correct format. ";
  778:                         updateResultLabel.CssClass = "error";
  779:                     }
  780:                 }
  781:                 catch (Exception ex)
  782:                 {
  783:                     updateResultLabel.Text = "Error: " + ex.Message;
  784:                     updateResultLabel.CssClass = "error";
  785:                 }
  786:             }
  787:         }
  788:         */
  789:  
  790:         ////////////////////////////////////////////////////////////////////////////
  791:  
  792:         /// <summary>
  793:         ///
  794:         /// </summary>
  795:         public static void DeleteUser(UserManager<Ia.Ftn.Cl.Models.StaffIdentityUser> userManager, ref IdentityViewModel identityViewModel, string userId)
  796:         {
  797:             var identityResult = Ia.Ftn.Cl.Models.Identity.DeleteUserById(userManager, userId);
  798:  
  799:             identityViewModel.Result = new Ia.Cl.Models.Result();
  800:  
  801:             if (identityResult.Succeeded)
  802:             {
  803:                 identityViewModel.Result.AddSuccess("User deleted.");
  804:             }
  805:             else
  806:             {
  807:                 identityViewModel.Result.AddError("User not delete: " + identityResult.Errors.First().Description);
  808:             }
  809:         }
  810:  
  811:         /*
  812:         ////////////////////////////////////////////////////////////////////////////
  813: 
  814:         /// <summary>
  815:         ///
  816:         /// </summary>
  817:         public void UserGridView_RowDataBound(object sender, GridViewRowEventArgs e)
  818:         {
  819:             Ia.Ftn.Ia.Ftn.Cl.Models.Ui.Default.GridView_RowDataBound(this, sender, e);
  820:         }
  821:         */
  822:  
  823:         ////////////////////////////////////////////////////////////////////////////
  824:  
  825:         /// <summary>
  826:         ///
  827:         /// </summary>
  828:         private static void CompareCurrentAndNewViewModels(ref IdentityViewModel currentIdentityViewModel, ref IdentityViewModel identityViewModel)
  829:         {
  830:             if (identityViewModel.Framework1SelectedValue != currentIdentityViewModel.Framework1SelectedValue)
  831:             {
  832:                 identityViewModel.Framework2SelectedValue = string.Empty;
  833:                 identityViewModel.Framework3SelectedValue = string.Empty;
  834:                 identityViewModel.Framework4SelectedValue = string.Empty;
  835:                 identityViewModel.Framework5SelectedValue = string.Empty;
  836:                 identityViewModel.Framework6SelectedValue = string.Empty;
  837:             }
  838:             else if (identityViewModel.Framework2SelectedValue != currentIdentityViewModel.Framework2SelectedValue)
  839:             {
  840:                 identityViewModel.Framework3SelectedValue = string.Empty;
  841:                 identityViewModel.Framework4SelectedValue = string.Empty;
  842:                 identityViewModel.Framework5SelectedValue = string.Empty;
  843:                 identityViewModel.Framework6SelectedValue = string.Empty;
  844:             }
  845:             else if (identityViewModel.Framework3SelectedValue != currentIdentityViewModel.Framework3SelectedValue)
  846:             {
  847:                 identityViewModel.Framework4SelectedValue = string.Empty;
  848:                 identityViewModel.Framework5SelectedValue = string.Empty;
  849:                 identityViewModel.Framework6SelectedValue = string.Empty;
  850:             }
  851:             else if (identityViewModel.Framework4SelectedValue != currentIdentityViewModel.Framework4SelectedValue)
  852:             {
  853:                 identityViewModel.Framework5SelectedValue = string.Empty;
  854:                 identityViewModel.Framework6SelectedValue = string.Empty;
  855:             }
  856:             else if (identityViewModel.Framework5SelectedValue != currentIdentityViewModel.Framework5SelectedValue)
  857:             {
  858:                 identityViewModel.Framework6SelectedValue = string.Empty;
  859:             }
  860:             else if (identityViewModel.Framework6SelectedValue != currentIdentityViewModel.Framework6SelectedValue)
  861:             {
  862:             }
  863:             else
  864:             {
  865:             }
  866:         }
  867:  
  868:         ////////////////////////////////////////////////////////////////////////////
  869:         ////////////////////////////////////////////////////////////////////////////
  870:  
  871:  
  872:  
  873:  
  874:  
  875:  
  876:  
  877:  
  878:  
  879:  
  880:  
  881:  
  882:  
  883:         ////////////////////////////////////////////////////////////////////////////
  884:         ////////////////////////////////////////////////////////////////////////////
  885:  
  886:         /// <summary>
  887:         ///
  888:         /// </summary>
  889:         public static void CreateRole(RoleManager<IdentityRole> roleManager, ref IdentityViewModel identityViewModel, string roleName)
  890:         {
  891:             var identityResult = Ia.Ftn.Cl.Models.Identity.CreateRole(roleManager, roleName);
  892:  
  893:             identityViewModel.Result = new Ia.Cl.Models.Result();
  894:  
  895:             if (identityResult.Succeeded)
  896:             {
  897:                 identityViewModel.Result.AddSuccess("Role created.");
  898:             }
  899:             else
  900:             {
  901:                 identityViewModel.Result.AddError("Role not created: " + identityResult.Errors.First().Description);
  902:             }
  903:         }
  904:  
  905:         ////////////////////////////////////////////////////////////////////////////
  906:  
  907:         /// <summary>
  908:         ///
  909:         /// </summary>
  910:         public static void DeleteRole(RoleManager<IdentityRole> roleManager, ref IdentityViewModel identityViewModel, string roleName)
  911:         {
  912:             var identityResult = Ia.Ftn.Cl.Models.Identity.DeleteRole(roleManager, roleName);
  913:  
  914:             identityViewModel.Result = new Ia.Cl.Models.Result();
  915:  
  916:             if (identityResult.Succeeded)
  917:             {
  918:                 identityViewModel.Result.AddSuccess("Role deleted.");
  919:             }
  920:             else
  921:             {
  922:                 identityViewModel.Result.AddError("Role not deleted: " + identityResult.Errors.First().Description);
  923:             }
  924:         }
  925:  
  926:         ////////////////////////////////////////////////////////////////////////////
  927:  
  928:         /// <summary>
  929:         ///
  930:         /// </summary>
  931:         public static void RoleViewModel(RoleManager<IdentityRole> roleManager, ref IdentityViewModel identityViewModel)
  932:         {
  933:             string s;
  934:  
  935:             var identityRoles = Ia.Ftn.Cl.Models.Identity.RoleList(roleManager);
  936:  
  937:             identityViewModel.RoleSelectList = new SelectList(identityRoles);
  938:  
  939:             // below: list of all roles for quick reference
  940:             s = string.Empty;
  941:  
  942:             foreach (var role in identityRoles) s += role + "<br />";
  943:  
  944:             identityViewModel.RoleListText = s;
  945:         }
  946:  
  947:         ////////////////////////////////////////////////////////////////////////////
  948:         ////////////////////////////////////////////////////////////////////////////
  949:     }
  950:  
  951:     ////////////////////////////////////////////////////////////////////////////
  952:     ////////////////////////////////////////////////////////////////////////////
  953: }