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

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

Service Request Administrative Issue API Controller class of Fixed Telecommunications Network (FTN) model.

    1: using Microsoft.AspNetCore.Mvc;
    2: using System.Runtime.Serialization;
    3:  
    4: namespace Ia.Ftn.Api.Wa.Controllers
    5: {
    6:     ////////////////////////////////////////////////////////////////////////////
    7:  
    8:     /// <summary publish="true">
    9:     /// Service Request Administrative Issue API Controller class of Fixed Telecommunications Network (FTN) model.
   10:     /// </summary>
   11:     /// 
   12:     /// <remarks> 
   13:     /// Copyright © 2006-2024 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   14:     /// </remarks> 
   15:     [ApiController]
   16:     // [Authorize]
   17:     public partial class ServiceRequestAdministrativeIssueController : ControllerBase
   18:     {
   19:         private static readonly object objectLock = new object();
   20:  
   21:         ////////////////////////////////////////////////////////////////////////////
   22:  
   23:         /// <summary>
   24:         /// Service Request Administrative Issues: Restrain and release service numbers within the Fixed Telecommunications Network
   25:         /// </summary>
   26:         public ServiceRequestAdministrativeIssueController() { }
   27:  
   28:         #region API v1
   29:  
   30:         ////////////////////////////////////////////////////////////////////////////
   31:         ////////////////////////////////////////////////////////////////////////////
   32:  
   33:         /// <summary>
   34:         /// IssueTypeListResponse
   35:         /// </summary>
   36:         [DataContract(IsReference = true, Name = "IssueTypeListResponse")]
   37:         public class IssueTypeListResponse
   38:         {
   39:             /// <summary/>
   40:             [DataMember(Name = "IsAuthorized")]
   41:             public bool IsAuthorized { get; set; }
   42:  
   43:             /// <summary/>
   44:             [DataMember(Name = "IssueTypeList")]
   45:             public List<Ia.Ftn.Cl.Models.Business.ServiceRequestAdministrativeIssue.ServiceRequestAdministrativeIssueType> IssueTypeList { get; set; }
   46:         }
   47:  
   48:         ////////////////////////////////////////////////////////////////////////////
   49:  
   50:         /// <summary>
   51:         /// List of Service Request Administrative Issue types
   52:         /// </summary>
   53:         [HttpGet]
   54:         [Route("api/v1/service-request-administrative-issues/types")]
   55:         public IssueTypeListResponse IssueTypeList()
   56:         {
   57:             var response = new IssueTypeListResponse
   58:             {
   59:                 IsAuthorized = true,
   60:                 IssueTypeList = Ia.Ftn.Cl.Models.Business.ServiceRequestAdministrativeIssue.ServiceRequestAdministrativeIssueTypeList
   61:             };
   62:  
   63:             return response;
   64:         }
   65:  
   66:         ////////////////////////////////////////////////////////////////////////////
   67:         ////////////////////////////////////////////////////////////////////////////
   68:  
   69:         /// <summary>
   70:         /// IssueListResponse
   71:         /// </summary>
   72:         [DataContract(IsReference = true, Name = "IssueListResponse")]
   73:         public class IssueListResponse
   74:         {
   75:             /// <summary/>
   76:             [DataMember(Name = "IsAuthorized")]
   77:             public bool IsAuthorized { get; set; }
   78:  
   79:             /// <summary/>
   80:             [DataMember(Name = "IssueList")]
   81:             public List<Ia.Ftn.Cl.Models.ServiceRequestAdministrativeIssue> IssueList { get; set; }
   82:         }
   83:  
   84:         /*
   85:         ////////////////////////////////////////////////////////////////////////////
   86: 
   87:         /// <summary>
   88:         /// List of all Service Request Administrative Issue services
   89:         /// </summary>
   90:         [HttpGet]
   91:         [Route("api/v1/service-request-administrative-issues")]
   92:         public IssueListResponse IssueList()
   93:         {
   94:             var response = new IssueListResponse
   95:             {
   96:                 IsAuthorized = true,
   97:                 IssueList = Ia.Ftn.Cl.Models.Data.ServiceRequestAdministrativeIssue.List()
   98:             };
   99: 
  100:             return response;
  101:         }
  102:         */
  103:  
  104:         ////////////////////////////////////////////////////////////////////////////
  105:         ////////////////////////////////////////////////////////////////////////////
  106:  
  107:         /// <summary>
  108:         /// IssueResponse
  109:         /// </summary>
  110:         [DataContract(IsReference = true, Name = "IssueResponse")]
  111:         public class IssueResponse
  112:         {
  113:             /// <summary/>
  114:             [DataMember(Name = "Service")]
  115:             public string Service { get; set; }
  116:  
  117:             /// <summary/>
  118:             [DataMember(Name = "ServiceType")]
  119:             public string ServiceType { get; set; }
  120:  
  121:             /// <summary/>
  122:             [DataMember(Name = "IsAuthorized")]
  123:             public bool IsAuthorized { get; set; }
  124:  
  125:             /// <summary/>
  126:             [DataMember(Name = "IsSuccessful")]
  127:             public bool IsSuccessful { get; set; }
  128:  
  129:             /// <summary/>
  130:             [DataMember(Name = "IsSuspended")]
  131:             public bool IsSuspended { get; set; }
  132:  
  133:             /// <summary/>
  134:             [DataMember(Name = "Updated")]
  135:             public DateTime Updated { get; set; }
  136:  
  137:             /// <summary/>
  138:             [DataMember(Name = "Message")]
  139:             public string Message { get; set; }
  140:  
  141:             /// <summary/>
  142:             [DataMember(Name = "Issue")]
  143:             public Ia.Ftn.Cl.Models.ServiceRequestAdministrativeIssue Issue { get; set; }
  144:         }
  145:  
  146:         ////////////////////////////////////////////////////////////////////////////
  147:  
  148:         /// <summary>
  149:         /// Post (suspend) a service into the Service Request Administrative Issues table
  150:         /// </summary>
  151:         [HttpPost]
  152:         [Route("api/v1/service-request-administrative-issues/{service}")]
  153:         public IssueResponse PostSuspendIssue(string service)
  154:         {
  155:             var serviceRequestAdministrativeIssueType = Ia.Ftn.Cl.Models.Business.ServiceRequestAdministrativeIssue.ServiceRequestAdministrativeIssueTypeByDisconnectionType(Ia.Ftn.Cl.Models.Business.ServiceRequestAdministrativeIssue.DisconnectionType.ProgrammedAccounting);
  156:  
  157:             var issue = Ia.Ftn.Cl.Models.Data.ServiceRequestAdministrativeIssue.Update(service, serviceRequestAdministrativeIssueType, true, out Ia.Cl.Models.Result result);
  158:             var updated = issue != null ? issue.Updated : DateTime.MinValue;
  159:  
  160:             string serviceTypeString = ServiceTypeString(service);
  161:  
  162:             var response = new IssueResponse
  163:             {
  164:                 IsAuthorized = true,
  165:                 Issue = issue,
  166:                 Service = service,
  167:                 ServiceType = serviceTypeString,
  168:                 IsSuccessful = result.IsSuccessful,
  169:                 IsSuspended = issue != null,
  170:                 Updated = updated,
  171:                 Message = result.Message
  172:             };
  173:  
  174:             return response;
  175:         }
  176:  
  177:         ////////////////////////////////////////////////////////////////////////////
  178:  
  179:         /// <summary>
  180:         /// Read Service Request Administrative Issue for a service
  181:         /// </summary>
  182:         [HttpGet]
  183:         [Route("api/v1/service-request-administrative-issues/{service}")]
  184:         public IssueResponse ReadIssue(string service)
  185:         {
  186:             var issue = Ia.Ftn.Cl.Models.Data.ServiceRequestAdministrativeIssue.Read(service, out Ia.Cl.Models.Result result);
  187:             var updated = issue != null ? issue.Updated : DateTime.MinValue;
  188:  
  189:             string serviceTypeString = ServiceTypeString(service);
  190:  
  191:             var response = new IssueResponse
  192:             {
  193:                 IsAuthorized = true,
  194:                 Service = service,
  195:                 ServiceType = serviceTypeString,
  196:                 IsSuccessful = result.IsSuccessful,
  197:                 IsSuspended = issue != null,
  198:                 Updated = updated,
  199:                 Message = result.Message
  200:             };
  201:  
  202:             return response;
  203:         }
  204:  
  205:         ////////////////////////////////////////////////////////////////////////////
  206:  
  207:         /// <summary>
  208:         /// Delete (release) a service from Service Request Administrative Issues table
  209:         /// </summary>
  210:         [HttpDelete]
  211:         [Route("api/v1/service-request-administrative-issues/{service}")]
  212:         public IssueResponse DeleteReleaseIssue(string service)
  213:         {
  214:             var serviceRequestAdministrativeIssueType = Ia.Ftn.Cl.Models.Business.ServiceRequestAdministrativeIssue.ServiceRequestAdministrativeIssueTypeByDisconnectionType(Ia.Ftn.Cl.Models.Business.ServiceRequestAdministrativeIssue.DisconnectionType.None);
  215:  
  216:             var issue = Ia.Ftn.Cl.Models.Data.ServiceRequestAdministrativeIssue.Update(service, serviceRequestAdministrativeIssueType, true, out Ia.Cl.Models.Result result);
  217:             var updated = issue != null ? issue.Updated : DateTime.MinValue;
  218:  
  219:             string serviceTypeString = ServiceTypeString(service);
  220:  
  221:             var response = new IssueResponse
  222:             {
  223:                 IsAuthorized = true,
  224:                 Service = service,
  225:                 ServiceType = serviceTypeString,
  226:                 IsSuccessful = result.IsSuccessful,
  227:                 IsSuspended = issue != null,
  228:                 Updated = updated,
  229:                 Message = result.Message
  230:             };
  231:  
  232:             return response;
  233:         }
  234:  
  235:         ////////////////////////////////////////////////////////////////////////////
  236:  
  237:         /// <summary>
  238:         ///
  239:         /// </summary>
  240:         private string ServiceTypeString(string service)
  241:         {
  242:             string serviceType;
  243:  
  244:             if (!string.IsNullOrEmpty(service))
  245:             {
  246:                 if (Ia.Ftn.Cl.Models.Business.Default.IsKuwaitLandlineService(service))
  247:                 {
  248:                     if (Ia.Ftn.Cl.Models.Business.Service.ServiceHasEightDigitsAndIsWithinAllowedDomainList(service))
  249:                     {
  250:                         var isPstnService = Ia.Ftn.Cl.Models.Data.Service2.IsPstnService(service);
  251:  
  252:                         if (isPstnService) serviceType = "PSTN (نحاس)";
  253:                         else
  254:                         {
  255:                             var isImsService = Ia.Ftn.Cl.Models.Data.Service2.IsImsService(service);
  256:  
  257:                             if (isImsService) serviceType = "Digital (رقمي)";
  258:                             else serviceType = "Unknown (غبر معرف)";
  259:                         }
  260:                     }
  261:                     else serviceType = "Not in FTN network";
  262:                 }
  263:                 else serviceType = "Not landline";
  264:             }
  265:             else serviceType = "Null";
  266:  
  267:             return serviceType;
  268:         }
  269:  
  270:         #endregion
  271:  
  272:         ////////////////////////////////////////////////////////////////////////////
  273:         ////////////////////////////////////////////////////////////////////////////
  274:  
  275:         #region API v2
  276:  
  277:         ////////////////////////////////////////////////////////////////////////////
  278:  
  279:         /// <summary>
  280:         /// List of Service Request Administrative Issue types
  281:         /// </summary>
  282:         [HttpGet]
  283:         [Route("api/v2/service-request-administrative-issues/types")]
  284:         public List<Ia.Ftn.Cl.Models.Business.ServiceRequestAdministrativeIssue.ServiceRequestAdministrativeIssueType> IssueTypeList2()
  285:         {
  286:             return Ia.Ftn.Cl.Models.Business.ServiceRequestAdministrativeIssue.ServiceRequestAdministrativeIssueTypeList;
  287:         }
  288:  
  289:         /*
  290:         ////////////////////////////////////////////////////////////////////////////
  291: 
  292:         /// <summary>
  293:         /// List of all Service Request Administrative Issue services
  294:         /// </summary>
  295:         [HttpGet]
  296:         [Route("api/v2/service-request-administrative-issues")]
  297:         public List<string> IssueList2()
  298:         {
  299:             var list = Ia.Ftn.Cl.Models.Data.ServiceRequestAdministrativeIssue.List();
  300: 
  301:             return list.Select(u => u.Service).ToList();
  302:         }
  303:         */
  304:  
  305:         ////////////////////////////////////////////////////////////////////////////
  306:         ////////////////////////////////////////////////////////////////////////////
  307:  
  308:         /// <summary>
  309:         /// IssueResponse
  310:         /// </summary>
  311:         [DataContract(IsReference = true, Namespace = "kw.com.ia.ofn.api.serviceRequestAdministrativeIssue", Name = "IssueResponse")]
  312:         public class IssueResponse2
  313:         {
  314:             /// <summary/>
  315:             [DataMember]
  316:             public string Service { get; set; }
  317:  
  318:             /// <summary/>
  319:             [DataMember]
  320:             public bool IsWithinAllowedToBeProvisionedDomainList { get; set; }
  321:  
  322:             /// <summary/>
  323:             [DataMember]
  324:             public bool IsProvisioned { get; set; }
  325:  
  326:             /// <summary/>
  327:             [DataMember]
  328:             public bool IsPstnService { get; set; }
  329:  
  330:             /// <summary/>
  331:             [DataMember]
  332:             public bool IsImsService { get; set; }
  333:  
  334:             /// <summary/>
  335:             [DataMember]
  336:             public bool ServiceRequestServiceHasInternationalCalling { get; set; }
  337:  
  338:             /// <summary/>
  339:             [DataMember]
  340:             public bool IsPendingSuspension { get; set; }
  341:  
  342:             /// <summary/>
  343:             [DataMember]
  344:             public bool IsSuspended { get; set; }
  345:  
  346:             /// <summary/>
  347:             [DataMember]
  348:             public bool InternationalCallingIsPendingSuspension { get; set; }
  349:  
  350:             /// <summary/>
  351:             [DataMember]
  352:             public bool InternationalCallingIsSuspended { get; set; }
  353:  
  354:             /// <summary/>
  355:             [DataMember]
  356:             public bool IsSuccessful { get; set; }
  357:  
  358:             /// <summary/>
  359:             [DataMember]
  360:             public bool WasUpdated { get; set; }
  361:  
  362:             /// <summary/>
  363:             [DataMember]
  364:             public string Message { get; set; }
  365:         }
  366:  
  367:         ////////////////////////////////////////////////////////////////////////////
  368:  
  369:         /// <summary>
  370:         /// Post (suspend) a service into the Service Request Administrative Issues table
  371:         /// </summary>
  372:         [HttpPost]
  373:         [Route("api/v2/service-request-administrative-issues/{service}")]
  374:         public IssueResponse2 PostSuspendIssue2(string service)
  375:         {
  376:             bool isSuccessful, wasUpdated;
  377:             string message;
  378:  
  379:             ServiceRequestAdministrativeIssueAndService2Profile(service, out bool isWithinAllowedToBeProvisionedDomainList, out bool isProvisioned, out bool isPstnService, out bool isImsService, out bool serviceRequestServiceHasInternationalCalling, out bool isPendingSuspension, out bool isSuspended, out bool internationalCallingIsPendingSuspension, out bool internationalCallingIsSuspended);
  380:  
  381:             if (isWithinAllowedToBeProvisionedDomainList && isProvisioned)
  382:             {
  383:                 wasUpdated = Ia.Ftn.Cl.Models.Data.ServiceRequestAdministrativeIssue.Update2(Ia.Ftn.Cl.Models.Business.ServiceRequestAdministrativeIssue.DisconnectionType.ProgrammedAccounting, service, out Ia.Cl.Models.Result result);
  384:  
  385:                 ServiceRequestAdministrativeIssueAndService2Profile(service, out isWithinAllowedToBeProvisionedDomainList, out isProvisioned, out isPstnService, out isImsService, out serviceRequestServiceHasInternationalCalling, out isPendingSuspension, out isSuspended, out internationalCallingIsPendingSuspension, out internationalCallingIsSuspended);
  386:  
  387:                 isSuccessful = result.IsSuccessful;
  388:                 message = result.Message;
  389:             }
  390:             else
  391:             {
  392:                 isSuccessful = false;
  393:                 wasUpdated = false;
  394:                 message = "Error: Service " + service + " is not within allowed to be provisioned domain list, or is not provisioned.";
  395:             }
  396:  
  397:             var response = new IssueResponse2
  398:             {
  399:                 Service = service,
  400:                 IsWithinAllowedToBeProvisionedDomainList = isWithinAllowedToBeProvisionedDomainList,
  401:                 IsProvisioned = isProvisioned,
  402:                 IsPstnService = isPstnService,
  403:                 IsImsService = isImsService,
  404:                 ServiceRequestServiceHasInternationalCalling = serviceRequestServiceHasInternationalCalling,
  405:                 IsPendingSuspension = isPendingSuspension,
  406:                 IsSuspended = isSuspended,
  407:                 InternationalCallingIsPendingSuspension = internationalCallingIsPendingSuspension,
  408:                 InternationalCallingIsSuspended = internationalCallingIsSuspended,
  409:                 IsSuccessful = isSuccessful,
  410:                 WasUpdated = wasUpdated,
  411:                 Message = message,
  412:             };
  413:  
  414:             return response;
  415:         }
  416:  
  417:         ////////////////////////////////////////////////////////////////////////////
  418:  
  419:         /// <summary>
  420:         /// Post (suspend) a service international calling into the Service Request Administrative Issues table
  421:         /// </summary>
  422:         [HttpPost]
  423:         [Route("api/v2/service-request-administrative-issues/{service}/international-calling")]
  424:         public IssueResponse2 PostSuspendInternationalCallingIssue(string service)
  425:         {
  426:             bool isSuccessful, wasUpdated;
  427:             string message;
  428:  
  429:             ServiceRequestAdministrativeIssueAndService2Profile(service, out bool isWithinAllowedToBeProvisionedDomainList, out bool isProvisioned, out bool isPstnService, out bool isImsService, out bool serviceRequestServiceHasInternationalCalling, out bool isPendingSuspension, out bool isSuspended, out bool internationalCallingIsPendingSuspension, out bool internationalCallingIsSuspended);
  430:  
  431:             if (isWithinAllowedToBeProvisionedDomainList && isProvisioned)
  432:             {
  433:                 if (!isPendingSuspension && !isSuspended)
  434:                 {
  435:                     if (serviceRequestServiceHasInternationalCalling)
  436:                     {
  437:                         wasUpdated = Ia.Ftn.Cl.Models.Data.ServiceRequestAdministrativeIssue.Update2(Ia.Ftn.Cl.Models.Business.ServiceRequestAdministrativeIssue.DisconnectionType.ProgrammedInternationalCalling, service, out Ia.Cl.Models.Result result);
  438:  
  439:                         ServiceRequestAdministrativeIssueAndService2Profile(service, out isWithinAllowedToBeProvisionedDomainList, out isProvisioned, out isPstnService, out isImsService, out serviceRequestServiceHasInternationalCalling, out isPendingSuspension, out isSuspended, out internationalCallingIsPendingSuspension, out internationalCallingIsSuspended);
  440:  
  441:                         isSuccessful = result.IsSuccessful;
  442:                         message = result.Message;
  443:                     }
  444:                     else
  445:                     {
  446:                         isSuccessful = false;
  447:                         wasUpdated = false;
  448:                         message = "Error: Service " + service + " service request service's does not have international calling.";
  449:                     }
  450:                 }
  451:                 else
  452:                 {
  453:                     isSuccessful = false;
  454:                     wasUpdated = false;
  455:                     message = "Error: Service " + service + " is pending suspension or is suspended.";
  456:                 }
  457:             }
  458:             else
  459:             {
  460:                 isSuccessful = false;
  461:                 wasUpdated = false;
  462:                 message = "Error: Service " + service + " is not within allowed to be provisioned domain list, or is not provisioned.";
  463:             }
  464:  
  465:             var response = new IssueResponse2
  466:             {
  467:                 Service = service,
  468:                 IsWithinAllowedToBeProvisionedDomainList = isWithinAllowedToBeProvisionedDomainList,
  469:                 IsProvisioned = isProvisioned,
  470:                 IsPstnService = isPstnService,
  471:                 IsImsService = isImsService,
  472:                 ServiceRequestServiceHasInternationalCalling = serviceRequestServiceHasInternationalCalling,
  473:                 IsPendingSuspension = isPendingSuspension,
  474:                 IsSuspended = isSuspended,
  475:                 InternationalCallingIsPendingSuspension = internationalCallingIsPendingSuspension,
  476:                 InternationalCallingIsSuspended = internationalCallingIsSuspended,
  477:                 IsSuccessful = isSuccessful,
  478:                 WasUpdated = wasUpdated,
  479:                 Message = message,
  480:             };
  481:  
  482:             return response;
  483:         }
  484:  
  485:         ////////////////////////////////////////////////////////////////////////////
  486:  
  487:         /// <summary>
  488:         /// Read Service Request Administrative Issue for a service
  489:         /// </summary>
  490:         [HttpGet]
  491:         [Route("api/v2/service-request-administrative-issues/{service}")]
  492:         public IssueResponse2 ReadIssue2(string service)
  493:         {
  494:             bool isSuccessful, wasUpdated;
  495:             string message;
  496:  
  497:             ServiceRequestAdministrativeIssueAndService2Profile(service, out bool isWithinAllowedToBeProvisionedDomainList, out bool isProvisioned, out bool isPstnService, out bool isImsService, out bool serviceRequestServiceHasInternationalCalling, out bool isPendingSuspension, out bool isSuspended, out bool internationalCallingIsPendingSuspension, out bool internationalCallingIsSuspended);
  498:  
  499:             isSuccessful = true;
  500:             wasUpdated = false;
  501:             message = string.Empty;
  502:  
  503:             var response = new IssueResponse2
  504:             {
  505:                 Service = service,
  506:                 IsWithinAllowedToBeProvisionedDomainList = isWithinAllowedToBeProvisionedDomainList,
  507:                 IsProvisioned = isProvisioned,
  508:                 IsPstnService = isPstnService,
  509:                 IsImsService = isImsService,
  510:                 ServiceRequestServiceHasInternationalCalling = serviceRequestServiceHasInternationalCalling,
  511:                 IsPendingSuspension = isPendingSuspension,
  512:                 IsSuspended = isSuspended,
  513:                 InternationalCallingIsPendingSuspension = internationalCallingIsPendingSuspension,
  514:                 InternationalCallingIsSuspended = internationalCallingIsSuspended,
  515:                 IsSuccessful = isSuccessful,
  516:                 WasUpdated = wasUpdated,
  517:                 Message = message,
  518:             };
  519:  
  520:             return response;
  521:         }
  522:  
  523:         ////////////////////////////////////////////////////////////////////////////
  524:  
  525:         /// <summary>
  526:         /// Delete (release) a service from Service Request Administrative Issues table
  527:         /// </summary>
  528:         [HttpDelete]
  529:         [Route("api/v2/service-request-administrative-issues/{service}")]
  530:         public IssueResponse2 DeleteReleaseIssue2(string service)
  531:         {
  532:             bool isSuccessful, wasUpdated;
  533:             string message;
  534:  
  535:             ServiceRequestAdministrativeIssueAndService2Profile(service, out bool isWithinAllowedToBeProvisionedDomainList, out bool isProvisioned, out bool isPstnService, out bool isImsService, out bool serviceRequestServiceHasInternationalCalling, out bool isPendingSuspension, out bool isSuspended, out bool internationalCallingIsPendingSuspension, out bool internationalCallingIsSuspended);
  536:  
  537:             if (isWithinAllowedToBeProvisionedDomainList && isProvisioned)
  538:             {
  539:                 wasUpdated = Ia.Ftn.Cl.Models.Data.ServiceRequestAdministrativeIssue.Update2(Ia.Ftn.Cl.Models.Business.ServiceRequestAdministrativeIssue.DisconnectionType.None, service, out Ia.Cl.Models.Result result);
  540:  
  541:                 ServiceRequestAdministrativeIssueAndService2Profile(service, out isWithinAllowedToBeProvisionedDomainList, out isProvisioned, out isPstnService, out isImsService, out serviceRequestServiceHasInternationalCalling, out isPendingSuspension, out isSuspended, out internationalCallingIsPendingSuspension, out internationalCallingIsSuspended);
  542:  
  543:                 isSuccessful = result.IsSuccessful;
  544:                 message = result.Message;
  545:             }
  546:             else
  547:             {
  548:                 isSuccessful = false;
  549:                 wasUpdated = false;
  550:                 message = "Error: Service " + service + " is not within allowed to be provisioned domain list, or is not provisioned.";
  551:             }
  552:  
  553:             var response = new IssueResponse2
  554:             {
  555:                 Service = service,
  556:                 IsWithinAllowedToBeProvisionedDomainList = isWithinAllowedToBeProvisionedDomainList,
  557:                 IsProvisioned = isProvisioned,
  558:                 IsPstnService = isPstnService,
  559:                 IsImsService = isImsService,
  560:                 ServiceRequestServiceHasInternationalCalling = serviceRequestServiceHasInternationalCalling,
  561:                 IsPendingSuspension = isPendingSuspension,
  562:                 IsSuspended = isSuspended,
  563:                 InternationalCallingIsPendingSuspension = internationalCallingIsPendingSuspension,
  564:                 InternationalCallingIsSuspended = internationalCallingIsSuspended,
  565:                 IsSuccessful = isSuccessful,
  566:                 WasUpdated = wasUpdated,
  567:                 Message = message,
  568:             };
  569:  
  570:             return response;
  571:         }
  572:  
  573:         ////////////////////////////////////////////////////////////////////////////
  574:  
  575:         /// <summary>
  576:         /// Delete (release) a service international calling from Service Request Administrative Issues table
  577:         /// </summary>
  578:         [HttpDelete]
  579:         [Route("api/v2/service-request-administrative-issues/{service}/international-calling")]
  580:         public IssueResponse2 DeleteReleaseInternationalCallingIssue(string service)
  581:         {
  582:             bool isSuccessful, wasUpdated;
  583:             string message;
  584:  
  585:             ServiceRequestAdministrativeIssueAndService2Profile(service, out bool isWithinAllowedToBeProvisionedDomainList, out bool isProvisioned, out bool isPstnService, out bool isImsService, out bool serviceRequestServiceHasInternationalCalling, out bool isPendingSuspension, out bool isSuspended, out bool internationalCallingIsPendingSuspension, out bool internationalCallingIsSuspended);
  586:  
  587:             if (isWithinAllowedToBeProvisionedDomainList && isProvisioned)
  588:             {
  589:                 if (!isPendingSuspension && !isSuspended)
  590:                 {
  591:                     wasUpdated = Ia.Ftn.Cl.Models.Data.ServiceRequestAdministrativeIssue.Update2(Ia.Ftn.Cl.Models.Business.ServiceRequestAdministrativeIssue.DisconnectionType.None, service, out Ia.Cl.Models.Result result);
  592:  
  593:                     ServiceRequestAdministrativeIssueAndService2Profile(service, out isWithinAllowedToBeProvisionedDomainList, out isProvisioned, out isPstnService, out isImsService, out serviceRequestServiceHasInternationalCalling, out isPendingSuspension, out isSuspended, out internationalCallingIsPendingSuspension, out internationalCallingIsSuspended);
  594:  
  595:                     isSuccessful = result.IsSuccessful;
  596:                     message = result.Message;
  597:                 }
  598:                 else
  599:                 {
  600:                     isSuccessful = false;
  601:                     wasUpdated = false;
  602:                     message = "Error: Service " + service + " is pending suspension or is suspended.";
  603:                 }
  604:             }
  605:             else
  606:             {
  607:                 isSuccessful = false;
  608:                 wasUpdated = false;
  609:                 message = "Error: Service " + service + " is not within allowed to be provisioned domain list, or is not provisioned.";
  610:             }
  611:  
  612:             var response = new IssueResponse2
  613:             {
  614:                 Service = service,
  615:                 IsWithinAllowedToBeProvisionedDomainList = isWithinAllowedToBeProvisionedDomainList,
  616:                 IsProvisioned = isProvisioned,
  617:                 IsPstnService = isPstnService,
  618:                 IsImsService = isImsService,
  619:                 ServiceRequestServiceHasInternationalCalling = serviceRequestServiceHasInternationalCalling,
  620:                 IsPendingSuspension = isPendingSuspension,
  621:                 IsSuspended = isSuspended,
  622:                 InternationalCallingIsPendingSuspension = internationalCallingIsPendingSuspension,
  623:                 InternationalCallingIsSuspended = internationalCallingIsSuspended,
  624:                 IsSuccessful = isSuccessful,
  625:                 WasUpdated = wasUpdated,
  626:                 Message = message,
  627:             };
  628:  
  629:             return response;
  630:         }
  631:  
  632:         ////////////////////////////////////////////////////////////////////////////
  633:  
  634:         /// <summary>
  635:         ///
  636:         /// </summary>
  637:         private void ServiceRequestAdministrativeIssueAndService2Profile(string service, out bool isWithinAllowedToBeProvisionedDomainList, out bool isProvisioned, out bool isPstnService, out bool isImsService, out bool serviceRequestServiceHasInternationalCalling, out bool isPendingSuspension, out bool isSuspended, out bool internationalCallingIsPendingSuspension, out bool internationalCallingIsSuspended)
  638:         {
  639:             if (!string.IsNullOrEmpty(service))
  640:             {
  641:                 if (Ia.Ftn.Cl.Models.Business.Service.ServiceHasEightDigitsAndIsWithinAllowedDomainList(service))
  642:                 {
  643:                     isWithinAllowedToBeProvisionedDomainList = true;
  644:  
  645:                     isImsService = Ia.Ftn.Cl.Models.Data.Service2.IsImsService(service);
  646:  
  647:                     if (isImsService)
  648:                     {
  649:                         isPstnService = false;
  650:                         isProvisioned = true;
  651:                     }
  652:                     else
  653:                     {
  654:                         isPstnService = Ia.Ftn.Cl.Models.Data.Service2.IsPstnService(service);
  655:                         isProvisioned = isPstnService;
  656:                     }
  657:  
  658:                     if (isProvisioned)
  659:                     {
  660:                         serviceRequestServiceHasInternationalCalling = Ia.Ftn.Cl.Models.Data.ServiceRequestService.HasInternationalCalling(service);
  661:  
  662:                         isPendingSuspension = Ia.Ftn.Cl.Models.Data.ServiceRequestAdministrativeIssue.IsPendingIssue(Ia.Ftn.Cl.Models.Business.ServiceRequestAdministrativeIssue.DisconnectionType.ProgrammedAccounting, service);
  663:                         isSuspended = Ia.Ftn.Cl.Models.Data.Service2.IsSuspended(service);
  664:  
  665:                         internationalCallingIsPendingSuspension = Ia.Ftn.Cl.Models.Data.ServiceRequestAdministrativeIssue.IsPendingIssue(Ia.Ftn.Cl.Models.Business.ServiceRequestAdministrativeIssue.DisconnectionType.ProgrammedInternationalCalling, service);
  666:                         internationalCallingIsSuspended = !Ia.Ftn.Cl.Models.Data.Service2.HasInternationalCalling(service);
  667:                     }
  668:                     else
  669:                     {
  670:                         isImsService = false;
  671:                         serviceRequestServiceHasInternationalCalling = false;
  672:                         isPendingSuspension = false;
  673:                         isSuspended = false;
  674:                         internationalCallingIsPendingSuspension = false;
  675:                         internationalCallingIsSuspended = false;
  676:                     }
  677:                 }
  678:                 else
  679:                 {
  680:                     isWithinAllowedToBeProvisionedDomainList = false;
  681:                     isProvisioned = false;
  682:                     isPstnService = false;
  683:                     isImsService = false;
  684:                     serviceRequestServiceHasInternationalCalling = false;
  685:                     isPendingSuspension = false;
  686:                     isSuspended = false;
  687:                     internationalCallingIsPendingSuspension = false;
  688:                     internationalCallingIsSuspended = false;
  689:                 }
  690:             }
  691:             else
  692:             {
  693:                 isWithinAllowedToBeProvisionedDomainList = false;
  694:                 isProvisioned = false;
  695:                 isPstnService = false;
  696:                 isImsService = false;
  697:                 serviceRequestServiceHasInternationalCalling = false;
  698:                 isPendingSuspension = false;
  699:                 isSuspended = false;
  700:                 internationalCallingIsPendingSuspension = false;
  701:                 internationalCallingIsSuspended = false;
  702:             }
  703:         }
  704:  
  705:         ////////////////////////////////////////////////////////////////////////////
  706:         ////////////////////////////////////////////////////////////////////////////
  707:  
  708:         #endregion
  709:  
  710:         ////////////////////////////////////////////////////////////////////////////
  711:         ////////////////////////////////////////////////////////////////////////////
  712:     }
  713: }