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

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.Net;
    3:  
    4: namespace Ia.Ftn.Wa.Models.Provision.Access
    5: {
    6:     ////////////////////////////////////////////////////////////////////////////
    7:  
    8:     /// <summary publish="true">
    9:     ///
   10:     /// </summary>
   11:     /// 
   12:     /// <remarks> 
   13:     /// Copyright © 2006-2025 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   14:     /// </remarks> 
   15:     public static class Manage
   16:     {
   17:         ////////////////////////////////////////////////////////////////////////////
   18:  
   19:         /// <summary>
   20:         ///
   21:         /// </summary>
   22:         public static void ViewModel(ref Ia.Ftn.Wa.Models.Provision.Access.ManageViewModel manageViewModel)
   23:         {
   24:             OltSelectList(ref manageViewModel);
   25:  
   26:             manageViewModel.InsertButtonEnabled = Ia.Ftn.Cl.Models.Business.Authority.StaffCanCreateReadUpdateDeleteAccessList(Ia.Ftn.Cl.Models.Business.Authority.PersistentStorageFunction.Create, manageViewModel.CurrentStaffIdentityUser);
   27:         }
   28:  
   29:         ////////////////////////////////////////////////////////////////////////////
   30:  
   31:         /// <summary>
   32:         ///
   33:         /// </summary>
   34:         public static void Post(ref Ia.Ftn.Wa.Models.Provision.Access.ManageViewModel manageViewModel, string commandName, string accessId)
   35:         {
   36:             if (commandName == "insert") Insert(ref manageViewModel);
   37:             else if (commandName == "edit") Edit(ref manageViewModel, accessId);
   38:             else if (commandName == "update") Update(ref manageViewModel, accessId);
   39:             else if (commandName == "delete") Delete(ref manageViewModel, accessId);
   40:             else if (commandName == "cancel") Cancel(ref manageViewModel);
   41:             else
   42:             {
   43:             }
   44:         }
   45:  
   46:         ////////////////////////////////////////////////////////////////////////////
   47:         ////////////////////////////////////////////////////////////////////////////
   48:  
   49:         /// <summary>
   50:         ///
   51:         /// </summary>
   52:         private static void Insert(ref Ia.Ftn.Wa.Models.Provision.Access.ManageViewModel manageViewModel)
   53:         {
   54:             var blockText = WebUtility.HtmlDecode(manageViewModel.BlockInput);
   55:             var street = WebUtility.HtmlDecode(manageViewModel.StreetInput);
   56:             var premisesOld = WebUtility.HtmlDecode(manageViewModel.PremisesOldInput);
   57:             var premisesNew = WebUtility.HtmlDecode(manageViewModel.PremisesNewInput);
   58:             var paci = WebUtility.HtmlDecode(manageViewModel.PaciInput);
   59:             var note = WebUtility.HtmlDecode(manageViewModel.NoteInput);
   60:  
   61:             var odf = string.Empty;
   62:  
   63:             var result = new Ia.Cl.Models.Result();
   64:             manageViewModel.InsertResult = new Ia.Cl.Models.Result();
   65:             manageViewModel.Result = new Ia.Cl.Models.Result();
   66:  
   67:             var oltId = int.Parse(manageViewModel.OltSelectedValue);
   68:             var ponNumber = int.Parse(manageViewModel.PonSelectedValue);
   69:  
   70:             if (Ia.Ftn.Cl.Models.Business.Authority.StaffCanCreateReadUpdateDeleteAccessList(Ia.Ftn.Cl.Models.Business.Authority.PersistentStorageFunction.Create, manageViewModel.CurrentStaffIdentityUser))
   71:             {
   72:                 if (!string.IsNullOrEmpty(manageViewModel.OntSelectedValue))
   73:                 {
   74:                     var ontNumber = int.Parse(manageViewModel.OntSelectedValue);
   75:  
   76:                     if (oltId > 0 && ponNumber > 0)
   77:                     {
   78:                         paci = Ia.Ftn.Cl.Models.Business.Access.NormalizePaciEntry(paci);
   79:  
   80:                         if (!string.IsNullOrEmpty(paci) && int.TryParse(paci, out int i))
   81:                         {
   82:                             var accessListByPaci = Ia.Ftn.Cl.Models.Data.Access.ReadListByPaci(paci);
   83:  
   84:                             // the new access is acceptable if the PACI is new or PACI exists with similar block and premises-old
   85:                             if (accessListByPaci.Count == 0 || accessListByPaci.Any(u => u.Block == blockText && u.PremisesOld == premisesOld))
   86:                             {
   87:                                 if (!string.IsNullOrEmpty(blockText))
   88:                                 {
   89:                                     if (!string.IsNullOrEmpty(premisesOld))
   90:                                     {
   91:                                         var block = blockText;
   92:  
   93:                                         var nddOnt = (from o in Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.OntList
   94:                                                       where o.Pon.PonGroup.Olt.Id == oltId && o.Pon.Number == ponNumber && o.Number == ontNumber
   95:                                                       select o).SingleOrDefault();
   96:  
   97:                                         if (nddOnt != null)
   98:                                         {
   99:                                             var accessName = nddOnt.Access.Name;
  100:  
  101:                                             var areaId = Ia.Ftn.Cl.Models.Data.Access.AreaIdFromOltIdAndPon(oltId, ponNumber);
  102:  
  103:                                             // if areaId = 0 we will try to get the area by matching OLT symbol with site's area list symbols. This is not always correct, but its good as a last resort
  104:                                             if (areaId == 0) areaId = (from kna in Ia.Ftn.Cl.Models.Data.Service.KuwaitFtnAreaList
  105:                                                                        where kna.Symbol == nddOnt.Pon.PonGroup.Symbol
  106:                                                                        select kna.Id).SingleOrDefault();
  107:  
  108:                                             var kuwaitOfnArea = Ia.Ftn.Cl.Models.Data.Service.KuwaitFtnAreaById(areaId);
  109:  
  110:                                             if (kuwaitOfnArea != null)
  111:                                             {
  112:                                                 Ia.Ftn.Cl.Models.Business.Access.Create(Ia.Ftn.Cl.Models.Business.MessageQueue.Application.FtnApplication, accessName, kuwaitOfnArea.Symbol, block, street, premisesOld, premisesNew, odf, paci, note, manageViewModel.CurrentStaffIdentityUser, out result);
  113:                                             }
  114:                                             else result.AddError("kuwaitOfnArea is null");
  115:                                         }
  116:                                         else result.AddError("nddOnt is null");
  117:                                     }
  118:                                     else result.AddError("PremisesOld (Parcel) was not assigned");
  119:                                 }
  120:                                 else result.AddError("Block was not assigned");
  121:                             }
  122:                             else result.AddError("PACI number " + paci + " is already assigned to another ONT. To submit other ONTs with this same PACI their address must also have the same block and old permises numbers");
  123:                         }
  124:                         else result.AddError("PACI is undefined or invalid");
  125:                     }
  126:                     else result.AddError("oltId and/or ponNumber ViewState values are invalid");
  127:                 }
  128:                 else result.AddError("Nothing selected in the drop down list");
  129:             }
  130:             else result.AddError("You are not authorized to modify this value (لست مخولاً بتعديل هذه القيمة)");
  131:  
  132:             if (result.IsSuccessful)
  133:             {
  134:                 manageViewModel.BlockInput = manageViewModel.StreetInput = manageViewModel.PremisesOldInput = manageViewModel.PremisesNewInput = manageViewModel.PaciInput = manageViewModel.NoteInput = string.Empty;
  135:             }
  136:             else
  137:             {
  138:             }
  139:  
  140:             manageViewModel.InsertResult = manageViewModel.Result = result;
  141:         }
  142:  
  143:         ////////////////////////////////////////////////////////////////////////////
  144:  
  145:         /// <summary>
  146:         ///
  147:         /// </summary>
  148:         private static void Edit(ref Ia.Ftn.Wa.Models.Provision.Access.ManageViewModel manageViewModel, string accessId)
  149:         {
  150:             manageViewModel.AccessListEditId = accessId;
  151:         }
  152:  
  153:         ////////////////////////////////////////////////////////////////////////////
  154:  
  155:         /// <summary>
  156:         ///
  157:         /// </summary>
  158:         private static void Cancel(ref Ia.Ftn.Wa.Models.Provision.Access.ManageViewModel manageViewModel)
  159:         {
  160:             manageViewModel.AccessListEditId = string.Empty;
  161:         }
  162:  
  163:         ////////////////////////////////////////////////////////////////////////////
  164:  
  165:         /// <summary>
  166:         /// 
  167:         /// </summary>
  168:         private static void Update(ref Ia.Ftn.Wa.Models.Provision.Access.ManageViewModel manageViewModel, string accessId)
  169:         {
  170:             var result = new Ia.Cl.Models.Result();
  171:             manageViewModel.UpdateResult = new Ia.Cl.Models.Result();
  172:             manageViewModel.Result = new Ia.Cl.Models.Result();
  173:  
  174:             var oltId = int.Parse(manageViewModel.OltSelectedValue);
  175:             var ponNumber = int.Parse(manageViewModel.PonSelectedValue);
  176:             var ontNumber = int.Parse(manageViewModel.OntSelectedValue);
  177:  
  178:             manageViewModel.AccessListEditId = accessId;
  179:  
  180:             if (Ia.Ftn.Cl.Models.Business.Authority.StaffCanCreateReadUpdateDeleteAccessList(Ia.Ftn.Cl.Models.Business.Authority.PersistentStorageFunction.Update, manageViewModel.CurrentStaffIdentityUser))
  181:             {
  182:                 var blockText = WebUtility.HtmlDecode(manageViewModel.BlockEditInput);
  183:                 var street = WebUtility.HtmlDecode(manageViewModel.StreetEditInput);
  184:                 var premisesOld = WebUtility.HtmlDecode(manageViewModel.PremisesOldEditInput);
  185:                 var premisesNew = WebUtility.HtmlDecode(manageViewModel.PremisesNewEditInput);
  186:                 var paci = WebUtility.HtmlDecode(manageViewModel.PaciEditInput);
  187:                 var note = WebUtility.HtmlDecode(manageViewModel.NoteEditInput);
  188:  
  189:                 var access = Ia.Ftn.Cl.Models.Data.Access.Read(accessId);
  190:  
  191:                 ontNumber = access.Ont;
  192:  
  193:                 if (ontNumber > 0)
  194:                 {
  195:                     paci = Ia.Ftn.Cl.Models.Business.Access.NormalizePaciEntry(paci);
  196:  
  197:                     if (!string.IsNullOrEmpty(paci) && int.TryParse(paci, out int i))
  198:                     {
  199:                         if (!string.IsNullOrEmpty(blockText))
  200:                         {
  201:                             if (!string.IsNullOrEmpty(premisesOld))
  202:                             {
  203:                                 var block = blockText;
  204:  
  205:                                 var dateTime = DateTime.UtcNow.AddHours(3);
  206:  
  207:                                 var updatedAccess = new Ia.Ftn.Cl.Models.Access()
  208:                                 {
  209:                                     Id = accessId,
  210:                                     AreaId = access.AreaId,
  211:                                     Block = block,
  212:                                     Street = street,
  213:                                     PremisesOld = premisesOld,
  214:                                     PremisesNew = premisesNew,
  215:                                     Paci = paci,
  216:                                     Note = note,
  217:                                     Olt = access.Olt,
  218:                                     Odf = access.Odf,
  219:                                     Pon = access.Pon,
  220:                                     Ont = access.Ont,
  221:                                     Created = access.Created,
  222:                                     Updated = dateTime,
  223:                                     StaffIdentityUser = manageViewModel.CurrentStaffIdentityUser
  224:                                 };
  225:  
  226:                                 var isSuccess = Ia.Ftn.Cl.Models.Data.Access.Update(updatedAccess, out string r);
  227:  
  228:                                 // Ia.Ftn.Cl.Models.Data.MessageQueue.AccessNameQueue.ProvisionAccessQueue.Enqueue(updatedAccess.Name);
  229:  
  230:                                 if (isSuccess)
  231:                                 {
  232:                                     manageViewModel.UpdateResult.AddSuccess("Access updated (تم تحديث معلومات الجهاز)");
  233:  
  234:                                     manageViewModel.AccessListEditId = string.Empty;
  235:                                 }
  236:                                 else manageViewModel.UpdateResult.AddError(r);
  237:                             }
  238:                             else result.AddError("premisesOld (parcel) was not assigned");
  239:                         }
  240:                         else result.AddError("block was not assigned");
  241:                     }
  242:                     else result.AddError("PACI is undefined or invalid");
  243:                 }
  244:                 else result.AddError("ontNumber is invalid");
  245:             }
  246:             else result.AddError("You are not authorized to modify this value (لست مخولاً بتعديل هذه القيمة)");
  247:  
  248:             if (result.IsSuccessful)
  249:             {
  250:                 manageViewModel.BlockInput = manageViewModel.StreetInput = manageViewModel.PremisesOldInput = manageViewModel.PremisesNewInput = manageViewModel.PaciInput = manageViewModel.NoteInput = string.Empty;
  251:             }
  252:             else
  253:             {
  254:             }
  255:  
  256:             manageViewModel.UpdateResult = manageViewModel.Result = result;
  257:         }
  258:  
  259:         ////////////////////////////////////////////////////////////////////////////
  260:  
  261:         /// <summary>
  262:         /// 
  263:         /// </summary>
  264:         private static void Delete(ref Ia.Ftn.Wa.Models.Provision.Access.ManageViewModel manageViewModel, string accessId)
  265:         {
  266:             var result = new Ia.Cl.Models.Result();
  267:             manageViewModel.UpdateResult = new Ia.Cl.Models.Result();
  268:             manageViewModel.Result = new Ia.Cl.Models.Result();
  269:  
  270:             var oltId = int.Parse(manageViewModel.OltSelectedValue);
  271:             var ponNumber = int.Parse(manageViewModel.PonSelectedValue);
  272:             var ontNumber = int.Parse(manageViewModel.OntSelectedValue);
  273:  
  274:             if (Ia.Ftn.Cl.Models.Business.Authority.StaffCanCreateReadUpdateDeleteAccessList(Ia.Ftn.Cl.Models.Business.Authority.PersistentStorageFunction.Delete, manageViewModel.CurrentStaffIdentityUser))
  275:             {
  276:                 var nddOnt = Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.OntAccessIdToOntDictionary.ContainsKey(accessId) ? Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.OntAccessIdToOntDictionary[accessId] : null;
  277:  
  278:                 if (nddOnt != null)
  279:                 {
  280:                     var accessName = nddOnt.Access.Name;
  281:  
  282:                     Ia.Ftn.Cl.Models.Business.Access.Delete(Ia.Ftn.Cl.Models.Business.MessageQueue.Application.FtnApplication, accessName, manageViewModel.CurrentStaffIdentityUser.Id, out result);
  283:  
  284:                     //Ia.Ftn.Cl.Models.Data.MessageQueue.AccessNameQueue.ProvisionAccessQueue.Enqueue(accessName);
  285:                 }
  286:                 else result.AddError("nddOnt is null");
  287:             }
  288:             else result.AddError("You are not authorized to modify this value (لست مخولاً بتعديل هذه القيمة)");
  289:  
  290:             if (result.IsSuccessful)
  291:             {
  292:                 manageViewModel.BlockInput = manageViewModel.StreetInput = manageViewModel.PremisesOldInput = manageViewModel.PremisesNewInput = manageViewModel.PaciInput = manageViewModel.NoteInput = string.Empty;
  293:             }
  294:             else
  295:             {
  296:             }
  297:  
  298:             manageViewModel.UpdateResult = manageViewModel.Result = result;
  299:         }
  300:  
  301:         ////////////////////////////////////////////////////////////////////////////
  302:         ////////////////////////////////////////////////////////////////////////////
  303:  
  304:         /// <summary>
  305:         ///
  306:         /// </summary>
  307:         private static void OltSelectList(ref Ia.Ftn.Wa.Models.Provision.Access.ManageViewModel manageViewModel)
  308:         {
  309:             var list = (from o in Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.OltList
  310:                         select new { Value = o.Id, Text = o.Symbol + " (" + o.AmsName + ")" }).OrderBy(u => u.Text).ToList();
  311:  
  312:             if (!string.IsNullOrEmpty(manageViewModel.OltSelectedValue))
  313:             {
  314:                 manageViewModel.OltSelectList = new SelectList(list, "Value", "Text", manageViewModel.OltSelectedValue);
  315:             }
  316:             else
  317:             {
  318:                 manageViewModel.OltSelectList = new SelectList(list, "Value", "Text", list[0].Value);
  319:                 manageViewModel.OltSelectedValue = list[0].Value.ToString();
  320:             }
  321:  
  322:             if (manageViewModel.OltSelectedValue != manageViewModel.OltPreviouslySelectedValue)
  323:             {
  324:                 manageViewModel.PonSelectedValue = string.Empty;
  325:             }
  326:  
  327:             manageViewModel.OltPreviouslySelectedValue = manageViewModel.OltSelectedValue;
  328:  
  329:             PonSelectList(ref manageViewModel);
  330:         }
  331:  
  332:         ////////////////////////////////////////////////////////////////////////////
  333:  
  334:         /// <summary>
  335:         ///
  336:         /// </summary>
  337:         private static void PonSelectList(ref Ia.Ftn.Wa.Models.Provision.Access.ManageViewModel manageViewModel)
  338:         {
  339:             if (!string.IsNullOrEmpty(manageViewModel.OltSelectedValue))
  340:             {
  341:                 var oltId = int.Parse(manageViewModel.OltSelectedValue);
  342:  
  343:                 var list = (from p in Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.PonList where p.PonGroup.Olt.Id == oltId select p).OrderBy(a => a.Number).ToList();
  344:  
  345:                 if (!string.IsNullOrEmpty(manageViewModel.PonSelectedValue))
  346:                 {
  347:                     manageViewModel.PonSelectList = new SelectList(list, "Number", "Number", manageViewModel.PonSelectedValue);
  348:                 }
  349:                 else
  350:                 {
  351:                     manageViewModel.PonSelectList = new SelectList(list, "Number", "Number", list[0].Number.ToString());
  352:                     manageViewModel.PonSelectedValue = list[0].Number.ToString();
  353:                 }
  354:  
  355:                 if (manageViewModel.PonSelectedValue != manageViewModel.PonPreviouslySelectedValue)
  356:                 {
  357:                     manageViewModel.OntSelectedValue = string.Empty;
  358:                 }
  359:  
  360:                 manageViewModel.PonPreviouslySelectedValue = manageViewModel.PonSelectedValue;
  361:  
  362:                 OntSelectList(ref manageViewModel, oltId);
  363:             }
  364:             else manageViewModel.InsertButtonEnabled = false;
  365:         }
  366:  
  367:         ////////////////////////////////////////////////////////////////////////////
  368:  
  369:         /// <summary>
  370:         ///
  371:         /// </summary>
  372:         private static void OntSelectList(ref Ia.Ftn.Wa.Models.Provision.Access.ManageViewModel manageViewModel, int oltId)
  373:         {
  374:             if (!string.IsNullOrEmpty(manageViewModel.PonSelectedValue))
  375:             {
  376:                 var ponNumber = int.Parse(manageViewModel.PonSelectedValue);
  377:  
  378:                 var accessList = Ia.Ftn.Cl.Models.Data.Access.List(oltId, ponNumber);
  379:  
  380:                 manageViewModel.AccessList = accessList;
  381:  
  382:                 List<int> ontNotInListList = Ia.Ftn.Cl.Models.Data.Access.OntsNotInAccessList(accessList);
  383:  
  384:                 var list = ontNotInListList.Select((x, i) => new { Value = x.ToString(), Text = x.ToString() }).ToList();
  385:  
  386:  
  387:  
  388:                 manageViewModel.OntSelectList = new SelectList(list, "Value", "Text", list[0].Value);
  389:                 manageViewModel.OntSelectedValue = list[0].Value;
  390:  
  391:                 /*
  392:                 if (!string.IsNullOrEmpty(manageViewModel.OntSelectedValue))
  393:                 {
  394:                     manageViewModel.OntSelectList = new SelectList(list, "Value", "Text", manageViewModel.OntSelectedValue);
  395:                 }
  396:                 else
  397:                 {
  398:                     manageViewModel.OntSelectList = new SelectList(list, "Value", "Text", list[0].Value);
  399:                     manageViewModel.OntSelectedValue = list[0].Value.ToString();
  400:                 }
  401:                 */
  402:  
  403:                 manageViewModel.InsertButtonEnabled = (ontNotInListList.Count > 0) ? true : false;
  404:             }
  405:             else manageViewModel.InsertButtonEnabled = false;
  406:         }
  407:  
  408:         ////////////////////////////////////////////////////////////////////////////
  409:         ////////////////////////////////////////////////////////////////////////////
  410:     }
  411:  
  412:     ////////////////////////////////////////////////////////////////////////////
  413:     ////////////////////////////////////////////////////////////////////////////
  414: }