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

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

Fixed Telecommunications Network's Operations Support System Management Intranet (FTN OSS) support class for Fixed Telecommunications Network (FTN) business model

    1: using System;
    2: using System.Collections.Generic;
    3: using System.Linq;
    4:  
    5: namespace Ia.Ftn.Cl.Models.Business
    6: {
    7:     ////////////////////////////////////////////////////////////////////////////
    8:  
    9:     /// <summary publish="true">
   10:     /// Fixed Telecommunications Network's Operations Support System Management Intranet (FTN OSS) support class for Fixed Telecommunications Network (FTN) business model
   11:     /// </summary>
   12:     /// 
   13:     /// <value>
   14:     ///   <appSettings>
   15:     ///     <add key="imsHuaweiServerHost" value="https://*" />
   16:     ///     <add key="imsHuaweiServerPort" value="*" />
   17:     ///     <add key="imsHuaweiServerServiceUrl" value="*" />
   18:     ///     <add key="imsHuaweiServerUser" value="*" />
   19:     ///     <add key="imsHuaweiServerUserPassword" value="*" />
   20:     ///   </appSettings>
   21:     /// </value>
   22:     /// 
   23:     /// <remarks> 
   24:     /// Copyright © 2014-2017 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   25:     /// </remarks> 
   26:     public class Ims
   27:     {
   28:         public class ImsBasicService
   29:         {
   30:             public string MgcIp;
   31:             public string MgcSecondaryIp;
   32:             public string MgcSubnetMask;
   33:             public int Service;
   34:             public string Fsdb;
   35:             public string PrimarySwitch;
   36:         }
   37:  
   38:         ////////////////////////////////////////////////////////////////////////////
   39:  
   40:         /// <summary>
   41:         ///
   42:         /// </summary>
   43:         public Ims()
   44:         {
   45:         }
   46:  
   47:         ////////////////////////////////////////////////////////////////////////////
   48:  
   49:         /// <summary>
   50:         ///
   51:         /// </summary>
   52:         public static int NextVacantFlatTermIdFromAgcfEndpointUsingGwIdForOnt(Ia.Ftn.Cl.Models.Business.Huawei.Ont.EquipmentType equipmentType, int gwId)
   53:         {
   54:             int ft;
   55:             List<int> list;
   56:  
   57:             list = Ia.Ftn.Cl.Models.Data.Nokia.AgcfEndpoint.UsedFlatTermIdListForGatewayId(gwId);
   58:  
   59:             if (list.Count == 0) ft = 1; // this means agcfEndpoint does not exist for any number and the box is empty, and we should create agcfEndpoint at 1
   60:             else
   61:             {
   62:                 // change this later to accommodate the Huawei ONT type
   63:                 list = Ia.Cl.Models.Default.ExcludedNumberListFromNumberListWithinRange(list, equipmentType.TelPorts);
   64:  
   65:                 if (list.Count > 0) ft = list[0];
   66:                 else ft = 0; // something went wrong
   67:             }
   68:  
   69:             return ft;
   70:         }
   71:  
   72:         ////////////////////////////////////////////////////////////////////////////
   73:  
   74:         /// <summary>
   75:         ///
   76:         /// </summary>
   77:         public static Ia.Ftn.Cl.Models.Business.Ims.ImsBasicService NokiaImsBasicServiceItemForAccessWithPbx(Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont ont)
   78:         {
   79:             string primarySwitch;
   80:  
   81:             Ia.Ftn.Cl.Models.Business.Ims.ImsBasicService imsBasicService;
   82:             Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicService nokiaImsBasicService;
   83:  
   84:             primarySwitch = (from ibs in Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicServiceList where ibs.MgcIp == ont.Pon.PonGroup.MgcIp select ibs.PrimarySwitch).SingleOrDefault();
   85:  
   86:             if (!string.IsNullOrEmpty(primarySwitch))
   87:             {
   88:                 nokiaImsBasicService = (from ibs in Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicServiceList where ibs.Fsdb == "fsdb0" && ibs.PrimarySwitch == primarySwitch select ibs).Single();
   89:             }
   90:             else
   91:             {
   92:                 if (ont.Pon.PonGroup.MgcIp == "10.16.1.142")
   93:                 {
   94:                     nokiaImsBasicService = new Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicService { MgcIp = "10.16.1.142", MgcSecondaryIp = "10.16.5.142", MgcSubnetMask = "255.255.224.0", Service = 0, Fsdb = "fsdb0", PrimarySwitch = Ia.Ftn.Cl.Models.Business.Nokia.Ims.TEC };
   95:                 }
   96:                 else throw new ArgumentOutOfRangeException(@"ont.Pon.PonGroup.MgcIp != 10.16.1.142");
   97:             }
   98:  
   99:             imsBasicService = new ImsBasicService()
  100:             {
  101:                 PrimarySwitch = nokiaImsBasicService.PrimarySwitch,
  102:                 Fsdb = nokiaImsBasicService.Fsdb,
  103:                 MgcIp = nokiaImsBasicService.MgcIp,
  104:                 MgcSecondaryIp = nokiaImsBasicService.MgcSecondaryIp,
  105:                 MgcSubnetMask = nokiaImsBasicService.MgcSubnetMask,
  106:                 Service = nokiaImsBasicService.Service
  107:             };
  108:  
  109:             return imsBasicService;
  110:         }
  111:  
  112:         ////////////////////////////////////////////////////////////////////////////
  113:  
  114:         /// <summary>
  115:         ///
  116:         /// </summary>
  117:         public static Ia.Ftn.Cl.Models.Business.Ims.ImsBasicService NokiaImsBasicServiceItem(Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.PonGroup ponGroup)
  118:         {
  119:             Ia.Ftn.Cl.Models.Business.Ims.ImsBasicService imsBasicService;
  120:             Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicService nokiaImsBasicService;
  121:  
  122:             nokiaImsBasicService = (from ibs in Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicServiceList where ibs.MgcIp == ponGroup.MgcIp select ibs).Single();
  123:  
  124:             imsBasicService = new ImsBasicService()
  125:             {
  126:                 PrimarySwitch = nokiaImsBasicService.PrimarySwitch,
  127:                 Fsdb = nokiaImsBasicService.Fsdb,
  128:                 MgcIp = nokiaImsBasicService.MgcIp,
  129:                 MgcSecondaryIp = nokiaImsBasicService.MgcSecondaryIp,
  130:                 MgcSubnetMask = nokiaImsBasicService.MgcSubnetMask,
  131:                 Service = nokiaImsBasicService.Service
  132:             };
  133:  
  134:             return imsBasicService;
  135:         }
  136:  
  137:         ////////////////////////////////////////////////////////////////////////////
  138:  
  139:         /// <summary>
  140:         ///
  141:         /// </summary>
  142:         public static bool OntHasAPbxDesignatedSubParty(string ip)
  143:         {
  144:             bool hasPbx;
  145:             List<string> list;
  146:  
  147:             list = Ia.Ftn.Cl.Models.Data.Nokia.Ims.AgcfGatewayRecordIp1sWithinWhichSubPartiesHaveServiceBundle2CategoryList;
  148:  
  149:             if (list.Count > 0) hasPbx = list.Contains(ip);
  150:             else hasPbx = false;
  151:  
  152:             return hasPbx;
  153:         }
  154:  
  155:         ////////////////////////////////////////////////////////////////////////////
  156:  
  157:         /// <summary>
  158:         ///
  159:         /// </summary>
  160:         public static bool OntIpIsDesignatedFsdb0InAgcfGatewayRecord(string ip)
  161:         {
  162:             bool isFsdb0;
  163:             List<string> list;
  164:  
  165:             list = Ia.Ftn.Cl.Models.Data.Nokia.Ims.AgcfGatewayRecordIp1sThatIndicateFsdb0List;
  166:  
  167:             if (list.Count > 0) isFsdb0 = list.Contains(ip);
  168:             else isFsdb0 = false;
  169:  
  170:             return isFsdb0;
  171:         }
  172:  
  173:         ////////////////////////////////////////////////////////////////////////////
  174:  
  175:         /// <summary>
  176:         ///
  177:         /// </summary>
  178:         public static bool OntAccessHasAPbxDesignatedSubParty(string accessId)
  179:         {
  180:             bool hasPbx;
  181:             List<string> list;
  182:  
  183:             list = Ia.Ftn.Cl.Models.Data.Ims.AccessIdOfEmsOntSipInfoOrEmsVoipPstnUserWithSubPartiesWithCategoryServiceBundle2List;
  184:  
  185:             if (list.Count > 0) hasPbx = list.Contains(accessId);
  186:             else hasPbx = false;
  187:  
  188:             return hasPbx;
  189:         }
  190:  
  191:         ////////////////////////////////////////////////////////////////////////////
  192:  
  193:         /// <summary>
  194:         ///
  195:         /// </summary>
  196:         public static Ia.Ftn.Cl.Models.Business.Ims.ImsBasicService HuaweiImsBasicServiceItem(Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.PonGroup ponGroup)
  197:         {
  198:             Ia.Ftn.Cl.Models.Business.Ims.ImsBasicService imsBasicService;
  199:             Ia.Ftn.Cl.Models.Business.Huawei.Ims.ImsBasicService huaweiImsBasicService;
  200:  
  201:             huaweiImsBasicService = (from ibs in Ia.Ftn.Cl.Models.Business.Huawei.Ims.ImsBasicServiceList where ibs.MgcIp == ponGroup.MgcIp select ibs).Single();
  202:  
  203:             imsBasicService = new ImsBasicService()
  204:             {
  205:                 PrimarySwitch = huaweiImsBasicService.PrimarySwitch,
  206:                 Fsdb = huaweiImsBasicService.Fsdb,
  207:                 MgcIp = huaweiImsBasicService.MgcIp,
  208:                 MgcSecondaryIp = huaweiImsBasicService.MgcSecondaryIp,
  209:                 MgcSubnetMask = huaweiImsBasicService.MgcSubnetMask,
  210:                 Service = huaweiImsBasicService.Service
  211:             };
  212:  
  213:             return imsBasicService;
  214:         }
  215:  
  216:         ////////////////////////////////////////////////////////////////////////////
  217:  
  218:         /// <summary>
  219:         ///
  220:         /// </summary>
  221:         public static Ia.Ftn.Cl.Models.Business.Ims.ImsBasicService SpecialHuaweiIpHandlingForNokiaImsBasicServiceItem(Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont nddOnt)
  222:         {
  223:             Ia.Ftn.Cl.Models.Business.Ims.ImsBasicService imsBasicService;
  224:             Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicService nokiaImsBasicService;
  225:  
  226:             if (nddOnt.Pon.PonGroup.Olt.Odf.Name == "SAA")
  227:             {
  228:                 /*
  229:                  * SAA:
  230:                  * Cable        MGC Primary IP  MGC Secondary
  231:                  * Cable 5        10.16.1.38        10.16.5.38
  232:                  * Cable 6        10.16.1.34        10.16.5.34
  233:                  * Cable 7        10.16.1.31        10.16.5.31
  234:                  * Cable 8        10.16.1.33        10.16.5.33
  235:                  */
  236:  
  237:                 if (Ia.Ftn.Cl.Models.Data.Huawei.Default.ListOfHuaweiOntThatWereIntiallyInstalledAndProvisionedWithNokiaMgcIp10_16_5_37BeforeNewMgcIpToCableDistributionAgreement.Contains(nddOnt.Access.Name))
  238:                 {
  239:                     nokiaImsBasicService = Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicServiceItem("10.16.5.37");
  240:                 }
  241:                 else if (nddOnt.Pon.Number >= 500 && nddOnt.Pon.Number < 600) nokiaImsBasicService = Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicServiceItem("10.16.1.38");
  242:                 else if (nddOnt.Pon.Number >= 600 && nddOnt.Pon.Number < 700) nokiaImsBasicService = Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicServiceItem("10.16.1.34");
  243:                 else if (nddOnt.Pon.Number >= 700 && nddOnt.Pon.Number < 800) nokiaImsBasicService = Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicServiceItem("10.16.1.31");
  244:                 else if (nddOnt.Pon.Number >= 800 && nddOnt.Pon.Number < 900) nokiaImsBasicService = Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicServiceItem("10.16.1.33");
  245:                 // below: fake
  246:                 else if (nddOnt.Pon.Number >= 900 && nddOnt.Pon.Number < 1000) nokiaImsBasicService = Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicServiceItem("10.16.1.33");
  247:                 else
  248:                 {
  249:                     throw new Exception("Huawei imsBasicService undefined for access: " + nddOnt.Access.Name + ". ");
  250:                 }
  251:             }
  252:             else if (nddOnt.Pon.PonGroup.Olt.Odf.Name == "SDQ")
  253:             {
  254:                 /*
  255:                  * SDQ:
  256:                  * Cable        MGC Primary IP  MGC Secondary
  257:                  * Cable 7      10.16.5.32    10.16.1.32
  258:                  * Cable 8        10.16.5.35    10.16.1.35
  259:                  * Cable 9        10.16.5.36    10.16.1.36
  260:                  */
  261:  
  262:                 if (nddOnt.Pon.Number >= 700 && nddOnt.Pon.Number < 800) nokiaImsBasicService = Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicServiceItem("10.16.5.32");
  263:                 else if (nddOnt.Pon.Number >= 800 && nddOnt.Pon.Number < 900) nokiaImsBasicService = Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicServiceItem("10.16.5.35");
  264:                 else if (nddOnt.Pon.Number >= 900 && nddOnt.Pon.Number < 1000) nokiaImsBasicService = Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicServiceItem("10.16.5.36");
  265:                 else
  266:                 {
  267:                     throw new Exception("Huawei imsBasicService undefined for access: " + nddOnt.Access.Name + ". ");
  268:                 }
  269:             }
  270:             else
  271:             {
  272:                 nokiaImsBasicService = null;
  273:             }
  274:  
  275:             if (nokiaImsBasicService != null)
  276:             {
  277:                 imsBasicService = new ImsBasicService()
  278:                 {
  279:                     PrimarySwitch = nokiaImsBasicService.PrimarySwitch,
  280:                     Fsdb = nokiaImsBasicService.Fsdb,
  281:                     MgcIp = nokiaImsBasicService.MgcIp,
  282:                     MgcSecondaryIp = nokiaImsBasicService.MgcSecondaryIp,
  283:                     MgcSubnetMask = nokiaImsBasicService.MgcSubnetMask,
  284:                     Service = nokiaImsBasicService.Service
  285:                 };
  286:             }
  287:             else imsBasicService = null;
  288:  
  289:             return imsBasicService;
  290:         }
  291:  
  292:         ////////////////////////////////////////////////////////////////////////////
  293:  
  294:         /// <summary>
  295:         ///
  296:         /// </summary>
  297:         public static Ia.Ftn.Cl.Models.Business.Ims.ImsBasicService SpecialHuaweiIpHandlingForNokiaImsBasicServiceItem(Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.PonGroup ponGroup)
  298:         {
  299:             Ia.Ftn.Cl.Models.Business.Ims.ImsBasicService imsBasicService;
  300:             Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicService nokiaImsBasicService;
  301:  
  302:             nokiaImsBasicService = Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicServiceItem(ponGroup.MgcIp);
  303:  
  304:             if (nokiaImsBasicService == null)
  305:             {
  306:                 if (ponGroup.MgcIp == "10.16.1.142")
  307:                 {
  308:                     nokiaImsBasicService = new Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicService { MgcIp = "10.16.1.142", MgcSecondaryIp = "10.16.5.142", MgcSubnetMask = "255.255.224.0", Service = 0, Fsdb = string.Empty, PrimarySwitch = Ia.Ftn.Cl.Models.Business.Nokia.Ims.TEC };
  309:                 }
  310:                 else if (ponGroup.MgcIp == "10.16.5.142")
  311:                 {
  312:                     nokiaImsBasicService = new Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicService { MgcIp = "10.16.5.142", MgcSecondaryIp = "10.16.1.142", MgcSubnetMask = "255.255.224.0", Service = 0, Fsdb = string.Empty, PrimarySwitch = Ia.Ftn.Cl.Models.Business.Nokia.Ims.SKB };
  313:                 }
  314:                 else if (ponGroup.MgcIp == "10.10.9.254")
  315:                 {
  316:                     nokiaImsBasicService = new Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicService { MgcIp = "10.10.9.254", MgcSecondaryIp = "10.10.1.254", MgcSubnetMask = "255.255.224.0", Service = 0, Fsdb = string.Empty, PrimarySwitch = Ia.Ftn.Cl.Models.Business.Nokia.Ims.TEC };
  317:                 }
  318:                 else if (ponGroup.MgcIp == "10.10.1.254")
  319:                 {
  320:                     nokiaImsBasicService = new Ia.Ftn.Cl.Models.Business.Nokia.Ims.ImsBasicService { MgcIp = "10.10.1.254", MgcSecondaryIp = "10.10.9.254", MgcSubnetMask = "255.255.224.0", Service = 0, Fsdb = string.Empty, PrimarySwitch = Ia.Ftn.Cl.Models.Business.Nokia.Ims.SKB };
  321:                 }
  322:  
  323:                 // Use fixed random to assign fsdb values from fsdb0-fsdb3 randomly to passed area with nddOnt
  324:  
  325:                 switch (Ia.Cl.Models.Default.AlphanumericStringToInt(ponGroup.Symbol) % 4)
  326:                 {
  327:                     case 0: nokiaImsBasicService.Fsdb = "fsdb0"; break;
  328:                     case 1: nokiaImsBasicService.Fsdb = "fsdb1"; break;
  329:                     case 2: nokiaImsBasicService.Fsdb = "fsdb2"; break;
  330:                     case 3: nokiaImsBasicService.Fsdb = "fsdb3"; break;
  331:                     default: nokiaImsBasicService.Fsdb = "fsdb0"; break;
  332:                 }
  333:  
  334:                 nokiaImsBasicService.Fsdb = "fsdb0";
  335:             }
  336:  
  337:             imsBasicService = new ImsBasicService()
  338:             {
  339:                 PrimarySwitch = nokiaImsBasicService.PrimarySwitch,
  340:                 Fsdb = nokiaImsBasicService.Fsdb,
  341:                 MgcIp = nokiaImsBasicService.MgcIp,
  342:                 MgcSecondaryIp = nokiaImsBasicService.MgcSecondaryIp,
  343:                 MgcSubnetMask = nokiaImsBasicService.MgcSubnetMask,
  344:                 Service = nokiaImsBasicService.Service
  345:             };
  346:  
  347:             return imsBasicService;
  348:         }
  349:  
  350:         ////////////////////////////////////////////////////////////////////////////
  351:         ////////////////////////////////////////////////////////////////////////////
  352:     }
  353:  
  354:     ////////////////////////////////////////////////////////////////////////////
  355:     ////////////////////////////////////////////////////////////////////////////
  356: }