)>}]
شركة التطبيقات المتكاملة لتصميم وبرمجة البرمجيات الخاصة ش.ش.و.
Integrated Applications Programming Company
Skip Navigation Links

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

Service Request Administrative Issue support class for Optical Fiber Network (OFN) data model.

    1: using Microsoft.EntityFrameworkCore;
    2: using System;
    3: using System.Collections.Generic;
    4: using System.Data;
    5: using System.Linq;
    6: using System.Text;
    7:  
    8: namespace Ia.Ngn.Cl.Model.Data
    9: {
   10:     ////////////////////////////////////////////////////////////////////////////
   11:  
   12:     /// <summary publish="true">
   13:     /// Service Request Administrative Issue support class for Optical Fiber Network (OFN) data model.
   14:     /// </summary>
   15:     /// 
   16:     /// <remarks> 
   17:     /// Copyright © 2019-2021 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   18:     ///
   19:     /// This library is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by
   20:     /// the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
   21:     ///
   22:     /// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
   23:     /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
   24:     /// 
   25:     /// You should have received a copy of the GNU General Public License along with this library. If not, see http://www.gnu.org/licenses.
   26:     /// 
   27:     /// Copyright notice: This notice may not be removed or altered from any source distribution.
   28:     /// </remarks> 
   29:     public class ServiceRequestAdministrativeIssue
   30:     {
   31:         private static readonly object objectLock = new object();
   32:  
   33:         ////////////////////////////////////////////////////////////////////////////
   34:  
   35:         /// <summary>
   36:         ///
   37:         /// </summary>
   38:         public ServiceRequestAdministrativeIssue() { }
   39:  
   40:         ////////////////////////////////////////////////////////////////////////////
   41:  
   42:         /// <summary>
   43:         ///
   44:         /// </summary>
   45:         public static Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue Read(string service, out Ia.Cl.Model.Result result)
   46:         {
   47:             Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue serviceRequestAdministrativeIssue;
   48:  
   49:             result = new Ia.Cl.Model.Result();
   50:  
   51:             if (!string.IsNullOrEmpty(service))
   52:             {
   53:                 if (Ia.Ngn.Cl.Model.Business.Service.ServiceHasEightDigitsAndIsWithinAllowedDomainList(service))
   54:                 {
   55:                     var isPstnService = Ia.Ngn.Cl.Model.Data.Service2.IsPstnService(service);
   56:  
   57:                     if (!isPstnService)
   58:                     {
   59:                         using (var db = new Ia.Ngn.Cl.Model.Ngn())
   60:                         {
   61:                             var serviceRequestAdministrativeIssueId = Ia.Ngn.Cl.Model.Business.ServiceRequestAdministrativeIssue.ServiceRequestAdministrativeIssueId(service, Ia.Ngn.Cl.Model.Business.Service.ServiceType.ImsService);
   62:  
   63:                             serviceRequestAdministrativeIssue = (from srai in db.ServiceRequestAdministrativeIssues
   64:                                                                  where srai.Id == serviceRequestAdministrativeIssueId
   65:                                                                  select srai).SingleOrDefault();
   66:  
   67:                             if (serviceRequestAdministrativeIssue != null)
   68:                             {
   69:                                 result.AddSuccess(@"The number " + service + @" exists in table.");
   70:                             }
   71:                             else result.AddSuccess(@"The number " + service + @" does not exist in table.");
   72:                         }
   73:                     }
   74:                     else
   75:                     {
   76:                         serviceRequestAdministrativeIssue = null;
   77:                         result.AddError("Service number " + service + " is a PSTN number.");
   78:                     }
   79:                 }
   80:                 else
   81:                 {
   82:                     serviceRequestAdministrativeIssue = null;
   83:                     result.AddError("Service number " + service + " does not belong to the network.");
   84:                 }
   85:             }
   86:             else
   87:             {
   88:                 serviceRequestAdministrativeIssue = null;
   89:                 result.AddError("Input is null or empty.");
   90:             }
   91:  
   92:             return serviceRequestAdministrativeIssue;
   93:         }
   94:  
   95:         ////////////////////////////////////////////////////////////////////////////
   96:  
   97:         /// <summary>
   98:         ///
   99:         /// </summary>
  100:         public static bool IsPendingIssue(Ia.Ngn.Cl.Model.Business.ServiceRequestAdministrativeIssue.DisconnectionType disconnectionType, string service)
  101:         {
  102:             bool isPendingIssue;
  103:  
  104:             using (var db = new Ia.Ngn.Cl.Model.Ngn())
  105:             {
  106:                 isPendingIssue = (from srai in db.ServiceRequestAdministrativeIssues
  107:                                   where srai.Service == service && srai.Type == (int)disconnectionType
  108:                                   select srai.Service).Any();
  109:             }
  110:  
  111:             return isPendingIssue;
  112:         }
  113:  
  114:         ////////////////////////////////////////////////////////////////////////////
  115:  
  116:         /// <summary>
  117:         ///
  118:         /// </summary>
  119:         public static List<string> ServiceList(List<string> serviceList)
  120:         {
  121:             List<string> list;
  122:  
  123:             using (var db = new Ia.Ngn.Cl.Model.Ngn())
  124:             {
  125:                 if (serviceList.Count > 0)
  126:                 {
  127:                     list = (from srai in db.ServiceRequestAdministrativeIssues
  128:                             where serviceList.Contains(srai.Service)
  129:                             select srai.Service).AsNoTracking().ToList();
  130:                 }
  131:                 else list = new List<string>();
  132:             }
  133:  
  134:             return list;
  135:         }
  136:  
  137:         ////////////////////////////////////////////////////////////////////////////
  138:  
  139:         /// <summary>
  140:         ///
  141:         /// </summary>
  142:         public static List<Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue> List()
  143:         {
  144:             List<Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue> list;
  145:  
  146:             using (var db = new Ia.Ngn.Cl.Model.Ngn())
  147:             {
  148:                 list = (from srai in db.ServiceRequestAdministrativeIssues
  149:                         select srai).AsNoTracking().ToList();
  150:             }
  151:  
  152:             return list;
  153:         }
  154:  
  155:         ////////////////////////////////////////////////////////////////////////////
  156:  
  157:         /// <summary>
  158:         ///
  159:         /// </summary>
  160:         public static List<string> ServiceList()
  161:         {
  162:             List<string> list;
  163:  
  164:             using (var db = new Ia.Ngn.Cl.Model.Ngn())
  165:             {
  166:                 list = (from srai in db.ServiceRequestAdministrativeIssues
  167:                         select srai.Service).AsNoTracking().ToList();
  168:             }
  169:  
  170:             return list;
  171:         }
  172:  
  173:         ////////////////////////////////////////////////////////////////////////////
  174:  
  175:         /// <summary>
  176:         ///
  177:         /// </summary>
  178:         public static List<string> ServiceList(Ia.Ngn.Cl.Model.Business.ServiceRequestAdministrativeIssue.DisconnectionType disconnectionType)
  179:         {
  180:             List<string> list;
  181:  
  182:             using (var db = new Ia.Ngn.Cl.Model.Ngn())
  183:             {
  184:                 list = (from srai in db.ServiceRequestAdministrativeIssues
  185:                         where srai.Type == (int)disconnectionType
  186:                         select srai.Service).AsNoTracking().ToList();
  187:             }
  188:  
  189:             return list;
  190:         }
  191:  
  192:         ////////////////////////////////////////////////////////////////////////////
  193:  
  194:         /// <summary>
  195:         ///
  196:         /// </summary>
  197:         public static Dictionary<string, string> ServiceDictionary()
  198:         {
  199:             Dictionary<string, string> dictionary;
  200:  
  201:             using (var db = new Ia.Ngn.Cl.Model.Ngn())
  202:             {
  203:                 dictionary = (from srai in db.ServiceRequestAdministrativeIssues
  204:                               select new { srai.Service }).AsNoTracking().ToDictionary(u => u.Service, u => u.Service);
  205:             }
  206:  
  207:             return dictionary.ToDictionary(u => u.Key, u => u.Value);
  208:         }
  209:  
  210:         ////////////////////////////////////////////////////////////////////////////
  211:  
  212:         /// <summary>
  213:         ///
  214:         /// </summary>
  215:         public static List<string> IdList()
  216:         {
  217:             List<string> list;
  218:  
  219:             using (var db = new Ia.Ngn.Cl.Model.Ngn())
  220:             {
  221:                 list = (from srai in db.ServiceRequestAdministrativeIssues
  222:                         select srai.Id).AsNoTracking().ToList();
  223:             }
  224:  
  225:             return list;
  226:         }
  227:  
  228:         ////////////////////////////////////////////////////////////////////////////
  229:  
  230:         /// <summary>
  231:         ///
  232:         /// </summary>
  233:         public static Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue Update(string service, Ia.Ngn.Cl.Model.Business.ServiceRequestAdministrativeIssue.ServiceRequestAdministrativeIssueType serviceRequestAdministrativeIssueType, bool serviceMustBeWithinNokiaSwitchDomainList, out Ia.Cl.Model.Result result)
  234:         {
  235:             Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue serviceRequestAdministrativeIssue;
  236:  
  237:             result = new Ia.Cl.Model.Result();
  238:  
  239:             if (!string.IsNullOrEmpty(service))
  240:             {
  241:                 if (Ia.Ngn.Cl.Model.Business.Service.ServiceHasEightDigitsAndIsWithinAllowedDomainList(service))
  242:                 {
  243:                     if (!serviceMustBeWithinNokiaSwitchDomainList || serviceMustBeWithinNokiaSwitchDomainList && Ia.Ngn.Cl.Model.Data.Service.ServiceIsWithinNokiaSwitchDomainList(service)) // temp
  244:                     {
  245:                         var isPstnService = Ia.Ngn.Cl.Model.Data.Service2.IsPstnService(service);
  246:  
  247:                         if (!isPstnService)
  248:                         {
  249:                             using (var db = new Ia.Ngn.Cl.Model.Ngn())
  250:                             {
  251:                                 result = new Ia.Cl.Model.Result();
  252:  
  253:                                 var serviceRequestAdministrativeIssueId = Ia.Ngn.Cl.Model.Business.ServiceRequestAdministrativeIssue.ServiceRequestAdministrativeIssueId(service, Ia.Ngn.Cl.Model.Business.Service.ServiceType.ImsService);
  254:  
  255:                                 serviceRequestAdministrativeIssue = (from srai in db.ServiceRequestAdministrativeIssues
  256:                                                                      where srai.Id == serviceRequestAdministrativeIssueId
  257:                                                                      select srai).SingleOrDefault();
  258:  
  259:                                 if (serviceRequestAdministrativeIssue != null)
  260:                                 {
  261:                                     if (serviceRequestAdministrativeIssueType.DisconnectionType == Ia.Ngn.Cl.Model.Business.ServiceRequestAdministrativeIssue.DisconnectionType.None)
  262:                                     {
  263:                                         db.ServiceRequestAdministrativeIssues.Remove(serviceRequestAdministrativeIssue);
  264:                                         db.SaveChanges();
  265:  
  266:                                         serviceRequestAdministrativeIssue = Ia.Ngn.Cl.Model.Data.ServiceRequestAdministrativeIssue.Read(service, out _);
  267:  
  268:                                         Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, Ia.Ngn.Cl.Model.Business.Msmq.Process.ServiceInServiceRequestAdministrativeIssuesUpdated, service);
  269:  
  270:                                         result.AddSuccess("Entry for " + service + " was deleted.");
  271:                                     }
  272:                                     else if (serviceRequestAdministrativeIssue.Type != (int)serviceRequestAdministrativeIssueType.DisconnectionType)
  273:                                     {
  274:                                         serviceRequestAdministrativeIssue.Type = (int)serviceRequestAdministrativeIssueType.DisconnectionType;
  275:                                         serviceRequestAdministrativeIssue.Updated = DateTime.UtcNow.AddHours(3);
  276:                                         // serviceRequestAdministrativeIssue.UserId = Guid.Empty;
  277:  
  278:                                         db.ServiceRequestAdministrativeIssues.Attach(serviceRequestAdministrativeIssue);
  279:                                         db.Entry(serviceRequestAdministrativeIssue).Property(u => u.Type).IsModified = true;
  280:                                         db.SaveChanges();
  281:  
  282:                                         serviceRequestAdministrativeIssue = Ia.Ngn.Cl.Model.Data.ServiceRequestAdministrativeIssue.Read(service, out _);
  283:  
  284:                                         Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, Ia.Ngn.Cl.Model.Business.Msmq.Process.ServiceInServiceRequestAdministrativeIssuesUpdated, service);
  285:  
  286:                                         result.AddSuccess("Entry for " + service + " was updated.");
  287:                                     }
  288:                                     else
  289:                                     {
  290:                                         result.AddWarning("Entry for " + service + " was not updated because it was not changed.");
  291:                                     }
  292:                                 }
  293:                                 else
  294:                                 {
  295:                                     if (serviceRequestAdministrativeIssueType.DisconnectionType == Ia.Ngn.Cl.Model.Business.ServiceRequestAdministrativeIssue.DisconnectionType.None)
  296:                                     {
  297:                                         result.AddWarning("Entry for " + service + " was not removed because it did not exist.");
  298:                                     }
  299:                                     else
  300:                                     {
  301:                                         serviceRequestAdministrativeIssue = new Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue
  302:                                         {
  303:                                             Id = serviceRequestAdministrativeIssueId,
  304:                                             Service = service,
  305:                                             Type = (int)serviceRequestAdministrativeIssueType.DisconnectionType,
  306:                                             Value = String.Empty,
  307:                                             Created = DateTime.UtcNow.AddHours(3),
  308:                                             Updated = DateTime.UtcNow.AddHours(3),
  309:                                             UserId = Guid.Empty,
  310:                                         };
  311:  
  312:                                         db.ServiceRequestAdministrativeIssues.Add(serviceRequestAdministrativeIssue);
  313:                                         db.SaveChanges();
  314:  
  315:                                         serviceRequestAdministrativeIssue = Ia.Ngn.Cl.Model.Data.ServiceRequestAdministrativeIssue.Read(service, out _);
  316:  
  317:                                         Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, Ia.Ngn.Cl.Model.Business.Msmq.Process.ServiceInServiceRequestAdministrativeIssuesUpdated, service);
  318:  
  319:                                         result.AddSuccess("Entry for " + service + " was created.");
  320:                                     }
  321:                                 }
  322:                             }
  323:                         }
  324:                         else
  325:                         {
  326:                             serviceRequestAdministrativeIssue = null;
  327:                             result.AddError("Service number " + service + " is a PSTN number.");
  328:                         }
  329:                     }
  330:                     else
  331:                     {
  332:                         serviceRequestAdministrativeIssue = null;
  333:                         result.AddError("Service number " + service + " does not belong to a Nokia switch.");
  334:                     }
  335:                 }
  336:                 else
  337:                 {
  338:                     serviceRequestAdministrativeIssue = null;
  339:                     result.AddError("Service number " + service + " does not belong to the network.");
  340:                 }
  341:             }
  342:             else
  343:             {
  344:                 serviceRequestAdministrativeIssue = null;
  345:                 result.AddError("Input is null or empty.");
  346:             }
  347:  
  348:             return serviceRequestAdministrativeIssue;
  349:         }
  350:  
  351:         ////////////////////////////////////////////////////////////////////////////
  352:  
  353:         /// <summary>
  354:         ///
  355:         /// </summary>
  356:         public static bool Update2(Ia.Ngn.Cl.Model.Business.ServiceRequestAdministrativeIssue.DisconnectionType disconnectionType, string service, out Ia.Cl.Model.Result result)
  357:         {
  358:             bool isUpdated;
  359:             Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue serviceRequestAdministrativeIssue;
  360:  
  361:             result = new Ia.Cl.Model.Result();
  362:  
  363:             if (!string.IsNullOrEmpty(service))
  364:             {
  365:                 if (Ia.Ngn.Cl.Model.Business.Service.ServiceHasEightDigitsAndIsWithinAllowedDomainList(service))
  366:                 {
  367:                     var isPstnService = Ia.Ngn.Cl.Model.Data.Service2.IsPstnService(service);
  368:  
  369:                     if (!isPstnService)
  370:                     {
  371:                         using (var db = new Ia.Ngn.Cl.Model.Ngn())
  372:                         {
  373:                             var serviceRequestAdministrativeIssueId = Ia.Ngn.Cl.Model.Business.ServiceRequestAdministrativeIssue.ServiceRequestAdministrativeIssueId(service, Ia.Ngn.Cl.Model.Business.Service.ServiceType.ImsService);
  374:  
  375:                             serviceRequestAdministrativeIssue = (from srai in db.ServiceRequestAdministrativeIssues
  376:                                                                  where srai.Id == serviceRequestAdministrativeIssueId
  377:                                                                  select srai).SingleOrDefault();
  378:  
  379:                             if (serviceRequestAdministrativeIssue != null)
  380:                             {
  381:                                 if (disconnectionType == Ia.Ngn.Cl.Model.Business.ServiceRequestAdministrativeIssue.DisconnectionType.None)
  382:                                 {
  383:                                     db.ServiceRequestAdministrativeIssues.Remove(serviceRequestAdministrativeIssue);
  384:                                     db.SaveChanges();
  385:  
  386:                                     serviceRequestAdministrativeIssue = Ia.Ngn.Cl.Model.Data.ServiceRequestAdministrativeIssue.Read(service, out _);
  387:  
  388:                                     Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, Ia.Ngn.Cl.Model.Business.Msmq.Process.ServiceInServiceRequestAdministrativeIssuesUpdated, service);
  389:  
  390:                                     isUpdated = true;
  391:                                     result.AddSuccess("Entry for " + service + " was deleted.");
  392:                                 }
  393:                                 else if (serviceRequestAdministrativeIssue.Type != (int)disconnectionType)
  394:                                 {
  395:                                     serviceRequestAdministrativeIssue.Type = (int)disconnectionType;
  396:                                     serviceRequestAdministrativeIssue.Updated = DateTime.UtcNow.AddHours(3);
  397:                                     // serviceRequestAdministrativeIssue.UserId = Guid.Empty;
  398:  
  399:                                     db.ServiceRequestAdministrativeIssues.Attach(serviceRequestAdministrativeIssue);
  400:                                     db.Entry(serviceRequestAdministrativeIssue).Property(u => u.Type).IsModified = true;
  401:                                     db.SaveChanges();
  402:  
  403:                                     serviceRequestAdministrativeIssue = Ia.Ngn.Cl.Model.Data.ServiceRequestAdministrativeIssue.Read(service, out _);
  404:  
  405:                                     Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, Ia.Ngn.Cl.Model.Business.Msmq.Process.ServiceInServiceRequestAdministrativeIssuesUpdated, service);
  406:  
  407:                                     isUpdated = true;
  408:                                     result.AddSuccess("Entry for " + service + " was updated.");
  409:                                 }
  410:                                 else
  411:                                 {
  412:                                     isUpdated = false;
  413:                                     result.AddWarning("Entry for " + service + " was not updated because it was not changed.");
  414:                                 }
  415:                             }
  416:                             else
  417:                             {
  418:                                 if (disconnectionType == Ia.Ngn.Cl.Model.Business.ServiceRequestAdministrativeIssue.DisconnectionType.None)
  419:                                 {
  420:                                     isUpdated = false;
  421:                                     result.AddWarning("Entry for " + service + " was not removed because it did not exist.");
  422:                                 }
  423:                                 else
  424:                                 {
  425:                                     serviceRequestAdministrativeIssue = new Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue
  426:                                     {
  427:                                         Id = serviceRequestAdministrativeIssueId,
  428:                                         Service = service,
  429:                                         Type = (int)disconnectionType,
  430:                                         Value = String.Empty,
  431:                                         Created = DateTime.UtcNow.AddHours(3),
  432:                                         Updated = DateTime.UtcNow.AddHours(3),
  433:                                         UserId = Guid.Empty,
  434:                                     };
  435:  
  436:                                     db.ServiceRequestAdministrativeIssues.Add(serviceRequestAdministrativeIssue);
  437:                                     db.SaveChanges();
  438:  
  439:                                     serviceRequestAdministrativeIssue = Ia.Ngn.Cl.Model.Data.ServiceRequestAdministrativeIssue.Read(service, out _);
  440:  
  441:                                     Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, Ia.Ngn.Cl.Model.Business.Msmq.Process.ServiceInServiceRequestAdministrativeIssuesUpdated, service);
  442:  
  443:                                     isUpdated = true;
  444:                                     result.AddSuccess("Entry for " + service + " was created.");
  445:                                 }
  446:                             }
  447:                         }
  448:                     }
  449:                     else
  450:                     {
  451:                         isUpdated = false;
  452:                         result.AddError("Service number " + service + " is a PSTN number.");
  453:                     }
  454:                 }
  455:                 else
  456:                 {
  457:                     isUpdated = false;
  458:                     result.AddError("Service number " + service + " does not belong to the network.");
  459:                 }
  460:             }
  461:             else
  462:             {
  463:                 isUpdated = false;
  464:                 result.AddError("Input is null or empty.");
  465:             }
  466:  
  467:             return isUpdated;
  468:         }
  469:  
  470:         ////////////////////////////////////////////////////////////////////////////
  471:         ////////////////////////////////////////////////////////////////////////////
  472:  
  473:         /// <summary>
  474:         ///
  475:         /// </summary>
  476:         public static string ToSimpleTextString(Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue serviceRequestAdministrativeIssue)
  477:         {
  478:             var sb = new StringBuilder();
  479:  
  480:             sb.AppendLine("Service: " + serviceRequestAdministrativeIssue.Service);
  481:  
  482:             var typeName = Ia.Ngn.Cl.Model.Business.ServiceRequestAdministrativeIssue.ServiceRequestAdministrativeIssueTypeList.Where(u => (int)u.DisconnectionType == serviceRequestAdministrativeIssue.Type).Select(u => u.Name).SingleOrDefault();
  483:             sb.AppendLine("Type: " + typeName);
  484:  
  485:             sb.AppendLine("Value: " + serviceRequestAdministrativeIssue.Value);
  486:  
  487:             return sb.ToString();
  488:         }
  489:  
  490:         ////////////////////////////////////////////////////////////////////////////
  491:         ////////////////////////////////////////////////////////////////////////////
  492:     }
  493:  
  494:     ////////////////////////////////////////////////////////////////////////////
  495:     ////////////////////////////////////////////////////////////////////////////
  496: }