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

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 Huawei's Fixed Telecommunications Network (FTN) data model

    1: using Microsoft.EntityFrameworkCore;
    2: using System;
    3: using System.Collections.Generic;
    4: using System.Linq;
    5:  
    6: namespace Ia.Ftn.Cl.Models.Data.Huawei
    7: {
    8:     ////////////////////////////////////////////////////////////////////////////
    9:  
   10:     /// <summary publish="true">
   11:     /// Fixed Telecommunications Network's Operations Support System Management Intranet (FTN OSS) support class for Huawei's Fixed Telecommunications Network (FTN) data model
   12:     /// </summary>
   13:     /// 
   14:     /// <remarks> 
   15:     /// Copyright © 2014-2020 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   16:     /// </remarks> 
   17:     public class Ims
   18:     {
   19:         ////////////////////////////////////////////////////////////////////////////
   20:  
   21:         /// <summary>
   22:         ///
   23:         /// </summary>
   24:         public Ims()
   25:         {
   26:         }
   27:  
   28:         ////////////////////////////////////////////////////////////////////////////
   29:  
   30:         /// <summary>
   31:         ///
   32:         /// </summary>
   33:         public static bool UpdateSbr(string impu, Ia.Ftn.Cl.Models.Huawei.Sbr newSbr, Ia.Ftn.Cl.Models.Client.Huawei.Ims.ResultCode resultCode)
   34:         {
   35:             bool isOk;
   36:             Ia.Ftn.Cl.Models.Huawei.Sbr sbr;
   37:  
   38:             isOk = false;
   39:  
   40:             using (var db = new Ia.Ftn.Cl.Db())
   41:             {
   42:                 sbr = (from s in db.Sbrs where s.IMPU == impu select s).SingleOrDefault();
   43:  
   44:                 switch (resultCode)
   45:                 {
   46:                     case Ia.Ftn.Cl.Models.Client.Huawei.Ims.ResultCode.OperationSucceeded:
   47:                         {
   48:                             if (sbr == null)
   49:                             {
   50:                                 newSbr.Created = newSbr.Updated = DateTime.UtcNow.AddHours(3);
   51:  
   52:                                 db.Sbrs.Add(newSbr);
   53:                             }
   54:                             else
   55:                             {
   56:                                 if (sbr.Update(newSbr))
   57:                                 {
   58:                                     db.Sbrs.Attach(sbr);
   59:                                     db.Entry(sbr).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
   60:                                 }
   61:                             }
   62:  
   63:                             break;
   64:                         }
   65:                     case Ia.Ftn.Cl.Models.Client.Huawei.Ims.ResultCode.TheSubscriberIsNotDefinedInTheHssOrAtsOrServiceDataIsNotConfiguredForTheSubscriber:
   66:                     case Ia.Ftn.Cl.Models.Client.Huawei.Ims.ResultCode.NoServiceData:
   67:                         {
   68:                             if (sbr == null) { }
   69:                             else db.Sbrs.Remove(sbr);
   70:  
   71:                             break;
   72:                         }
   73:                     default:
   74:                         {
   75:                             throw new Exception("Undefined result code seen in Ia.Ftn.Cl.Model.Client.Huawei.Ims.ResultCode");
   76:                         }
   77:                 }
   78:  
   79:                 db.SaveChanges();
   80:  
   81:                 isOk = true;
   82:             }
   83:  
   84:             return isOk;
   85:         }
   86:  
   87:         ////////////////////////////////////////////////////////////////////////////
   88:  
   89:         /// <summary>
   90:         ///
   91:         /// </summary>
   92:         public static bool UpdateOwsbr(string impu, Ia.Ftn.Cl.Models.Huawei.Owsbr newOwsbr, Ia.Ftn.Cl.Models.Client.Huawei.Ims.ResultCode resultCode)
   93:         {
   94:             bool isOk;
   95:             Ia.Ftn.Cl.Models.Huawei.Owsbr owsbr;
   96:  
   97:             isOk = false;
   98:  
   99:             using (var db = new Ia.Ftn.Cl.Db())
  100:             {
  101:                 owsbr = (from o in db.Owsbrs where o.IMPU == impu select o).SingleOrDefault();
  102:  
  103:                 switch (resultCode)
  104:                 {
  105:                     case Ia.Ftn.Cl.Models.Client.Huawei.Ims.ResultCode.OperationSucceeded:
  106:                         {
  107:                             if (owsbr == null)
  108:                             {
  109:                                 newOwsbr.Created = newOwsbr.Updated = DateTime.UtcNow.AddHours(3);
  110:  
  111:                                 db.Owsbrs.Add(newOwsbr);
  112:                             }
  113:                             else
  114:                             {
  115:                                 if (owsbr.Update(newOwsbr))
  116:                                 {
  117:                                     db.Owsbrs.Attach(owsbr);
  118:                                     db.Entry(owsbr).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
  119:                                 }
  120:                             }
  121:  
  122:                             break;
  123:                         }
  124:                     case Ia.Ftn.Cl.Models.Client.Huawei.Ims.ResultCode.TheSubscriberIsNotDefinedInTheHssOrAtsOrServiceDataIsNotConfiguredForTheSubscriber:
  125:                     case Ia.Ftn.Cl.Models.Client.Huawei.Ims.ResultCode.NoServiceData:
  126:                         {
  127:                             if (owsbr == null) { }
  128:                             else db.Owsbrs.Remove(owsbr);
  129:  
  130:                             break;
  131:                         }
  132:                     default:
  133:                         {
  134:                             throw new Exception("Undefined result code seen in Ia.Ftn.Cl.Model.Client.Huawei.Ims.ResultCode");
  135:                         }
  136:                 }
  137:  
  138:                 db.SaveChanges();
  139:  
  140:                 isOk = true;
  141:             }
  142:  
  143:             return isOk;
  144:         }
  145:  
  146:         ////////////////////////////////////////////////////////////////////////////
  147:  
  148:         /// <summary>
  149:         ///
  150:         /// </summary>
  151:         public static bool UpdateServiceForSbr(string impu, string accessId)
  152:         {
  153:             bool insert, update, delete;
  154:             int number, serviceType;
  155:             string serviceId, service, impi, impuAid;//, prividUser;
  156:             Ia.Ftn.Cl.Models.Service2 service2, newService;
  157:             Ia.Ftn.Cl.Models.Huawei.Sbr sbr;
  158:  
  159:             insert = update = delete = false;
  160:             //result = new Ia.Cl.Models.Result();
  161:  
  162:             number = Ia.Ftn.Cl.Models.Business.NumberFormatConverter.Number(impu);
  163:             impi = Ia.Ftn.Cl.Models.Business.NumberFormatConverter.Impi(impu);
  164:             impuAid = Ia.Ftn.Cl.Models.Business.NumberFormatConverter.ImpuAid(impu);
  165:  
  166:             service = number.ToString();
  167:  
  168:             serviceType = Ia.Ftn.Cl.Models.Business.Service.ServiceType.ImsService;
  169:             serviceId = Ia.Ftn.Cl.Models.Business.Service2.ServiceId(service, serviceType);
  170:  
  171:             using (var db = new Ia.Ftn.Cl.Db())
  172:             {
  173:                 sbr = (from s in db.Sbrs where s.IMPU == impu select s).SingleOrDefault();
  174:  
  175:                 if (sbr != null)
  176:                 {
  177:                     newService = new Ia.Ftn.Cl.Models.Service2();
  178:  
  179:                     newService.Id = serviceId;
  180:                     newService.AreaCode = Ia.Ftn.Cl.Models.Business.Service.CountryCode;
  181:                     newService.Service = service;
  182:                     newService.ServiceType = serviceType;
  183:  
  184:                     //newService.Port = "Hu?";
  185:  
  186:                     newService.AbbriviatedCalling = sbr.NSABRC;
  187:                     newService.CallerId = sbr.NSCLIP;
  188:                     newService.CallForwarding = sbr.NSCFU;
  189:                     newService.CallWaiting = sbr.NSCW;
  190:                     newService.ConferenceCall = sbr.NS3PTY;
  191:  
  192:                     newService.AlarmCall = sbr.NSWAKE_UP;
  193:                     newService.WakeupCall = sbr.NSWAKE_UP;
  194:  
  195:                     newService.InternationalCallingUserControlled = sbr.NSCBA;
  196:                     newService.InternationalCalling = sbr.ITT;
  197:  
  198:                     //newService.ServiceSuspension = sbr.NSWAKE_UP;
  199:  
  200:                     newService.Pin = (int.TryParse(sbr.COP, out int i)) ? i : 0;
  201:  
  202:                     if (!string.IsNullOrEmpty(accessId)) newService.Access = (from a in db.Accesses where a.Id == accessId select a).SingleOrDefault();
  203:                     else newService.Access = null;
  204:  
  205:                     service2 = (from s in db.Service2
  206:                                 where s.ServiceType == Ia.Ftn.Cl.Models.Business.Service.ServiceType.ImsService && s.Id == newService.Id
  207:                                 select s).SingleOrDefault();
  208:  
  209:                     if (service2 == null)
  210:                     {
  211:                         newService.Created = newService.Updated = DateTime.UtcNow.AddHours(3);
  212:                         db.Service2.Add(newService);
  213:  
  214:                         insert = true;
  215:                     }
  216:                     else
  217:                     {
  218:                         if (service2.Update(newService))
  219:                         {
  220:                             db.Service2.Attach(service2);
  221:                             db.Entry(service2).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
  222:  
  223:                             update = true;
  224:                         }
  225:                         else update = false;
  226:                     }
  227:                 }
  228:                 else
  229:                 {
  230:                     service2 = (from s in db.Service2
  231:                                 where s.ServiceType == Ia.Ftn.Cl.Models.Business.Service.ServiceType.ImsService && s.Id == serviceId
  232:                                 select s).SingleOrDefault();
  233:  
  234:                     if (service2 != null)
  235:                     {
  236:                         db.Service2.Remove(service2);
  237:  
  238:                         delete = true;
  239:                     }
  240:                 }
  241:  
  242:                 db.SaveChanges();
  243:             }
  244:  
  245:             //result.AddSuccess(service + ": state: " + Ia.Ftn.Cl.Model.Ui.Text.ExpressionOfInsertOrUpdateOrDelete(insert, update, delete));
  246:  
  247:             return insert || update || delete;
  248:         }
  249:  
  250:         ////////////////////////////////////////////////////////////////////////////
  251:  
  252:         /// <summary>
  253:         ///
  254:         /// </summary>
  255:         public static bool UpdateServiceServiceSuspensionForOwsbr(string impu, out Ia.Cl.Models.Result result)
  256:         {
  257:             bool isOk, serviceSuspensionState;
  258:             int n, serviceType;
  259:             string serviceId;
  260:             Ia.Ftn.Cl.Models.Service2 service;
  261:             Ia.Ftn.Cl.Models.Huawei.Owsbr owsbr;
  262:  
  263:             isOk = false;
  264:             serviceType = Ia.Ftn.Cl.Models.Business.Service.ServiceType.ImsService;
  265:             result = new Ia.Cl.Models.Result();
  266:  
  267:             n = Ia.Ftn.Cl.Models.Business.NumberFormatConverter.Number(impu);
  268:             serviceId = Ia.Ftn.Cl.Models.Business.Service2.ServiceId(n.ToString(), serviceType);
  269:  
  270:             using (var db = new Ia.Ftn.Cl.Db())
  271:             {
  272:                 owsbr = (from o in db.Owsbrs where o.IMPU == impu select o).SingleOrDefault();
  273:  
  274:                 if (owsbr != null)
  275:                 {
  276:                     service = (from s in db.Service2
  277:                                where s.ServiceType == Ia.Ftn.Cl.Models.Business.Service.ServiceType.ImsService && s.Id == serviceId
  278:                                select s).SingleOrDefault();
  279:  
  280:                     if (service != null)
  281:                     {
  282:                         serviceSuspensionState = Ia.Ftn.Cl.Models.Business.Huawei.Owsbr.ServiceSuspensionState(owsbr);
  283:  
  284:                         if (service.ServiceSuspension != serviceSuspensionState)
  285:                         {
  286:                             service.ServiceSuspension = serviceSuspensionState;
  287:                             //service.StaffIdentityUser.Id = userId;
  288:  
  289:                             db.Service2.Attach(service);
  290:                             db.Entry(service).Property(u => u.ServiceSuspension).IsModified = true;
  291:  
  292:                             db.SaveChanges();
  293:  
  294:                             result.AddSuccess("ServiceSuspension updated. ");
  295:                         }
  296:                         else
  297:                         {
  298:                             result.AddWarning("Warning: ServiceRequestService ServiceSuspension value was not updated because its the same. ");
  299:                         }
  300:                     }
  301:                     else
  302:                     {
  303:                         result.AddError("Error: serviceRequestService is null. ");
  304:                     }
  305:  
  306:                     db.SaveChanges();
  307:  
  308:                     isOk = true;
  309:                 }
  310:                 else
  311:                 {
  312:                     result.AddError("Error: owsbr is null. ");
  313:                 }
  314:             }
  315:  
  316:             return isOk;
  317:         }
  318:  
  319:         ////////////////////////////////////////////////////////////////////////////
  320:  
  321:         /// <summary>
  322:         ///
  323:         /// </summary>
  324:         public static bool CreateSubscriber(Ia.Ftn.Cl.Models.Client.Huawei.Ims ims, string service, out string result)
  325:         {
  326:             bool subscriberCreated;
  327:             string resultCodeString;
  328:  
  329:             resultCodeString = string.Empty;
  330:  
  331:             // ME:name=techss;
  332:             // ADD HSDAINF:IMPI="+96522220000@ims.moc.kw",HUSERNAME="+96522220000@ims.moc.kw",PWD=admin,REALM="ims.moc.kw";
  333:             ims.AddHsdainf(service, out Client.Huawei.Ims.ResultCode addHsdainfResultCode);
  334:             resultCodeString += "AddHsdainf: " + addHsdainfResultCode.ToString() + ", ";
  335:  
  336:             // ADD HSUB:SUBID="+96522220000@ims.moc.kw",IMPI="+96522220000@ims.moc.kw",IMPU="sip:+96522220000@ims.moc.kw";
  337:             ims.AddHsub(service, out Client.Huawei.Ims.ResultCode addHsubResultCode);
  338:             resultCodeString += "AddHsub: " + addHsubResultCode.ToString() + ", ";
  339:  
  340:             // ADD HIMPU:IMPI="+96522220000@ims.moc.kw",IMPU="tel:+96522220000";
  341:             ims.AddHimpu(service, out Client.Huawei.Ims.ResultCode addHimpuResultCode);
  342:             resultCodeString += "AddHimpu: " + addHimpuResultCode.ToString() + ", ";
  343:  
  344:             // SET HREGAUTH:IMPU="sip:+96522220000@ims.moc.kw",REGAUTH=TRUE;
  345:             ims.SetHregauth(service, out Client.Huawei.Ims.ResultCode setHregauthResultCode);
  346:             resultCodeString += "SetHregauth: " + setHregauthResultCode.ToString() + ", ";
  347:  
  348:             // SET HVNTPLID: IMPU="sip:+96522220000@ims.moc.kw", VNTPLID=0;
  349:             ims.SetHvntplidForImpuSipDomain(service, out Client.Huawei.Ims.ResultCode setHvntplidForImpuSipDomainResultCode);
  350:             resultCodeString += "SetHvntplidForImpuSipDomain: " + setHvntplidForImpuSipDomainResultCode.ToString() + ", ";
  351:  
  352:             // SET HVNTPLID: IMPU="tel:+96522220000", VNTPLID=0;
  353:             ims.SetHvntplidForImpu(service, out Client.Huawei.Ims.ResultCode setHvntplidForImpuResultCode);
  354:             resultCodeString += "SetHvntplidForImpu: " + setHvntplidForImpuResultCode.ToString() + ", ";
  355:  
  356:             // SET HIRS:IRSID=1,IMPULIST="\"sip:+96522220000@ims.moc.kw\"&\"tel:+96522220000\""; 
  357:             ims.SetHirs(service, out Client.Huawei.Ims.ResultCode setHirsResultCode);
  358:             resultCodeString += "SetHirs: " + setHirsResultCode.ToString() + ", ";
  359:  
  360:             // SET HDEFIMPU: IRSID=1, IMPU="sip:+96522220000@ims.moc.kw";
  361:             ims.SetHdefimpu(service, out Client.Huawei.Ims.ResultCode setHdefimpuResultCode);
  362:             resultCodeString += "SetHdefimpu: " + setHdefimpuResultCode.ToString() + ", ";
  363:  
  364:             // SET HSPSHARE:BASEIMPU="sip:+96522220000@ims.moc.kw",IMPU="tel:+96522220000";
  365:             ims.SetHspshare(service, out Client.Huawei.Ims.ResultCode setHspshareResultCode);
  366:             resultCodeString += "SetHspshare: " + setHspshareResultCode.ToString() + ", ";
  367:  
  368:             // SET HALIASPU:ALIASID=1,IMPULIST="\"sip:+96522220000@ims.moc.kw\"&\"tel:+96522220000\"";
  369:             ims.SetHaliaspu(service, out Client.Huawei.Ims.ResultCode setHaliaspuResultCode);
  370:             resultCodeString += "SetHaliaspu: " + setHaliaspuResultCode.ToString() + ", ";
  371:  
  372:             // ADD HSIFC:IMPU="sip:+96522220000@ims.moc.kw",SIFCID=1;
  373:             ims.AddHsifc(service, out Client.Huawei.Ims.ResultCode addHsifcResultCode);
  374:             resultCodeString += "AddHsifc: " + addHsifcResultCode.ToString() + ", ";
  375:  
  376:             // ME:name=tecats0; 
  377:             // ADD SBR:IMPU="sip:+96522xxxxxx@ims.moc.kw",TEMPLATEIDX=65535,DSPIDX=65534,LP=0,CSC=0,UTYPE=1,VCCFLAG=0,VTFLAG=0,NSCFU=0,NSCFUVM=0,NSCFB=0,NSCFBVM=0,NSCFNR=0,NSCFNRVM=0,NSCFNL=0,NSCFNLVM=0,NSCD=0,NSCDVM=0,NSCFNRC=0,NSCFNRCVM=0,NSCLIP=0,NSCIDCW=0,NSRIO=0,NSCNIP=0,NSCLIR=0,NSRIP=0,NSCNIR=0,NSRID=0,NSNRID=0,NSRND=0,NSNRND=0,NSCW=0,NSCCW=0,NSOIP=0,NSACRM=0,NSGOIR=0,NSMOIR=0,NSTIP=0,NSTIR=0,NSOTIR=0,NSCLIPNOSCREENING=0,NSCR=0,NSWAKE_UP=0,NSAOC_D=0,NSAOC_E=0,NSXEXH=0,NSXEGJ=0,NSCWCFNR=0,NSIIFC=0,NSDN_CALL_OUT_BAR=0,NSCCBS=0,NSCCNR=0,NSCCBSR=0,NSCCNRR=0,NS3PTY=0,NSNPTY=0,NSDND=0,NSMCR=0,NSCBA=0,NSTMP_LIN=0,NSCODEC_CNTRL=0,NSMWI=0,NSDC=0,NSHOLD=0,NSECT=0,NSCFTB=0,NSDAN=0,NSSTOP_SECRET=0,NSMCID=0,NSEBO=0,NSICO=0,NSOUTG=0,NSINQYH=0,NSUINFO=0,NSDN_CALL_OUT_ALLOW=0,NSSIC=0,NSSOC=0,NSSETCFNRTIME=0,NSCFS=0,NSCFSB=0,NSFAX=0,NSABRC=0,NSACRTOVM=0,NSPREPAID=0,NSCRBT=0,NSICB=0,NSMRINGING=0,NSCIS=0,NSCBEG=0,NSCOLP=0,NSCOLR=0,NSCOLPOVR=0,NSBAOC=0,NSBOIC=0,NSBOICEXHC=0,NSBAIC=0,NSBICROM=0,NSSPEED_DIAL=0,NSSD1D=0,NSSD2D=0,NSGRNCALL=0,NSCPARK=0,NSGAA=0,NSQSNS=0,NSMSN=0,NSHOTLINE=0,NSAOC_S=0,NSNIGHTSRV=0,NSBACKNUM=0,NSAUTOCON=0,NSCAMPON=0,NSCTD=0,NSCLICKHOLD=0,NSQUEUE=0,NSSANSWER=0,NSICENCF=0,NSCFGO=0,NSCECT=0,NSCTGO=0,NSCTIO=0,NSSETBUSY=0,NSOVERSTEP=0,NSABSENT=0,NSMONITOR=0,NSFMONITOR=0,NSDISCNT=0,NSFDISCNT=0,NSINSERT=0,NSFINSERT=0,NSASI=0,NSPWCB=0,NSRD=0,NSLCPS=0,NSNCPS=0,NSICPS=0,NSCBCLOCK=0,NSMINIBAR=0,NSMCN=0,NSDSTR=0,NSOPRREG=0,NSONEKEY=0,NSINBOUND=0,NSOUTBOUND=0,NSCALLERID=0,NSCUN=0,NSIPTVVC=0,NSNP=0,NSSEC=0,NSSECSTA=0,NSHRCN=0,NSSB=0,LCO=1,LC=1,LCT=1,NTT=1,ITT=0,ICTX=1,OCTX=1,INTT=0,IITT=0,ICLT=0,ICDDD=0,ICIDD=0,IOLT=0,CTLCO=1,CTLCT=1,CTLD=1,CTINTNANP=1,CTINTWORLD=1,CTDA=1,CTOSM=1,CTOSP=0,CTOSP1=0,CCO1=0,CCO2=0,CCO3=0,CCO4=0,CCO5=0,CCO6=0,CCO7=0,CCO8=0,CCO9=0,CCO10=0,CCO11=0,CCO12=0,CCO13=0,CCO14=0,CCO15=0,CCO16=0,HIGHENTCO=0,OPERATOR=1,SUPYSRV=1,IDDCI=1,NTCI=1,LTCI=1,RSC=65535,CIG=4294967295,OUTRST=0,INRST=0,NOAT=20,VMAIND=65535,VDMAIND=65535,TGRP=65534,TIDHLD=28,TIDCW=23,SCF=0,LMTGRP=65534,FLBGRP=65535,SLBGRP=65535,COP="0000",G711_64K_A_LAW=1,G711_64K_U_LAW=1,G722=1,G723=1,G726=1,G728=1,G729=1,CODEC_MP4A=1,CODEC2833=1,CODEC2198=1,G726_40=1,G726_32=1,G726_24=1,G726_16=1,AMR=1,CLEARMODE=1,ILBC=1,SPEEX=1,G729EV=1,EVRC=1,EVRCB=1,H261=1,H263=1,CODEC_MP4V=1,H264=1,T38=1,T120=1,G711A_VBD=1,G711U_VBD=1,G726_VBD=1,G726_40_VBD=1,G726_32_VBD=1,G726_24_VBD=1,G726_16_VBD=1,WIND_BAND_AMR=1,GSM610=1,H263_2000=1,BROADVOICE_32=1,UNKNOWN_CODEC=1,ACODEC=255,VCODEC=255,POLIDX=255,NCPI=255,ICPI=255,EBOCL=0,EBOPL=0,EBOIT=2,RM=0,CPC=0,PCHG=65535,TFPT=4,CHT=0,MCIDMODE=0,MCIDCMODE=255,MCIDAMODE=0,PREPAIDIDX=65535,CRBTID=65535,ODBBICTYPE=0,ODBBOCTYPE=0,ODBBARTYPE=0,ODBSS=0,ODBBRCFTYPE=0,PNOTI=0,MAXPARACALL=1,ATSDTMBUSY=1,CALLCOUNT=1,CDNOTICALLER=0,ISCHGFLAG=0,CHC=0,CUSER=0,STCF=0,CHARSC=65535,REGUIDX=0,SOCBFUNC=255,SOCBPTONEIDX=65535,ADMINCBA=0,ADCONTROL_DIVERSION=0,CPCRUS=255,CUSCAT=0,SPT100REL=1;
  378:             ims.AddSbr(service, out Client.Huawei.Ims.ResultCode addSbrResultCode);
  379:             resultCodeString += "AddSbr: " + addSbrResultCode.ToString() + ", ";
  380:  
  381:             // ME:name=tecens; 
  382:             // ADD DNAPTRREC: NAME="0.0.0.0.2.2.2.2.5.6.9.e164.arpa", ZONENAME="5.6.9.e164.arpa", ORDER=0, PREFERENCE=10, FLAGS="U", SERVICE="E2U+sip", REGEXP="!^..*$!sip:+96522220000@ims.moc.kw!", REPLACEMENT="ims.moc.kw.";
  383:             ims.AddDnaptrrec(service, out Client.Huawei.Ims.ResultCode addDnaptrrecResultCode);
  384:             resultCodeString += "AddDnaptrrec: " + addDnaptrrecResultCode.ToString();
  385:  
  386:             if (true) // check that all is OK in CreateH248Subscriber part
  387:             {
  388:                 subscriberCreated = true;
  389:             }
  390:             else
  391:             {
  392:  
  393:             }
  394:  
  395:             result = "Create subscriber: " + service + ", resultCodeString: " + resultCodeString + ". ";
  396:  
  397:             return subscriberCreated;
  398:         }
  399:  
  400:         ////////////////////////////////////////////////////////////////////////////
  401:  
  402:         /// <summary>
  403:         ///
  404:         /// </summary>
  405:         public static void DeleteSubscriber(Ia.Ftn.Cl.Models.Client.Huawei.Ims ims, string service, out string result)
  406:         {
  407:             string resultCodeString;
  408:             Ia.Ftn.Cl.Models.Client.Huawei.Ims.ResultCode rmvDnaptrrecResultCode, rmvSbrResultCode, rmvHsubResultCode, rmvHsdainfResultCode;
  409:  
  410:             result = resultCodeString = string.Empty;
  411:  
  412:             // ME:name=tecens; 
  413:             // RMV DNAPTRREC: NAME="0.0.0.0.2.2.2.2.5.6.9.e164.arpa";
  414:             ims.RmvDnaptrrec(service, out rmvDnaptrrecResultCode);
  415:             resultCodeString += "RmvDnaptrrec: " + rmvDnaptrrecResultCode.ToString() + ", ";
  416:  
  417:             // ME:name=tecats0; 
  418:             // RMV SBR: IMPU="tel:+96522220000";
  419:             ims.RmvSbr(service, out rmvSbrResultCode);
  420:             resultCodeString += "RmvSbr: " + rmvSbrResultCode.ToString() + ", ";
  421:  
  422:             // ME:name=techss; 
  423:             // RMV HSUB: SUBID="+96522220000@ims.moc.kw";
  424:             ims.RmvHsub(service, out rmvHsubResultCode);
  425:             resultCodeString += "RmvHsub: " + rmvHsubResultCode.ToString() + ", ";
  426:  
  427:             // RMV HSDAINF: IMPI="+96522220000@ims.moc.kw";
  428:             ims.RmvHsdainf(service, out rmvHsdainfResultCode);
  429:             resultCodeString += "RmvHsdainf: " + rmvHsdainfResultCode.ToString();
  430:  
  431:             result = service + ", delete subscriber: " + resultCodeString + ". ";
  432:         }
  433:  
  434:         ////////////////////////////////////////////////////////////////////////////
  435:  
  436:         /// <summary>
  437:         ///
  438:         /// </summary>
  439:         public static void UpdateSupplementaryService(Ia.Ftn.Cl.Models.Client.Huawei.Ims ims, string service, Ia.Ftn.Cl.Models.Business.Service.SupplementaryService supplementaryService, bool supplementaryServiceState, out string result)
  440:         {
  441:             string impu;
  442:             Ia.Ftn.Cl.Models.Client.Huawei.Ims.ResultCode resultCode;
  443:  
  444:             result = string.Empty;
  445:  
  446:             impu = Ia.Ftn.Cl.Models.Business.NumberFormatConverter.ImpuSipDomain(service);
  447:  
  448:             switch (supplementaryService)
  449:             {
  450:                 //newService.ServiceSuspension =;
  451:                 // newService.Pin = (int.TryParse(sbr.COP, out i)) ? i : 0;
  452:  
  453:                 case (Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.AbbriviatedCalling):
  454:                     {
  455:                         ims.ModSbrNsabrc(service, supplementaryServiceState, out resultCode);
  456:                         result = service + ",AbbriviatedCalling: " + supplementaryServiceState.ToString().ToLower() + "," + resultCode.ToString();
  457:                         break;
  458:                     }
  459:                 case (Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.CallerId):
  460:                     {
  461:                         ims.ModSbrNsclip(service, supplementaryServiceState, out resultCode);
  462:                         result = service + ",CallerId: " + supplementaryServiceState.ToString().ToLower() + "," + resultCode.ToString();
  463:                         break;
  464:                     }
  465:                 case (Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.CallForwarding):
  466:                     {
  467:                         ims.ModSbrNscfu(service, supplementaryServiceState, out resultCode);
  468:                         result = service + ",CallForwarding: " + supplementaryServiceState.ToString().ToLower() + "," + resultCode.ToString();
  469:                         break;
  470:                     }
  471:                 case (Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.CallWaiting):
  472:                     {
  473:                         ims.ModSbrNscw(service, supplementaryServiceState, out resultCode);
  474:                         result = service + ",CallWaiting: " + supplementaryServiceState.ToString().ToLower() + "," + resultCode.ToString();
  475:                         break;
  476:                     }
  477:                 case (Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.ConferenceCall):
  478:                     {
  479:                         ims.ModSbrNs3pty(service, supplementaryServiceState, out resultCode);
  480:                         result = service + ",ConferenceCall: " + supplementaryServiceState.ToString().ToLower() + "," + resultCode.ToString();
  481:                         break;
  482:                     }
  483:                 case (Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.WakeupCall):
  484:                     {
  485:                         ims.ModSbrNswakeup(service, supplementaryServiceState, out resultCode);
  486:                         result = service + ",WakeupCall: " + supplementaryServiceState.ToString().ToLower() + "," + resultCode.ToString();
  487:                         break;
  488:                     }
  489:                 case (Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.InternationalCallingUserControlled):
  490:                     {
  491:                         ims.ModSbrNscba(service, supplementaryServiceState, out resultCode);
  492:                         result = service + ",InternationalCallingUserControlled: " + supplementaryServiceState.ToString().ToLower() + "," + resultCode.ToString();
  493:                         break;
  494:                     }
  495:                 case (Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.InternationalCalling):
  496:                     {
  497:                         ims.ModSbrItt(service, supplementaryServiceState, out resultCode);
  498:                         result = service + ",InternationalCalling: " + supplementaryServiceState.ToString().ToLower() + "," + resultCode.ToString();
  499:                         break;
  500:                     }
  501:                 case (Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.ServiceSuspension):
  502:                     {
  503:                         ims.SetOwSbr(service, supplementaryServiceState, out resultCode);
  504:                         result = service + ",ServiceSuspension: " + supplementaryServiceState.ToString().ToLower() + "," + resultCode.ToString();
  505:                         break;
  506:                     }
  507:                 default:
  508:                     {
  509:                         result = service + ",unknown SupplementaryService: " + supplementaryServiceState.ToString().ToLower();
  510:                         break;
  511:                     }
  512:             }
  513:         }
  514:  
  515:         ////////////////////////////////////////////////////////////////////////////
  516:  
  517:         /// <summary>
  518:         ///
  519:         /// </summary>
  520:         public static void AssignServiceSuspensionStateToServiceSubscriber(Ia.Ftn.Cl.Models.Client.Huawei.Ims client, string service, bool serviceSuspensionState, out string result)
  521:         {
  522:             Ia.Ftn.Cl.Models.Client.Huawei.Ims.ResultCode resultCode;
  523:  
  524:             client.SetOwSbr(service, serviceSuspensionState, out resultCode);
  525:  
  526:             result = service + ",service suspension: " + serviceSuspensionState.ToString().ToLower() + "," + resultCode.ToString();
  527:         }
  528:  
  529:         ////////////////////////////////////////////////////////////////////////////
  530:         ////////////////////////////////////////////////////////////////////////////
  531:  
  532:         /// <summary>
  533:         ///
  534:         /// </summary>
  535:         public static List<Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont> NddOntInHuaweiSwitchNokiaAccessWithAccessList()
  536:         {
  537:             List<string> accessIdList;
  538:             List<Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont> list;
  539:  
  540:             using (var db = new Ia.Ftn.Cl.Db())
  541:             {
  542:                 var oltIdList = Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.HuaweiRouterNokiaAccessOltIdList;
  543:  
  544:                 accessIdList = (from a in db.Accesses where oltIdList.Contains(a.Olt) select a.Id).ToList();
  545:  
  546:                 list = (from o in Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.OntList
  547:                         where o.Pon.PonGroup.Olt.Odf.Router.Vendor == Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Vendor.Huawei
  548:                         && o.Pon.PonGroup.Olt.Odf.Vendor == Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Vendor.Nokia
  549:                         && accessIdList.Contains(o.Access.Id)
  550:                         select o).ToList();
  551:             }
  552:  
  553:             return list;
  554:         }
  555:  
  556:         ////////////////////////////////////////////////////////////////////////////
  557:  
  558:         /// <summary>
  559:         ///
  560:         /// </summary>
  561:         public static List<Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont> NddOntInHuaweiSwitchNokiaAccessList()
  562:         {
  563:             List<Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont> list;
  564:  
  565:             using (var db = new Ia.Ftn.Cl.Db())
  566:             {
  567:                 var oltIdList = Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.HuaweiRouterNokiaAccessOltIdList;
  568:  
  569:                 list = (from o in Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.OntList
  570:                         where o.Pon.PonGroup.Olt.Odf.Router.Vendor == Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Vendor.Huawei
  571:                         && o.Pon.PonGroup.Olt.Odf.Vendor == Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Vendor.Nokia
  572:                         select o).ToList();
  573:             }
  574:  
  575:             return list;
  576:         }
  577:  
  578:         ////////////////////////////////////////////////////////////////////////////
  579:  
  580:         /// <summary>
  581:         ///
  582:         /// </summary>
  583:         public static List<Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont> NddHuaweiSwitchAndNokiaAccessOntWithAccessButNoMgwRecord()
  584:         {
  585:             List<string> accessIdList;
  586:             List<Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont> nddOntList, nddOntWithinAccessList;
  587:  
  588:             using (var db = new Ia.Ftn.Cl.Db())
  589:             {
  590:                 var oltIdList = Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.HuaweiRouterNokiaAccessOltIdList;
  591:  
  592:                 accessIdList = (from a in db.Accesses
  593:                                 where oltIdList.Contains(a.Olt)
  594:                                 select a.Id).AsNoTracking().ToList(); // change accessIdList to Dictionary
  595:  
  596:                 var ontList = Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.OntList;
  597:  
  598:                 nddOntWithinAccessList = (from o in ontList
  599:                                           where o.Pon.PonGroup.Olt.Odf.Router.Vendor == Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Vendor.Huawei
  600:                                           && o.Pon.PonGroup.Olt.Odf.Vendor == Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Vendor.Nokia
  601:                                           && accessIdList.Contains(o.Access.Id)
  602:                                           select o).ToList();
  603:  
  604:                 var mgwList = (from m in db.Mgws
  605:                                select new { NetworkElement = m.NetworkElement, RA1 = m.RA1 }).AsNoTracking().ToList();
  606:  
  607:                 // below: ONTs in Accesses but not in Mgws list
  608:                 var tecNddOntList = (from no in nddOntWithinAccessList
  609:                                      join m in mgwList.Where(u => u.NetworkElement == Ia.Ftn.Cl.Models.Business.Huawei.SoftX.TecNetworkElement.Domain) on no.Ip equals m.RA1
  610:                                      into gj
  611:                                      from sub in gj.DefaultIfEmpty()
  612:                                      where sub == null
  613:                                      select no).ToList();
  614:  
  615:                 var skbNddOntList = (from no in nddOntWithinAccessList
  616:                                      join m in mgwList.Where(u => u.NetworkElement == Ia.Ftn.Cl.Models.Business.Huawei.SoftX.SkbNetworkElement.Domain) on no.Ip equals m.RA1
  617:                                      into gj
  618:                                      from sub in gj.DefaultIfEmpty()
  619:                                      where sub == null
  620:                                      select no).ToList();
  621:  
  622:                 //nddOntList = tecNddOntList.Except(skbNddOntList).Union(skbNddOntList.Except(tecNddOntList)).ToList();
  623:                 nddOntList = tecNddOntList.Union(skbNddOntList).ToList();
  624:             }
  625:  
  626:             return nddOntList;
  627:         }
  628:  
  629:         ////////////////////////////////////////////////////////////////////////////
  630:         ////////////////////////////////////////////////////////////////////////////
  631:     }
  632:  
  633:     ////////////////////////////////////////////////////////////////////////////
  634:     ////////////////////////////////////////////////////////////////////////////
  635: }