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

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

Find subscriber and network information support class for the Optical Fiber Network business 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.RegularExpressions;
    7: using System.Web;
    8:  
    9: namespace Ia.Ngn.Cl.Model.Business.Maintenance
   10: {
   11:     ////////////////////////////////////////////////////////////////////////////
   12:  
   13:     /// <summary publish="true">
   14:     /// Find subscriber and network information support class for the Optical Fiber Network business model
   15:     /// </summary>
   16:     /// 
   17:     /// <remarks> 
   18:     /// Copyright © 2006-2021 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   19:     ///
   20:     /// 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
   21:     /// the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
   22:     ///
   23:     /// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
   24:     /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
   25:     /// 
   26:     /// You should have received a copy of the GNU General Public License along with this library. If not, see http://www.gnu.org/licenses.
   27:     /// 
   28:     /// Copyright notice: This notice may not be removed or altered from any source distribution.
   29:     /// </remarks> 
   30:     public class Find
   31:     {
   32:         public const string ServiceRequestCustomerIdInputTypeString = "serviceRequestCustomerId";
   33:         public const string PaciInputTypeString = "paci";
   34:  
   35:         ////////////////////////////////////////////////////////////////////////////
   36:  
   37:         /// <summary>
   38:         ///
   39:         /// </summary>
   40:         public Find() { }
   41:  
   42:         ////////////////////////////////////////////////////////////////////////////
   43:  
   44:         /// <summary>
   45:         ///
   46:         /// </summary>
   47:         public static string Url(string input)
   48:         {
   49:             return "~/maintenance/find.aspx?input=" + HttpUtility.UrlEncode(input);
   50:         }
   51:  
   52:         ////////////////////////////////////////////////////////////////////////////
   53:  
   54:         /// <summary>
   55:         ///
   56:         /// </summary>
   57:         public static void Search(Ia.Ngn.Cl.Model.Business.Administration.Framework framework, string rawInput, string inputType, out List<Ia.Ngn.Cl.Model.Ui.Service2> serviceList, out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfGatewayRecord> agcfGatewayRecordList, out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfEndpoint> agcfEndpointList, out List<Ia.Ngn.Cl.Model.Huawei.Mgw> mgwList, out List<Ia.Ngn.Cl.Model.Huawei.Asbr> asbrList, out List<Ia.Ngn.Cl.Model.Ui.Nokia.SubParty> subPartyList, out List<Ia.Ngn.Cl.Model.Ui.Nokia.Subscriber> subscriberList, out List<Ia.Ngn.Cl.Model.Ui.Huawei.HuSbr> huSbrList, out List<Ia.Ngn.Cl.Model.Huawei.Owsbr> owsbrList, out List<Ia.Ngn.Cl.Model.Huawei.Seruattr> seruattrList, out List<Ia.Ngn.Cl.Model.Ericsson.AxeSubscriber> axeSubscriberList, out List<Ia.Ngn.Cl.Model.Siemens.EwsdSubscriber> ewsdSubscriberList, out List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> nddOntList, out List<Ia.Ngn.Cl.Model.Ont> ontList, out List<Ia.Ngn.Cl.Model.OntServiceVoip> ontServiceVoipList, out List<Ia.Ngn.Cl.Model.OntOntPots> ontOntPotsList, out List<Ia.Ngn.Cl.Model.Huawei.EmsDev> emsDevList, out List<Ia.Ngn.Cl.Model.Huawei.EmsBoard> emsBoardList, out List<Ia.Ngn.Cl.Model.Huawei.EmsPort> emsPortList, out List<Ia.Ngn.Cl.Model.Ui.Huawei.EmsOnt> emsOntList, out List<Ia.Ngn.Cl.Model.Huawei.EmsOntSipInfo> emsOntSipInfoList, out List<Ia.Ngn.Cl.Model.Huawei.EmsVoipPstnUser> emsVoipPstnUserList, out List<Ia.Ngn.Cl.Model.Huawei.EmsVag> emsVagList, out List<Ia.Ngn.Cl.Model.Event> eventList, out List<Ia.Ngn.Cl.Model.Access> accessList, out List<Ia.Ngn.Cl.Model.Ui.ServiceRequestService> serviceRequestServiceList, out List<Ia.Ngn.Cl.Model.ServiceRequest> serviceRequestList, out List<Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue> serviceRequestAdministrativeIssueList, out List<Ia.Ngn.Cl.Model.ServiceRequestHistory> serviceRequestHistoryList, out List<Ia.Ngn.Cl.Model.ServiceRequestType> serviceRequestTypeList, out List<Ia.Ngn.Cl.Model.ServiceRequestOnt> serviceRequestOntList, out List<Ia.Ngn.Cl.Model.ServiceRequestOntDetail> serviceRequestOntDetailList, out List<Ia.Ngn.Cl.Model.Report> reportList, out List<Ia.Ngn.Cl.Model.ReportHistory> reportHistoryList, out Ia.Cl.Model.Result result)
   58:         {
   59:             var enqueueIntoMsmq = true;
   60:             var stopwatch = new Ia.Cl.Model.Stopwatch();
   61:  
   62:             Ia.Ngn.Cl.Model.Business.Maintenance.Find.Search(ref stopwatch, framework, enqueueIntoMsmq, rawInput, inputType, out serviceList, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList, out result);
   63:         }
   64:  
   65:         ////////////////////////////////////////////////////////////////////////////
   66:  
   67:         /// <summary>
   68:         ///
   69:         /// </summary>
   70:         public static Ia.Cl.Model.Result TriggerSearchToRefreshAspNetAndDatabaseConnection(string input)
   71:         {
   72:             var enqueueIntoMsmq = false;
   73:             var inputType = string.Empty;
   74:             var stopwatch = new Ia.Cl.Model.Stopwatch();
   75:  
   76:             var staff = Ia.Ngn.Cl.Model.Business.Authority.ApplicationStaff ?? Ia.Ngn.Cl.Model.Business.Authority.SuperStaff;
   77:  
   78:             Ia.Ngn.Cl.Model.Business.Maintenance.Find.Search(ref stopwatch, staff.Framework, enqueueIntoMsmq, input, inputType, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out Ia.Cl.Model.Result result);
   79:  
   80:             return result;
   81:         }
   82:  
   83:         ////////////////////////////////////////////////////////////////////////////
   84:  
   85:         /// <summary>
   86:         ///
   87:         /// </summary>
   88:         public static void Search(ref Ia.Cl.Model.Stopwatch stopwatch,
   89:             Ia.Ngn.Cl.Model.Business.Administration.Framework framework,
   90:             bool enqueueIntoMsmq,
   91:             string rawInput,
   92:             string inputType,
   93:             out List<Ia.Ngn.Cl.Model.Ui.Service2> serviceList,
   94:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfGatewayRecord> agcfGatewayRecordList,
   95:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfEndpoint> agcfEndpointList,
   96:             out List<Ia.Ngn.Cl.Model.Huawei.Mgw> mgwList,
   97:             out List<Ia.Ngn.Cl.Model.Huawei.Asbr> asbrList,
   98:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.SubParty> subPartyList,
   99:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.Subscriber> subscriberList,
  100:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.HuSbr> huSbrList,
  101:             out List<Ia.Ngn.Cl.Model.Huawei.Owsbr> owsbrList,
  102:             out List<Ia.Ngn.Cl.Model.Huawei.Seruattr> seruattrList,
  103:             out List<Ia.Ngn.Cl.Model.Ericsson.AxeSubscriber> axeSubscriberList,
  104:             out List<Ia.Ngn.Cl.Model.Siemens.EwsdSubscriber> ewsdSubscriberList,
  105:             out List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> nddOntList,
  106:             out List<Ia.Ngn.Cl.Model.Ont> ontList,
  107:             out List<Ia.Ngn.Cl.Model.OntServiceVoip> ontServiceVoipList,
  108:             out List<Ia.Ngn.Cl.Model.OntOntPots> ontOntPotsList,
  109:             out List<Ia.Ngn.Cl.Model.Huawei.EmsDev> emsDevList,
  110:             out List<Ia.Ngn.Cl.Model.Huawei.EmsBoard> emsBoardList,
  111:             out List<Ia.Ngn.Cl.Model.Huawei.EmsPort> emsPortList,
  112:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.EmsOnt> emsOntList,
  113:             out List<Ia.Ngn.Cl.Model.Huawei.EmsOntSipInfo> emsOntSipInfoList,
  114:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVoipPstnUser> emsVoipPstnUserList,
  115:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVag> emsVagList,
  116:             out List<Ia.Ngn.Cl.Model.Event> eventList,
  117:             out List<Ia.Ngn.Cl.Model.Access> accessList,
  118:             out List<Ia.Ngn.Cl.Model.Ui.ServiceRequestService> serviceRequestServiceList,
  119:             out List<Ia.Ngn.Cl.Model.ServiceRequest> serviceRequestList,
  120:             out List<Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue> serviceRequestAdministrativeIssueList,
  121:             out List<Ia.Ngn.Cl.Model.ServiceRequestHistory> serviceRequestHistoryList,
  122:             out List<Ia.Ngn.Cl.Model.ServiceRequestType> serviceRequestTypeList,
  123:             out List<Ia.Ngn.Cl.Model.ServiceRequestOnt> serviceRequestOntList,
  124:             out List<Ia.Ngn.Cl.Model.ServiceRequestOntDetail> serviceRequestOntDetailList,
  125:             out List<Ia.Ngn.Cl.Model.Report> reportList,
  126:             out List<Ia.Ngn.Cl.Model.ReportHistory> reportHistoryList,
  127:             out Ia.Cl.Model.Result result)
  128:         {
  129:             bool inputIsValid;
  130:             string input;
  131:  
  132:             serviceList = null;
  133:             agcfGatewayRecordList = null;
  134:             agcfEndpointList = null;
  135:             mgwList = null;
  136:             asbrList = null;
  137:             subPartyList = null;
  138:             subscriberList = null;
  139:             huSbrList = null;
  140:             owsbrList = null;
  141:             seruattrList = null;
  142:             axeSubscriberList = null;
  143:             ewsdSubscriberList = null;
  144:             nddOntList = null;
  145:             ontList = null;
  146:             ontServiceVoipList = null;
  147:             ontOntPotsList = null;
  148:             emsDevList = null;
  149:             emsBoardList = null;
  150:             emsPortList = null;
  151:             emsOntList = null;
  152:             emsOntSipInfoList = null;
  153:             emsVoipPstnUserList = null;
  154:             emsVagList = null;
  155:             eventList = null;
  156:             accessList = null;
  157:             serviceRequestServiceList = null;
  158:             serviceRequestList = null;
  159:             serviceRequestAdministrativeIssueList = null;
  160:             serviceRequestHistoryList = null;
  161:             serviceRequestTypeList = null;
  162:             serviceRequestOntList = null;
  163:             serviceRequestOntDetailList = null;
  164:             reportList = null;
  165:             reportHistoryList = null;
  166:  
  167:             result = new Ia.Cl.Model.Result();
  168:  
  169:             if (!string.IsNullOrEmpty(rawInput))
  170:             {
  171:                 rawInput = rawInput.Trim();
  172:                 input = rawInput.ToLower();
  173:  
  174:                 if (input.Length > 0)
  175:                 {
  176:                     inputIsValid = true;
  177:  
  178:                     if (Ia.Ngn.Cl.Model.Business.Service.ServiceHasEightDigitsAndIsWithinKuwaitLandlineDomainList(input) || Ia.Ngn.Cl.Model.Business.NumberFormatConverter.IsMatchToServiceWithCountryCode(input) || Ia.Ngn.Cl.Model.Business.NumberFormatConverter.IsMatchToImpuSipDomain(input))
  179:                     {
  180:                         Ia.Ngn.Cl.Model.Business.Maintenance.Find.Number(ref stopwatch, framework, enqueueIntoMsmq, rawInput, out serviceList, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList, out result);
  181:                     }
  182:                     else if (Ia.Ngn.Cl.Model.Business.Access.AccessNameIsInAValidFormat(input))
  183:                     {
  184:                         Ia.Ngn.Cl.Model.Business.Maintenance.Find.OntName(ref stopwatch, framework, enqueueIntoMsmq, rawInput, out serviceList, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList, out result);
  185:                     }
  186:                     else if (Ia.Ngn.Cl.Model.Business.Access.PonNameIsInValidFormat(input))
  187:                     {
  188:                         Ia.Ngn.Cl.Model.Business.Maintenance.Find.PonName(ref stopwatch, framework, enqueueIntoMsmq, rawInput, out serviceList, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList, out result);
  189:                     }
  190:                     else if (Regex.IsMatch(input, @"^[a-zA-Z]{3}\-\d{1,2}\-\d{1,2}\-\d{1,2}\-\d{1,2}$")) // MsanDevLicPosition() regex must come before OntPosition()
  191:                     {
  192:                         Ia.Ngn.Cl.Model.Business.Maintenance.Find.MsanDevLicPosition(ref stopwatch, framework, enqueueIntoMsmq, rawInput, out serviceList, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList, out result);
  193:                     }
  194:                     else if (Regex.IsMatch(input, @"^[\w\d\-]+\-\d{1,2}\-\d{1,2}\-\d{1,2}$"))
  195:                     {
  196:                         Ia.Ngn.Cl.Model.Business.Maintenance.Find.OntPosition(ref stopwatch, framework, enqueueIntoMsmq, rawInput, out serviceList, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList, out result);
  197:                     }
  198:                     else if (Ia.Ngn.Cl.Model.Business.Huawei.Ont.IsValidSerialNumber(input) || Ia.Ngn.Cl.Model.Business.Nokia.Ont.IsValidSerialNumber(input)) // Huawei or Nokia ONT serial
  199:                     {
  200:                         Ia.Ngn.Cl.Model.Business.Maintenance.Find.Serial(ref stopwatch, framework, enqueueIntoMsmq, rawInput, out serviceList, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList, out result);
  201:                     }
  202:                     else if (Ia.Ngn.Cl.Model.Business.Access.PaciIsInAValidFormat(input))
  203:                     {
  204:                         Ia.Ngn.Cl.Model.Business.Maintenance.Find.Paci(ref stopwatch, framework, enqueueIntoMsmq, rawInput, out serviceList, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList, out result);
  205:  
  206:                         /*
  207:                         if (!string.IsNullOrEmpty(inputType) && inputType == Ia.Ngn.Cl.Model.Business.Maintenance.Find.PaciInputTypeString)
  208:                         {
  209:                             Ia.Ngn.Cl.Model.Business.Maintenance.Find.Paci(ref stopwatch, framework, enqueueIntoMsmq, rawInput, out serviceList, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList, out result);
  210:                         }
  211:                         */
  212:                     }
  213:                     else if (Ia.Cl.Model.Default.IsValidIpv4(input))
  214:                     {
  215:                         Ia.Ngn.Cl.Model.Business.Maintenance.Find.Ip(rawInput, out serviceList, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList, out result);
  216:                     }
  217:                     else if (Regex.IsMatch(input, @"^[a-zA-Z]{3},\d{1,3}$"))
  218:                     {
  219:                         Ia.Ngn.Cl.Model.Business.Maintenance.Find.AreaBlock(rawInput, out accessList, out result);
  220:                     }
  221:                     else if (Regex.IsMatch(input, @"^[a-zA-Z]{3},\d{0,3},\d{0,3},\d{0,3},\d{0,3}$"))
  222:                     {
  223:                         Ia.Ngn.Cl.Model.Business.Maintenance.Find.Address(rawInput, out accessList, out result);
  224:                     }
  225:                     else if (Regex.IsMatch(input, @"^\d{1,7}$"))
  226:                     {
  227:                         if (!string.IsNullOrEmpty(inputType) && inputType == Ia.Ngn.Cl.Model.Business.Maintenance.Find.ServiceRequestCustomerIdInputTypeString)
  228:                         {
  229:                             // max value of ServiceRequest CustomerId is a 7 digit number
  230:  
  231:                             Ia.Ngn.Cl.Model.Business.Maintenance.Find.CustomerId(rawInput, out serviceRequestList, out result);
  232:                         }
  233:                         else Ia.Ngn.Cl.Model.Business.Maintenance.Find.GatewayId(ref stopwatch, framework, enqueueIntoMsmq, rawInput, out serviceList, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList, out result);
  234:                     }
  235:                     else if (Regex.IsMatch(input, @"^[\p{L}|\s]+$")) // "\p{L}" matches unicode characters
  236:                     {
  237:                         Ia.Ngn.Cl.Model.Business.Maintenance.Find.CustomerName(rawInput, out serviceRequestList, out result);
  238:                     }
  239:                     else inputIsValid = false;
  240:  
  241:                     stopwatch.RecordElapsedMilliseconds("N");
  242:  
  243:                     if (inputIsValid)
  244:                     {
  245:                         if (
  246:                         (serviceList == null || serviceList != null && serviceList.Count == 0) &&
  247:                         (agcfGatewayRecordList == null || agcfGatewayRecordList != null && agcfGatewayRecordList.Count == 0) &&
  248:                         (agcfEndpointList == null || agcfEndpointList != null && agcfEndpointList.Count == 0) &&
  249:                         (mgwList == null || mgwList != null && mgwList.Count == 0) &&
  250:                         (asbrList == null || asbrList != null && asbrList.Count == 0) &&
  251:                         (subPartyList == null || subPartyList != null && subPartyList.Count == 0) &&
  252:                         (subscriberList == null || subscriberList != null && subscriberList.Count == 0) &&
  253:                         (huSbrList == null || huSbrList != null && huSbrList.Count == 0) &&
  254:                         (owsbrList == null || owsbrList != null && owsbrList.Count == 0) &&
  255:                         (seruattrList == null || seruattrList != null && seruattrList.Count == 0) &&
  256:                         (axeSubscriberList == null || axeSubscriberList != null && axeSubscriberList.Count == 0) &&
  257:                         (ewsdSubscriberList == null || ewsdSubscriberList != null && ewsdSubscriberList.Count == 0) &&
  258:                         (nddOntList == null || nddOntList != null && nddOntList.Count == 0) &&
  259:                         (ontList == null || ontList != null && ontList.Count == 0) &&
  260:                         (ontServiceVoipList == null || ontServiceVoipList != null && ontServiceVoipList.Count == 0) &&
  261:                         (ontOntPotsList == null || ontOntPotsList != null && ontOntPotsList.Count == 0) &&
  262:                         (emsDevList == null || emsDevList != null && emsDevList.Count == 0) &&
  263:                         (emsBoardList == null || emsBoardList != null && emsBoardList.Count == 0) &&
  264:                         (emsPortList == null || emsPortList != null && emsPortList.Count == 0) &&
  265:                         (emsOntList == null || emsOntList != null && emsOntList.Count == 0) &&
  266:                         (emsOntSipInfoList == null || emsOntSipInfoList != null && emsOntSipInfoList.Count == 0) &&
  267:                         (emsVoipPstnUserList == null || emsVoipPstnUserList != null && emsVoipPstnUserList.Count == 0) &&
  268:                         (emsVagList == null || emsVagList != null && emsVagList.Count == 0) &&
  269:                         (eventList == null || eventList != null && eventList.Count == 0) &&
  270:                         (accessList == null || accessList != null && accessList.Count == 0) &&
  271:                         (serviceRequestServiceList == null || serviceRequestServiceList != null && serviceRequestServiceList.Count == 0) &&
  272:                         (serviceRequestList == null || serviceRequestList != null && serviceRequestList.Count == 0) &&
  273:                         (serviceRequestAdministrativeIssueList == null || serviceRequestAdministrativeIssueList != null && serviceRequestAdministrativeIssueList.Count == 0) &&
  274:                         (serviceRequestHistoryList == null || serviceRequestHistoryList != null && serviceRequestHistoryList.Count == 0) &&
  275:                         (serviceRequestTypeList == null || serviceRequestTypeList != null && serviceRequestTypeList.Count == 0) &&
  276:                         (serviceRequestOntList == null || serviceRequestOntList != null && serviceRequestOntList.Count == 0) &&
  277:                         (serviceRequestOntDetailList == null || serviceRequestOntDetailList != null && serviceRequestOntDetailList.Count == 0) &&
  278:                         (reportList == null || reportList != null && reportList.Count == 0) &&
  279:                         (reportHistoryList == null || reportHistoryList != null && reportHistoryList.Count == 0))
  280:                         {
  281:                             if (result.IsSuccessful)
  282:                             {
  283:                                 result.AddWarning("No data records were found for \"" + rawInput + "\" (لا توجد معلومات عن القيمة المعطاة). ");
  284:                             }
  285:                             else { };// result.AddError(result.Error);
  286:                         }
  287:                         else
  288:                         {
  289:                             /*
  290:                             if (result.IsSuccessful)
  291:                             {
  292:                                 if (!string.IsNullOrEmpty(result.Message)) result.AddSuccess(result.Message);
  293:                             }
  294:                             //else result.AddError(result.Error);
  295:                             */
  296:                         }
  297:                     }
  298:                     else result.AddError("Input format is unknown (قيمة غير مفهومة). ");
  299:                 }
  300:                 else result.AddError("No input was entered (لم يتم إدخال أي شيء). ");
  301:             }
  302:             else result.AddError("Input is null or empty (لم يتم إدخال أي شيء). ");
  303:         }
  304:  
  305:         ////////////////////////////////////////////////////////////////////////////
  306:         ////////////////////////////////////////////////////////////////////////////
  307:  
  308:  
  309:  
  310:  
  311:  
  312:  
  313:         ////////////////////////////////////////////////////////////////////////////
  314:         ////////////////////////////////////////////////////////////////////////////
  315:  
  316:         /// <summary>
  317:         ///
  318:         /// </summary>
  319:         public static void GatewayId(ref Ia.Cl.Model.Stopwatch stopwatch,
  320:             Ia.Ngn.Cl.Model.Business.Administration.Framework framework,
  321:             bool enqueueIntoMsmq,
  322:             string input,
  323:             out List<Ia.Ngn.Cl.Model.Ui.Service2> service2List,
  324:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfGatewayRecord> agcfGatewayRecordList,
  325:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfEndpoint> agcfEndpointList,
  326:             out List<Ia.Ngn.Cl.Model.Huawei.Mgw> mgwList,
  327:             out List<Ia.Ngn.Cl.Model.Huawei.Asbr> asbrList,
  328:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.SubParty> subPartyList,
  329:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.Subscriber> subscriberList,
  330:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.HuSbr> huSbrList,
  331:             out List<Ia.Ngn.Cl.Model.Huawei.Owsbr> owsbrList,
  332:             out List<Ia.Ngn.Cl.Model.Huawei.Seruattr> seruattrList,
  333:             out List<Ia.Ngn.Cl.Model.Ericsson.AxeSubscriber> axeSubscriberList,
  334:             out List<Ia.Ngn.Cl.Model.Siemens.EwsdSubscriber> ewsdSubscriberList,
  335:             out List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> nddOntList,
  336:             out List<Ia.Ngn.Cl.Model.Ont> ontList,
  337:             out List<Ia.Ngn.Cl.Model.OntServiceVoip> ontServiceVoipList,
  338:             out List<Ia.Ngn.Cl.Model.OntOntPots> ontOntPotsList,
  339:             out List<Ia.Ngn.Cl.Model.Huawei.EmsDev> emsDevList,
  340:             out List<Ia.Ngn.Cl.Model.Huawei.EmsBoard> emsBoardList,
  341:             out List<Ia.Ngn.Cl.Model.Huawei.EmsPort> emsPortList,
  342:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.EmsOnt> emsOntList,
  343:             out List<Ia.Ngn.Cl.Model.Huawei.EmsOntSipInfo> emsOntSipInfoList,
  344:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVoipPstnUser> emsVoipPstnUserList,
  345:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVag> emsVagList,
  346:             out List<Ia.Ngn.Cl.Model.Event> eventList,
  347:             out List<Ia.Ngn.Cl.Model.Access> accessList,
  348:             out List<Ia.Ngn.Cl.Model.Ui.ServiceRequestService> serviceRequestServiceList,
  349:             out List<Ia.Ngn.Cl.Model.ServiceRequest> serviceRequestList,
  350:             out List<Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue> serviceRequestAdministrativeIssueList,
  351:             out List<Ia.Ngn.Cl.Model.ServiceRequestHistory> serviceRequestHistoryList,
  352:             out List<Ia.Ngn.Cl.Model.ServiceRequestType> serviceRequestTypeList,
  353:             out List<Ia.Ngn.Cl.Model.ServiceRequestOnt> serviceRequestOntList,
  354:             out List<Ia.Ngn.Cl.Model.ServiceRequestOntDetail> serviceRequestOntDetailList,
  355:             out List<Ia.Ngn.Cl.Model.Report> reportList,
  356:             out List<Ia.Ngn.Cl.Model.ReportHistory> reportHistoryList,
  357:             out Ia.Cl.Model.Result result)
  358:         {
  359:             int gatewayId;
  360:  
  361:             var gatewayIdList = new List<int>();
  362:  
  363:             result = new Ia.Cl.Model.Result();
  364:  
  365:             service2List = null;
  366:             agcfGatewayRecordList = null;
  367:             agcfEndpointList = null;
  368:             mgwList = null;
  369:             asbrList = null;
  370:             subPartyList = null;
  371:             subscriberList = null;
  372:             huSbrList = null;
  373:             owsbrList = null;
  374:             seruattrList = null;
  375:             axeSubscriberList = null;
  376:             ewsdSubscriberList = null;
  377:             nddOntList = null;
  378:             ontList = null;
  379:             ontServiceVoipList = null;
  380:             ontOntPotsList = null;
  381:             emsDevList = null;
  382:             emsBoardList = null;
  383:             emsPortList = null;
  384:             emsOntList = null;
  385:             emsOntSipInfoList = null;
  386:             emsVoipPstnUserList = null;
  387:             emsVagList = null;
  388:             eventList = null;
  389:             accessList = null;
  390:             serviceRequestServiceList = null;
  391:             serviceRequestList = null;
  392:             serviceRequestAdministrativeIssueList = null;
  393:             serviceRequestHistoryList = null;
  394:             serviceRequestTypeList = null;
  395:             serviceRequestOntList = null;
  396:             serviceRequestOntDetailList = null;
  397:             reportList = null;
  398:             reportHistoryList = null;
  399:  
  400:             gatewayId = int.Parse(input);
  401:  
  402:             if (gatewayId >= Ia.Ngn.Cl.Model.Business.Nokia.Ims.FirstGatewayId && gatewayId <= Ia.Ngn.Cl.Model.Business.Nokia.Ims.LastGatewayId)
  403:             {
  404:                 gatewayIdList.Add(gatewayId);
  405:  
  406:                 Ia.Ngn.Cl.Model.Business.Maintenance.Find.GatewayIdTwo(ref stopwatch, framework, enqueueIntoMsmq, gatewayIdList, out service2List, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList, out result);
  407:             }
  408:             else
  409:             {
  410:                 result.AddError("The gatewayId \"" + input + "\" is not within the allowed gatewayId range (الرقم لا ينتمي للمجال). ");
  411:             }
  412:         }
  413:  
  414:         ////////////////////////////////////////////////////////////////////////////
  415:  
  416:         /// <summary>
  417:         ///
  418:         /// </summary>
  419:         private static void GatewayIdTwo(ref Ia.Cl.Model.Stopwatch stopwatch,
  420:             Ia.Ngn.Cl.Model.Business.Administration.Framework framework,
  421:             bool enqueueIntoMsmq,
  422:             List<int> gatewayIdList,
  423:             out List<Ia.Ngn.Cl.Model.Ui.Service2> service2List,
  424:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfGatewayRecord> agcfGatewayRecordList,
  425:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfEndpoint> agcfEndpointList,
  426:             out List<Ia.Ngn.Cl.Model.Huawei.Mgw> mgwList,
  427:             out List<Ia.Ngn.Cl.Model.Huawei.Asbr> asbrList,
  428:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.SubParty> subPartyList,
  429:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.Subscriber> subscriberList,
  430:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.HuSbr> huSbrList,
  431:             out List<Ia.Ngn.Cl.Model.Huawei.Owsbr> owsbrList,
  432:             out List<Ia.Ngn.Cl.Model.Huawei.Seruattr> seruattrList,
  433:             out List<Ia.Ngn.Cl.Model.Ericsson.AxeSubscriber> axeSubscriberList,
  434:             out List<Ia.Ngn.Cl.Model.Siemens.EwsdSubscriber> ewsdSubscriberList,
  435:             out List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> nddOntList,
  436:             out List<Ia.Ngn.Cl.Model.Ont> ontList,
  437:             out List<Ia.Ngn.Cl.Model.OntServiceVoip> ontServiceVoipList,
  438:             out List<Ia.Ngn.Cl.Model.OntOntPots> ontOntPotsList,
  439:             out List<Ia.Ngn.Cl.Model.Huawei.EmsDev> emsDevList,
  440:             out List<Ia.Ngn.Cl.Model.Huawei.EmsBoard> emsBoardList,
  441:             out List<Ia.Ngn.Cl.Model.Huawei.EmsPort> emsPortList,
  442:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.EmsOnt> emsOntList,
  443:             out List<Ia.Ngn.Cl.Model.Huawei.EmsOntSipInfo> emsOntSipInfoList,
  444:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVoipPstnUser> emsVoipPstnUserList,
  445:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVag> emsVagList,
  446:             out List<Ia.Ngn.Cl.Model.Event> eventList,
  447:             out List<Ia.Ngn.Cl.Model.Access> accessList,
  448:             out List<Ia.Ngn.Cl.Model.Ui.ServiceRequestService> serviceRequestServiceList,
  449:             out List<Ia.Ngn.Cl.Model.ServiceRequest> serviceRequestList,
  450:             out List<Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue> serviceRequestAdministrativeIssueList,
  451:             out List<Ia.Ngn.Cl.Model.ServiceRequestHistory> serviceRequestHistoryList,
  452:             out List<Ia.Ngn.Cl.Model.ServiceRequestType> serviceRequestTypeList,
  453:             out List<Ia.Ngn.Cl.Model.ServiceRequestOnt> serviceRequestOntList,
  454:             out List<Ia.Ngn.Cl.Model.ServiceRequestOntDetail> serviceRequestOntDetailList,
  455:             out List<Ia.Ngn.Cl.Model.Report> reportList,
  456:             out List<Ia.Ngn.Cl.Model.ReportHistory> reportHistoryList,
  457:             out Ia.Cl.Model.Result result)
  458:         {
  459:             var serviceList = new List<string>();
  460:  
  461:             service2List = null;
  462:             agcfGatewayRecordList = null;
  463:             agcfEndpointList = null;
  464:             mgwList = null;
  465:             asbrList = null;
  466:             subPartyList = null;
  467:             subscriberList = null;
  468:             huSbrList = null;
  469:             owsbrList = null;
  470:             seruattrList = null;
  471:             axeSubscriberList = null;
  472:             ewsdSubscriberList = null;
  473:             nddOntList = null;
  474:             ontList = null;
  475:             ontServiceVoipList = null;
  476:             ontOntPotsList = null;
  477:             emsDevList = null;
  478:             emsBoardList = null;
  479:             emsPortList = null;
  480:             emsOntList = null;
  481:             emsOntSipInfoList = null;
  482:             emsVoipPstnUserList = null;
  483:             emsVagList = null;
  484:             eventList = null;
  485:             accessList = null;
  486:             serviceRequestServiceList = null;
  487:             serviceRequestList = null;
  488:             serviceRequestAdministrativeIssueList = null;
  489:             serviceRequestHistoryList = null;
  490:             serviceRequestTypeList = null;
  491:             serviceRequestOntList = null;
  492:             serviceRequestOntDetailList = null;
  493:             reportList = null;
  494:             reportHistoryList = null;
  495:  
  496:             var serviceLongList = new List<long>();
  497:             var numberList = new List<int>();
  498:             var partyIdList = new List<string>();
  499:             var prividUserList = new List<string>();
  500:             var impuSipDomainList = new List<string>();
  501:             var sipUserNameList = new List<string>();
  502:             var serviceWithCountryCodeList = new List<string>();
  503:             var serviceIdList = new List<string>();
  504:  
  505:             var subscriberIdList = new List<string>();
  506:             var subPartyIdList = new List<string>();
  507:             var agcfEndpointIdList = new List<string>();
  508:             var agcfGatewayRecordIdList = new List<int>();
  509:             var agcfGatewayRecordIpList = new List<string>();
  510:  
  511:             var asbrIdList = new List<string>();
  512:             var mgwIdList = new List<string>();
  513:  
  514:             var sbrImpuList = new List<string>();
  515:             var owsbrImpuList = new List<string>();
  516:  
  517:             var ontIdList = new List<string>();
  518:             var ontOntPotsIdList = new List<string>();
  519:             var ontServiceVoipIdList = new List<string>();
  520:             var ontServiceVoipIpList = new List<string>();
  521:  
  522:             var ipList = new List<string>();
  523:  
  524:             var emsDevIdList = new List<int>();
  525:             var emsBoardIdList = new List<string>();
  526:             var emsPortIdList = new List<string>();
  527:             var emsOntIdList = new List<string>();
  528:             var emsVoipPstnUserIdList = new List<string>();
  529:  
  530:             result = new Ia.Cl.Model.Result();
  531:  
  532:             // gateways belong to Nokia switch
  533:             var switchVendorList = new List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor>() { Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Nokia };
  534:  
  535:             try
  536:             {
  537:                 if (switchVendorList.Contains(Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Nokia))
  538:                 {
  539:                     agcfGatewayRecordIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AgcfGatewayRecordIdListFromGatewayIdList(gatewayIdList);
  540:  
  541:                     agcfGatewayRecordIpList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AgcfGatewayRecordIpListFromIdList(agcfGatewayRecordIdList);
  542:                     ipList.AddRange(agcfGatewayRecordIpList);
  543:                     ipList = ipList.Distinct().ToList();
  544:  
  545:                     agcfEndpointIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AgcfEndpointIdListFromAgcfGatewayRecordIdList(agcfGatewayRecordIdList);
  546:                     subPartyIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.SubPartyIdListFromAgcfEndpointIdList(agcfEndpointIdList);
  547:                     subscriberIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.SubscriberIdListFromSubPartyIdList(subPartyIdList);
  548:                     subPartyIdList = subscriberIdList;
  549:  
  550:                     var nddOntIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.NddOntIdListFromIpList(ipList);
  551:  
  552:                     var accessVendorList = Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.AccessVendorListByOntIdList(nddOntIdList);
  553:  
  554:                     if (accessVendorList.Contains(Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Nokia))
  555:                     {
  556:                         ontIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntIdListFromNddOntIdList(nddOntIdList);
  557:                         ontOntPotsIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntOntPotsIdListFromOntIdList(ontIdList);
  558:                         ontServiceVoipIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntServiceVoipsIdListFromOntIdList(ontIdList);
  559:                         ontServiceVoipIpList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntServiceVoipIpList(ontServiceVoipIdList);
  560:                         ipList.AddRange(ontServiceVoipIpList);
  561:                         ipList = ipList.Distinct().ToList();
  562:                     }
  563:  
  564:                     Ia.Ngn.Cl.Model.Data.Maintenance.Find.SynchronizeNumberFormatLists(ref partyIdList, ref prividUserList, ref serviceList, ref numberList, ref serviceLongList, ref impuSipDomainList, ref sipUserNameList, ref serviceWithCountryCodeList, ref serviceIdList);
  565:  
  566:                     var serviceRequestServiceIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestServiceIdListFromServiceIdList(serviceIdList);
  567:  
  568:                     var accessIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AccessIdListFromServiceIdList(serviceIdList);
  569:                     accessIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.AccessIdListFromServiceRequestServiceIdList(serviceRequestServiceIdList));
  570:                     accessIdList = accessIdList.Distinct().ToList();
  571:  
  572:                     //Ia.Ngn.Cl.Model.Data.Maintenance.Find.UpdateServiceListFromServiceRequestServiceIdOrService2IdList(service2IdList, ref serviceList);
  573:                     Ia.Ngn.Cl.Model.Data.Maintenance.Find.SynchronizeNumberFormatLists(ref partyIdList, ref prividUserList, ref serviceList, ref numberList, ref serviceLongList, ref impuSipDomainList, ref sipUserNameList, ref serviceWithCountryCodeList, ref serviceIdList);
  574:  
  575:                     var reportIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ReportIdListFromServiceList(serviceList);
  576:                     reportIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.ReportIdListFromAccessIdList(accessIdList));
  577:                     reportIdList = reportIdList.Distinct().ToList();
  578:  
  579:                     var serviceRequestIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestIdListFromServiceAndRelatedChangedAndChangedToServiceList(serviceList);
  580:                     serviceRequestIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestIdListFromServiceRequestServiceIdList(serviceRequestServiceIdList));
  581:                     serviceRequestIdList = serviceRequestIdList.Distinct().ToList();
  582:  
  583:                     var serviceRequestAdministrativeIssueIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestAdministrativeIssueIdListFromServiceIdList(serviceIdList);
  584:  
  585:                     var serviceRequestHistoryIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestHistoryIdListFromServiceAndRelatedChangedAndChangedToServiceList(serviceList);
  586:                     var serviceRequestTypeIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestTypeIdListFromServiceRequestIdList(serviceRequestIdList);
  587:                     var serviceRequestOntIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestOntIdListFromAccessIdList(accessIdList);
  588:  
  589:                     if (accessVendorList.Contains(Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Huawei))// || aServiceInServiceListIsWithinMsanDomainList)
  590:                     {
  591:                         emsOntIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsOntIdListFromNddOntIdList(nddOntIdList);
  592:  
  593:                         emsVoipPstnUserIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsVoipPstnUserIdListFromEmsOntIdList(emsOntIdList);
  594:                         emsVoipPstnUserIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsVoipPstnUserIdListFromServiceList(serviceList));
  595:                         emsVoipPstnUserIdList = emsVoipPstnUserIdList.Distinct().ToList();
  596:  
  597:                         emsPortIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsPortIdListFromEmsOntIdList(emsOntIdList);
  598:                         emsPortIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsPortIdListFromEmsVoipPstnUserIdList(emsVoipPstnUserIdList));
  599:                         emsPortIdList = emsPortIdList.Distinct().ToList();
  600:  
  601:                         emsBoardIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsBoardIdListFromEmsPortIdList(emsPortIdList);
  602:                         emsBoardIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsBoardIdListFromAccessIdList(accessIdList));
  603:                         emsBoardIdList = emsBoardIdList.Distinct().ToList();
  604:  
  605:                         emsDevIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsDevIdListFromEmsBoardIdList(emsBoardIdList);
  606:                         emsDevIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsDevIdListFromAccessIdList(accessIdList));
  607:                         //emsDevIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsDevIdListFromEmsVoipPstnUserIdList(emsVoipPstnUserIdList));
  608:                         emsDevIdList = emsDevIdList.Distinct().ToList();
  609:  
  610:                         ipList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsOntIpListFromNddOntIdList(nddOntIdList));
  611:                         ipList = ipList.Distinct().ToList();
  612:                     }
  613:  
  614:  
  615:  
  616:  
  617:  
  618:                     Ia.Ngn.Cl.Model.Data.Maintenance.Find.SynchronizeNumberFormatLists(ref partyIdList, ref prividUserList, ref serviceList, ref numberList, ref serviceLongList, ref impuSipDomainList, ref sipUserNameList, ref serviceWithCountryCodeList, ref serviceIdList);
  619:  
  620:                     var aServiceInServiceListIsWithinMsanDomainList = Ia.Ngn.Cl.Model.Data.Service.ServiceListHasANumberThatIsWithinMsanDomainList(serviceList);
  621:  
  622:                     var service2IdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.Service2IdListFromServiceIdList(serviceIdList);
  623:  
  624:                     /*
  625:                     if (switchVendorList.Contains(Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Huawei))
  626:                     {
  627:                         asbrIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AsbrIdListFromImpuSipDomainList(impuSipDomainList);
  628:                         mgwIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.MgwIdListFromAsbrIdList(asbrIdList);
  629: 
  630:                         sbrImpuList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.SbrImpuListFromImpuSipDomainList(impuSipDomainList);
  631:                         owsbrImpuList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OwSbrImpuListFromImpuSipDomainList(impuSipDomainList);
  632: 
  633:                         Ia.Ngn.Cl.Model.Data.Maintenance.Find.SynchronizeNumberFormatLists(ref partyIdList, ref prividUserList, ref serviceList, ref numberList, ref serviceLongList, ref impuSipDomainList, ref sipUserNameList, ref serviceWithCountryCodeList, ref serviceIdList);
  634:                     }
  635:                     */
  636:  
  637:                     /////////////////////////////////
  638:  
  639:                     agcfGatewayRecordList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AgcfGatewayRecordList(agcfGatewayRecordIdList);
  640:                     agcfEndpointList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AgcfEndpointList(agcfEndpointIdList);
  641:                     subPartyList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.SubPartyList(subPartyIdList);
  642:                     subscriberList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.SubscriberList(subscriberIdList);
  643:  
  644:                     mgwList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.MgwList(mgwIdList);
  645:                     asbrList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AsbrList(asbrIdList);
  646:  
  647:                     huSbrList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.HuSbrList(sbrImpuList);
  648:                     owsbrList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OwsbrList(owsbrImpuList);
  649:  
  650:                     if (Ia.Ngn.Cl.Model.Data.Service.ServiceListHasANumberThatIsWithinPstnThatUsesNpServerDomainList(serviceList))
  651:                     {
  652:                         seruattrList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.SeruattrListFromServiceIdList(serviceIdList);
  653:                     }
  654:  
  655:                     axeSubscriberList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AxeSubscriberListFromServiceIdList(serviceIdList);
  656:                     ewsdSubscriberList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EwsdSubscriberListFromServiceIdList(serviceIdList);
  657:  
  658:                     ontList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntList(ontIdList);
  659:                     ontOntPotsList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntOntPotsListFromOntOntPotsIdList(ontOntPotsIdList);
  660:                     ontServiceVoipList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntServiceVoipList(ontServiceVoipIdList);
  661:  
  662:                     emsDevList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsDevList(emsDevIdList);
  663:                     emsBoardList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsBoardList(emsBoardIdList);
  664:                     emsPortList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsPortList(emsPortIdList);
  665:                     emsOntList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsOntList(emsOntIdList);
  666:  
  667:                     emsOntSipInfoList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsOntSipInfoListFromEmsOntIdListAndService(emsOntIdList, sipUserNameList);
  668:                     emsVoipPstnUserList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsVoipPstnUserList(emsVoipPstnUserIdList);
  669:                     emsVagList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.VagListFromEmsOntIdList(emsOntIdList);
  670:  
  671:                     service2List = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceList(service2IdList);
  672:  
  673:                     nddOntList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.NddOntList(nddOntIdList);
  674:  
  675:                     accessList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AccessList(accessIdList);
  676:  
  677:                     serviceRequestServiceList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestServiceList(serviceRequestServiceIdList);
  678:  
  679:                     serviceRequestList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestList(serviceRequestIdList);
  680:                     serviceRequestAdministrativeIssueList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestAdministrativeIssueList(serviceRequestAdministrativeIssueIdList);
  681:                     serviceRequestHistoryList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestHistoryList(serviceRequestHistoryIdList);
  682:                     serviceRequestTypeList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestTypeList(serviceRequestTypeIdList);
  683:                     serviceRequestOntList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestOntList(serviceRequestOntIdList);
  684:                     serviceRequestOntDetailList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestOntDetailFromServieListList(serviceList); // more appropaite to display records related to the service numbers only
  685:  
  686:                     reportList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ReportList(reportIdList);
  687:  
  688:                     if (enqueueIntoMsmq)
  689:                     {
  690:                         foreach (var service in serviceList) Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, Ia.Ngn.Cl.Model.Business.Msmq.Process.ReadService, service);
  691:                         foreach (var nddOnt in nddOntList) Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, Ia.Ngn.Cl.Model.Business.Msmq.Process.ReadAccess, nddOnt.Access.Name);
  692:                         foreach (var gatewayId in gatewayIdList) Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, Ia.Ngn.Cl.Model.Business.Msmq.Process.ReadGateway, gatewayId);
  693:                     }
  694:                 }
  695:             }
  696:             catch (Exception ex)
  697:             {
  698:                 result.AddError("Exception: Retrieval error of data for \"" + string.Join(", ", serviceList) + "\": " + ex.ToString());
  699:             }
  700:         }
  701:  
  702:         ////////////////////////////////////////////////////////////////////////////
  703:  
  704:         /// <summary>
  705:         ///
  706:         /// </summary>
  707:         public static void Ip(string rawInput,
  708:             out List<Ia.Ngn.Cl.Model.Ui.Service2> service2List,
  709:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfGatewayRecord> agcfGatewayRecordList,
  710:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfEndpoint> agcfEndpointList,
  711:             out List<Ia.Ngn.Cl.Model.Huawei.Mgw> mgwList,
  712:             out List<Ia.Ngn.Cl.Model.Huawei.Asbr> asbrList,
  713:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.SubParty> subPartyList,
  714:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.Subscriber> subscriberList,
  715:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.HuSbr> huSbrList,
  716:             out List<Ia.Ngn.Cl.Model.Huawei.Owsbr> owsbrList,
  717:             out List<Ia.Ngn.Cl.Model.Huawei.Seruattr> seruattrList,
  718:             out List<Ia.Ngn.Cl.Model.Ericsson.AxeSubscriber> axeSubscriberList,
  719:             out List<Ia.Ngn.Cl.Model.Siemens.EwsdSubscriber> ewsdSubscriberList,
  720:             out List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> nddOntList,
  721:             out List<Ia.Ngn.Cl.Model.Ont> ontList,
  722:             out List<Ia.Ngn.Cl.Model.OntServiceVoip> ontServiceVoipList,
  723:             out List<Ia.Ngn.Cl.Model.OntOntPots> ontOntPotsList,
  724:             out List<Ia.Ngn.Cl.Model.Huawei.EmsDev> emsDevList,
  725:             out List<Ia.Ngn.Cl.Model.Huawei.EmsBoard> emsBoardList,
  726:             out List<Ia.Ngn.Cl.Model.Huawei.EmsPort> emsPortList,
  727:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.EmsOnt> emsOntList,
  728:             out List<Ia.Ngn.Cl.Model.Huawei.EmsOntSipInfo> emsOntSipInfoList,
  729:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVoipPstnUser> emsVoipPstnUserList,
  730:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVag> emsVagList,
  731:             out List<Ia.Ngn.Cl.Model.Event> eventList,
  732:             out List<Ia.Ngn.Cl.Model.Access> accessList,
  733:             out List<Ia.Ngn.Cl.Model.Ui.ServiceRequestService> serviceRequestServiceList,
  734:             out List<Ia.Ngn.Cl.Model.ServiceRequest> serviceRequestList,
  735:             out List<Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue> serviceRequestAdministrativeIssueList,
  736:             out List<Ia.Ngn.Cl.Model.ServiceRequestHistory> serviceRequestHistoryList,
  737:             out List<Ia.Ngn.Cl.Model.ServiceRequestType> serviceRequestTypeList,
  738:             out List<Ia.Ngn.Cl.Model.ServiceRequestOnt> serviceRequestOntList,
  739:             out List<Ia.Ngn.Cl.Model.ServiceRequestOntDetail> serviceRequestOntDetailList,
  740:             out List<Ia.Ngn.Cl.Model.Report> reportList,
  741:             out List<Ia.Ngn.Cl.Model.ReportHistory> reportHistoryList,
  742:             out Ia.Cl.Model.Result result)
  743:         {
  744:             string input;
  745:             List<int> agcfGatewayRecordIdList, numberList;
  746:             List<long> serviceLongList;
  747:             List<string> serviceList, serviceIdList, service2IdList, impuSipDomainList, sipUserNameList, serviceWithCountryCodeList, accessIdList, ontIdList, partyIdList, prividUserList, serviceRequestAdministrativeIssueIdList;
  748:  
  749:             service2IdList = new List<string>();
  750:             accessIdList = new List<string>();
  751:             ontIdList = new List<string>();
  752:             agcfGatewayRecordIdList = new List<int>();
  753:             numberList = new List<int>();
  754:             serviceLongList = new List<long>();
  755:             impuSipDomainList = new List<string>();
  756:             sipUserNameList = new List<string>();
  757:             serviceWithCountryCodeList = new List<string>();
  758:             serviceList = new List<string>();
  759:             partyIdList = new List<string>();
  760:             prividUserList = new List<string>();
  761:             serviceList = new List<string>();
  762:             serviceIdList = new List<string>();
  763:             serviceRequestAdministrativeIssueIdList = new List<string>();
  764:  
  765:             result = new Ia.Cl.Model.Result();
  766:  
  767:             service2List = null;
  768:  
  769:             agcfGatewayRecordList = null;
  770:             agcfEndpointList = null;
  771:             mgwList = null;
  772:             asbrList = null;
  773:             subPartyList = null;
  774:             subscriberList = null;
  775:  
  776:             huSbrList = null;
  777:             owsbrList = null;
  778:             seruattrList = null;
  779:             axeSubscriberList = null;
  780:             ewsdSubscriberList = null;
  781:  
  782:             nddOntList = null;
  783:             ontList = null;
  784:             ontServiceVoipList = null;
  785:             ontOntPotsList = null;
  786:             emsDevList = null;
  787:             emsBoardList = null;
  788:             emsPortList = null;
  789:             emsOntList = null;
  790:             emsOntSipInfoList = null;
  791:             emsVoipPstnUserList = null;
  792:             emsVagList = null;
  793:             eventList = null;
  794:             accessList = null;
  795:             serviceRequestServiceList = null;
  796:             serviceRequestList = null;
  797:             serviceRequestAdministrativeIssueList = null;
  798:             serviceRequestHistoryList = null;
  799:             serviceRequestTypeList = null;
  800:             serviceRequestOntList = null;
  801:             serviceRequestOntDetailList = null;
  802:             reportList = null;
  803:             reportHistoryList = null;
  804:  
  805:             input = rawInput.ToLower();
  806:  
  807:             // var ip = mgw.EID.Replace(":" + Ia.Ngn.Cl.Model.Business.Huawei.SoftX.RemotePort, "");
  808:  
  809:             try
  810:             {
  811:                 using (var db = new Ia.Ngn.Cl.Model.Ngn())
  812:                 {
  813:                     ontServiceVoipList = (from ov in db.OntServiceVoips where ov.Ip == input select ov).Include(u => u.Ont).ToList();
  814:                     foreach (var v in ontServiceVoipList) ontIdList.Add(v.Ont.Id);
  815:                     ontIdList = ontIdList.Distinct().ToList();
  816:  
  817:                     agcfGatewayRecordList = (from gr in db.AgcfGatewayRecords
  818:                                              where gr.IP1 == input || gr.IP2 == input
  819:                                              select new Ia.Ngn.Cl.Model.Ui.Nokia.AgcfGatewayRecord()
  820:                                              {
  821:                                                  Id = gr.Id,
  822:                                                  GwId = gr.GwId,
  823:                                                  GwUserId = gr.GwUserId,
  824:                                                  GwDomain = gr.GwDomain,
  825:                                                  GwName = gr.GwName,
  826:                                                  IP1 = gr.IP1,
  827:                                                  IP2 = gr.IP2,
  828:                                                  MateExternalIPAddr = gr.MateExternalIPAddr,
  829:                                                  IsPrimary = gr.IsPrimary,
  830:                                                  Created = gr.Created,
  831:                                                  Updated = gr.Updated
  832:                                              }).ToList();
  833:                     foreach (var v in agcfGatewayRecordList) agcfGatewayRecordIdList.Add(v.Id);
  834:                     agcfGatewayRecordIdList = agcfGatewayRecordIdList.Distinct().ToList();
  835:  
  836:                     agcfEndpointList = (from e in db.AgcfEndpoints
  837:                                         where agcfGatewayRecordIdList.Contains(e.AgcfGatewayRecord.Id)
  838:                                         select new Ia.Ngn.Cl.Model.Ui.Nokia.AgcfEndpoint()
  839:                                         {
  840:                                             Id = e.Id,
  841:                                             PrividUser = e.PrividUser,
  842:                                             GwId = e.GwId,
  843:                                             Dn = e.Dn,
  844:                                             FlatTermID = e.FlatTermID,
  845:                                             CallHoldLc = e.CallHoldLc,
  846:                                             CallWaitingLc = e.CallWaitingLc,
  847:                                             CallToggleLc = e.CallToggleLc,
  848:                                             ThreeWayCallLc = e.ThreeWayCallLc,
  849:                                             McidLc = e.McidLc,
  850:                                             Password = e.Password,
  851:                                             CallTransferLc = e.CallTransferLc,
  852:                                             Created = e.Created,
  853:                                             Updated = e.Updated
  854:                                         }).ToList();
  855:  
  856:                     // mgwList =
  857:  
  858:                     // asbrList =
  859:  
  860:                     // agcfEndpointIdList = (from ep in agcfEndpointList select ep.Id).ToList();
  861:  
  862:                     Ia.Ngn.Cl.Model.Data.Maintenance.Find.CollectServiceListFromAgcfEndpointList(agcfEndpointList, ref serviceList);
  863:                     Ia.Ngn.Cl.Model.Data.Maintenance.Find.SynchronizeNumberFormatLists(ref partyIdList, ref prividUserList, ref serviceList, ref numberList, ref serviceLongList, ref impuSipDomainList, ref sipUserNameList, ref serviceWithCountryCodeList, ref serviceIdList);
  864:  
  865:                     service2List = (from s in db.Service2
  866:                                     where serviceList.Contains(s.Service) && s.ServiceType == Ia.Ngn.Cl.Model.Business.Service.ServiceType.ImsService
  867:                                     select new Ia.Ngn.Cl.Model.Ui.Service2()
  868:                                     {
  869:                                         AbbriviatedCalling = s.AbbriviatedCalling,
  870:                                         AlarmCall = s.AlarmCall,
  871:                                         CallBarring = s.CallBarring,
  872:                                         CallerId = s.CallerId,
  873:                                         CallForwarding = s.CallForwarding,
  874:                                         CallWaiting = s.CallWaiting,
  875:                                         ConferenceCall = s.ConferenceCall,
  876:                                         Created = s.Created,
  877:                                         InternationalCalling = s.InternationalCalling,
  878:                                         InternationalCallingUserControlled = s.InternationalCallingUserControlled,
  879:                                         Port = s.Port,
  880:                                         Pin = s.Pin,
  881:                                         Service = s.Service,
  882:                                         ServiceType = s.ServiceType,
  883:                                         ServiceSuspension = s.ServiceSuspension,
  884:                                         ServiceTypeName = s.ServiceType.ToString(),
  885:                                         Updated = s.Updated,
  886:                                         AccessId = s.Access.Id
  887:                                     }).ToList();
  888:  
  889:                     serviceRequestServiceList = (from srs in db.ServiceRequestServices
  890:                                                  where accessIdList.Contains(srs.Access.Id)
  891:                                                  select new Ia.Ngn.Cl.Model.Ui.ServiceRequestService()
  892:                                                  {
  893:                                                      Id = srs.Id,
  894:                                                      AbbriviatedCalling = srs.AbbriviatedCalling,
  895:                                                      Access = srs.Access,
  896:                                                      AlarmCall = srs.AlarmCall,
  897:                                                      CallBarring = srs.CallBarring,
  898:                                                      CallerId = srs.CallerId,
  899:                                                      CallForwarding = srs.CallForwarding,
  900:                                                      CallWaiting = srs.CallWaiting,
  901:                                                      ConferenceCall = srs.ConferenceCall,
  902:                                                      Created = srs.Created,
  903:                                                      InternationalCalling = srs.InternationalCalling,
  904:                                                      InternationalCallingUserControlled = srs.InternationalCallingUserControlled,
  905:                                                      LastRequestDateTime = srs.LastRequestDateTime,
  906:                                                      Provisioned = srs.Provisioned,
  907:                                                      Service = srs.Service,
  908:                                                      Serial = srs.Serial,
  909:                                                      ServiceType = srs.ServiceType,
  910:                                                      //ServiceSuspension = srs.ServiceSuspension,
  911:                                                      Type = srs.Type,
  912:                                                      Updated = srs.Updated
  913:                                                  }).ToList();
  914:  
  915:                     subscriberList = (from s in db.Subscribers
  916:                                       where partyIdList.Contains(s.PartyId)
  917:                                       select s).AsEnumerable().Select(s => new Ia.Ngn.Cl.Model.Ui.Nokia.Subscriber()
  918:                                       {
  919:                                           Id = s.Id,
  920:                                           AlternateOtasRealm = s.AlternateOtasRealm,
  921:                                           PartyId = s.PartyId,
  922:                                           AbbriviatedCalling = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.OneDigitSpeedDialIsAssigned(s._OneDigitSpeedDial),
  923:                                           AlarmCall = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.ReminderCallIsAssigned(s._ReminderCall),
  924:                                           CallerId = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.CallingLineIdIsAssigned(s._CallingLineId),
  925:                                           CallForwarding = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.CallForwardingIsAssigned(s._CallForwardingVari),
  926:                                           CallWaiting = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.CallWaitingIsAssigned(s._CallWaiting, false),
  927:                                           ConferenceCall = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.ConferenceCallIsAssigned(s._ConferenceCalling),
  928:                                           InternationalCalling = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.InternationalCallingIsAssigned(s._CallBarring),
  929:                                           InternationalCallingUserControlled = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.InternationalCallingUserControlledIsAssigned(s._OutgoingCallBarring),
  930:                                           //ServiceSuspention = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.ServiceSuspentionIsAssigned(s._ServiceSuspention),
  931:                                           Created = s.Created,
  932:                                           Updated = s.Updated,
  933:                                       }).ToList();
  934:  
  935:                     subPartyList = (from sp in db.SubParties
  936:                                     where partyIdList.Contains(sp.PartyId)
  937:                                     select new Ia.Ngn.Cl.Model.Ui.Nokia.SubParty()
  938:                                     {
  939:                                         Id = sp.Id,
  940:                                         PartyId = sp.PartyId,
  941:                                         PrimaryPUIDCPEProfileNumber = sp.PrimaryPUIDCPEProfileNumber,
  942:                                         DisplayName = sp.DisplayName,
  943:                                         Category = sp.Category,
  944:                                         AssocOtasRealm = sp.AssocOtasRealm,
  945:                                         ServiceSuspension = sp.ServiceSuspension,
  946:                                         Created = sp.Created,
  947:                                         Updated = sp.Updated
  948:                                     }).ToList();
  949:  
  950:  
  951:                     huSbrList = (from h in db.HuSbrs
  952:                                  where impuSipDomainList.Contains(h.IMPU)
  953:                                  select new Ia.Ngn.Cl.Model.Ui.Huawei.HuSbr()
  954:                                  {
  955:                                      COP = h.COP,
  956:                                      CSC = h.CSC,
  957:                                      Id = h.Id,
  958:                                      IMPU = h.IMPU,
  959:                                      ITT = h.ITT,
  960:                                      LP = h.LP,
  961:                                      NS3PTY = h.NS3PTY,
  962:                                      NSABRC = h.NSABRC,
  963:                                      NSCBA = h.NSCBA,
  964:                                      NSCFU = h.NSCFU,
  965:                                      NSCLIP = h.NSCLIP,
  966:                                      NSCW = h.NSCW,
  967:                                      NSFAX = h.NSFAX,
  968:                                      NSHOLD = h.NSHOLD,
  969:                                      NSNPTY = h.NSNPTY,
  970:                                      NSWAKE_UP = h.NSWAKE_UP,
  971:                                      Created = h.Created,
  972:                                      Updated = h.Updated
  973:                                  }).ToList();
  974:  
  975:                     owsbrList = (from o in db.Owsbrs where impuSipDomainList.Contains(o.IMPU) select o).ToList();
  976:  
  977:                     serviceRequestList = (from sr in db.ServiceRequests where numberList.Contains(sr.Number) select sr).ToList();
  978:                     serviceRequestAdministrativeIssueList = (from srai in db.ServiceRequestAdministrativeIssues where serviceIdList.Contains(srai.Service) select srai).ToList();
  979:  
  980:                     //serviceRequestHistoryList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestList(serviceRequestHistoryIdList);
  981:                     serviceRequestTypeList = (from srt in db.ServiceRequestTypes
  982:                                               join sr in db.ServiceRequests on srt.ServiceRequest equals sr
  983:                                               where numberList.Contains(sr.Number)
  984:                                               select srt).ToList();
  985:  
  986:                     reportList = (from r in db.Reports where service2IdList.Contains(r.Service) select r).Include(u => u.ReportHistories).ToList();
  987:  
  988:  
  989:                     nddOntList = new List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont>();
  990:                     nddOntList.Add(Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntByIp(input));
  991:  
  992:                     foreach (var v in nddOntList) ontIdList.Add(v.Id);
  993:                     ontIdList = ontIdList.Distinct().ToList();
  994:  
  995:                     ontList = (from o in db.Onts where ontIdList.Contains(o.Id) select o).ToList();
  996:                     foreach (var v in ontList) ontIdList.Add(v.Id);
  997:                     ontIdList = ontIdList.Distinct().ToList();
  998:  
  999:                     foreach (var v in ontList) if (v.Access != null) accessIdList.Add(v.Access.Id);
 1000:                     accessIdList = accessIdList.Distinct().ToList();
 1001:  
 1002:                     ontOntPotsList = (from op in db.OntOntPots where ontIdList.Contains(op.Ont.Id) select op).ToList();
 1003:                     ontServiceVoipList = (from ov in db.OntServiceVoips where ontIdList.Contains(ov.Ont.Id) select ov).ToList();
 1004:  
 1005:                     foreach (var v in nddOntList)
 1006:                     {
 1007:                         //eventSystemList.Add(v.Pon.PonGroup.Olt.AmsName);
 1008:                         //eventAidOntList.Add("ONT-1-1-" + v.Card + "-" + v.Port + "-" + v.Number);
 1009:                         //eventAidOntVoipList.Add("ONTVOIP-1-1-" + v.Card + "-" + v.Port + "-1");
 1010:  
 1011:                         //foreach (var w in ontOntPotsList) eventAidOntPotsList.Add("ONTPOTS-1-1-" + v.Card + "-" + v.Port + "-" + w.Card + "-" + w.Port);
 1012:                     }
 1013:  
 1014:                     //eventSystemList = eventSystemList.Distinct().ToList();
 1015:                     //eventAidOntList = eventAidOntList.Distinct().ToList();
 1016:                     //eventAidOntVoipList = eventAidOntVoipList.Distinct().ToList();
 1017:  
 1018:                     /*
 1019:                     eventList = (from e in db.Events where eventSystemList.Contains(e.System) where eventAidOntList.Contains(e.Aid) select e)
 1020:                                 .Union(from e in db.Events where eventSystemList.Contains(e.System) where eventAidOntList.Contains(e.Aid) where eventAidOntVoipList.Contains(e.Aid) select e)
 1021:                                 .Union(from e in db.Events where eventSystemList.Contains(e.System) where eventAidOntList.Contains(e.Aid) where eventAidOntPotsList.Contains(e.Aid) select e)
 1022:                                 .ToList();
 1023:                                 */
 1024:  
 1025:                     accessList = (from a in db.Accesses where accessIdList.Contains(a.Id) select a).ToList();
 1026:                 }
 1027:             }
 1028:             catch (Exception ex)
 1029:             {
 1030:                 result.AddError("Exception: Retrieval error of data for \"" + rawInput + "\": " + ex.ToString());
 1031:             }
 1032:         }
 1033:  
 1034:         ////////////////////////////////////////////////////////////////////////////
 1035:         ////////////////////////////////////////////////////////////////////////////
 1036:  
 1037:         /// <summary>
 1038:         ///
 1039:         /// </summary>
 1040:         public static void Number(ref Ia.Cl.Model.Stopwatch stopwatch,
 1041:             Ia.Ngn.Cl.Model.Business.Administration.Framework framework,
 1042:             bool enqueueIntoMsmq,
 1043:             string input,
 1044:             out List<Ia.Ngn.Cl.Model.Ui.Service2> service2List,
 1045:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfGatewayRecord> agcfGatewayRecordList,
 1046:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfEndpoint> agcfEndpointList,
 1047:             out List<Ia.Ngn.Cl.Model.Huawei.Mgw> mgwList,
 1048:             out List<Ia.Ngn.Cl.Model.Huawei.Asbr> asbrList,
 1049:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.SubParty> subPartyList,
 1050:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.Subscriber> subscriberList,
 1051:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.HuSbr> huSbrList,
 1052:             out List<Ia.Ngn.Cl.Model.Huawei.Owsbr> owsbrList,
 1053:             out List<Ia.Ngn.Cl.Model.Huawei.Seruattr> seruattrList,
 1054:             out List<Ia.Ngn.Cl.Model.Ericsson.AxeSubscriber> axeSubscriberList,
 1055:             out List<Ia.Ngn.Cl.Model.Siemens.EwsdSubscriber> ewsdSubscriberList,
 1056:             out List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> nddOntList,
 1057:             out List<Ia.Ngn.Cl.Model.Ont> ontList,
 1058:             out List<Ia.Ngn.Cl.Model.OntServiceVoip> ontServiceVoipList,
 1059:             out List<Ia.Ngn.Cl.Model.OntOntPots> ontOntPotsList,
 1060:             out List<Ia.Ngn.Cl.Model.Huawei.EmsDev> emsDevList,
 1061:             out List<Ia.Ngn.Cl.Model.Huawei.EmsBoard> emsBoardList,
 1062:             out List<Ia.Ngn.Cl.Model.Huawei.EmsPort> emsPortList,
 1063:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.EmsOnt> emsOntList,
 1064:             out List<Ia.Ngn.Cl.Model.Huawei.EmsOntSipInfo> emsOntSipInfoList,
 1065:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVoipPstnUser> emsVoipPstnUserList,
 1066:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVag> emsVagList,
 1067:             out List<Ia.Ngn.Cl.Model.Event> eventList,
 1068:             out List<Ia.Ngn.Cl.Model.Access> accessList,
 1069:             out List<Ia.Ngn.Cl.Model.Ui.ServiceRequestService> serviceRequestServiceList,
 1070:             out List<Ia.Ngn.Cl.Model.ServiceRequest> serviceRequestList,
 1071:             out List<Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue> serviceRequestAdministrativeIssueList,
 1072:             out List<Ia.Ngn.Cl.Model.ServiceRequestHistory> serviceRequestHistoryList,
 1073:             out List<Ia.Ngn.Cl.Model.ServiceRequestType> serviceRequestTypeList,
 1074:             out List<Ia.Ngn.Cl.Model.ServiceRequestOnt> serviceRequestOntList,
 1075:             out List<Ia.Ngn.Cl.Model.ServiceRequestOntDetail> serviceRequestOntDetailList,
 1076:             out List<Ia.Ngn.Cl.Model.Report> reportList,
 1077:             out List<Ia.Ngn.Cl.Model.ReportHistory> reportHistoryList,
 1078:             out Ia.Cl.Model.Result result)
 1079:         {
 1080:             string service;
 1081:  
 1082:             var serviceList = new List<string>();
 1083:  
 1084:             result = new Ia.Cl.Model.Result();
 1085:  
 1086:             service2List = null;
 1087:             agcfGatewayRecordList = null;
 1088:             agcfEndpointList = null;
 1089:             mgwList = null;
 1090:             asbrList = null;
 1091:             subPartyList = null;
 1092:             subscriberList = null;
 1093:             huSbrList = null;
 1094:             owsbrList = null;
 1095:             seruattrList = null;
 1096:             axeSubscriberList = null;
 1097:             ewsdSubscriberList = null;
 1098:             nddOntList = null;
 1099:             ontList = null;
 1100:             ontServiceVoipList = null;
 1101:             ontOntPotsList = null;
 1102:             emsDevList = null;
 1103:             emsBoardList = null;
 1104:             emsPortList = null;
 1105:             emsOntList = null;
 1106:             emsOntSipInfoList = null;
 1107:             emsVoipPstnUserList = null;
 1108:             emsVagList = null;
 1109:             eventList = null;
 1110:             accessList = null;
 1111:             serviceRequestServiceList = null;
 1112:             serviceRequestList = null;
 1113:             serviceRequestAdministrativeIssueList = null;
 1114:             serviceRequestHistoryList = null;
 1115:             serviceRequestTypeList = null;
 1116:             serviceRequestOntList = null;
 1117:             serviceRequestOntDetailList = null;
 1118:             reportList = null;
 1119:             reportHistoryList = null;
 1120:  
 1121:             stopwatch.RecordElapsedMilliseconds("A");
 1122:  
 1123:             service = Ia.Ngn.Cl.Model.Business.NumberFormatConverter.Service(input.ToLower());
 1124:  
 1125:             if (Ia.Ngn.Cl.Model.Business.Service.ServiceHasEightDigitsAndIsWithinAllowedDomainList(service))
 1126:             {
 1127:                 if (Ia.Ngn.Cl.Model.Business.Authority.NumberIsWithinFrameworkSiteDomainList(framework, service))
 1128:                 {
 1129:                     serviceList.Add(service);
 1130:  
 1131:                     Ia.Ngn.Cl.Model.Business.Maintenance.Find.NumberTwo(ref stopwatch, framework, enqueueIntoMsmq, serviceList, out service2List, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList, out result);
 1132:                 }
 1133:                 else
 1134:                 {
 1135:                     result.AddError("Number " + service + " is not in staff site domain (الرقم لا ينتمي لنطاقات المستخدم). ");
 1136:                 }
 1137:             }
 1138:             else
 1139:             {
 1140:                 result.AddError("The number \"" + input + "\" does not belong to the network (الرقم لا ينتمي للشبكة).");
 1141:             }
 1142:  
 1143:             stopwatch.RecordElapsedMilliseconds("M");
 1144:         }
 1145:  
 1146:         ////////////////////////////////////////////////////////////////////////////
 1147:  
 1148:         /// <summary>
 1149:         ///
 1150:         /// </summary>
 1151:         public static void Number(ref Ia.Cl.Model.Stopwatch stopwatch,
 1152:             Ia.Ngn.Cl.Model.Business.Administration.Framework framework,
 1153:             bool enqueueIntoMsmq,
 1154:             List<string> inputList,
 1155:             out List<Ia.Ngn.Cl.Model.Ui.Service2> service2List,
 1156:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfGatewayRecord> agcfGatewayRecordList,
 1157:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfEndpoint> agcfEndpointList,
 1158:             out List<Ia.Ngn.Cl.Model.Huawei.Mgw> mgwList,
 1159:             out List<Ia.Ngn.Cl.Model.Huawei.Asbr> asbrList,
 1160:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.SubParty> subPartyList,
 1161:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.Subscriber> subscriberList,
 1162:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.HuSbr> huSbrList,
 1163:             out List<Ia.Ngn.Cl.Model.Huawei.Owsbr> owsbrList,
 1164:             out List<Ia.Ngn.Cl.Model.Huawei.Seruattr> seruattrList,
 1165:             out List<Ia.Ngn.Cl.Model.Ericsson.AxeSubscriber> axeSubscriberList,
 1166:             out List<Ia.Ngn.Cl.Model.Siemens.EwsdSubscriber> ewsdSubscriberList,
 1167:             out List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> nddOntList,
 1168:             out List<Ia.Ngn.Cl.Model.Ont> ontList,
 1169:             out List<Ia.Ngn.Cl.Model.OntServiceVoip> ontServiceVoipList,
 1170:             out List<Ia.Ngn.Cl.Model.OntOntPots> ontOntPotsList,
 1171:             out List<Ia.Ngn.Cl.Model.Huawei.EmsDev> emsDevList,
 1172:             out List<Ia.Ngn.Cl.Model.Huawei.EmsBoard> emsBoardList,
 1173:             out List<Ia.Ngn.Cl.Model.Huawei.EmsPort> emsPortList,
 1174:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.EmsOnt> emsOntList,
 1175:             out List<Ia.Ngn.Cl.Model.Huawei.EmsOntSipInfo> emsOntSipInfoList,
 1176:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVoipPstnUser> emsVoipPstnUserList,
 1177:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVag> emsVagList,
 1178:             out List<Ia.Ngn.Cl.Model.Event> eventList,
 1179:             out List<Ia.Ngn.Cl.Model.Access> accessList,
 1180:             out List<Ia.Ngn.Cl.Model.Ui.ServiceRequestService> serviceRequestServiceList,
 1181:             out List<Ia.Ngn.Cl.Model.ServiceRequest> serviceRequestList,
 1182:             out List<Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue> serviceRequestAdministrativeIssueList,
 1183:             out List<Ia.Ngn.Cl.Model.ServiceRequestHistory> serviceRequestHistoryList,
 1184:             out List<Ia.Ngn.Cl.Model.ServiceRequestType> serviceRequestTypeList,
 1185:             out List<Ia.Ngn.Cl.Model.ServiceRequestOnt> serviceRequestOntList,
 1186:             out List<Ia.Ngn.Cl.Model.ServiceRequestOntDetail> serviceRequestOntDetailList,
 1187:             out List<Ia.Ngn.Cl.Model.Report> reportList,
 1188:             out List<Ia.Ngn.Cl.Model.ReportHistory> reportHistoryList,
 1189:             out Ia.Cl.Model.Result result)
 1190:         {
 1191:             string service;
 1192:  
 1193:             var serviceList = new List<string>();
 1194:  
 1195:             result = new Ia.Cl.Model.Result();
 1196:  
 1197:             service2List = null;
 1198:             agcfGatewayRecordList = null;
 1199:             agcfEndpointList = null;
 1200:             mgwList = null;
 1201:             asbrList = null;
 1202:             subPartyList = null;
 1203:             subscriberList = null;
 1204:             huSbrList = null;
 1205:             owsbrList = null;
 1206:             seruattrList = null;
 1207:             axeSubscriberList = null;
 1208:             ewsdSubscriberList = null;
 1209:             nddOntList = null;
 1210:             ontList = null;
 1211:             ontServiceVoipList = null;
 1212:             ontOntPotsList = null;
 1213:             emsDevList = null;
 1214:             emsBoardList = null;
 1215:             emsPortList = null;
 1216:             emsOntList = null;
 1217:             emsOntSipInfoList = null;
 1218:             emsVoipPstnUserList = null;
 1219:             emsVagList = null;
 1220:             eventList = null;
 1221:             accessList = null;
 1222:             serviceRequestServiceList = null;
 1223:             serviceRequestList = null;
 1224:             serviceRequestAdministrativeIssueList = null;
 1225:             serviceRequestHistoryList = null;
 1226:             serviceRequestTypeList = null;
 1227:             serviceRequestOntList = null;
 1228:             serviceRequestOntDetailList = null;
 1229:             reportList = null;
 1230:             reportHistoryList = null;
 1231:  
 1232:             foreach (var input in inputList)
 1233:             {
 1234:                 service = Ia.Ngn.Cl.Model.Business.NumberFormatConverter.Service(input.ToLower());
 1235:  
 1236:                 if (Ia.Ngn.Cl.Model.Business.Service.ServiceHasEightDigitsAndIsWithinAllowedDomainList(service))
 1237:                 {
 1238:                     if (Ia.Ngn.Cl.Model.Business.Authority.NumberIsWithinFrameworkSiteDomainList(framework, service))
 1239:                     {
 1240:                         serviceList.Add(service);
 1241:  
 1242:                         Ia.Ngn.Cl.Model.Business.Maintenance.Find.NumberTwo(ref stopwatch, framework, enqueueIntoMsmq, serviceList, out service2List, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList, out result);
 1243:                     }
 1244:                     else
 1245:                     {
 1246:                         result.AddError("Number " + service + " is not in staff site domain (الرقم لا ينتمي لنطاقات المستخدم). ");
 1247:                     }
 1248:                 }
 1249:                 else
 1250:                 {
 1251:                     result.AddError("The number \"" + input + "\" does not belong to the network (الرقم لا ينتمي للشبكة).");
 1252:                 }
 1253:             }
 1254:         }
 1255:  
 1256:         ////////////////////////////////////////////////////////////////////////////
 1257:  
 1258:         /// <summary>
 1259:         ///
 1260:         /// </summary>
 1261:         private static void NumberTwo(ref Ia.Cl.Model.Stopwatch stopwatch,
 1262:             Ia.Ngn.Cl.Model.Business.Administration.Framework framework,
 1263:             bool enqueueIntoMsmq,
 1264:             List<string> serviceList,
 1265:             out List<Ia.Ngn.Cl.Model.Ui.Service2> service2List,
 1266:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfGatewayRecord> agcfGatewayRecordList,
 1267:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfEndpoint> agcfEndpointList,
 1268:             out List<Ia.Ngn.Cl.Model.Huawei.Mgw> mgwList,
 1269:             out List<Ia.Ngn.Cl.Model.Huawei.Asbr> asbrList,
 1270:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.SubParty> subPartyList,
 1271:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.Subscriber> subscriberList,
 1272:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.HuSbr> huSbrList,
 1273:             out List<Ia.Ngn.Cl.Model.Huawei.Owsbr> owsbrList,
 1274:             out List<Ia.Ngn.Cl.Model.Huawei.Seruattr> seruattrList,
 1275:             out List<Ia.Ngn.Cl.Model.Ericsson.AxeSubscriber> axeSubscriberList,
 1276:             out List<Ia.Ngn.Cl.Model.Siemens.EwsdSubscriber> ewsdSubscriberList,
 1277:             out List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> nddOntList,
 1278:             out List<Ia.Ngn.Cl.Model.Ont> ontList,
 1279:             out List<Ia.Ngn.Cl.Model.OntServiceVoip> ontServiceVoipList,
 1280:             out List<Ia.Ngn.Cl.Model.OntOntPots> ontOntPotsList,
 1281:             out List<Ia.Ngn.Cl.Model.Huawei.EmsDev> emsDevList,
 1282:             out List<Ia.Ngn.Cl.Model.Huawei.EmsBoard> emsBoardList,
 1283:             out List<Ia.Ngn.Cl.Model.Huawei.EmsPort> emsPortList,
 1284:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.EmsOnt> emsOntList,
 1285:             out List<Ia.Ngn.Cl.Model.Huawei.EmsOntSipInfo> emsOntSipInfoList,
 1286:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVoipPstnUser> emsVoipPstnUserList,
 1287:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVag> emsVagList,
 1288:             out List<Ia.Ngn.Cl.Model.Event> eventList,
 1289:             out List<Ia.Ngn.Cl.Model.Access> accessList,
 1290:             out List<Ia.Ngn.Cl.Model.Ui.ServiceRequestService> serviceRequestServiceList,
 1291:             out List<Ia.Ngn.Cl.Model.ServiceRequest> serviceRequestList,
 1292:             out List<Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue> serviceRequestAdministrativeIssueList,
 1293:             out List<Ia.Ngn.Cl.Model.ServiceRequestHistory> serviceRequestHistoryList,
 1294:             out List<Ia.Ngn.Cl.Model.ServiceRequestType> serviceRequestTypeList,
 1295:             out List<Ia.Ngn.Cl.Model.ServiceRequestOnt> serviceRequestOntList,
 1296:             out List<Ia.Ngn.Cl.Model.ServiceRequestOntDetail> serviceRequestOntDetailList,
 1297:             out List<Ia.Ngn.Cl.Model.Report> reportList,
 1298:             out List<Ia.Ngn.Cl.Model.ReportHistory> reportHistoryList,
 1299:             out Ia.Cl.Model.Result result)
 1300:         {
 1301:             service2List = null;
 1302:             agcfGatewayRecordList = null;
 1303:             agcfEndpointList = null;
 1304:             mgwList = null;
 1305:             asbrList = null;
 1306:             subPartyList = null;
 1307:             subscriberList = null;
 1308:             huSbrList = null;
 1309:             owsbrList = null;
 1310:             seruattrList = null;
 1311:             axeSubscriberList = null;
 1312:             ewsdSubscriberList = null;
 1313:             nddOntList = null;
 1314:             ontList = null;
 1315:             ontServiceVoipList = null;
 1316:             ontOntPotsList = null;
 1317:             emsDevList = null;
 1318:             emsBoardList = null;
 1319:             emsPortList = null;
 1320:             emsOntList = null;
 1321:             emsOntSipInfoList = null;
 1322:             emsVoipPstnUserList = null;
 1323:             emsVagList = null;
 1324:             eventList = null;
 1325:             accessList = null;
 1326:             serviceRequestServiceList = null;
 1327:             serviceRequestList = null;
 1328:             serviceRequestAdministrativeIssueList = null;
 1329:             serviceRequestHistoryList = null;
 1330:             serviceRequestTypeList = null;
 1331:             serviceRequestOntList = null;
 1332:             serviceRequestOntDetailList = null;
 1333:             reportList = null;
 1334:             reportHistoryList = null;
 1335:  
 1336:             var serviceLongList = new List<long>();
 1337:             var numberList = new List<int>();
 1338:             var partyIdList = new List<string>();
 1339:             var prividUserList = new List<string>();
 1340:             var impuSipDomainList = new List<string>();
 1341:             var sipUserNameList = new List<string>();
 1342:             var serviceWithCountryCodeList = new List<string>();
 1343:             var serviceIdList = new List<string>();
 1344:  
 1345:             var subscriberIdList = new List<string>();
 1346:             var subPartyIdList = new List<string>();
 1347:             var agcfEndpointIdList = new List<string>();
 1348:             var agcfGatewayRecordIdList = new List<int>();
 1349:             var gatewayIdList = new List<int>();
 1350:  
 1351:             var asbrIdList = new List<string>();
 1352:             var mgwIdList = new List<string>();
 1353:  
 1354:             var sbrImpuList = new List<string>();
 1355:             var owsbrImpuList = new List<string>();
 1356:  
 1357:             var ontIdList = new List<string>();
 1358:             var ontOntPotsIdList = new List<string>();
 1359:             var ontServiceVoipIdList = new List<string>();
 1360:             var ontServiceVoipIpList = new List<string>();
 1361:  
 1362:             var ipList = new List<string>();
 1363:  
 1364:             var emsDevIdList = new List<int>();
 1365:             var emsBoardIdList = new List<string>();
 1366:             var emsPortIdList = new List<string>();
 1367:             var emsOntIdList = new List<string>();
 1368:             var emsVoipPstnUserIdList = new List<string>();
 1369:  
 1370:             result = new Ia.Cl.Model.Result();
 1371:  
 1372:             stopwatch.RecordElapsedMilliseconds("B");
 1373:  
 1374:             var switchVendorList = Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.SwitchVendorListByServiceList(serviceList);
 1375:  
 1376:             var serviceListHasANumberThatIsWithinMsanDomainList = Ia.Ngn.Cl.Model.Data.Service.ServiceListHasANumberThatIsWithinMsanDomainList(serviceList);
 1377:  
 1378:             try
 1379:             {
 1380:                 Ia.Ngn.Cl.Model.Data.Maintenance.Find.SynchronizeNumberFormatLists(ref partyIdList, ref prividUserList, ref serviceList, ref numberList, ref serviceLongList, ref impuSipDomainList, ref sipUserNameList, ref serviceWithCountryCodeList, ref serviceIdList);
 1381:  
 1382:                 // Who uses serviceId: AxeSubscribers,EwsdSubscriners,Seruattrs,Service2,ServiceExemptions,ServiceRequestServices: Id is seviceId
 1383:                 stopwatch.RecordElapsedMilliseconds("C0");
 1384:  
 1385:                 var service2IdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.Service2IdListFromServiceIdList(serviceIdList);
 1386:                 stopwatch.RecordElapsedMilliseconds("C1");
 1387:  
 1388:                 if (switchVendorList.Contains(Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Nokia))
 1389:                 {
 1390:                     subscriberIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.SubscriberIdListFromPartyIdList(partyIdList);
 1391:                     stopwatch.RecordElapsedMilliseconds("C2");
 1392:  
 1393:                     subPartyIdList = subscriberIdList; // Ia.Ngn.Cl.Model.Data.Maintenance.Find.SubscriberIdListFromPartyIdList(partyIdList);
 1394:  
 1395:                     agcfEndpointIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AgcfEndpointIdListFromPrividUserList(prividUserList);
 1396:                     stopwatch.RecordElapsedMilliseconds("C4");
 1397:  
 1398:                     agcfGatewayRecordIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AgcfGatewayRecordIdListFromAgcfEndpointIdList(agcfEndpointIdList);
 1399:                     stopwatch.RecordElapsedMilliseconds("C5");
 1400:  
 1401:                     gatewayIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.GatewayIdFromAgcfGatewayRecordIdListList(agcfGatewayRecordIdList);
 1402:  
 1403:                     Ia.Ngn.Cl.Model.Data.Maintenance.Find.SynchronizeNumberFormatLists(ref partyIdList, ref prividUserList, ref serviceList, ref numberList, ref serviceLongList, ref impuSipDomainList, ref sipUserNameList, ref serviceWithCountryCodeList, ref serviceIdList);
 1404:                 }
 1405:  
 1406:                 if (switchVendorList.Contains(Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Huawei))
 1407:                 {
 1408:                     if (Ia.Ngn.Cl.Model.Data.Service.ServiceListHasANumberThatIsWithinSoftXServer(serviceList))
 1409:                     {
 1410:                         asbrIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AsbrIdListFromImpuSipDomainList(impuSipDomainList);
 1411:                         mgwIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.MgwIdListFromAsbrIdList(asbrIdList);
 1412:                     }
 1413:  
 1414:                     sbrImpuList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.SbrImpuListFromImpuSipDomainList(impuSipDomainList);
 1415:                     owsbrImpuList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OwSbrImpuListFromImpuSipDomainList(impuSipDomainList);
 1416:  
 1417:                     Ia.Ngn.Cl.Model.Data.Maintenance.Find.SynchronizeNumberFormatLists(ref partyIdList, ref prividUserList, ref serviceList, ref numberList, ref serviceLongList, ref impuSipDomainList, ref sipUserNameList, ref serviceWithCountryCodeList, ref serviceIdList);
 1418:                 }
 1419:  
 1420:                 stopwatch.RecordElapsedMilliseconds("D");
 1421:  
 1422:                 var serviceRequestServiceIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestServiceIdListFromServiceIdList(serviceIdList);
 1423:                 stopwatch.RecordElapsedMilliseconds("D2");
 1424:  
 1425:                 var accessIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AccessIdListFromServiceIdList(serviceIdList);
 1426:                 accessIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.AccessIdListFromServiceRequestServiceIdList(serviceRequestServiceIdList));
 1427:                 accessIdList = accessIdList.Distinct().ToList();
 1428:  
 1429:                 stopwatch.RecordElapsedMilliseconds("D3");
 1430:  
 1431:                 Ia.Ngn.Cl.Model.Data.Maintenance.Find.UpdateServiceListFromServiceRequestServiceIdOrService2IdList(service2IdList, ref serviceList);
 1432:                 Ia.Ngn.Cl.Model.Data.Maintenance.Find.SynchronizeNumberFormatLists(ref partyIdList, ref prividUserList, ref serviceList, ref numberList, ref serviceLongList, ref impuSipDomainList, ref sipUserNameList, ref serviceWithCountryCodeList, ref serviceIdList);
 1433:  
 1434:                 stopwatch.RecordElapsedMilliseconds("D4");
 1435:  
 1436:                 var reportIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ReportIdListFromServiceList(serviceList);
 1437:                 stopwatch.RecordElapsedMilliseconds("D41");
 1438:  
 1439:                 reportIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.ReportIdListFromAccessIdList(accessIdList));
 1440:                 stopwatch.RecordElapsedMilliseconds("D42");
 1441:  
 1442:                 reportIdList = reportIdList.Distinct().ToList();
 1443:  
 1444:                 var serviceRequestIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestIdListFromServiceAndRelatedChangedAndChangedToServiceList(serviceList);
 1445:                 stopwatch.RecordElapsedMilliseconds("D52");
 1446:  
 1447:                 serviceRequestIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestIdListFromServiceRequestServiceIdList(serviceRequestServiceIdList));
 1448:                 stopwatch.RecordElapsedMilliseconds("D53");
 1449:  
 1450:                 serviceRequestIdList = serviceRequestIdList.Distinct().ToList();
 1451:  
 1452:                 stopwatch.RecordElapsedMilliseconds("D6");
 1453:  
 1454:                 var serviceRequestAdministrativeIssueIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestAdministrativeIssueIdListFromServiceIdList(serviceIdList);
 1455:                 stopwatch.RecordElapsedMilliseconds("D7");
 1456:  
 1457:                 var serviceRequestHistoryIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestHistoryIdListFromServiceAndRelatedChangedAndChangedToServiceList(serviceList);
 1458:                 stopwatch.RecordElapsedMilliseconds("D71");
 1459:  
 1460:                 var serviceRequestTypeIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestTypeIdListFromServiceRequestIdList(serviceRequestIdList);
 1461:                 stopwatch.RecordElapsedMilliseconds("D72");
 1462:  
 1463:                 var serviceRequestOntIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestOntIdListFromAccessIdList(accessIdList);
 1464:                 stopwatch.RecordElapsedMilliseconds("D73");
 1465:  
 1466:                 stopwatch.RecordElapsedMilliseconds("D8");
 1467:  
 1468:                 var nddOntIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.NddOntIdListFromAccessIdList(accessIdList);
 1469:                 nddOntIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.NddOntIdListFromEmsOntSipInfoListAndEmsVoipPstnUserListByServiceList(serviceList));
 1470:                 nddOntIdList = nddOntIdList.Distinct().ToList();
 1471:  
 1472:                 var accessVendorList = Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.AccessVendorListByOntIdList(nddOntIdList);
 1473:  
 1474:                 stopwatch.RecordElapsedMilliseconds("E");
 1475:  
 1476:                 if (accessVendorList.Contains(Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Nokia))
 1477:                 {
 1478:                     ontIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntIdListFromNddOntIdList(nddOntIdList);
 1479:                     ontOntPotsIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntOntPotsIdListFromOntIdList(ontIdList);
 1480:                     ontServiceVoipIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntServiceVoipsIdListFromOntIdList(ontIdList);
 1481:                     ontServiceVoipIpList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntServiceVoipIpList(ontServiceVoipIdList);
 1482:  
 1483:                     stopwatch.RecordElapsedMilliseconds("E1");
 1484:  
 1485:                     ipList = ontServiceVoipIpList;
 1486:                 }
 1487:  
 1488:                 if (accessVendorList.Contains(Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Huawei) || serviceListHasANumberThatIsWithinMsanDomainList)
 1489:                 {
 1490:                     emsOntIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsOntIdListFromNddOntIdList(nddOntIdList);
 1491:                     stopwatch.RecordElapsedMilliseconds("E2");
 1492:  
 1493:                     emsVoipPstnUserIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsVoipPstnUserIdListFromServiceList(serviceList);
 1494:                     //emsVoipPstnUserIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsVoipPstnUserIdListFromEmsOntIdList(emsOntIdList)); will display other numbers, which is not appropriate
 1495:                     //emsVoipPstnUserIdList = emsVoipPstnUserIdList.Distinct().ToList();
 1496:                     stopwatch.RecordElapsedMilliseconds("E3");
 1497:  
 1498:                     emsPortIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsPortIdListFromEmsOntIdList(emsOntIdList);
 1499:                     emsPortIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsPortIdListFromEmsVoipPstnUserIdList(emsVoipPstnUserIdList));
 1500:                     emsPortIdList = emsPortIdList.Distinct().ToList();
 1501:                     stopwatch.RecordElapsedMilliseconds("E4");
 1502:  
 1503:                     emsBoardIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsBoardIdListFromEmsPortIdList(emsPortIdList);
 1504:                     emsBoardIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsBoardIdListFromAccessIdList(accessIdList));
 1505:                     emsBoardIdList = emsBoardIdList.Distinct().ToList();
 1506:                     stopwatch.RecordElapsedMilliseconds("E5");
 1507:  
 1508:                     emsDevIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsDevIdListFromEmsBoardIdList(emsBoardIdList);
 1509:                     emsDevIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsDevIdListFromAccessIdList(accessIdList));
 1510:                     //emsDevIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsDevIdListFromEmsVoipPstnUserIdList(emsVoipPstnUserIdList));
 1511:                     emsDevIdList = emsDevIdList.Distinct().ToList();
 1512:                     stopwatch.RecordElapsedMilliseconds("E6");
 1513:  
 1514:                     ipList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsOntIpListFromNddOntIdList(nddOntIdList));
 1515:                     ipList = ipList.Distinct().ToList();
 1516:                 }
 1517:  
 1518:                 Ia.Ngn.Cl.Model.Data.Maintenance.Find.SynchronizeNumberFormatLists(ref partyIdList, ref prividUserList, ref serviceList, ref numberList, ref serviceLongList, ref impuSipDomainList, ref sipUserNameList, ref serviceWithCountryCodeList, ref serviceIdList);
 1519:  
 1520:                 stopwatch.RecordElapsedMilliseconds("F");
 1521:  
 1522:                 /////////////////////////////////
 1523:  
 1524:                 agcfGatewayRecordList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AgcfGatewayRecordList(agcfGatewayRecordIdList);
 1525:                 agcfEndpointList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AgcfEndpointList(agcfEndpointIdList);
 1526:                 subPartyList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.SubPartyList(subPartyIdList);
 1527:                 subscriberList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.SubscriberList(subscriberIdList);
 1528:  
 1529:                 mgwList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.MgwList(mgwIdList);
 1530:                 asbrList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AsbrList(asbrIdList);
 1531:  
 1532:                 huSbrList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.HuSbrList(sbrImpuList);
 1533:                 owsbrList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OwsbrList(owsbrImpuList);
 1534:  
 1535:                 stopwatch.RecordElapsedMilliseconds("G");
 1536:  
 1537:                 if (Ia.Ngn.Cl.Model.Data.Service.ServiceListHasANumberThatIsWithinPstnThatUsesNpServerDomainList(serviceList))
 1538:                 {
 1539:                     seruattrList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.SeruattrListFromServiceIdList(serviceIdList);
 1540:                 }
 1541:  
 1542:                 axeSubscriberList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AxeSubscriberListFromServiceIdList(serviceIdList);
 1543:                 ewsdSubscriberList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EwsdSubscriberListFromServiceIdList(serviceIdList);
 1544:  
 1545:                 ontList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntList(ontIdList);
 1546:                 ontOntPotsList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntOntPotsListFromOntOntPotsIdList(ontOntPotsIdList);
 1547:                 ontServiceVoipList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntServiceVoipList(ontServiceVoipIdList);
 1548:  
 1549:                 emsDevList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsDevList(emsDevIdList);
 1550:                 emsBoardList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsBoardList(emsBoardIdList);
 1551:                 emsPortList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsPortList(emsPortIdList);
 1552:                 emsOntList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsOntList(emsOntIdList);
 1553:  
 1554:                 emsOntSipInfoList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsOntSipInfoListFromEmsOntIdListAndService(emsOntIdList, sipUserNameList);
 1555:                 emsVoipPstnUserList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsVoipPstnUserList(emsVoipPstnUserIdList);
 1556:                 emsVagList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.VagListFromEmsOntIdList(emsOntIdList);
 1557:  
 1558:                 stopwatch.RecordElapsedMilliseconds("H");
 1559:  
 1560:                 service2List = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceList(service2IdList);
 1561:                 stopwatch.RecordElapsedMilliseconds("H2");
 1562:  
 1563:                 nddOntList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.NddOntList(nddOntIdList);
 1564:                 stopwatch.RecordElapsedMilliseconds("H3");
 1565:  
 1566:                 accessList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AccessList(accessIdList);
 1567:                 stopwatch.RecordElapsedMilliseconds("H4");
 1568:  
 1569:                 serviceRequestServiceList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestServiceList(serviceRequestServiceIdList);
 1570:                 stopwatch.RecordElapsedMilliseconds("H5");
 1571:  
 1572:                 serviceRequestList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestList(serviceRequestIdList);
 1573:                 stopwatch.RecordElapsedMilliseconds("H51");
 1574:  
 1575:                 serviceRequestAdministrativeIssueList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestAdministrativeIssueList(serviceRequestAdministrativeIssueIdList);
 1576:                 stopwatch.RecordElapsedMilliseconds("H52");
 1577:  
 1578:                 serviceRequestHistoryList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestHistoryList(serviceRequestHistoryIdList);
 1579:                 stopwatch.RecordElapsedMilliseconds("H53");
 1580:  
 1581:                 serviceRequestTypeList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestTypeList(serviceRequestTypeIdList);
 1582:                 stopwatch.RecordElapsedMilliseconds("H54");
 1583:  
 1584:                 serviceRequestOntList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestOntList(serviceRequestOntIdList);
 1585:                 stopwatch.RecordElapsedMilliseconds("H55");
 1586:  
 1587:                 serviceRequestOntDetailList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestOntDetailFromServieListList(serviceList); // more appropriate to display records related to the service numbers only
 1588:                 stopwatch.RecordElapsedMilliseconds("H66");
 1589:  
 1590:                 reportList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ReportList(reportIdList);
 1591:                 stopwatch.RecordElapsedMilliseconds("H7");
 1592:  
 1593:                 if (enqueueIntoMsmq)
 1594:                 {
 1595:                     foreach (var service in serviceList) Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, Ia.Ngn.Cl.Model.Business.Msmq.Process.ReadService, service);
 1596:                     foreach (var nddOnt in nddOntList) Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, Ia.Ngn.Cl.Model.Business.Msmq.Process.ReadAccess, nddOnt.Access.Name);
 1597:                     foreach (var gatewayId in gatewayIdList) Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, Ia.Ngn.Cl.Model.Business.Msmq.Process.ReadGateway, gatewayId);
 1598:                 }
 1599:  
 1600:                 stopwatch.RecordElapsedMilliseconds("I");
 1601:             }
 1602:             catch (Exception ex)
 1603:             {
 1604:                 stopwatch.RecordElapsedMilliseconds("Exception");
 1605:  
 1606:                 result.AddError("Exception: Retrieval error of data for \"" + string.Join(", ", serviceList) + "\": " + ex.ToString());
 1607:             }
 1608:         }
 1609:  
 1610:         ////////////////////////////////////////////////////////////////////////////
 1611:         ////////////////////////////////////////////////////////////////////////////
 1612:  
 1613:         /// <summary>
 1614:         ///
 1615:         /// </summary>
 1616:         public static void OntName(ref Ia.Cl.Model.Stopwatch stopwatch,
 1617:             Ia.Ngn.Cl.Model.Business.Administration.Framework framework,
 1618:             bool enqueueIntoMsmq,
 1619:             string rawInput,
 1620:             out List<Ia.Ngn.Cl.Model.Ui.Service2> service2List,
 1621:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfGatewayRecord> agcfGatewayRecordList,
 1622:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfEndpoint> agcfEndpointList,
 1623:             out List<Ia.Ngn.Cl.Model.Huawei.Mgw> mgwList,
 1624:             out List<Ia.Ngn.Cl.Model.Huawei.Asbr> asbrList,
 1625:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.SubParty> subPartyList,
 1626:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.Subscriber> subscriberList,
 1627:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.HuSbr> huSbrList,
 1628:             out List<Ia.Ngn.Cl.Model.Huawei.Owsbr> owsbrList,
 1629:             out List<Ia.Ngn.Cl.Model.Huawei.Seruattr> seruattrList,
 1630:             out List<Ia.Ngn.Cl.Model.Ericsson.AxeSubscriber> axeSubscriberList,
 1631:             out List<Ia.Ngn.Cl.Model.Siemens.EwsdSubscriber> ewsdSubscriberList,
 1632:             out List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> nddOntList,
 1633:             out List<Ia.Ngn.Cl.Model.Ont> ontList,
 1634:             out List<Ia.Ngn.Cl.Model.OntServiceVoip> ontServiceVoipList,
 1635:             out List<Ia.Ngn.Cl.Model.OntOntPots> ontOntPotsList,
 1636:             out List<Ia.Ngn.Cl.Model.Huawei.EmsDev> emsDevList,
 1637:             out List<Ia.Ngn.Cl.Model.Huawei.EmsBoard> emsBoardList,
 1638:             out List<Ia.Ngn.Cl.Model.Huawei.EmsPort> emsPortList,
 1639:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.EmsOnt> emsOntList,
 1640:             out List<Ia.Ngn.Cl.Model.Huawei.EmsOntSipInfo> emsOntSipInfoList,
 1641:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVoipPstnUser> emsVoipPstnUserList,
 1642:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVag> emsVagList,
 1643:             out List<Ia.Ngn.Cl.Model.Event> eventList,
 1644:             out List<Ia.Ngn.Cl.Model.Access> accessList,
 1645:             out List<Ia.Ngn.Cl.Model.Ui.ServiceRequestService> serviceRequestServiceList,
 1646:             out List<Ia.Ngn.Cl.Model.ServiceRequest> serviceRequestList,
 1647:             out List<Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue> serviceRequestAdministrativeIssueList,
 1648:             out List<Ia.Ngn.Cl.Model.ServiceRequestHistory> serviceRequestHistoryList,
 1649:             out List<Ia.Ngn.Cl.Model.ServiceRequestType> serviceRequestTypeList,
 1650:             out List<Ia.Ngn.Cl.Model.ServiceRequestOnt> serviceRequestOntList,
 1651:             out List<Ia.Ngn.Cl.Model.ServiceRequestOntDetail> serviceRequestOntDetailList,
 1652:             out List<Ia.Ngn.Cl.Model.Report> reportList,
 1653:             out List<Ia.Ngn.Cl.Model.ReportHistory> reportHistoryList,
 1654:             out Ia.Cl.Model.Result result)
 1655:         {
 1656:             string input;
 1657:             Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt;
 1658:             List<string> accessIdList, nddOntIdList, ipList;
 1659:  
 1660:             ipList = new List<string>();
 1661:             nddOntIdList = new List<string>();
 1662:             accessIdList = new List<string>();
 1663:  
 1664:             result = new Ia.Cl.Model.Result();
 1665:  
 1666:             service2List = null;
 1667:             agcfGatewayRecordList = null;
 1668:             agcfEndpointList = null;
 1669:             mgwList = null;
 1670:             asbrList = null;
 1671:             subPartyList = null;
 1672:             subscriberList = null;
 1673:             huSbrList = null;
 1674:             owsbrList = null;
 1675:             seruattrList = null;
 1676:             axeSubscriberList = null;
 1677:             ewsdSubscriberList = null;
 1678:             nddOntList = null;
 1679:             ontList = null;
 1680:             ontServiceVoipList = null;
 1681:             ontOntPotsList = null;
 1682:             emsDevList = null;
 1683:             emsBoardList = null;
 1684:             emsPortList = null;
 1685:             emsOntList = null;
 1686:             emsOntSipInfoList = null;
 1687:             emsVoipPstnUserList = null;
 1688:             emsVagList = null;
 1689:             eventList = null;
 1690:             accessList = null;
 1691:             serviceRequestServiceList = null;
 1692:             serviceRequestList = null;
 1693:             serviceRequestAdministrativeIssueList = null;
 1694:             serviceRequestHistoryList = null;
 1695:             serviceRequestTypeList = null;
 1696:             serviceRequestOntList = null;
 1697:             serviceRequestOntDetailList = null;
 1698:             reportList = null;
 1699:             reportHistoryList = null;
 1700:  
 1701:             input = rawInput.ToUpper();
 1702:  
 1703:             stopwatch.RecordElapsedMilliseconds("A");
 1704:  
 1705:             nddOnt = Ia.Ngn.Cl.Model.Business.Default.NddOntUsingExtractedAccessNameWithValidSymbolAndLegalFormatForPonAndOntFromValue(input);
 1706:  
 1707:             if (nddOnt != null)
 1708:             {
 1709:                 if (Ia.Ngn.Cl.Model.Business.Authority.AccessNameIsWithinFrameworkSiteAreaSymbolList(framework, nddOnt.Access.Name))
 1710:                 {
 1711:                     try
 1712:                     {
 1713:                         ipList.Add(nddOnt.Ip);
 1714:  
 1715:                         accessIdList.Add(nddOnt.Access.Id);
 1716:  
 1717:                         nddOntIdList.Add(nddOnt.Id);
 1718:  
 1719:                         stopwatch.RecordElapsedMilliseconds("B");
 1720:  
 1721:                         OntNameOrPonNameOrPositionOrSerialOrPaci(ref stopwatch, enqueueIntoMsmq, nddOntIdList, accessIdList, ipList, out service2List, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList);
 1722:                     }
 1723:                     catch (Exception ex)
 1724:                     {
 1725:                         result.AddError("Exception: Retrieval error of data for \"" + rawInput + "\": " + ex.ToString());
 1726:                     }
 1727:                 }
 1728:                 else
 1729:                 {
 1730:                     result.AddError("Access " + nddOnt.Access.Name + " is not in staff site access list (رقم الجهاز لا ينتمي لمقسم المستخدم). ");
 1731:                 }
 1732:             }
 1733:             else
 1734:             {
 1735:                 result.AddError("The ONT \"" + rawInput + "\" does not belong to the network (الجهاز لا ينتمي للشبكة). ");
 1736:             }
 1737:         }
 1738:  
 1739:         ////////////////////////////////////////////////////////////////////////////
 1740:  
 1741:         /// <summary>
 1742:         ///
 1743:         /// </summary>
 1744:         public static void PonName(ref Ia.Cl.Model.Stopwatch stopwatch,
 1745:             Ia.Ngn.Cl.Model.Business.Administration.Framework framework,
 1746:             bool enqueueIntoMsmq,
 1747:             string rawInput,
 1748:             out List<Ia.Ngn.Cl.Model.Ui.Service2> service2List,
 1749:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfGatewayRecord> agcfGatewayRecordList,
 1750:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfEndpoint> agcfEndpointList,
 1751:             out List<Ia.Ngn.Cl.Model.Huawei.Mgw> mgwList,
 1752:             out List<Ia.Ngn.Cl.Model.Huawei.Asbr> asbrList,
 1753:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.SubParty> subPartyList,
 1754:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.Subscriber> subscriberList,
 1755:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.HuSbr> huSbrList,
 1756:             out List<Ia.Ngn.Cl.Model.Huawei.Owsbr> owsbrList,
 1757:             out List<Ia.Ngn.Cl.Model.Huawei.Seruattr> seruattrList,
 1758:             out List<Ia.Ngn.Cl.Model.Ericsson.AxeSubscriber> axeSubscriberList,
 1759:             out List<Ia.Ngn.Cl.Model.Siemens.EwsdSubscriber> ewsdSubscriberList,
 1760:             out List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> nddOntList,
 1761:             out List<Ia.Ngn.Cl.Model.Ont> ontList,
 1762:             out List<Ia.Ngn.Cl.Model.OntServiceVoip> ontServiceVoipList,
 1763:             out List<Ia.Ngn.Cl.Model.OntOntPots> ontOntPotsList,
 1764:             out List<Ia.Ngn.Cl.Model.Huawei.EmsDev> emsDevList,
 1765:             out List<Ia.Ngn.Cl.Model.Huawei.EmsBoard> emsBoardList,
 1766:             out List<Ia.Ngn.Cl.Model.Huawei.EmsPort> emsPortList,
 1767:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.EmsOnt> emsOntList,
 1768:             out List<Ia.Ngn.Cl.Model.Huawei.EmsOntSipInfo> emsOntSipInfoList,
 1769:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVoipPstnUser> emsVoipPstnUserList,
 1770:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVag> emsVagList,
 1771:             out List<Ia.Ngn.Cl.Model.Event> eventList,
 1772:             out List<Ia.Ngn.Cl.Model.Access> accessList,
 1773:             out List<Ia.Ngn.Cl.Model.Ui.ServiceRequestService> serviceRequestServiceList,
 1774:             out List<Ia.Ngn.Cl.Model.ServiceRequest> serviceRequestList,
 1775:             out List<Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue> serviceRequestAdministrativeIssueList,
 1776:             out List<Ia.Ngn.Cl.Model.ServiceRequestHistory> serviceRequestHistoryList,
 1777:             out List<Ia.Ngn.Cl.Model.ServiceRequestType> serviceRequestTypeList,
 1778:             out List<Ia.Ngn.Cl.Model.ServiceRequestOnt> serviceRequestOntList,
 1779:             out List<Ia.Ngn.Cl.Model.ServiceRequestOntDetail> serviceRequestOntDetailList,
 1780:             out List<Ia.Ngn.Cl.Model.Report> reportList,
 1781:             out List<Ia.Ngn.Cl.Model.ReportHistory> reportHistoryList,
 1782:             out Ia.Cl.Model.Result result)
 1783:         {
 1784:             int oltId, ponNumber;
 1785:             string input, ponName;
 1786:             Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Pon nddPon;
 1787:             List<string> accessIdList, nddOntIdList, ipList;
 1788:  
 1789:             result = new Ia.Cl.Model.Result();
 1790:  
 1791:             service2List = null;
 1792:             agcfGatewayRecordList = null;
 1793:             agcfEndpointList = null;
 1794:             mgwList = null;
 1795:             asbrList = null;
 1796:             subPartyList = null;
 1797:             subscriberList = null;
 1798:             huSbrList = null;
 1799:             owsbrList = null;
 1800:             seruattrList = null;
 1801:             axeSubscriberList = null;
 1802:             ewsdSubscriberList = null;
 1803:             nddOntList = null;
 1804:             ontList = null;
 1805:             ontServiceVoipList = null;
 1806:             ontOntPotsList = null;
 1807:             emsDevList = null;
 1808:             emsBoardList = null;
 1809:             emsPortList = null;
 1810:             emsOntList = null;
 1811:             emsOntSipInfoList = null;
 1812:             emsVoipPstnUserList = null;
 1813:             emsVagList = null;
 1814:             eventList = null;
 1815:             accessList = null;
 1816:             serviceRequestServiceList = null;
 1817:             serviceRequestList = null;
 1818:             serviceRequestAdministrativeIssueList = null;
 1819:             serviceRequestHistoryList = null;
 1820:             serviceRequestTypeList = null;
 1821:             serviceRequestOntList = null;
 1822:             serviceRequestOntDetailList = null;
 1823:             reportList = null;
 1824:             reportHistoryList = null;
 1825:  
 1826:             input = rawInput.ToUpper();
 1827:  
 1828:             ponName = Ia.Ngn.Cl.Model.Business.Default.ExtractPonNameWithValidSymbolAndLegalFormatForPonAndOntFromValue(input);
 1829:  
 1830:             nddPon = (from p in Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.PonList where p.Name == ponName select p).SingleOrDefault();
 1831:  
 1832:             if (nddPon != null)
 1833:             {
 1834:                 oltId = nddPon.PonGroup.Olt.Id;
 1835:                 ponNumber = nddPon.Number;
 1836:  
 1837:                 try
 1838:                 {
 1839:                     ipList = new List<string>(); // pass empty
 1840:  
 1841:                     accessIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AccessIdList(oltId, ponNumber);
 1842:  
 1843:                     nddOntIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.NddOntIdList(oltId, ponNumber);
 1844:  
 1845:                     OntNameOrPonNameOrPositionOrSerialOrPaci(ref stopwatch, enqueueIntoMsmq, nddOntIdList, accessIdList, ipList, out service2List, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList);
 1846:                 }
 1847:                 catch (Exception ex)
 1848:                 {
 1849:                     result.AddError("Exception: Retrieval error of data for \"" + rawInput + "\": " + ex.ToString());
 1850:                 }
 1851:             }
 1852:             else
 1853:             {
 1854:                 result.AddError("The PON \"" + rawInput + "\" had a null values. ");
 1855:             }
 1856:         }
 1857:  
 1858:         ////////////////////////////////////////////////////////////////////////////
 1859:  
 1860:         /// <summary>
 1861:         ///
 1862:         /// </summary>
 1863:         public static void OntPosition(ref Ia.Cl.Model.Stopwatch stopwatch,
 1864:             Ia.Ngn.Cl.Model.Business.Administration.Framework framework,
 1865:             bool enqueueIntoMsmq,
 1866:             string rawInput,
 1867:             out List<Ia.Ngn.Cl.Model.Ui.Service2> service2List,
 1868:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfGatewayRecord> agcfGatewayRecordList,
 1869:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfEndpoint> agcfEndpointList,
 1870:             out List<Ia.Ngn.Cl.Model.Huawei.Mgw> mgwList,
 1871:             out List<Ia.Ngn.Cl.Model.Huawei.Asbr> asbrList,
 1872:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.SubParty> subPartyList,
 1873:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.Subscriber> subscriberList,
 1874:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.HuSbr> huSbrList,
 1875:             out List<Ia.Ngn.Cl.Model.Huawei.Owsbr> owsbrList,
 1876:             out List<Ia.Ngn.Cl.Model.Huawei.Seruattr> seruattrList,
 1877:             out List<Ia.Ngn.Cl.Model.Ericsson.AxeSubscriber> axeSubscriberList,
 1878:             out List<Ia.Ngn.Cl.Model.Siemens.EwsdSubscriber> ewsdSubscriberList,
 1879:             out List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> nddOntList,
 1880:             out List<Ia.Ngn.Cl.Model.Ont> ontList,
 1881:             out List<Ia.Ngn.Cl.Model.OntServiceVoip> ontServiceVoipList,
 1882:             out List<Ia.Ngn.Cl.Model.OntOntPots> ontOntPotsList,
 1883:             out List<Ia.Ngn.Cl.Model.Huawei.EmsDev> emsDevList,
 1884:             out List<Ia.Ngn.Cl.Model.Huawei.EmsBoard> emsBoardList,
 1885:             out List<Ia.Ngn.Cl.Model.Huawei.EmsPort> emsPortList,
 1886:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.EmsOnt> emsOntList,
 1887:             out List<Ia.Ngn.Cl.Model.Huawei.EmsOntSipInfo> emsOntSipInfoList,
 1888:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVoipPstnUser> emsVoipPstnUserList,
 1889:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVag> emsVagList,
 1890:             out List<Ia.Ngn.Cl.Model.Event> eventList,
 1891:             out List<Ia.Ngn.Cl.Model.Access> accessList,
 1892:             out List<Ia.Ngn.Cl.Model.Ui.ServiceRequestService> serviceRequestServiceList,
 1893:             out List<Ia.Ngn.Cl.Model.ServiceRequest> serviceRequestList,
 1894:             out List<Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue> serviceRequestAdministrativeIssueList,
 1895:             out List<Ia.Ngn.Cl.Model.ServiceRequestHistory> serviceRequestHistoryList,
 1896:             out List<Ia.Ngn.Cl.Model.ServiceRequestType> serviceRequestTypeList,
 1897:             out List<Ia.Ngn.Cl.Model.ServiceRequestOnt> serviceRequestOntList,
 1898:             out List<Ia.Ngn.Cl.Model.ServiceRequestOntDetail> serviceRequestOntDetailList,
 1899:             out List<Ia.Ngn.Cl.Model.Report> reportList,
 1900:             out List<Ia.Ngn.Cl.Model.ReportHistory> reportHistoryList,
 1901:             out Ia.Cl.Model.Result result)
 1902:         {
 1903:             int oltId, ponNumber, ontInternalNumber;
 1904:             string input;
 1905:             Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt;
 1906:             List<string> accessIdList, nddOntIdList, ipList;
 1907:  
 1908:             ipList = new List<string>();
 1909:  
 1910:             result = new Ia.Cl.Model.Result();
 1911:  
 1912:             service2List = null;
 1913:             agcfGatewayRecordList = null;
 1914:             agcfEndpointList = null;
 1915:             mgwList = null;
 1916:             asbrList = null;
 1917:             subPartyList = null;
 1918:             subscriberList = null;
 1919:             huSbrList = null;
 1920:             owsbrList = null;
 1921:             seruattrList = null;
 1922:             axeSubscriberList = null;
 1923:             ewsdSubscriberList = null;
 1924:             nddOntList = null;
 1925:             ontList = null;
 1926:             ontServiceVoipList = null;
 1927:             ontOntPotsList = null;
 1928:             emsDevList = null;
 1929:             emsBoardList = null;
 1930:             emsPortList = null;
 1931:             emsOntList = null;
 1932:             emsOntSipInfoList = null;
 1933:             emsVoipPstnUserList = null;
 1934:             emsVagList = null;
 1935:             eventList = null;
 1936:             accessList = null;
 1937:             serviceRequestServiceList = null;
 1938:             serviceRequestList = null;
 1939:             serviceRequestAdministrativeIssueList = null;
 1940:             serviceRequestHistoryList = null;
 1941:             serviceRequestTypeList = null;
 1942:             serviceRequestOntList = null;
 1943:             serviceRequestOntDetailList = null;
 1944:             reportList = null;
 1945:             reportHistoryList = null;
 1946:  
 1947:             input = rawInput.ToUpper();
 1948:  
 1949:             nddOnt = Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntByPosition(input);
 1950:  
 1951:             if (nddOnt != null)
 1952:             {
 1953:                 oltId = nddOnt.Pon.PonGroup.Olt.Id;
 1954:                 ponNumber = nddOnt.Pon.Number;
 1955:                 ontInternalNumber = nddOnt.InternalNumber;
 1956:  
 1957:                 try
 1958:                 {
 1959:                     ipList.Add(nddOnt.Ip);
 1960:  
 1961:                     accessIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AccessIdList(oltId, ponNumber, ontInternalNumber);
 1962:  
 1963:                     nddOntIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.NddOntIdList(oltId, ponNumber, ontInternalNumber);
 1964:  
 1965:                     OntNameOrPonNameOrPositionOrSerialOrPaci(ref stopwatch, enqueueIntoMsmq, nddOntIdList, accessIdList, ipList, out service2List, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList);
 1966:                 }
 1967:                 catch (Exception ex)
 1968:                 {
 1969:                     result.AddError("Exception: Retrieval error of data for \"" + rawInput + "\": " + ex.ToString());
 1970:                 }
 1971:             }
 1972:             else
 1973:             {
 1974:                 result.AddError("The ONT position \"" + rawInput + "\" was not found in the network. ");
 1975:             }
 1976:         }
 1977:  
 1978:         ////////////////////////////////////////////////////////////////////////////
 1979:  
 1980:         /// <summary>
 1981:         ///
 1982:         /// </summary>
 1983:         public static void MsanDevLicPosition(ref Ia.Cl.Model.Stopwatch stopwatch,
 1984:             Ia.Ngn.Cl.Model.Business.Administration.Framework framework,
 1985:             bool enqueueIntoMsmq,
 1986:             string input,
 1987:             out List<Ia.Ngn.Cl.Model.Ui.Service2> service2List,
 1988:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfGatewayRecord> agcfGatewayRecordList,
 1989:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfEndpoint> agcfEndpointList,
 1990:             out List<Ia.Ngn.Cl.Model.Huawei.Mgw> mgwList,
 1991:             out List<Ia.Ngn.Cl.Model.Huawei.Asbr> asbrList,
 1992:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.SubParty> subPartyList,
 1993:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.Subscriber> subscriberList,
 1994:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.HuSbr> huSbrList,
 1995:             out List<Ia.Ngn.Cl.Model.Huawei.Owsbr> owsbrList,
 1996:             out List<Ia.Ngn.Cl.Model.Huawei.Seruattr> seruattrList,
 1997:             out List<Ia.Ngn.Cl.Model.Ericsson.AxeSubscriber> axeSubscriberList,
 1998:             out List<Ia.Ngn.Cl.Model.Siemens.EwsdSubscriber> ewsdSubscriberList,
 1999:             out List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> nddOntList,
 2000:             out List<Ia.Ngn.Cl.Model.Ont> ontList,
 2001:             out List<Ia.Ngn.Cl.Model.OntServiceVoip> ontServiceVoipList,
 2002:             out List<Ia.Ngn.Cl.Model.OntOntPots> ontOntPotsList,
 2003:             out List<Ia.Ngn.Cl.Model.Huawei.EmsDev> emsDevList,
 2004:             out List<Ia.Ngn.Cl.Model.Huawei.EmsBoard> emsBoardList,
 2005:             out List<Ia.Ngn.Cl.Model.Huawei.EmsPort> emsPortList,
 2006:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.EmsOnt> emsOntList,
 2007:             out List<Ia.Ngn.Cl.Model.Huawei.EmsOntSipInfo> emsOntSipInfoList,
 2008:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVoipPstnUser> emsVoipPstnUserList,
 2009:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVag> emsVagList,
 2010:             out List<Ia.Ngn.Cl.Model.Event> eventList,
 2011:             out List<Ia.Ngn.Cl.Model.Access> accessList,
 2012:             out List<Ia.Ngn.Cl.Model.Ui.ServiceRequestService> serviceRequestServiceList,
 2013:             out List<Ia.Ngn.Cl.Model.ServiceRequest> serviceRequestList,
 2014:             out List<Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue> serviceRequestAdministrativeIssueList,
 2015:             out List<Ia.Ngn.Cl.Model.ServiceRequestHistory> serviceRequestHistoryList,
 2016:             out List<Ia.Ngn.Cl.Model.ServiceRequestType> serviceRequestTypeList,
 2017:             out List<Ia.Ngn.Cl.Model.ServiceRequestOnt> serviceRequestOntList,
 2018:             out List<Ia.Ngn.Cl.Model.ServiceRequestOntDetail> serviceRequestOntDetailList,
 2019:             out List<Ia.Ngn.Cl.Model.Report> reportList,
 2020:             out List<Ia.Ngn.Cl.Model.ReportHistory> reportHistoryList,
 2021:             out Ia.Cl.Model.Result result)
 2022:         {
 2023:             string service;
 2024:  
 2025:             var serviceList = new List<string>();
 2026:  
 2027:             result = new Ia.Cl.Model.Result();
 2028:  
 2029:             service2List = null;
 2030:             agcfGatewayRecordList = null;
 2031:             agcfEndpointList = null;
 2032:             mgwList = null;
 2033:             asbrList = null;
 2034:             subPartyList = null;
 2035:             subscriberList = null;
 2036:             huSbrList = null;
 2037:             owsbrList = null;
 2038:             seruattrList = null;
 2039:             axeSubscriberList = null;
 2040:             ewsdSubscriberList = null;
 2041:             nddOntList = null;
 2042:             ontList = null;
 2043:             ontServiceVoipList = null;
 2044:             ontOntPotsList = null;
 2045:             emsDevList = null;
 2046:             emsBoardList = null;
 2047:             emsPortList = null;
 2048:             emsOntList = null;
 2049:             emsOntSipInfoList = null;
 2050:             emsVoipPstnUserList = null;
 2051:             emsVagList = null;
 2052:             eventList = null;
 2053:             accessList = null;
 2054:             serviceRequestServiceList = null;
 2055:             serviceRequestList = null;
 2056:             serviceRequestAdministrativeIssueList = null;
 2057:             serviceRequestHistoryList = null;
 2058:             serviceRequestTypeList = null;
 2059:             serviceRequestOntList = null;
 2060:             serviceRequestOntDetailList = null;
 2061:             reportList = null;
 2062:             reportHistoryList = null;
 2063:  
 2064:             stopwatch.RecordElapsedMilliseconds("A");
 2065:  
 2066:             var lic = Ia.Ngn.Cl.Model.Business.Huawei.Dev.MsanDev.Lic.Parse(input);
 2067:  
 2068:             if (lic != null)
 2069:             {
 2070:                 service = lic.Service;
 2071:  
 2072:                 if (Ia.Ngn.Cl.Model.Business.Service.ServiceHasEightDigitsAndIsWithinAllowedDomainList(service))
 2073:                 {
 2074:                     if (Ia.Ngn.Cl.Model.Business.Authority.NumberIsWithinFrameworkSiteDomainList(framework, service))
 2075:                     {
 2076:                         serviceList.Add(service);
 2077:  
 2078:                         Ia.Ngn.Cl.Model.Business.Maintenance.Find.NumberTwo(ref stopwatch, framework, enqueueIntoMsmq, serviceList, out service2List, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList, out result);
 2079:                     }
 2080:                     else
 2081:                     {
 2082:                         result.AddError("Number " + service + " is not in staff site domain (الرقم لا ينتمي لنطاقات المستخدم). ");
 2083:                     }
 2084:                 }
 2085:                 else
 2086:                 {
 2087:                     result.AddError("The number \"" + input + "\" does not belong to the network (الرقم لا ينتمي للشبكة).");
 2088:                 }
 2089:  
 2090:                 stopwatch.RecordElapsedMilliseconds("M");
 2091:             }
 2092:             else
 2093:             {
 2094:                 result.AddError("The LIC \"" + input + "\" is empty or does not belong to the network (رقم الربط شاغر أو لا ينتمي للشبكة).");
 2095:             }
 2096:         }
 2097:  
 2098:         ////////////////////////////////////////////////////////////////////////////
 2099:  
 2100:         /// <summary>
 2101:         ///
 2102:         /// </summary>
 2103:         public static void Serial(ref Ia.Cl.Model.Stopwatch stopwatch,
 2104:             Ia.Ngn.Cl.Model.Business.Administration.Framework framework,
 2105:             bool enqueueIntoMsmq,
 2106:             string rawInput,
 2107:             out List<Ia.Ngn.Cl.Model.Ui.Service2> service2List,
 2108:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfGatewayRecord> agcfGatewayRecordList,
 2109:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfEndpoint> agcfEndpointList,
 2110:             out List<Ia.Ngn.Cl.Model.Huawei.Mgw> mgwList,
 2111:             out List<Ia.Ngn.Cl.Model.Huawei.Asbr> asbrList,
 2112:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.SubParty> subPartyList,
 2113:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.Subscriber> subscriberList,
 2114:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.HuSbr> huSbrList,
 2115:             out List<Ia.Ngn.Cl.Model.Huawei.Owsbr> owsbrList,
 2116:             out List<Ia.Ngn.Cl.Model.Huawei.Seruattr> seruattrList,
 2117:             out List<Ia.Ngn.Cl.Model.Ericsson.AxeSubscriber> axeSubscriberList,
 2118:             out List<Ia.Ngn.Cl.Model.Siemens.EwsdSubscriber> ewsdSubscriberList,
 2119:             out List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> nddOntList,
 2120:             out List<Ia.Ngn.Cl.Model.Ont> ontList,
 2121:             out List<Ia.Ngn.Cl.Model.OntServiceVoip> ontServiceVoipList,
 2122:             out List<Ia.Ngn.Cl.Model.OntOntPots> ontOntPotsList,
 2123:             out List<Ia.Ngn.Cl.Model.Huawei.EmsDev> emsDevList,
 2124:             out List<Ia.Ngn.Cl.Model.Huawei.EmsBoard> emsBoardList,
 2125:             out List<Ia.Ngn.Cl.Model.Huawei.EmsPort> emsPortList,
 2126:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.EmsOnt> emsOntList,
 2127:             out List<Ia.Ngn.Cl.Model.Huawei.EmsOntSipInfo> emsOntSipInfoList,
 2128:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVoipPstnUser> emsVoipPstnUserList,
 2129:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVag> emsVagList,
 2130:             out List<Ia.Ngn.Cl.Model.Event> eventList,
 2131:             out List<Ia.Ngn.Cl.Model.Access> accessList,
 2132:             out List<Ia.Ngn.Cl.Model.Ui.ServiceRequestService> serviceRequestServiceList,
 2133:             out List<Ia.Ngn.Cl.Model.ServiceRequest> serviceRequestList,
 2134:             out List<Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue> serviceRequestAdministrativeIssueList,
 2135:             out List<Ia.Ngn.Cl.Model.ServiceRequestHistory> serviceRequestHistoryList,
 2136:             out List<Ia.Ngn.Cl.Model.ServiceRequestType> serviceRequestTypeList,
 2137:             out List<Ia.Ngn.Cl.Model.ServiceRequestOnt> serviceRequestOntList,
 2138:             out List<Ia.Ngn.Cl.Model.ServiceRequestOntDetail> serviceRequestOntDetailList,
 2139:             out List<Ia.Ngn.Cl.Model.Report> reportList,
 2140:             out List<Ia.Ngn.Cl.Model.ReportHistory> reportHistoryList,
 2141:             out Ia.Cl.Model.Result result)
 2142:         {
 2143:             string input;
 2144:             Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor accessVendor;
 2145:             List<string> accessIdList, nddOntIdList, ipList;
 2146:  
 2147:             result = new Ia.Cl.Model.Result();
 2148:  
 2149:             service2List = null;
 2150:             agcfGatewayRecordList = null;
 2151:             agcfEndpointList = null;
 2152:             mgwList = null;
 2153:             asbrList = null;
 2154:             subPartyList = null;
 2155:             subscriberList = null;
 2156:             huSbrList = null;
 2157:             owsbrList = null;
 2158:             seruattrList = null;
 2159:             axeSubscriberList = null;
 2160:             ewsdSubscriberList = null;
 2161:             nddOntList = null;
 2162:             ontList = null;
 2163:             ontServiceVoipList = null;
 2164:             ontOntPotsList = null;
 2165:             emsDevList = null;
 2166:             emsBoardList = null;
 2167:             emsPortList = null;
 2168:             emsOntList = null;
 2169:             emsOntSipInfoList = null;
 2170:             emsVoipPstnUserList = null;
 2171:             emsVagList = null;
 2172:             eventList = null;
 2173:             accessList = null;
 2174:             serviceRequestServiceList = null;
 2175:             serviceRequestList = null;
 2176:             serviceRequestAdministrativeIssueList = null;
 2177:             serviceRequestHistoryList = null;
 2178:             serviceRequestTypeList = null;
 2179:             serviceRequestOntList = null;
 2180:             serviceRequestOntDetailList = null;
 2181:             reportList = null;
 2182:             reportHistoryList = null;
 2183:  
 2184:             input = rawInput;
 2185:  
 2186:             if (Ia.Ngn.Cl.Model.Business.Nokia.Ont.IsValidSerialNumber(input))
 2187:             {
 2188:                 accessVendor = Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Nokia;
 2189:  
 2190:                 accessIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AccessIdListFromOntSerial(input.ToUpper());
 2191:             }
 2192:             else if (Ia.Ngn.Cl.Model.Business.Huawei.Ont.IsValidSerialNumber(input))
 2193:             {
 2194:                 accessVendor = Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Huawei;
 2195:  
 2196:                 accessIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AccessIdListFromEmsOntSerial(input.ToUpper());
 2197:             }
 2198:             else
 2199:             {
 2200:                 accessVendor = Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Undefined;
 2201:  
 2202:                 accessIdList = new List<string>();
 2203:             }
 2204:  
 2205:             if (accessVendor == Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Nokia || accessVendor == Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Huawei)
 2206:             {
 2207:                 if (accessIdList.Count > 0)
 2208:                 {
 2209:                     nddOntIdList = new List<string>();
 2210:                     ipList = new List<string>();
 2211:  
 2212:                     try
 2213:                     {
 2214:                         OntNameOrPonNameOrPositionOrSerialOrPaci(ref stopwatch, enqueueIntoMsmq, nddOntIdList, accessIdList, ipList, out service2List, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList);
 2215:                     }
 2216:                     catch (Exception ex)
 2217:                     {
 2218:                         result.AddError("Exception: Retrieval error of data for \"" + rawInput + "\": " + ex.ToString());
 2219:                     }
 2220:                 }
 2221:                 else
 2222:                 {
 2223:                     result.AddError("Did not find any accesses with serial number " + input.ToUpper() + " (لا يوجد جهاز برقم تسلسل). ");
 2224:                 }
 2225:             }
 2226:             else
 2227:             {
 2228:                 result.AddError("Access vendor is undefined (مزود الجهاز غير معرف). ");
 2229:             }
 2230:         }
 2231:  
 2232:         ////////////////////////////////////////////////////////////////////////////
 2233:  
 2234:         /// <summary>
 2235:         ///
 2236:         /// </summary>
 2237:         public static void Paci(ref Ia.Cl.Model.Stopwatch stopwatch,
 2238:             Ia.Ngn.Cl.Model.Business.Administration.Framework framework,
 2239:             bool enqueueIntoMsmq,
 2240:             string rawInput,
 2241:             out List<Ia.Ngn.Cl.Model.Ui.Service2> service2List,
 2242:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfGatewayRecord> agcfGatewayRecordList,
 2243:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfEndpoint> agcfEndpointList,
 2244:             out List<Ia.Ngn.Cl.Model.Huawei.Mgw> mgwList,
 2245:             out List<Ia.Ngn.Cl.Model.Huawei.Asbr> asbrList,
 2246:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.SubParty> subPartyList,
 2247:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.Subscriber> subscriberList,
 2248:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.HuSbr> huSbrList,
 2249:             out List<Ia.Ngn.Cl.Model.Huawei.Owsbr> owsbrList,
 2250:             out List<Ia.Ngn.Cl.Model.Huawei.Seruattr> seruattrList,
 2251:             out List<Ia.Ngn.Cl.Model.Ericsson.AxeSubscriber> axeSubscriberList,
 2252:             out List<Ia.Ngn.Cl.Model.Siemens.EwsdSubscriber> ewsdSubscriberList,
 2253:             out List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> nddOntList,
 2254:             out List<Ia.Ngn.Cl.Model.Ont> ontList,
 2255:             out List<Ia.Ngn.Cl.Model.OntServiceVoip> ontServiceVoipList,
 2256:             out List<Ia.Ngn.Cl.Model.OntOntPots> ontOntPotsList,
 2257:             out List<Ia.Ngn.Cl.Model.Huawei.EmsDev> emsDevList,
 2258:             out List<Ia.Ngn.Cl.Model.Huawei.EmsBoard> emsBoardList,
 2259:             out List<Ia.Ngn.Cl.Model.Huawei.EmsPort> emsPortList,
 2260:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.EmsOnt> emsOntList,
 2261:             out List<Ia.Ngn.Cl.Model.Huawei.EmsOntSipInfo> emsOntSipInfoList,
 2262:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVoipPstnUser> emsVoipPstnUserList,
 2263:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVag> emsVagList,
 2264:             out List<Ia.Ngn.Cl.Model.Event> eventList,
 2265:             out List<Ia.Ngn.Cl.Model.Access> accessList,
 2266:             out List<Ia.Ngn.Cl.Model.Ui.ServiceRequestService> serviceRequestServiceList,
 2267:             out List<Ia.Ngn.Cl.Model.ServiceRequest> serviceRequestList,
 2268:             out List<Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue> serviceRequestAdministrativeIssueList,
 2269:             out List<Ia.Ngn.Cl.Model.ServiceRequestHistory> serviceRequestHistoryList,
 2270:             out List<Ia.Ngn.Cl.Model.ServiceRequestType> serviceRequestTypeList,
 2271:             out List<Ia.Ngn.Cl.Model.ServiceRequestOnt> serviceRequestOntList,
 2272:             out List<Ia.Ngn.Cl.Model.ServiceRequestOntDetail> serviceRequestOntDetailList,
 2273:             out List<Ia.Ngn.Cl.Model.Report> reportList,
 2274:             out List<Ia.Ngn.Cl.Model.ReportHistory> reportHistoryList,
 2275:             out Ia.Cl.Model.Result result)
 2276:         {
 2277:             string input;
 2278:             List<string> accessIdList, nddOntIdList, ipList;
 2279:  
 2280:             result = new Ia.Cl.Model.Result();
 2281:  
 2282:             service2List = null;
 2283:             agcfGatewayRecordList = null;
 2284:             agcfEndpointList = null;
 2285:             mgwList = null;
 2286:             asbrList = null;
 2287:             subPartyList = null;
 2288:             subscriberList = null;
 2289:             huSbrList = null;
 2290:             owsbrList = null;
 2291:             seruattrList = null;
 2292:             axeSubscriberList = null;
 2293:             ewsdSubscriberList = null;
 2294:             nddOntList = null;
 2295:             ontList = null;
 2296:             ontServiceVoipList = null;
 2297:             ontOntPotsList = null;
 2298:             emsDevList = null;
 2299:             emsBoardList = null;
 2300:             emsPortList = null;
 2301:             emsOntList = null;
 2302:             emsOntSipInfoList = null;
 2303:             emsVoipPstnUserList = null;
 2304:             emsVagList = null;
 2305:             eventList = null;
 2306:             accessList = null;
 2307:             serviceRequestServiceList = null;
 2308:             serviceRequestList = null;
 2309:             serviceRequestAdministrativeIssueList = null;
 2310:             serviceRequestHistoryList = null;
 2311:             serviceRequestTypeList = null;
 2312:             serviceRequestOntList = null;
 2313:             serviceRequestOntDetailList = null;
 2314:             reportList = null;
 2315:             reportHistoryList = null;
 2316:  
 2317:             input = rawInput.ToLower();
 2318:  
 2319:             if (int.TryParse(input, out int paci))
 2320:             {
 2321:                 accessIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AccessIdListFromPaci(paci);
 2322:  
 2323:                 if (accessIdList.Count > 0)
 2324:                 {
 2325:                     nddOntIdList = new List<string>();
 2326:                     ipList = new List<string>();
 2327:  
 2328:                     try
 2329:                     {
 2330:                         OntNameOrPonNameOrPositionOrSerialOrPaci(ref stopwatch, enqueueIntoMsmq, nddOntIdList, accessIdList, ipList, out service2List, out agcfGatewayRecordList, out agcfEndpointList, out mgwList, out asbrList, out subPartyList, out subscriberList, out huSbrList, out owsbrList, out seruattrList, out axeSubscriberList, out ewsdSubscriberList, out nddOntList, out ontList, out ontServiceVoipList, out ontOntPotsList, out emsDevList, out emsBoardList, out emsPortList, out emsOntList, out emsOntSipInfoList, out emsVoipPstnUserList, out emsVagList, out eventList, out accessList, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out serviceRequestTypeList, out serviceRequestOntList, out serviceRequestOntDetailList, out reportList, out reportHistoryList);
 2331:                     }
 2332:                     catch (Exception ex)
 2333:                     {
 2334:                         result.AddError("Exception: Retrieval error of data for \"" + rawInput + "\": " + ex.ToString());
 2335:                     }
 2336:                 }
 2337:                 else result.AddError("Did not find any accesses with PACI number " + input.ToUpper() + " (لا يوجد أي جهاز بالرقم المدني). ");
 2338:             }
 2339:             else result.AddError("Input format is unknown (قيمة غير مفهومة). ");
 2340:         }
 2341:  
 2342:         ////////////////////////////////////////////////////////////////////////////
 2343:  
 2344:         /// <summary>
 2345:         ///
 2346:         /// </summary>
 2347:         public static void OntNameOrPonNameOrPositionOrSerialOrPaci(ref Ia.Cl.Model.Stopwatch stopwatch,
 2348:             bool enqueueIntoMsmq,
 2349:             List<string> nddOntIdList,
 2350:             List<string> accessIdList,
 2351:             List<string> ipList,
 2352:             out List<Ia.Ngn.Cl.Model.Ui.Service2> service2List,
 2353:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfGatewayRecord> agcfGatewayRecordList,
 2354:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.AgcfEndpoint> agcfEndpointList,
 2355:             out List<Ia.Ngn.Cl.Model.Huawei.Mgw> mgwList,
 2356:             out List<Ia.Ngn.Cl.Model.Huawei.Asbr> asbrList,
 2357:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.SubParty> subPartyList,
 2358:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.Subscriber> subscriberList,
 2359:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.HuSbr> huSbrList,
 2360:             out List<Ia.Ngn.Cl.Model.Huawei.Owsbr> owsbrList,
 2361:             out List<Ia.Ngn.Cl.Model.Huawei.Seruattr> seruattrList,
 2362:             out List<Ia.Ngn.Cl.Model.Ericsson.AxeSubscriber> axeSubscriberList,
 2363:             out List<Ia.Ngn.Cl.Model.Siemens.EwsdSubscriber> ewsdSubscriberList,
 2364:             out List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> nddOntList,
 2365:             out List<Ia.Ngn.Cl.Model.Ont> ontList,
 2366:             out List<Ia.Ngn.Cl.Model.OntServiceVoip> ontServiceVoipList,
 2367:             out List<Ia.Ngn.Cl.Model.OntOntPots> ontOntPotsList,
 2368:             out List<Ia.Ngn.Cl.Model.Huawei.EmsDev> emsDevList,
 2369:             out List<Ia.Ngn.Cl.Model.Huawei.EmsBoard> emsBoardList,
 2370:             out List<Ia.Ngn.Cl.Model.Huawei.EmsPort> emsPortList,
 2371:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.EmsOnt> emsOntList,
 2372:             out List<Ia.Ngn.Cl.Model.Huawei.EmsOntSipInfo> emsOntSipInfoList,
 2373:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVoipPstnUser> emsVoipPstnUserList,
 2374:             out List<Ia.Ngn.Cl.Model.Huawei.EmsVag> emsVagList,
 2375:             out List<Ia.Ngn.Cl.Model.Event> amsEventList,
 2376:             out List<Ia.Ngn.Cl.Model.Access> accessList,
 2377:             out List<Ia.Ngn.Cl.Model.Ui.ServiceRequestService> serviceRequestServiceList,
 2378:             out List<Ia.Ngn.Cl.Model.ServiceRequest> serviceRequestList,
 2379:             out List<Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue> serviceRequestAdministrativeIssueList,
 2380:             out List<Ia.Ngn.Cl.Model.ServiceRequestHistory> serviceRequestHistoryList,
 2381:             out List<Ia.Ngn.Cl.Model.ServiceRequestType> serviceRequestTypeList,
 2382:             out List<Ia.Ngn.Cl.Model.ServiceRequestOnt> serviceRequestOntList,
 2383:             out List<Ia.Ngn.Cl.Model.ServiceRequestOntDetail> serviceRequestOntDetailList,
 2384:             out List<Ia.Ngn.Cl.Model.Report> reportList,
 2385:             out List<Ia.Ngn.Cl.Model.ReportHistory> reportHistoryList)
 2386:         {
 2387:             service2List = null;
 2388:             agcfGatewayRecordList = null;
 2389:             agcfEndpointList = null;
 2390:             mgwList = null;
 2391:             asbrList = null;
 2392:             subPartyList = null;
 2393:             subscriberList = null;
 2394:             huSbrList = null;
 2395:             owsbrList = null;
 2396:             seruattrList = null;
 2397:             axeSubscriberList = null;
 2398:             ewsdSubscriberList = null;
 2399:             nddOntList = null;
 2400:             ontList = null;
 2401:             ontServiceVoipList = null;
 2402:             ontOntPotsList = null;
 2403:             emsDevList = null;
 2404:             emsBoardList = null;
 2405:             emsPortList = null;
 2406:             emsOntList = null;
 2407:             emsOntSipInfoList = null;
 2408:             emsVoipPstnUserList = null;
 2409:             emsVagList = null;
 2410:             amsEventList = null;
 2411:             accessList = null;
 2412:             serviceRequestServiceList = null;
 2413:             serviceRequestList = null;
 2414:             serviceRequestAdministrativeIssueList = null;
 2415:             serviceRequestHistoryList = null;
 2416:             serviceRequestTypeList = null;
 2417:             serviceRequestOntList = null;
 2418:             serviceRequestOntDetailList = null;
 2419:             reportList = null;
 2420:             reportHistoryList = null;
 2421:  
 2422:             var serviceList = new List<string>();
 2423:             var serviceLongList = new List<long>();
 2424:             var numberList = new List<int>();
 2425:             var partyIdList = new List<string>();
 2426:             var prividUserList = new List<string>();
 2427:             var impuSipDomainList = new List<string>();
 2428:             var sipUserNameList = new List<string>();
 2429:             var serviceWithCountryCodeList = new List<string>();
 2430:             var serviceIdList = new List<string>();
 2431:  
 2432:             var subscriberIdList = new List<string>();
 2433:             var subPartyIdList = new List<string>();
 2434:             var agcfEndpointIdList = new List<string>();
 2435:             var agcfGatewayRecordIdList = new List<int>();
 2436:             var gatewayIdList = new List<int>();
 2437:  
 2438:             var asbrIdList = new List<string>();
 2439:             var mgwIdList = new List<string>();
 2440:  
 2441:             var sbrImpuList = new List<string>();
 2442:             var owsbrImpuList = new List<string>();
 2443:  
 2444:             var ontIdList = new List<string>();
 2445:             var ontOntPotsIdList = new List<string>();
 2446:             var ontServiceVoipIdList = new List<string>();
 2447:             var ontServiceVoipIpList = new List<string>();
 2448:  
 2449:             var emsDevIdList = new List<int>();
 2450:             var emsBoardIdList = new List<string>();
 2451:             var emsPortIdList = new List<string>();
 2452:             var emsOntIdList = new List<string>();
 2453:             var emsVoipPstnUserIdList = new List<string>();
 2454:  
 2455:             stopwatch.RecordElapsedMilliseconds("C");
 2456:  
 2457:             nddOntIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.NddOntIdListFromAccessIdList(accessIdList));
 2458:             nddOntIdList = nddOntIdList.Distinct().ToList();
 2459:  
 2460:             var accessVendorList = Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.AccessVendorListByOntIdList(nddOntIdList);
 2461:             var switchVendorList = Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.SwitchVendorListByOntIdList(nddOntIdList);
 2462:  
 2463:             stopwatch.RecordElapsedMilliseconds("D");
 2464:  
 2465:             var service2IdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceIdListFromAccessIdList(accessIdList);
 2466:  
 2467:             stopwatch.RecordElapsedMilliseconds("E");
 2468:  
 2469:             Ia.Ngn.Cl.Model.Data.Maintenance.Find.UpdateServiceListFromServiceRequestServiceIdOrService2IdList(service2IdList, ref serviceList);
 2470:             Ia.Ngn.Cl.Model.Data.Maintenance.Find.SynchronizeNumberFormatLists(ref partyIdList, ref prividUserList, ref serviceList, ref numberList, ref serviceLongList, ref impuSipDomainList, ref sipUserNameList, ref serviceWithCountryCodeList, ref serviceIdList);
 2471:  
 2472:  
 2473:             stopwatch.RecordElapsedMilliseconds("F");
 2474:  
 2475:             if (accessVendorList.Contains(Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Nokia))
 2476:             {
 2477:                 ontIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntIdListFromNddOntIdList(nddOntIdList);
 2478:                 ontOntPotsIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntOntPotsIdListFromOntIdList(ontIdList);
 2479:                 ontServiceVoipIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntServiceVoipsIdListFromOntIdList(ontIdList);
 2480:                 ontServiceVoipIpList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntServiceVoipIpList(ontServiceVoipIdList);
 2481:                 //amsEventIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EventIdListFromNddOntIdList(nddOntIdList, 10);
 2482:  
 2483:                 ipList.AddRange(ontServiceVoipIpList);
 2484:                 ipList = ipList.Distinct().ToList();
 2485:             }
 2486:  
 2487:             stopwatch.RecordElapsedMilliseconds("G");
 2488:  
 2489:             var serviceListHasANumberThatIsWithinMsanDomainList = Ia.Ngn.Cl.Model.Data.Service.ServiceListHasANumberThatIsWithinMsanDomainList(serviceList);
 2490:  
 2491:             if (accessVendorList.Contains(Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Huawei) || serviceListHasANumberThatIsWithinMsanDomainList)
 2492:             {
 2493:                 emsOntIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsOntIdListFromNddOntIdList(nddOntIdList);
 2494:  
 2495:                 stopwatch.RecordElapsedMilliseconds("H");
 2496:  
 2497:                 emsVoipPstnUserIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsVoipPstnUserIdListFromEmsOntIdList(emsOntIdList);
 2498:                 emsVoipPstnUserIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsVoipPstnUserIdListFromServiceList(serviceList));
 2499:                 emsVoipPstnUserIdList = emsVoipPstnUserIdList.Distinct().ToList();
 2500:  
 2501:                 stopwatch.RecordElapsedMilliseconds("I");
 2502:  
 2503:                 emsPortIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsPortIdListFromEmsOntIdList(emsOntIdList);
 2504:                 emsPortIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsPortIdListFromEmsVoipPstnUserIdList(emsVoipPstnUserIdList));
 2505:                 emsPortIdList = emsPortIdList.Distinct().ToList();
 2506:  
 2507:                 stopwatch.RecordElapsedMilliseconds("J");
 2508:  
 2509:                 emsBoardIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsBoardIdListFromEmsPortIdList(emsPortIdList);
 2510:                 emsBoardIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsBoardIdListFromAccessIdList(accessIdList));
 2511:                 emsBoardIdList = emsBoardIdList.Distinct().ToList();
 2512:  
 2513:                 stopwatch.RecordElapsedMilliseconds("K");
 2514:  
 2515:                 emsDevIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsDevIdListFromEmsBoardIdList(emsBoardIdList);
 2516:                 emsDevIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsDevIdListFromAccessIdList(accessIdList));
 2517:                 //emsDevIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsDevIdListFromEmsVoipPstnUserIdList(emsVoipPstnUserIdList));
 2518:                 emsDevIdList = emsDevIdList.Distinct().ToList();
 2519:  
 2520:                 stopwatch.RecordElapsedMilliseconds("L");
 2521:  
 2522:                 ipList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsOntIpListFromNddOntIdList(nddOntIdList));
 2523:                 ipList = ipList.Distinct().ToList();
 2524:  
 2525:                 stopwatch.RecordElapsedMilliseconds("M");
 2526:  
 2527:                 Ia.Ngn.Cl.Model.Data.Maintenance.Find.CollectServiceListFromEmsOntSipInfoListAndEmsVoipPstnUserListByEmsOntIdList(emsOntIdList, ref serviceList);
 2528:                 Ia.Ngn.Cl.Model.Data.Maintenance.Find.SynchronizeNumberFormatLists(ref partyIdList, ref prividUserList, ref serviceList, ref numberList, ref serviceLongList, ref impuSipDomainList, ref sipUserNameList, ref serviceWithCountryCodeList, ref serviceIdList);
 2529:             }
 2530:  
 2531:             stopwatch.RecordElapsedMilliseconds("N");
 2532:  
 2533:             if (switchVendorList.Contains(Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Nokia))
 2534:             {
 2535:                 subscriberIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.SubscriberIdListFromPartyIdList(partyIdList);
 2536:                 subPartyIdList = subscriberIdList; // Ia.Ngn.Cl.Model.Data.Maintenance.Find.SubscriberIdListFromPartyIdList(partyIdList);
 2537:                 agcfEndpointIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AgcfEndpointIdListFromPrividUserList(prividUserList);
 2538:  
 2539:                 stopwatch.RecordElapsedMilliseconds("O");
 2540:  
 2541:                 agcfGatewayRecordIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AgcfGatewayRecordIdListFromAgcfEndpointIdList(agcfEndpointIdList);
 2542:                 agcfGatewayRecordIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.AgcfGatewayRecordIdListFromIpList(ipList));
 2543:                 agcfGatewayRecordIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.AgcfGatewayRecordIdListFromNddOntIdList(nddOntIdList));
 2544:                 agcfGatewayRecordIdList = agcfGatewayRecordIdList.Distinct().ToList();
 2545:  
 2546:                 stopwatch.RecordElapsedMilliseconds("O4");
 2547:  
 2548:                 gatewayIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.GatewayIdFromAgcfGatewayRecordIdListList(agcfGatewayRecordIdList);
 2549:  
 2550:                 Ia.Ngn.Cl.Model.Data.Maintenance.Find.SynchronizeNumberFormatLists(ref partyIdList, ref prividUserList, ref serviceList, ref numberList, ref serviceLongList, ref impuSipDomainList, ref sipUserNameList, ref serviceWithCountryCodeList, ref serviceIdList);
 2551:             }
 2552:  
 2553:             stopwatch.RecordElapsedMilliseconds("P");
 2554:  
 2555:             var serviceRequestServiceIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestServiceIdListFromAccessIdList(accessIdList);
 2556:  
 2557:             stopwatch.RecordElapsedMilliseconds("Q");
 2558:  
 2559:             Ia.Ngn.Cl.Model.Data.Maintenance.Find.UpdateServiceListFromServiceRequestServiceIdOrService2IdList(serviceRequestServiceIdList, ref serviceList);
 2560:             Ia.Ngn.Cl.Model.Data.Maintenance.Find.SynchronizeNumberFormatLists(ref partyIdList, ref prividUserList, ref serviceList, ref numberList, ref serviceLongList, ref impuSipDomainList, ref sipUserNameList, ref serviceWithCountryCodeList, ref serviceIdList);
 2561:  
 2562:             stopwatch.RecordElapsedMilliseconds("R");
 2563:  
 2564:             serviceRequestServiceIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestServiceIdListFromServiceIdList(serviceIdList));
 2565:             serviceRequestServiceIdList = serviceRequestServiceIdList.Distinct().ToList();
 2566:  
 2567:             stopwatch.RecordElapsedMilliseconds("S");
 2568:  
 2569:             var reportIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ReportIdListFromServiceList(serviceList);
 2570:             reportIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.ReportIdListFromAccessIdList(accessIdList));
 2571:  
 2572:             stopwatch.RecordElapsedMilliseconds("T");
 2573:  
 2574:             service2IdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.Service2IdListFromServiceIdList(serviceIdList));
 2575:             service2IdList = service2IdList.Distinct().ToList();
 2576:  
 2577:             stopwatch.RecordElapsedMilliseconds("U");
 2578:  
 2579:             var serviceRequestIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestIdListFromServiceAndRelatedChangedAndChangedToServiceList(serviceList);
 2580:             serviceRequestIdList.AddRange(Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestIdListFromServiceRequestServiceIdList(serviceRequestServiceIdList));
 2581:             serviceRequestIdList = serviceRequestIdList.Distinct().ToList();
 2582:  
 2583:             stopwatch.RecordElapsedMilliseconds("V");
 2584:  
 2585:             var serviceRequestAdministrativeIssueIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestAdministrativeIssueIdListFromServiceIdList(serviceIdList);
 2586:  
 2587:             stopwatch.RecordElapsedMilliseconds("W");
 2588:  
 2589:             var serviceRequestHistoryIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestHistoryIdListFromServiceAndRelatedChangedAndChangedToServiceList(serviceList);
 2590:             var serviceRequestTypeIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestTypeIdListFromServiceRequestIdList(serviceRequestIdList);
 2591:             var serviceRequestOntIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestOntIdListFromAccessIdList(accessIdList);
 2592:  
 2593:             if (switchVendorList.Contains(Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Huawei))
 2594:             {
 2595:                 if (Ia.Ngn.Cl.Model.Data.Service.ServiceListHasANumberThatIsWithinSoftXServer(serviceList))
 2596:                 {
 2597:                     stopwatch.RecordElapsedMilliseconds("X");
 2598:                     asbrIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AsbrIdListFromImpuSipDomainList(impuSipDomainList);
 2599:                     stopwatch.RecordElapsedMilliseconds("X1");
 2600:                     mgwIdList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.MgwIdListFromAsbrIdList(asbrIdList);
 2601:                     stopwatch.RecordElapsedMilliseconds("X2");
 2602:                     mgwIdList = mgwIdList.Union(Ia.Ngn.Cl.Model.Data.Maintenance.Find.MgwIdListFromIpList(ipList)).Distinct().ToList(); ;
 2603:                     stopwatch.RecordElapsedMilliseconds("X3");
 2604:                 }
 2605:  
 2606:                 sbrImpuList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.SbrImpuListFromImpuSipDomainList(impuSipDomainList);
 2607:                 owsbrImpuList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OwSbrImpuListFromImpuSipDomainList(impuSipDomainList);
 2608:  
 2609:                 Ia.Ngn.Cl.Model.Data.Maintenance.Find.SynchronizeNumberFormatLists(ref partyIdList, ref prividUserList, ref serviceList, ref numberList, ref serviceLongList, ref impuSipDomainList, ref sipUserNameList, ref serviceWithCountryCodeList, ref serviceIdList);
 2610:             }
 2611:  
 2612:             stopwatch.RecordElapsedMilliseconds("Z");
 2613:  
 2614:             /////////////////////////////////
 2615:  
 2616:             agcfGatewayRecordList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AgcfGatewayRecordList(agcfGatewayRecordIdList);
 2617:             agcfEndpointList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AgcfEndpointList(agcfEndpointIdList);
 2618:             subPartyList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.SubPartyList(subPartyIdList);
 2619:             subscriberList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.SubscriberList(subscriberIdList);
 2620:  
 2621:             mgwList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.MgwList(mgwIdList);
 2622:             asbrList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AsbrList(asbrIdList);
 2623:  
 2624:             huSbrList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.HuSbrList(sbrImpuList);
 2625:             owsbrList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OwsbrList(owsbrImpuList);
 2626:  
 2627:             if (Ia.Ngn.Cl.Model.Data.Service.ServiceListHasANumberThatIsWithinPstnThatUsesNpServerDomainList(serviceList))
 2628:             {
 2629:                 seruattrList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.SeruattrListFromServiceIdList(serviceIdList);
 2630:             }
 2631:  
 2632:             axeSubscriberList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AxeSubscriberListFromServiceIdList(serviceIdList);
 2633:             ewsdSubscriberList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EwsdSubscriberListFromServiceIdList(serviceIdList);
 2634:  
 2635:             ontList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntList(ontIdList);
 2636:             ontOntPotsList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntOntPotsListFromOntOntPotsIdList(ontOntPotsIdList);
 2637:             ontServiceVoipList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.OntServiceVoipList(ontServiceVoipIdList);
 2638:             //amsEventList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EventList(amsEventIdList);
 2639:  
 2640:             emsDevList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsDevList(emsDevIdList);
 2641:             emsBoardList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsBoardList(emsBoardIdList);
 2642:             emsPortList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsPortList(emsPortIdList);
 2643:             emsOntList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsOntList(emsOntIdList);
 2644:  
 2645:             emsOntSipInfoList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsOntSipInfoListFromEmsOntIdListAndService(emsOntIdList, sipUserNameList);
 2646:             emsVoipPstnUserList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsVoipPstnUserList(emsVoipPstnUserIdList);
 2647:             emsVagList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.VagListFromEmsOntIdList(emsOntIdList);
 2648:  
 2649:             /*
 2650:             emsOntSipInfoList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsOntSipInfoListFromEmsOntIdList(emsOntIdList);
 2651:             emsVoipPstnUserList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.EmsVoipPstnUserListFromEmsOntIdList(emsOntIdList);
 2652:             emsVagList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.VagListFromEmsOntIdList(emsOntIdList);
 2653:             */
 2654:  
 2655:             service2List = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceList(service2IdList);
 2656:  
 2657:             nddOntList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.NddOntList(nddOntIdList);
 2658:             accessList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AccessList(accessIdList);
 2659:  
 2660:             serviceRequestServiceList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestServiceList(serviceRequestServiceIdList);
 2661:  
 2662:             serviceRequestList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestList(serviceRequestIdList);
 2663:             serviceRequestAdministrativeIssueList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestAdministrativeIssueList(serviceRequestAdministrativeIssueIdList);
 2664:             serviceRequestHistoryList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestHistoryList(serviceRequestHistoryIdList);
 2665:             serviceRequestTypeList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestTypeList(serviceRequestTypeIdList);
 2666:             serviceRequestOntList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestOntList(serviceRequestOntIdList);
 2667:             serviceRequestOntDetailList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestOntDetailList(serviceRequestOntIdList);
 2668:  
 2669:             stopwatch.RecordElapsedMilliseconds("ZA");
 2670:  
 2671:             reportList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ReportList(reportIdList);
 2672:  
 2673:             if (enqueueIntoMsmq)
 2674:             {
 2675:                 foreach (var v in serviceList) Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, Ia.Ngn.Cl.Model.Business.Msmq.Process.ReadService, v);
 2676:                 foreach (var v in nddOntList) Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, Ia.Ngn.Cl.Model.Business.Msmq.Process.ReadAccess, v.Access.Name);
 2677:                 foreach (var v in gatewayIdList) Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, Ia.Ngn.Cl.Model.Business.Msmq.Process.ReadGateway, v);
 2678:             }
 2679:         }
 2680:  
 2681:         ////////////////////////////////////////////////////////////////////////////
 2682:         ////////////////////////////////////////////////////////////////////////////
 2683:  
 2684:         /// <summary>
 2685:         ///
 2686:         /// </summary>
 2687:         public static void MigrationReview(Ia.Ngn.Cl.Model.Business.Administration.Framework framework, string accessName, List<string> serviceList,
 2688:             out List<Ia.Ngn.Cl.Model.Ui.Service2> service2List,
 2689:             out List<Ia.Ngn.Cl.Model.Ui.Nokia.Subscriber> subscriberList,
 2690:             out List<Ia.Ngn.Cl.Model.Ui.Huawei.HuSbr> huSbrList,
 2691:             out List<Ia.Ngn.Cl.Model.Ericsson.AxeSubscriber> axeSubscriberList,
 2692:             out List<Ia.Ngn.Cl.Model.Siemens.EwsdSubscriber> ewsdSubscriberList,
 2693:             out List<Ia.Ngn.Cl.Model.Access> accessList,
 2694:             out List<Ia.Ngn.Cl.Model.Ui.ServiceRequestService> serviceRequestServiceList,
 2695:             out List<Ia.Ngn.Cl.Model.ServiceRequest> serviceRequestList,
 2696:             out List<Ia.Ngn.Cl.Model.ServiceRequestAdministrativeIssue> serviceRequestAdministrativeIssueList,
 2697:             out List<Ia.Ngn.Cl.Model.ServiceRequestHistory> serviceRequestHistoryList,
 2698:             out List<Ia.Ngn.Cl.Model.ServiceRequestOnt> serviceRequestOntList,
 2699:             out Ia.Cl.Model.Result result)
 2700:         {
 2701:             string input;
 2702:  
 2703:             service2List = null;
 2704:             subscriberList = null;
 2705:             huSbrList = null;
 2706:             axeSubscriberList = null;
 2707:             ewsdSubscriberList = null;
 2708:             accessList = null;
 2709:             serviceRequestServiceList = null;
 2710:             serviceRequestList = null;
 2711:             serviceRequestAdministrativeIssueList = null;
 2712:             serviceRequestHistoryList = null;
 2713:             serviceRequestOntList = null;
 2714:  
 2715:             var stopwatch = new Ia.Cl.Model.Stopwatch();
 2716:  
 2717:             result = new Ia.Cl.Model.Result();
 2718:  
 2719:             if (!string.IsNullOrEmpty(accessName))
 2720:             {
 2721:                 accessName = accessName.Trim().ToUpper();
 2722:                 input = accessName;
 2723:  
 2724:                 if (input.Length > 0)
 2725:                 {
 2726:                     Ia.Ngn.Cl.Model.Business.Maintenance.Find.OntName(ref stopwatch, framework, true, accessName, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out accessList, out _, out _, out _, out _, out _, out serviceRequestOntList, out _, out _, out _, out Ia.Cl.Model.Result result1);
 2727:  
 2728:                     Ia.Ngn.Cl.Model.Business.Maintenance.Find.Number(ref stopwatch, framework, true, serviceList, out service2List, out _, out _, out _, out _, out _, out subscriberList, out huSbrList, out _, out _, out axeSubscriberList, out ewsdSubscriberList, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out _, out serviceRequestServiceList, out serviceRequestList, out serviceRequestAdministrativeIssueList, out serviceRequestHistoryList, out _, out _, out _, out _, out _, out Ia.Cl.Model.Result result2);
 2729:  
 2730:                     if (
 2731:                     (service2List == null || service2List != null && service2List.Count == 0) &&
 2732:                     (subscriberList == null || subscriberList != null && subscriberList.Count == 0) &&
 2733:                     (huSbrList == null || huSbrList != null && huSbrList.Count == 0) &&
 2734:                     (axeSubscriberList == null || axeSubscriberList != null && axeSubscriberList.Count == 0) &&
 2735:                     (ewsdSubscriberList == null || ewsdSubscriberList != null && ewsdSubscriberList.Count == 0) &&
 2736:                     (accessList == null || accessList != null && accessList.Count == 0) &&
 2737:                     (serviceRequestServiceList == null || serviceRequestServiceList != null && serviceRequestServiceList.Count == 0) &&
 2738:                     (serviceRequestList == null || serviceRequestList != null && serviceRequestList.Count == 0) &&
 2739:                     (serviceRequestAdministrativeIssueList == null || serviceRequestAdministrativeIssueList != null && serviceRequestAdministrativeIssueList.Count == 0) &&
 2740:                     (serviceRequestHistoryList == null || serviceRequestHistoryList != null && serviceRequestHistoryList.Count == 0) &&
 2741:                     (serviceRequestOntList == null || serviceRequestOntList != null && serviceRequestOntList.Count == 0))
 2742:                     {
 2743:                         if (result.IsSuccessful)
 2744:                         {
 2745:                             result.AddWarning("No data records were found for \"" + accessName + "\" (لا توجد معلومات عن القيمة المعطاة). ");
 2746:                         }
 2747:                         else { };// result.AddError(result.Error);
 2748:                     }
 2749:                     else
 2750:                     {
 2751:                         /*
 2752:                         if (result.IsSuccessful)
 2753:                         {
 2754:                             if (!string.IsNullOrEmpty(result.Message)) result.AddSuccess(result.Message);
 2755:                         }
 2756:                         //else result.AddError(result.Error);
 2757:                         */
 2758:                     }
 2759:                 }
 2760:                 else result.AddError("No input was entered (لم يتم إدخال أي شيء). ");
 2761:             }
 2762:             else result.AddError("Input is null or empty (لم يتم إدخال أي شيء). ");
 2763:         }
 2764:  
 2765:         ////////////////////////////////////////////////////////////////////////////
 2766:  
 2767:         /// <summary>
 2768:         ///
 2769:         /// </summary>
 2770:         public static void BulkSearch(string rawInput, out List<Ia.Ngn.Cl.Model.Business.ServiceNddOntAccessName> serviceAccessNameList, out Ia.Cl.Model.Result result)
 2771:         {
 2772:             bool inputIsValid;
 2773:             string input;
 2774:  
 2775:             //inputIsValid = false;
 2776:             //result = null;
 2777:  
 2778:             serviceAccessNameList = null;
 2779:  
 2780:             result = new Ia.Cl.Model.Result();
 2781:  
 2782:             if (!string.IsNullOrEmpty(rawInput))
 2783:             {
 2784:                 rawInput = rawInput.Trim();
 2785:                 input = rawInput;
 2786:  
 2787:                 if (input.Length > 0)
 2788:                 {
 2789:                     inputIsValid = true;
 2790:  
 2791:                     Ia.Ngn.Cl.Model.Business.Maintenance.Find.NumberStringListToAccessNameList(rawInput, out serviceAccessNameList, out result);
 2792:  
 2793:  
 2794:                     //var v = Ia.Ngn.Cl.Model.Data.Access.IdToAccessDictionary;
 2795:  
 2796:                     if (inputIsValid)
 2797:                     {
 2798:                         if (serviceAccessNameList == null || serviceAccessNameList != null && serviceAccessNameList.Count == 0)
 2799:                         {
 2800:                             if (result.IsSuccessful)
 2801:                             {
 2802:                                 result.AddWarning("No data records were found for \"" + rawInput + "\" (لا توجد معلومات عن القيمة أو القيم المعطاة)");
 2803:                             }
 2804:                             else { };// result.AddError(result.Error);
 2805:                         }
 2806:                         else
 2807:                         {
 2808:                             if (result.IsSuccessful)
 2809:                             {
 2810:                                 if (!string.IsNullOrEmpty(result.Message)) result.AddSuccess(result.Message);
 2811:                             }
 2812:                             //else result.AddError(result.Error);
 2813:                         }
 2814:                     }
 2815:                     else result.AddError("Input format is unknown (قيمة غير مفهومة)");
 2816:                 }
 2817:                 else result.AddError("No input was entered (لم يتم إدخال أي شيء)");
 2818:             }
 2819:             else result.AddError("Input is null or empty (لم يتم إدخال أي شيء)");
 2820:         }
 2821:  
 2822:         ////////////////////////////////////////////////////////////////////////////
 2823:  
 2824:         /// <summary>
 2825:         ///
 2826:         /// </summary>
 2827:         public static void BulkSearch(string rawInput, out List<Ia.Ngn.Cl.Model.Business.ServiceNddOntAccessNameAddress> serviceAccessNameAddressList, out Ia.Cl.Model.Result result)
 2828:         {
 2829:             bool inputIsValid;
 2830:             string input;
 2831:  
 2832:             //inputIsValid = false;
 2833:             //result = null;
 2834:  
 2835:             serviceAccessNameAddressList = null;
 2836:  
 2837:             result = new Ia.Cl.Model.Result();
 2838:  
 2839:             if (!string.IsNullOrEmpty(rawInput))
 2840:             {
 2841:                 rawInput = rawInput.Trim();
 2842:                 input = rawInput.ToLower();
 2843:  
 2844:                 if (input.Length > 0)
 2845:                 {
 2846:                     inputIsValid = true;
 2847:  
 2848:                     Ia.Ngn.Cl.Model.Business.Maintenance.Find.NumberStringListToAccessNameAddressList(rawInput, out serviceAccessNameAddressList, out result);
 2849:  
 2850:                     if (inputIsValid)
 2851:                     {
 2852:                         if (serviceAccessNameAddressList == null || serviceAccessNameAddressList != null && serviceAccessNameAddressList.Count == 0)
 2853:                         {
 2854:                             if (result.IsSuccessful)
 2855:                             {
 2856:                                 result.AddWarning("No data records were found for \"" + rawInput + "\" (لا توجد معلومات عن القيمة أو القيم المعطاة). ");
 2857:                             }
 2858:                             else { };// result.AddError(result.Error);
 2859:                         }
 2860:                         else
 2861:                         {
 2862:                             if (result.IsSuccessful)
 2863:                             {
 2864:                                 if (!string.IsNullOrEmpty(result.Message)) result.AddSuccess(result.Message);
 2865:                             }
 2866:                             //else result.AddError(result.Error);
 2867:                         }
 2868:                     }
 2869:                     else result.AddError("Input format is unknown (قيمة غير مفهومة). ");
 2870:                 }
 2871:                 else result.AddError("No input was entered (لم يتم إدخال أي شيء). ");
 2872:             }
 2873:             else result.AddError("Input is null or empty (لم يتم إدخال أي شيء). ");
 2874:         }
 2875:  
 2876:         ////////////////////////////////////////////////////////////////////////////
 2877:  
 2878:         /// <summary>
 2879:         ///
 2880:         /// </summary>
 2881:         public static void NumberStringListToAccessNameList(string rawInput, out List<Ia.Ngn.Cl.Model.Business.ServiceNddOntAccessName> serviceAccessNameList, out Ia.Cl.Model.Result result)
 2882:         {
 2883:             string input, serviceId;
 2884:             int number;
 2885:             string numberString;
 2886:             Dictionary<string, string> serviceToAccessNameDictionary;
 2887:             MatchCollection matchCollection;
 2888:             Ia.Ngn.Cl.Model.Business.ServiceNddOntAccessName serviceAccessName;
 2889:  
 2890:             result = new Ia.Cl.Model.Result();
 2891:  
 2892:             serviceAccessNameList = new List<Ia.Ngn.Cl.Model.Business.ServiceNddOntAccessName>();
 2893:  
 2894:             input = rawInput.ToLower();
 2895:  
 2896:             serviceToAccessNameDictionary = Ia.Ngn.Cl.Model.Data.Service2.ServiceIdToAccessNameDictionary;
 2897:  
 2898:             matchCollection = Regex.Matches(input, @"\d{8}");
 2899:  
 2900:             if (matchCollection.Count > 0)
 2901:             {
 2902:                 foreach (Match match in matchCollection)
 2903:                 {
 2904:                     numberString = match.Value;
 2905:  
 2906:                     number = int.Parse(numberString);
 2907:  
 2908:                     if (Ia.Ngn.Cl.Model.Business.Service.ServiceHasEightDigitsAndIsWithinAllowedDomainList(number))
 2909:                     {
 2910:                         serviceAccessName = new Ia.Ngn.Cl.Model.Business.ServiceNddOntAccessName();
 2911:  
 2912:                         serviceId = numberString + ":1:965";
 2913:  
 2914:                         serviceAccessName.Service = number.ToString();
 2915:  
 2916:                         if (serviceToAccessNameDictionary.ContainsKey(serviceId))
 2917:                         {
 2918:                             serviceAccessName.AccessName = serviceToAccessNameDictionary[serviceId];
 2919:                         }
 2920:  
 2921:                         serviceAccessNameList.Add(serviceAccessName);
 2922:                     }
 2923:                     else
 2924:                     {
 2925:                         result.AddWarning("The number \"" + numberString + "\" does not belong to the network (الرقم لا ينتمي للشبكة).");
 2926:                     }
 2927:                 }
 2928:             }
 2929:             else
 2930:             {
 2931:                 result.AddError("No input was entered (لم يتم إدخال أي شيء). ");
 2932:             }
 2933:         }
 2934:  
 2935:         ////////////////////////////////////////////////////////////////////////////
 2936:  
 2937:         /// <summary>
 2938:         ///
 2939:         /// </summary>
 2940:         public static void NumberStringListToAccessNameAddressList(string rawInput, out List<Ia.Ngn.Cl.Model.Business.ServiceNddOntAccessNameAddress> serviceAccessNameAddressList, out Ia.Cl.Model.Result result)
 2941:         {
 2942:             string input, serviceId;
 2943:             int number;
 2944:             string numberString;
 2945:             MatchCollection matchCollection;
 2946:             Ia.Ngn.Cl.Model.Business.ServiceNddOntAccessNameAddress serviceAccessNameAddress;
 2947:  
 2948:             result = new Ia.Cl.Model.Result();
 2949:  
 2950:             serviceAccessNameAddressList = new List<Ia.Ngn.Cl.Model.Business.ServiceNddOntAccessNameAddress>();
 2951:  
 2952:             input = rawInput.ToLower();
 2953:  
 2954:             var serviceToAccessNameDictionary = Ia.Ngn.Cl.Model.Data.Service2.ServiceIdToAccessNameDictionary;
 2955:             var serviceIdToAccessIdDictionary = Ia.Ngn.Cl.Model.Data.Service2.ServiceIdToAccessIdDictionary;
 2956:             var accessIdToAccessDictionary = Ia.Ngn.Cl.Model.Data.Access.IdToAccessDictionary;
 2957:  
 2958:             matchCollection = Regex.Matches(input, @"\d{8}");
 2959:  
 2960:             if (matchCollection.Count > 0)
 2961:             {
 2962:                 foreach (Match match in matchCollection)
 2963:                 {
 2964:                     numberString = match.Value;
 2965:  
 2966:                     number = int.Parse(numberString);
 2967:  
 2968:                     if (Ia.Ngn.Cl.Model.Business.Service.ServiceHasEightDigitsAndIsWithinAllowedDomainList(number))
 2969:                     {
 2970:                         serviceAccessNameAddress = new Ia.Ngn.Cl.Model.Business.ServiceNddOntAccessNameAddress();
 2971:  
 2972:                         serviceId = numberString + ":1:965";
 2973:  
 2974:                         serviceAccessNameAddress.Service = number.ToString();
 2975:  
 2976:                         if (serviceToAccessNameDictionary.ContainsKey(serviceId))
 2977:                         {
 2978:                             serviceAccessNameAddress.AccessName = serviceToAccessNameDictionary[serviceId];
 2979:                         }
 2980:  
 2981:                         if (serviceIdToAccessIdDictionary.ContainsKey(serviceId))
 2982:                         {
 2983:                             var accessId = serviceIdToAccessIdDictionary[serviceId];
 2984:  
 2985:                             if (accessIdToAccessDictionary.ContainsKey(accessId))
 2986:                             {
 2987:                                 serviceAccessNameAddress.Address = accessIdToAccessDictionary[accessId].Address;
 2988:                             }
 2989:                         }
 2990:  
 2991:                         serviceAccessNameAddressList.Add(serviceAccessNameAddress);
 2992:                     }
 2993:                     else
 2994:                     {
 2995:                         result.AddWarning("The number \"" + numberString + "\" does not belong to the network (الرقم لا ينتمي للشبكة).");
 2996:                     }
 2997:                 }
 2998:             }
 2999:             else
 3000:             {
 3001:                 result.AddError("No input was entered (لم يتم إدخال أي شيء). ");
 3002:             }
 3003:         }
 3004:  
 3005:         ////////////////////////////////////////////////////////////////////////////
 3006:         ////////////////////////////////////////////////////////////////////////////
 3007:  
 3008:         /// <summary>
 3009:         ///
 3010:         /// </summary>
 3011:         public static void AreaBlock(string rawInput, out List<Ia.Ngn.Cl.Model.Access> accessList, out Ia.Cl.Model.Result result)
 3012:         {
 3013:             string input;
 3014:  
 3015:             result = new Ia.Cl.Model.Result();
 3016:             accessList = null;
 3017:  
 3018:             input = rawInput.ToLower();
 3019:  
 3020:             try
 3021:             {
 3022:                 // note that this returns 0 int values for missing fields
 3023:                 ExtractAreaBlockFromSearchAreaBlockTerm(input, out Ia.Ngn.Cl.Model.Business.Service.KuwaitOfnArea kuwaitOfnArea, out string block);
 3024:  
 3025:                 if (kuwaitOfnArea != null)
 3026:                 {
 3027:                     //using (var db = new Ia.Ngn.Cl.Model.Ngn())
 3028:                     //{
 3029:                     accessList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AccessListFromAreaAndBlock(kuwaitOfnArea.Id, block);
 3030:                     //}
 3031:                 }
 3032:                 else
 3033:                 {
 3034:                     result.AddError("The area of \"" + rawInput + "\" is unrecognized. ");
 3035:                 }
 3036:             }
 3037:             catch (Exception ex)
 3038:             {
 3039:                 result.AddError("Exception: Retrieval error of data for \"" + rawInput + "\": " + ex.ToString());
 3040:             }
 3041:         }
 3042:  
 3043:         ////////////////////////////////////////////////////////////////////////////
 3044:  
 3045:         /// <summary>
 3046:         ///
 3047:         /// </summary>
 3048:         public static void Address(string rawInput, out List<Ia.Ngn.Cl.Model.Access> accessList, out Ia.Cl.Model.Result result)
 3049:         {
 3050:             string input;
 3051:  
 3052:             result = new Ia.Cl.Model.Result();
 3053:             accessList = null;
 3054:  
 3055:             input = rawInput.ToLower();
 3056:  
 3057:             try
 3058:             {
 3059:                 // note that this returns 0 int values for missing fields
 3060:                 ExtractAddressFromSearchAddressTerm(input, out Ia.Ngn.Cl.Model.Business.Service.KuwaitOfnArea kuwaitOfnArea, out string block, out int street, out int premisesOld, out int premisesNew);
 3061:  
 3062:                 if (kuwaitOfnArea != null)
 3063:                 {
 3064:                     accessList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.AccessListFromAddress(kuwaitOfnArea.Id, block, street, premisesOld, premisesNew);
 3065:                 }
 3066:                 else
 3067:                 {
 3068:                     result.AddError("The area of \"" + rawInput + "\" is unrecognized. ");
 3069:                 }
 3070:             }
 3071:             catch (Exception ex)
 3072:             {
 3073:                 result.AddError("Exception: Retrieval error of data for \"" + rawInput + "\": " + ex.ToString());
 3074:             }
 3075:         }
 3076:  
 3077:         ////////////////////////////////////////////////////////////////////////////
 3078:  
 3079:         /// <summary>
 3080:         ///
 3081:         /// </summary>
 3082:         public static void CustomerName(string rawInput, out List<Ia.Ngn.Cl.Model.ServiceRequest> serviceRequestList, out Ia.Cl.Model.Result result)
 3083:         {
 3084:             string input;
 3085:             int maxNumberOfResults = 1000;
 3086:             string customerName;
 3087:  
 3088:             result = new Ia.Cl.Model.Result();
 3089:             serviceRequestList = null;
 3090:  
 3091:             input = rawInput.ToLower();
 3092:  
 3093:             try
 3094:             {
 3095:                 //using (var db = new Ia.Ngn.Cl.Model.Ngn())
 3096:                 //{
 3097:                 customerName = Ia.Ngn.Cl.Model.Business.Default.CorrectCustomerName(input);
 3098:  
 3099:                 //if (!string.IsNullOrEmpty(customerName))
 3100:                 //{
 3101:                 serviceRequestList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestListForCustomerName(customerName, maxNumberOfResults);
 3102:  
 3103:                 if (serviceRequestList.Count >= maxNumberOfResults) result.AddSuccess("The search returned " + maxNumberOfResults + " or more results. The output is limited to " + maxNumberOfResults + ". ");
 3104:                 //}
 3105:                 //else
 3106:                 //{
 3107:                 //    serviceRequestList = null;
 3108:                 //}
 3109:                 //}
 3110:             }
 3111:             catch (Exception ex)
 3112:             {
 3113:                 result.AddError("Exception: Retrieval error of data for \"" + rawInput + "\": " + ex.ToString());
 3114:             }
 3115:         }
 3116:  
 3117:         ////////////////////////////////////////////////////////////////////////////
 3118:  
 3119:         /// <summary>
 3120:         ///
 3121:         /// </summary>
 3122:         public static void CustomerId(string rawInput, out List<Ia.Ngn.Cl.Model.ServiceRequest> serviceRequestList, out Ia.Cl.Model.Result result)
 3123:         {
 3124:             string input;
 3125:             int customerId, maxNumberOfResults = 10000;
 3126:  
 3127:             result = new Ia.Cl.Model.Result();
 3128:             serviceRequestList = null;
 3129:  
 3130:             input = rawInput.ToLower();
 3131:  
 3132:             try
 3133:             {
 3134:                 using (var db = new Ia.Ngn.Cl.Model.Ngn())
 3135:                 {
 3136:                     customerId = int.Parse(input);
 3137:  
 3138:                     serviceRequestList = Ia.Ngn.Cl.Model.Data.Maintenance.Find.ServiceRequestListForCustomerId(customerId, maxNumberOfResults);
 3139:  
 3140:                     if (serviceRequestList.Count >= maxNumberOfResults) result.AddSuccess("The search returned " + maxNumberOfResults + " or more results. The output is limited to " + maxNumberOfResults + ". ");
 3141:                 }
 3142:             }
 3143:             catch (Exception ex)
 3144:             {
 3145:                 result.AddError("Exception: Retrieval error of data for \"" + rawInput + "\": " + ex.ToString());
 3146:             }
 3147:         }
 3148:  
 3149:         ////////////////////////////////////////////////////////////////////////////
 3150:  
 3151:         /// <summary>
 3152:         /// Extract area,block from search term like "SLA,2" {kuwaitAreaSymbol,block}
 3153:         /// </summary>
 3154:         private static void ExtractAreaBlockFromSearchAreaBlockTerm(string addressTerm, out Ia.Ngn.Cl.Model.Business.Service.KuwaitOfnArea kuwaitOfnArea, out string block)
 3155:         {
 3156:             //int i;
 3157:             string kuwaitOfnAreaSymbol;
 3158:             Match match;
 3159:  
 3160:             // "SLA,2"
 3161:             match = Regex.Match(addressTerm, @"^([a-zA-Z]{3}),(\d{1,3})$");
 3162:  
 3163:             kuwaitOfnAreaSymbol = match.Groups[1].Value.ToUpper();
 3164:             block = match.Groups[2].Value;
 3165:  
 3166:             kuwaitOfnArea = Ia.Ngn.Cl.Model.Data.Service.KuwaitOfnAreaBySymbol(kuwaitOfnAreaSymbol);
 3167:         }
 3168:  
 3169:         ////////////////////////////////////////////////////////////////////////////
 3170:  
 3171:         /// <summary>
 3172:         /// Extract address from search term like "SLA,2,202,339,36" {kuwaitAreaSymbol,block,street,old premises,new premises}
 3173:         /// </summary>
 3174:         private static void ExtractAddressFromSearchAddressTerm(string addressTerm, out Ia.Ngn.Cl.Model.Business.Service.KuwaitOfnArea kuwaitOfnArea, out string block, out int street, out int premisesOld, out int premisesNew)
 3175:         {
 3176:             string kuwaitOfnAreaSymbol;
 3177:             Match match;
 3178:  
 3179:             // "SLA,2,202,339,36"
 3180:             match = Regex.Match(addressTerm, @"^([a-zA-Z]{3}),(\d{0,3}),(\d{0,3}),(\d{0,3}),(\d{0,3})$");
 3181:  
 3182:             kuwaitOfnAreaSymbol = match.Groups[1].Value.ToUpper();
 3183:             block = match.Groups[2].Value;
 3184:             street = int.TryParse(match.Groups[3].Value, out int i) ? i : 0;
 3185:             premisesOld = int.TryParse(match.Groups[4].Value, out i) ? i : 0;
 3186:             premisesNew = int.TryParse(match.Groups[5].Value, out i) ? i : 0;
 3187:  
 3188:             kuwaitOfnArea = Ia.Ngn.Cl.Model.Data.Service.KuwaitOfnAreaBySymbol(kuwaitOfnAreaSymbol);
 3189:         }
 3190:  
 3191:         ////////////////////////////////////////////////////////////////////////////
 3192:         ////////////////////////////////////////////////////////////////////////////   
 3193:     }
 3194:  
 3195:     ////////////////////////////////////////////////////////////////////////////
 3196:     ////////////////////////////////////////////////////////////////////////////   
 3197: }