)>}]
شركة التطبيقات المتكاملة لتصميم وبرمجة البرمجيات الخاصة ش.ش.و.
Integrated Applications Programming Company
Home » Code Library » Index (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.Data;
    4: using System.Text;
    5:  
    6: namespace Ia.Ftn.Wa.Models.Application
    7: {
    8:     ////////////////////////////////////////////////////////////////////////////
    9:  
   10:     /// <summary publish="true">
   11:     ///
   12:     /// </summary>
   13:     /// 
   14:     /// <remarks> 
   15:     /// Copyright © 2006-2025 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   16:     /// </remarks> 
   17:     public static class Index
   18:     {
   19:         ////////////////////////////////////////////////////////////////////////////
   20:  
   21:         /// <summary>
   22:         /// 
   23:         /// </summary>
   24:         public static void Configuration(RoleManager<IdentityRole> roleManager, ref Ia.Ftn.Wa.Models.Application.ApplicationViewModel applicationViewModel)
   25:         {
   26:             StringBuilder sb;
   27:  
   28:             var list = new List<string>();
   29:  
   30:             applicationViewModel.AllowedToBeMigratedOltSymbolList = string.Join(", ", Ia.Ftn.Cl.Models.Business.Service.AllowedToBeMigratedOltSymbolList.ToArray());
   31:             applicationViewModel.AllowedToBeProvisionedOltSymbolList = string.Join(", ", Ia.Ftn.Cl.Models.Business.Service.AllowedToBeProvisionedOltSymbolList.ToArray());
   32:  
   33:             applicationViewModel.AllowedToBeMigratedDomainList = string.Join(", ", Ia.Ftn.Cl.Models.Business.Service.AllowedToBeMigratedDomainList.ToArray());
   34:             applicationViewModel.AllowedToBeProvisionedDomainList = string.Join(", ", Ia.Ftn.Cl.Models.Business.Service.AllowedToBeProvisionedDomainList.ToArray());
   35:  
   36:             applicationViewModel.ServiceRequestDomainList = string.Join(", ", Ia.Ftn.Cl.Models.Data.ServiceRequest.ServiceRequestDomainList.ToArray().OrderBy(u => u.ToString()));
   37:             applicationViewModel.ServiceRequestHistoryDomainList = string.Join(", ", Ia.Ftn.Cl.Models.Data.ServiceRequestHistory.ServiceRequestHistoryDomainList.ToArray().OrderBy(u => u.ToString()));
   38:  
   39:             applicationViewModel.DomainListText = string.Join(", ", Ia.Ftn.Cl.Models.Data.Service.DomainList.ToArray().OrderBy(u => u.ToString()));
   40:             applicationViewModel.NokiaSwitchDomainList = string.Join(", ", Ia.Ftn.Cl.Models.Data.Service.NokiaSwitchDomainList.ToArray().OrderBy(u => u.ToString()));
   41:             applicationViewModel.HuaweiSwitchDomainList = string.Join(", ", Ia.Ftn.Cl.Models.Data.Service.HuaweiSwitchDomainList.ToArray().OrderBy(u => u.ToString()));
   42:  
   43:             applicationViewModel.PstnDomainList = string.Join(", ", Ia.Ftn.Cl.Models.Data.Service.PstnDomainList.ToArray().OrderBy(u => u.ToString()));
   44:             applicationViewModel.AxePstnDomainList = string.Join(", ", Ia.Ftn.Cl.Models.Data.Service.AxePstnDomainList.ToArray().OrderBy(u => u.ToString()));
   45:             applicationViewModel.EwsdPstnDomainList = string.Join(", ", Ia.Ftn.Cl.Models.Data.Service.EwsdPstnDomainList.ToArray().OrderBy(u => u.ToString()));
   46:             applicationViewModel.MsanDomainList = string.Join(", ", Ia.Ftn.Cl.Models.Data.Service.MsanDomainList.ToArray().OrderBy(u => u.ToString()));
   47:             applicationViewModel.SoftXDomainList = string.Join(", ", Ia.Ftn.Cl.Models.Data.Service.SoftXDomainList.ToArray().OrderBy(u => u.ToString()));
   48:  
   49:             applicationViewModel.SpsDomainList = string.Join(", ", Ia.Ftn.Cl.Models.Data.Service.SpsDomainList.ToArray().OrderBy(u => u.ToString()));
   50:             applicationViewModel.PstnThatUsesNpServerDomainList = string.Join(", ", Ia.Ftn.Cl.Models.Data.Service.PstnThatUsesNpServerDomainList.ToArray().OrderBy(u => u.ToString()));
   51:  
   52:             applicationViewModel.PstnAndMsanDomainList = string.Join(", ", Ia.Ftn.Cl.Models.Data.Service.PstnAndMsanDomainList.ToArray().OrderBy(u => u.ToString()));
   53:  
   54:             var unsyncableAccessNameList = Ia.Ftn.Cl.Models.Data.ServiceRequestOnt.AccessNamesThatRevertToAnUnexplainedErroneousStateInTheCustomerDepartmentDatabaseAndAreExemptFromSynchronizationProcessingList();
   55:             applicationViewModel.UnsyncableAccessNameList = string.Join(", ", unsyncableAccessNameList.ToArray().OrderBy(u => u.ToString()));
   56:  
   57:  
   58:             list = new List<string>();
   59:             foreach (var kuwaitFtnArea in Ia.Ftn.Cl.Models.Data.Service.KuwaitFtnAreaList)
   60:             {
   61:                 list.Add("[" + kuwaitFtnArea.Name + " (" + kuwaitFtnArea.Symbol + "): " + kuwaitFtnArea.Id + "] ");
   62:             }
   63:             applicationViewModel.KuwaitFtnAreaList = string.Join(", ", list.ToArray().OrderBy(u => u.ToString()));
   64:  
   65:  
   66:             var siteList = (from s in Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.SiteList select s).ToList();
   67:             sb = new StringBuilder();
   68:             foreach (var site in siteList) sb.AppendLine("[" + site.NameArabicName + ": " + site.Id + "], ");
   69:             applicationViewModel.SiteSymbolAndId = sb.ToString();
   70:  
   71:  
   72:             var oltList = (from o in Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.OltList select o).ToList();
   73:             sb = new StringBuilder();
   74:             foreach (var olt in oltList) sb.AppendLine(olt.AmsName + ": " + olt.Id + ", ");
   75:             applicationViewModel.OltAmsNameAndId = sb.ToString();
   76:  
   77:  
   78:             var siteMsanList = (from s in Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.MsanList select s).ToList();
   79:             sb = new StringBuilder();
   80:             foreach (var siteMsan in siteMsanList) sb.AppendLine(siteMsan.NameSymbol + ": " + siteMsan.Id + ", ");
   81:             applicationViewModel.SiteMsanSymbolAndId = sb.ToString();
   82:  
   83:  
   84:             var msanDevList = (from s in Ia.Ftn.Cl.Models.Data.Huawei.Default.MsanDevList select s).ToList();
   85:             sb = new StringBuilder();
   86:             foreach (var msanDev in msanDevList) sb.AppendLine(msanDev.Dev + ", ");
   87:             applicationViewModel.MsanDevList = sb.ToString();
   88:  
   89:  
   90:             applicationViewModel.SymbolDomainSameSwitchVendorButDifferentSiteExceptionList = string.Join(", ", Ia.Ftn.Cl.Models.Business.Service.SymbolDomainSameSwitchVendorButDifferentSiteExceptionList.ToArray().OrderBy(u => u.ToString()));
   91:  
   92:  
   93:             applicationViewModel.ServiceRequestApplication = string.Join("<br/>", Ia.Ftn.Cl.Models.Data.MessageQueue.ServiceRequestApplication.List.ToArray());
   94:             applicationViewModel.ServiceApplication = string.Join("<br/>", Ia.Ftn.Cl.Models.Data.MessageQueue.ServiceApplication.List.ToArray());
   95:  
   96:             applicationViewModel.ProvisionApplication = string.Join("<br/>", Ia.Ftn.Cl.Models.Data.MessageQueue.ProvisionApplication.List.ToArray());
   97:             applicationViewModel.AmsApplication = string.Join("<br/>", Ia.Ftn.Cl.Models.Data.MessageQueue.AmsApplication.List.ToArray());
   98:             applicationViewModel.NceApplication = string.Join("<br/>", Ia.Ftn.Cl.Models.Data.MessageQueue.NceApplication.List.ToArray());
   99:             applicationViewModel.AxeApplication = string.Join("<br/>", Ia.Ftn.Cl.Models.Data.MessageQueue.AxeApplication.List.ToArray());
  100:             applicationViewModel.NetManagerApplication = string.Join("<br/>", Ia.Ftn.Cl.Models.Data.MessageQueue.NetManagerApplication.List.ToArray());
  101:             applicationViewModel.SoftXApplication = string.Join("<br/>", Ia.Ftn.Cl.Models.Data.MessageQueue.SoftXApplication.List.ToArray());
  102:             applicationViewModel.SpsApplication = string.Join("<br/>", Ia.Ftn.Cl.Models.Data.MessageQueue.SpsApplication.List.ToArray());
  103:             applicationViewModel.FtnApplication = string.Join("<br/>", Ia.Ftn.Cl.Models.Data.MessageQueue.FtnApplication.List.ToArray());
  104:             applicationViewModel.TelegramApplication = string.Join("<br/>", Ia.Ftn.Cl.Models.Data.MessageQueue.TelegramApplication.List.ToArray());
  105:             applicationViewModel.SecretaryApplication = string.Join("<br/>", Ia.Ftn.Cl.Models.Data.MessageQueue.SecretaryApplication.List.ToArray());
  106:             applicationViewModel.EmailApplication = string.Join("<br/>", Ia.Ftn.Cl.Models.Data.MessageQueue.EmailApplication.List.ToArray());
  107:             applicationViewModel.SchedulerApplication = string.Join("<br/>", Ia.Ftn.Cl.Models.Data.MessageQueue.SchedulerApplication.List.ToArray());
  108:             applicationViewModel.SdcApplication = string.Join("<br/>", Ia.Ftn.Cl.Models.Data.MessageQueue.SdcApplication.List.ToArray());
  109:             applicationViewModel.MdaaApplication = string.Join("<br/>", Ia.Ftn.Cl.Models.Data.MessageQueue.MdaaApplication.List.ToArray());
  110:  
  111:             /*
  112:                 var v = Ia.Ftn.Cl.Models.Data.Service.DomainList;
  113:                 string sql;
  114:                 sql = "where Service not like '" + string.Join("%' and Service not like '", v) + "%'";
  115:              */
  116:  
  117:  
  118:             var roleList = Ia.Ftn.Cl.Models.Identity.RoleList(roleManager);
  119:  
  120:             sb = new StringBuilder();
  121:             foreach (var role in roleList) sb.AppendLine(role.Name + "<br />");
  122:             applicationViewModel.IdentityRoles = sb.ToString();
  123:         }
  124:  
  125:         ////////////////////////////////////////////////////////////////////////////
  126:         ////////////////////////////////////////////////////////////////////////////
  127:  
  128:         /// <summary>
  129:         /// 
  130:         /// </summary>
  131:         public static void SettingViewModel(UserManager<Ia.Ftn.Cl.Models.StaffIdentityUser> userManager, ref Ia.Ftn.Wa.Models.Application.ApplicationViewModel applicationViewModel)
  132:         {
  133:             var users = userManager.Users;
  134:  
  135:             var list = users.ToDictionary(m => m.Id, m => m.UserName);
  136:  
  137:             applicationViewModel.UserSelectList = new SelectList(list, "Key", "Value");
  138:         }
  139:  
  140:         ////////////////////////////////////////////////////////////////////////////
  141:  
  142:         /// <summary>
  143:         /// 
  144:         /// </summary>
  145:         public static void SettingPost(UserManager<Ia.Ftn.Cl.Models.StaffIdentityUser> userManager, RoleManager<IdentityRole> roleManager, ref Ia.Ftn.Wa.Models.Application.ApplicationViewModel applicationViewModel, string commandName)
  146:         {
  147:             if (commandName == "nullifyUserInReportAndReportHistory") NullifyUserInReportAndReportHistory(ref applicationViewModel);
  148:             else if (commandName == "createFrameworkRolesIfNotExist") CreateFrameworkRolesIfNotExist(roleManager, ref applicationViewModel);
  149:             else if (commandName == "updateFrameworkRoleToStaffIdentityRoleList") UpdateFrameworkRoleToStaffIdentityRoleList(userManager, roleManager, ref applicationViewModel);
  150:             else if (commandName == "unlockoutAllUsers") UnlockoutAllUsers(ref applicationViewModel);
  151:             else if (commandName == "setMembershipIsApprovedToFalseIfUserLastActivityDateIsLessThanDateTime") SetMembershipIsApprovedToFalseIfUserLastActivityDateIsLessThanDateTime(ref applicationViewModel);
  152:             else if (commandName == "deleteStaffIfUserLastActivityDateIsLessThanDateTime") DeleteStaffIfUserLastActivityDateIsLessThanDateTime(ref applicationViewModel);
  153:             else if (commandName == "shutdownAllActiveApplications") ShutdownAllActiveApplications(ref applicationViewModel);
  154:             else
  155:             {
  156:             }
  157:         }
  158:  
  159:         ////////////////////////////////////////////////////////////////////////////
  160:         ////////////////////////////////////////////////////////////////////////////
  161:  
  162:         /// <summary>
  163:         /// 
  164:         /// </summary>
  165:         public static void MailPost(UserManager<Ia.Ftn.Cl.Models.StaffIdentityUser> userManager, RoleManager<IdentityRole> roleManager, ref Ia.Ftn.Wa.Models.Application.ApplicationViewModel applicationViewModel, string selectedValue)
  166:         {
  167:             string content, subject;
  168:             DataTable accessDataTable;
  169:  
  170:             var applicationContact = Ia.Cl.Models.ApplicationConfiguration.GetSetting("AppSettings:ApplicationContact");
  171:             var applicationEmail = Ia.Cl.Models.ApplicationConfiguration.GetSetting("AppSettings:ApplicationEmail");
  172:  
  173:             if (selectedValue == "1")
  174:             {
  175:                 subject = "Table of ONTs that are provisioned and ready within FTN access network but do not exist in the Customer Department's database (" + DateTime.Now.AddHours(3).ToString("yyyy-MM-dd HH:mm") + ")";
  176:  
  177:                 accessDataTable = Ia.Ftn.Cl.Models.Ui.Access.ReadListWithOntListProvisionedAndReadyButDoNotExistInCustomerDepartmentDatabaseDataTable();
  178:  
  179:                 content = "Table of ONTs that are provisioned and ready within FTN access network but do not exist in the Customer Department's database (" + DateTime.Now.AddHours(3).ToString("yyyy-MM-dd HH:mm") + ")";
  180:  
  181:                 content += "\r\n";
  182:                 content += "\r\n";
  183:  
  184:                 content += Ia.Cl.Models.Default.GenerateTabSeparatedTextFromDataTable(accessDataTable);
  185:  
  186:                 applicationViewModel.Result = Ia.Ftn.Cl.Models.Ui.Mail.SendPlainMail(applicationContact, applicationEmail, subject, content);
  187:             }
  188:             else if (selectedValue == "2")
  189:             {
  190:                 applicationViewModel.Result = Ia.Ftn.Cl.Models.Ui.Administration.Default.EmailStatisticReport(applicationContact, applicationEmail);
  191:             }
  192:             else if (selectedValue == "3")
  193:             {
  194:                 applicationViewModel.Result = Ia.Ftn.Cl.Models.Ui.Administration.Default.EmailListOfPreviouslyPstnDomainServicesMigratedOrProvisionedIntoImsFiberOrImsMsanServicesInAllowedToBeMigratedOltsReport(applicationContact, applicationEmail);
  195:             }
  196:             else
  197:             {
  198:                 applicationViewModel.Result = new Ia.Cl.Models.Result();
  199:             }
  200:         }
  201:  
  202:         ////////////////////////////////////////////////////////////////////////////
  203:         ////////////////////////////////////////////////////////////////////////////
  204:  
  205:         /// <summary>
  206:         ///
  207:         /// </summary>
  208:         public static void NullifyUserInReportAndReportHistory(ref Ia.Ftn.Wa.Models.Application.ApplicationViewModel applicationViewModel)
  209:         {
  210:             bool b;
  211:             int n1, n2;
  212:  
  213:             applicationViewModel.Result = new Ia.Cl.Models.Result();
  214:  
  215:             if (!string.IsNullOrEmpty(applicationViewModel.UserSelectedValue))
  216:             {
  217:                 var userId = applicationViewModel.UserSelectedValue;
  218:  
  219:                 b = Ia.Ftn.Cl.Models.Data.Report.NullifyUserId(userId, out n1);
  220:  
  221:                 if (b)
  222:                 {
  223:                     b = Ia.Ftn.Cl.Models.Data.ReportHistory.NullifyUserId(userId, out n2);
  224:  
  225:                     if (b)
  226:                     {
  227:                         applicationViewModel.Result.AddSuccess(n1 + " reports and " + n2 + " report histories updated.");
  228:                     }
  229:                     else
  230:                     {
  231:                         applicationViewModel.Result.AddError(n1 + " reports updated, but updating of report histories failed.");
  232:                     }
  233:                 }
  234:                 else
  235:                 {
  236:                     applicationViewModel.Result.AddError("Reports update failed, updating of report histories abandoned.");
  237:                 }
  238:             }
  239:             else
  240:             {
  241:                 applicationViewModel.Result.AddWarning("No users selected.");
  242:             }
  243:         }
  244:  
  245:         ////////////////////////////////////////////////////////////////////////////
  246:  
  247:         /// <summary>
  248:         ///
  249:         /// </summary>
  250:         public static void CreateFrameworkRolesIfNotExist(RoleManager<IdentityRole> roleManager, ref Ia.Ftn.Wa.Models.Application.ApplicationViewModel applicationViewModel)
  251:         {
  252:             Ia.Ftn.Cl.Models.Data.Administration.CreateFrameworkIdentityRolesIfTheyDoNotExist(roleManager);
  253:  
  254:             applicationViewModel.Result = new Ia.Cl.Models.Result();
  255:  
  256:             applicationViewModel.Result.AddSuccess("Command executed.");
  257:         }
  258:  
  259:         ////////////////////////////////////////////////////////////////////////////
  260:  
  261:         /// <summary>
  262:         ///
  263:         /// </summary>
  264:         public static void UpdateFrameworkRoleToStaffIdentityRoleList(UserManager<Ia.Ftn.Cl.Models.StaffIdentityUser> userManager, RoleManager<IdentityRole> roleManager, ref Ia.Ftn.Wa.Models.Application.ApplicationViewModel applicationViewModel)
  265:         {
  266:             var staffIdentityUserList = Ia.Ftn.Cl.Models.Data.StaffIdentityUser.List();
  267:  
  268:             foreach (var staffIdentityUser in staffIdentityUserList)
  269:             {
  270:                 Ia.Ftn.Cl.Models.Business.Authority.UpdateFrameworkRolesOfStaffIdentityUser(userManager, roleManager, staffIdentityUser);
  271:             }
  272:  
  273:             applicationViewModel.Result = new Ia.Cl.Models.Result();
  274:  
  275:             applicationViewModel.Result.AddSuccess("Command executed.");
  276:         }
  277:  
  278:         ////////////////////////////////////////////////////////////////////////////
  279:  
  280:         /// <summary>
  281:         ///
  282:         /// </summary>
  283:         public static void UnlockoutAllUsers(ref Ia.Ftn.Wa.Models.Application.ApplicationViewModel applicationViewModel)
  284:         {
  285:             var result = new Ia.Cl.Models.Result();
  286:  
  287:             Ia.Ftn.Cl.Models.Data.StaffIdentityUser.UnlockoutAllIdentityUsers();
  288:  
  289:             result.AddSuccess("Unlock All Locked-Out Users.");
  290:  
  291:             applicationViewModel.Result = result;
  292:         }
  293:  
  294:         ////////////////////////////////////////////////////////////////////////////
  295:  
  296:         /// <summary>
  297:         ///
  298:         /// </summary>
  299:         public static void SetMembershipIsApprovedToFalseIfUserLastActivityDateIsLessThanDateTime(ref Ia.Ftn.Wa.Models.Application.ApplicationViewModel applicationViewModel)
  300:         {
  301:             var result = new Ia.Cl.Models.Result();
  302:             var dateTime = DateTime.UtcNow.AddHours(3);
  303:  
  304:             Ia.Ftn.Cl.Models.Data.StaffIdentityUser.SetMembershipIsApprovedToFalseIfUserLastActivityDateIsLessThanDateTime(dateTime.AddDays(-60));
  305:  
  306:             result.AddSuccess("Set Membership IsApproved to false if user's last activity date is before 60 days.");
  307:  
  308:             applicationViewModel.Result = result;
  309:         }
  310:  
  311:         ////////////////////////////////////////////////////////////////////////////
  312:  
  313:         /// <summary>
  314:         ///
  315:         /// </summary>
  316:         public static void DeleteStaffIfUserLastActivityDateIsLessThanDateTime(ref Ia.Ftn.Wa.Models.Application.ApplicationViewModel applicationViewModel)
  317:         {
  318:             var result = new Ia.Cl.Models.Result();
  319:             var dateTime = DateTime.UtcNow.AddHours(3);
  320:  
  321:             Ia.Ftn.Cl.Models.Data.StaffIdentityUser.DeleteStaffIfUserLastActivityDateIsLessThanDateTime(dateTime.AddDays(-70));
  322:  
  323:             result.AddSuccess("Delete staff if user's last activity date is before 70 days.");
  324:  
  325:             applicationViewModel.Result = result;
  326:         }
  327:  
  328:         ////////////////////////////////////////////////////////////////////////////
  329:  
  330:         /// <summary>
  331:         ///
  332:         /// </summary>
  333:         public static void ShutdownAllActiveApplications(ref Ia.Ftn.Wa.Models.Application.ApplicationViewModel applicationViewModel)
  334:         {
  335:             Ia.Ftn.Cl.Models.Data.MessageQueue.SecretaryApplication.Enqueue(Ia.Ftn.Cl.Models.Business.MessageQueue.Application.FtnApplication, Ia.Ftn.Cl.Models.Business.MessageQueue.Process.ActiveApplicationRunningPermissionState, false);
  336:  
  337:             applicationViewModel.Result = new Ia.Cl.Models.Result();
  338:  
  339:             applicationViewModel.Result.AddSuccess("All active applications are being shutdown now (يتم إغلاق التطبيقات الفعالة)");
  340:         }
  341:  
  342:         ////////////////////////////////////////////////////////////////////////////
  343:         ////////////////////////////////////////////////////////////////////////////
  344:     }
  345:  
  346:     ////////////////////////////////////////////////////////////////////////////
  347:     ////////////////////////////////////////////////////////////////////////////
  348: }