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

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

    1: using Microsoft.AspNetCore.Mvc.Rendering;
    2: using System.Data;
    3: using System.Net;
    4:  
    5: namespace Ia.Ftn.Wa.Models.Provision
    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 Service
   17:     {
   18:         ////////////////////////////////////////////////////////////////////////////
   19:  
   20:         /// <summary>
   21:         ///
   22:         /// </summary>
   23:         public static void ViewModel(ref Ia.Ftn.Wa.Models.Provision.ServiceViewModel serviceViewModel)
   24:         {
   25:             // http://ftn/provision/service.aspx?service=25233434&accessName=SHD.20.11
   26:  
   27:             //serviceViewModel.ServiceInput = serviceViewModel.ServiceSupplementaryServiceInput = Request.QueryString["service"] != null ? WebUtility.HtmlDecode(Request.QueryString["service"].ToString()) : string.Empty;
   28:             //serviceViewModel.AccessNameInput = Request.QueryString["accessName"] != null ? WebUtility.HtmlDecode(Request.QueryString["accessName"].ToString()) : string.Empty;
   29:  
   30:             SupplementaryServiceSelectList_ViewModel(ref serviceViewModel);
   31:  
   32:             Page_ViewModel(ref serviceViewModel);
   33:         }
   34:  
   35:         ////////////////////////////////////////////////////////////////////////////
   36:  
   37:         /// <summary>
   38:         ///
   39:         /// </summary>
   40:         public static void Post(ref Ia.Ftn.Wa.Models.Provision.ServiceViewModel serviceViewModel, string commandName)
   41:         {
   42:             if (commandName == "createReadServiceTask") EnqueueCreateRead(ref serviceViewModel);
   43:             else if (commandName == "deleteReadServiceTask") EnqueueDeleteRead(ref serviceViewModel);
   44:             else if (commandName == "supplementaryServiceSetReadTask") EnqueueSetRead(ref serviceViewModel);
   45:             else if (commandName == "supplementaryServiceResetReadTask") EnqueueResetRead(ref serviceViewModel);
   46:             else
   47:             {
   48:             }
   49:         }
   50:  
   51:         ////////////////////////////////////////////////////////////////////////////
   52:         ////////////////////////////////////////////////////////////////////////////
   53:  
   54:         /// <summary>
   55:         ///
   56:         /// </summary>
   57:         private static void Page_ViewModel(ref Ia.Ftn.Wa.Models.Provision.ServiceViewModel serviceViewModel)
   58:         {
   59:             serviceViewModel.Label = "1-" + Ia.Ftn.Cl.Models.Data.Default.MaximumOntTelPorts;
   60:  
   61:             serviceViewModel.CreateDeleteReadServiceTaskButtonEnabled = serviceViewModel.SupplementaryServiceSetResetReadTaskButtonEnabled = (Ia.Ftn.Cl.Models.Business.Authority.StaffCanExecuteTasks(serviceViewModel.CurrentStaffIdentityUser)) ? true : false;
   62:  
   63:             serviceViewModel.CreateDeleteReadServiceTaskButtonEnabled = serviceViewModel.OverrideRouterDomainRestrictionCheckBoxEnabled = Ia.Ftn.Cl.Models.Business.Authority.StaffCanOverrideRouterDomainRestrictionInCreatingService(serviceViewModel.CurrentStaffIdentityUser);
   64:         }
   65:  
   66:         ////////////////////////////////////////////////////////////////////////////
   67:  
   68:         /// <summary>
   69:         ///
   70:         /// </summary>
   71:         private static void SupplementaryServiceSelectList_ViewModel(ref Ia.Ftn.Wa.Models.Provision.ServiceViewModel serviceViewModel)
   72:         {
   73:             string itemValue, itemText;
   74:             var supplementaryServiceList = Enum.GetValues(typeof(Ia.Ftn.Cl.Models.Business.Service.SupplementaryService));
   75:             var supplementaryServiceArabicDictionary = Ia.Ftn.Cl.Models.Business.Service.SupplementaryServiceArabicDictionary;
   76:  
   77:             var supplementaryServiceSelectList = new List<SelectListItem>();
   78:  
   79:             if (supplementaryServiceList.Length == supplementaryServiceArabicDictionary.Count)
   80:             {
   81:                 for (var i = 0; i < supplementaryServiceList.Length; i++)
   82:                 {
   83:                     itemValue = supplementaryServiceList.GetValue(i).ToString();
   84:                     itemText = supplementaryServiceList.GetValue(i) + " (" + supplementaryServiceArabicDictionary[(Ia.Ftn.Cl.Models.Business.Service.SupplementaryService)supplementaryServiceList.GetValue(i)] + ")";
   85:  
   86:                     supplementaryServiceSelectList.Add(new SelectListItem(itemText, itemValue));
   87:                 }
   88:  
   89:                 serviceViewModel.SupplementaryServiceSelectList = new SelectList(supplementaryServiceSelectList, "Value", "Text");
   90:             }
   91:             else throw new ArgumentOutOfRangeException("supplementaryServiceList and supplementaryServiceArabicList lengths do not match.");
   92:         }
   93:  
   94:         ////////////////////////////////////////////////////////////////////////////
   95:         ////////////////////////////////////////////////////////////////////////////
   96:  
   97:         /// <summary>
   98:         ///
   99:         /// </summary>
  100:         private static void EnqueueCreateRead(ref Ia.Ftn.Wa.Models.Provision.ServiceViewModel serviceViewModel)
  101:         {
  102:             EnqueueCreateReadOrDeleteRead(ref serviceViewModel, Ia.Ftn.Cl.Models.Business.MessageQueue.Process.CreateReadServiceAccessPort, serviceViewModel.ServiceInput, serviceViewModel.AccessNameInput, serviceViewModel.PortInput, serviceViewModel.OverrideRouterDomainRestrictionCheckBoxEnabled);
  103:         }
  104:  
  105:         ////////////////////////////////////////////////////////////////////////////
  106:  
  107:         /// <summary>
  108:         ///
  109:         /// </summary>
  110:         private static void EnqueueDeleteRead(ref Ia.Ftn.Wa.Models.Provision.ServiceViewModel serviceViewModel)
  111:         {
  112:             EnqueueCreateReadOrDeleteRead(ref serviceViewModel, Ia.Ftn.Cl.Models.Business.MessageQueue.Process.DeleteReadServiceAccess, serviceViewModel.ServiceInput, serviceViewModel.AccessNameInput, serviceViewModel.PortInput, serviceViewModel.OverrideRouterDomainRestrictionCheckBoxEnabled);
  113:         }
  114:  
  115:         ////////////////////////////////////////////////////////////////////////////
  116:  
  117:         /// <summary>
  118:         ///
  119:         /// </summary>
  120:         private static void EnqueueCreateReadOrDeleteRead(ref Ia.Ftn.Wa.Models.Provision.ServiceViewModel serviceViewModel, Ia.Ftn.Cl.Models.Business.MessageQueue.Process process, string service0, string accessName0, string port0, bool overrideRouterDomainRestriction)
  121:         {
  122:             int portNumber;
  123:             string service, accessName, port, accessNameOrEmpty;
  124:             Ia.Cl.Models.Result result;
  125:             Ia.Ftn.Cl.Models.Access access;
  126:  
  127:             result = new Ia.Cl.Models.Result();
  128:  
  129:             if (Ia.Ftn.Cl.Models.Business.Authority.StaffCanExecuteTasks(serviceViewModel.CurrentStaffIdentityUser))
  130:             {
  131:                 if (!string.IsNullOrEmpty(service0))
  132:                 {
  133:                     service = WebUtility.HtmlDecode(service0);
  134:                     service = service.Trim();
  135:  
  136:                     if (service.Length > 0)
  137:                     {
  138:                         if (int.TryParse(service, out int number))
  139:                         {
  140:                             if (Ia.Ftn.Cl.Models.Business.Service.ServiceHasEightDigitsAndIsWithinAllowedDomainList(number))
  141:                             {
  142:                                 if (string.IsNullOrEmpty(port0)) port = Ia.Ftn.Cl.Models.Business.Default.PortUndefinedOrInvalidOrUnknown.ToString();
  143:                                 else
  144:                                 {
  145:                                     port = WebUtility.HtmlDecode(port0);
  146:                                     port = port.Trim();
  147:                                 }
  148:  
  149:                                 if (int.TryParse(port, out portNumber))
  150:                                 {
  151:                                     if (portNumber >= Ia.Ftn.Cl.Models.Business.Default.PortUndefinedOrInvalidOrUnknown && portNumber <= Ia.Ftn.Cl.Models.Data.Default.MaximumOntTelPorts)
  152:                                     {
  153:                                         if (process == Ia.Ftn.Cl.Models.Business.MessageQueue.Process.CreateReadServiceAccessPort)
  154:                                         {
  155:                                             if (Ia.Ftn.Cl.Models.Business.Service.NumberIsWithinAllowedNokiaSwitchDomainList(service))
  156:                                             {
  157:                                                 if (!string.IsNullOrEmpty(accessName0))
  158:                                                 {
  159:                                                     accessName = WebUtility.HtmlDecode(accessName0);
  160:                                                     accessName = accessName.Trim();
  161:  
  162:                                                     if (accessName.Length > 0)
  163:                                                     {
  164:                                                         if (Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.AccessNameIsWithinAllowedOntList(accessName, out string accessName2))
  165:                                                         {
  166:                                                             access = Ia.Ftn.Cl.Models.Data.Access.ReadByAccessName(accessName2);
  167:  
  168:                                                             if (access != null)
  169:                                                             {
  170:                                                                 Ia.Ftn.Cl.Models.Business.Maintenance.Task.ServiceAccessPortTask(process, service, access.Name, portNumber, overrideRouterDomainRestriction, serviceViewModel.CurrentStaffIdentityUser, out result);
  171:                                                             }
  172:                                                             else result.AddError(@"""" + accessName + @""" does not exist (الجهاز غير معرف)");
  173:                                                         }
  174:                                                         else result.AddError(@"""" + accessName + @""" does not belong to the network (الجهاز لا ينتمي للشبكة)");
  175:                                                     }
  176:                                                     else result.AddError("Input format is unknown (قيمة غير مفهومة)");
  177:                                                 }
  178:                                                 else result.AddError("Can't create a Nokia service without an access. AccessName is null or empty. (لم يتم إدخال جهاز لتركيب رقم نوكيا)");
  179:                                             }
  180:                                             else if (Ia.Ftn.Cl.Models.Business.Service.NumberIsWithinAllowedHuaweiSwitchDomainList(service))
  181:                                             {
  182:                                                 if (!string.IsNullOrEmpty(accessName0))
  183:                                                 {
  184:                                                     accessName = WebUtility.HtmlDecode(accessName0);
  185:                                                     accessName = accessName.Trim();
  186:  
  187:                                                     if (accessName.Length > 0)
  188:                                                     {
  189:                                                         if (Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.AccessNameIsWithinAllowedOntList(accessName, out string accessName2))
  190:                                                         {
  191:                                                             access = Ia.Ftn.Cl.Models.Data.Access.ReadByAccessName(accessName2);
  192:  
  193:                                                             if (access != null)
  194:                                                             {
  195:                                                                 Ia.Ftn.Cl.Models.Business.Maintenance.Task.ServiceAccessTask(process, service, access.Name, overrideRouterDomainRestriction, serviceViewModel.CurrentStaffIdentityUser, out result);
  196:                                                             }
  197:                                                             else result.AddError(@"""" + accessName + @""" does not exist (الجهاز غير معرف)");
  198:                                                         }
  199:                                                         else result.AddError(@"""" + accessName + @""" does not belong to the network (الجهاز لا ينتمي للشبكة)");
  200:                                                     }
  201:                                                     else result.AddError("Input format is unknown (قيمة غير مفهومة)");
  202:                                                 }
  203:                                                 else
  204:                                                 {
  205:                                                     Ia.Ftn.Cl.Models.Business.Maintenance.Task.ServiceAccessTask(process, service, string.Empty, overrideRouterDomainRestriction, serviceViewModel.CurrentStaffIdentityUser, out result);
  206:                                                 }
  207:                                             }
  208:                                             else result.AddError("No input was entered for access (لم يتم إدخال جهاز)");
  209:                                         }
  210:                                         else if (process == Ia.Ftn.Cl.Models.Business.MessageQueue.Process.DeleteReadServiceAccess)
  211:                                         {
  212:                                             if (!string.IsNullOrEmpty(accessName0))
  213:                                             {
  214:                                                 accessName = WebUtility.HtmlDecode(accessName0);
  215:                                                 accessName = accessName.Trim();
  216:  
  217:                                                 if (accessName.Length > 0)
  218:                                                 {
  219:                                                     if (Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.AccessNameIsWithinAllowedOntList(accessName, out string accessName2))
  220:                                                     {
  221:                                                         access = Ia.Ftn.Cl.Models.Data.Access.ReadByAccessName(accessName2);
  222:  
  223:                                                         if (access != null) accessNameOrEmpty = access.Name;
  224:                                                         else accessNameOrEmpty = string.Empty;
  225:                                                     }
  226:                                                     else accessNameOrEmpty = string.Empty;
  227:                                                 }
  228:                                                 else accessNameOrEmpty = string.Empty;
  229:                                             }
  230:                                             else accessNameOrEmpty = string.Empty;
  231:  
  232:                                             Ia.Ftn.Cl.Models.Business.Maintenance.Task.ServiceAccessTask(process, service, accessNameOrEmpty, overrideRouterDomainRestriction, serviceViewModel.CurrentStaffIdentityUser, out result);
  233:                                         }
  234:                                         else throw new ArgumentOutOfRangeException("Message queue process " + process.ToString() + " is undefined");
  235:                                     }
  236:                                     else result.AddError(@"The port number """ + port + @""" is out of range. Should be between " + Ia.Ftn.Cl.Models.Business.Default.PortUndefinedOrInvalidOrUnknown + " and " + Ia.Ftn.Cl.Models.Data.Default.MaximumOntTelPorts + " inclusive. (رقم المدخل خارج نطاق المقبول");
  237:                                 }
  238:                                 else result.AddError(@"The port number """ + port + @""" is not empty or a valid number (ليس خاليا ولا رقماَ)");
  239:                             }
  240:                             else result.AddError(@"The number """ + number + @""" does not belong to the network (الرقم لا ينتمي للشبكة).");
  241:                         }
  242:                         else result.AddError(@"The service number """ + service + @""" is not a valid number (ليس رقماَ)");
  243:                     }
  244:                     else result.AddError("Input format is unknown (قيمة غير مفهومة)");
  245:                 }
  246:                 else result.AddError("No input was entered for service (لم يتم إدخال رقم).");
  247:             }
  248:             else result.AddError("You are not authorized to modify this value (لست مخولاً بتعديل هذه القيمة).");
  249:  
  250:             serviceViewModel.ServiceTaskResultLabel = result;
  251:         }
  252:  
  253:         ////////////////////////////////////////////////////////////////////////////
  254:         ////////////////////////////////////////////////////////////////////////////
  255:  
  256:         /// <summary>
  257:         ///
  258:         /// </summary>
  259:         private static void EnqueueSetRead(ref Ia.Ftn.Wa.Models.Provision.ServiceViewModel serviceViewModel)
  260:         {
  261:             var result = new Ia.Cl.Models.Result();
  262:  
  263:             var service = serviceViewModel.ServiceSupplementaryServiceInput;
  264:             var selectedItem = serviceViewModel.SupplementaryServiceSelectedValue;
  265:  
  266:             if (Ia.Ftn.Cl.Models.Business.Authority.StaffCanExecuteTasks(serviceViewModel.CurrentStaffIdentityUser))
  267:             {
  268:                 if (!string.IsNullOrEmpty(service))
  269:                 {
  270:                     service = WebUtility.HtmlDecode(service);
  271:                     service = service.Trim();
  272:  
  273:                     if (service.Length > 0)
  274:                     {
  275:                         if (int.TryParse(service, out int number))
  276:                         {
  277:                             if (Ia.Ftn.Cl.Models.Business.Service.ServiceHasEightDigitsAndIsWithinAllowedDomainList(number))
  278:                             {
  279:                                 Ia.Ftn.Cl.Models.Business.Maintenance.Task.SupplementaryServiceTask(Ia.Ftn.Cl.Models.Business.MessageQueue.Process.UpdateReadServiceSupplementaryService, service, selectedItem, true, serviceViewModel.CurrentStaffIdentityUser, out result);
  280:                             }
  281:                             else result.AddError(@"The number """ + number + @""" does not belong to the network (الرقم لا ينتمي للشبكة).");
  282:                         }
  283:                         else result.AddError(@"The service number """ + service + @""" is not a valid number (ليس رقماَ)");
  284:                     }
  285:                     else result.AddError("Input format is unknown (قيمة غير مفهومة)");
  286:                 }
  287:                 else result.AddError("No input was entered for service (لم يتم إدخال رقم).");
  288:             }
  289:             else result.AddError("You are not authorized to modify this value (لست مخولاً بتعديل هذه القيمة).");
  290:  
  291:             serviceViewModel.ServiceSupplementaryServiceTaskResultLabel = result;
  292:         }
  293:  
  294:         ////////////////////////////////////////////////////////////////////////////
  295:  
  296:         /// <summary>
  297:         ///
  298:         /// </summary>
  299:         private static void EnqueueResetRead(ref Ia.Ftn.Wa.Models.Provision.ServiceViewModel serviceViewModel)
  300:         {
  301:             var result = new Ia.Cl.Models.Result();
  302:  
  303:             var service = serviceViewModel.ServiceSupplementaryServiceInput;
  304:             var selectedItem = serviceViewModel.SupplementaryServiceSelectedValue;
  305:  
  306:             if (Ia.Ftn.Cl.Models.Business.Authority.StaffCanExecuteTasks(serviceViewModel.CurrentStaffIdentityUser))
  307:             {
  308:                 if (!string.IsNullOrEmpty(service))
  309:                 {
  310:                     service = WebUtility.HtmlDecode(service);
  311:                     service = service.Trim();
  312:  
  313:                     if (service.Length > 0)
  314:                     {
  315:                         if (int.TryParse(service, out int number))
  316:                         {
  317:                             if (Ia.Ftn.Cl.Models.Business.Service.ServiceHasEightDigitsAndIsWithinAllowedDomainList(number))
  318:                             {
  319:                                 Ia.Ftn.Cl.Models.Business.Maintenance.Task.SupplementaryServiceTask(Ia.Ftn.Cl.Models.Business.MessageQueue.Process.UpdateReadServiceSupplementaryService, service, selectedItem, false, serviceViewModel.CurrentStaffIdentityUser, out result);
  320:                             }
  321:                             else result.AddError(@"The number """ + number + @""" does not belong to the network (الرقم لا ينتمي للشبكة).");
  322:                         }
  323:                         else result.AddError(@"The service number """ + service + @""" is not a valid number (ليس رقماَ)");
  324:                     }
  325:                     else result.AddError("Input format is unknown (قيمة غير مفهومة)");
  326:                 }
  327:                 else result.AddError("No input was entered for service (لم يتم إدخال رقم).");
  328:             }
  329:             else result.AddError("You are not authorized to modify this value (لست مخولاً بتعديل هذه القيمة).");
  330:  
  331:             serviceViewModel.ServiceSupplementaryServiceTaskResultLabel = result;
  332:         }
  333:  
  334:         ////////////////////////////////////////////////////////////////////////////
  335:         ////////////////////////////////////////////////////////////////////////////
  336:     }
  337:  
  338:     ////////////////////////////////////////////////////////////////////////////
  339:     ////////////////////////////////////////////////////////////////////////////
  340: }