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

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

Access Management System (AMS) 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.Data;
    5: using System.Linq;
    6:  
    7: namespace Ia.Ftn.Cl.Models.Data.Huawei
    8: {
    9:     ////////////////////////////////////////////////////////////////////////////
   10:  
   11:     /// <summary publish="true">
   12:     /// Access Management System (AMS) support class for Huawei's Fixed Telecommunications Network (FTN) data model.
   13:     /// </summary>
   14:  
   15:     /// <remarks> 
   16:     /// Copyright © 2016-2022 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   17:     /// </remarks> 
   18:     public class Ems
   19:     {
   20:         private static Dictionary<string, string> correlationTagDictionary = new Dictionary<string, string>(1000);
   21:  
   22:         /// <summary/>
   23:         public static Dictionary<string, string> CorrelationTagDictionary { get { return correlationTagDictionary; } set { correlationTagDictionary = value; } }
   24:  
   25:         ////////////////////////////////////////////////////////////////////////////
   26:  
   27:         /// <summary>
   28:         ///
   29:         /// </summary>
   30:         public Ems() { }
   31:  
   32:         ////////////////////////////////////////////////////////////////////////////
   33:  
   34:         /// <summary>
   35:         ///
   36:         /// </summary>
   37:         public static string BellcoreStateFromId(int stateId)
   38:         {
   39:             // see: ColoredBellcoreStateFromId()
   40:             string s;
   41:             Ia.Ftn.Cl.Models.Business.Huawei.Ems.BellcoreState bellcoreState;
   42:  
   43:             bellcoreState = (Ia.Ftn.Cl.Models.Business.Huawei.Ems.BellcoreState)stateId;
   44:  
   45:             /*
   46:              * IS-NR: (In-Service and Normal) The entity is fully operational and will perform as provisioned.
   47:              * OOS-AU: (Out-of-Service and Autonomous) The entity is not operational because of an autonomous event.
   48:              * OOS-AUMA: (Out-of-Service and Autonomous Management) The entity is not operational because of an autonomous event and has also been manually removed from service.
   49:              * OOS-MA: (Out-of-Service and Management) The entity has been manually removed from service.
   50:              */
   51:  
   52:             switch (bellcoreState)
   53:             {
   54:                 case Ia.Ftn.Cl.Models.Business.Huawei.Ems.BellcoreState.IsNr: s = "IS-NR"; break;
   55:                 case Ia.Ftn.Cl.Models.Business.Huawei.Ems.BellcoreState.OosAu: s = "OOS-AU"; break;
   56:                 case Ia.Ftn.Cl.Models.Business.Huawei.Ems.BellcoreState.OosAuma: s = "OOS-AUMA"; break;
   57:                 case Ia.Ftn.Cl.Models.Business.Huawei.Ems.BellcoreState.OosMa: s = "OOS-MA"; break;
   58:                 case Ia.Ftn.Cl.Models.Business.Huawei.Ems.BellcoreState.Unknown: s = "Unknown"; break;
   59:                 default: s = "Unknown"; break;
   60:             }
   61:  
   62:             return s;
   63:         }
   64:  
   65:         ////////////////////////////////////////////////////////////////////////////
   66:  
   67:         /// <summary>
   68:         ///
   69:         /// </summary>
   70:         public static string ColoredBellcoreStateFromId(int stateId)
   71:         {
   72:             // see: BellcoreStateFromId()
   73:             string s;
   74:             Ia.Ftn.Cl.Models.Business.Huawei.Ems.BellcoreState bellcoreState;
   75:  
   76:             bellcoreState = (Ia.Ftn.Cl.Models.Business.Huawei.Ems.BellcoreState)stateId;
   77:  
   78:             /*
   79:                 if (b) s = "<span style=\"color:Green\">Active</span>";
   80:                 else s = "<span style=\"color:DarkGoldenRod\">Idle</span>";             */
   81:             switch (bellcoreState)
   82:             {
   83:                 case Ia.Ftn.Cl.Models.Business.Huawei.Ems.BellcoreState.IsNr: s = "<span style=\"color:Green\">IS-NR</span>"; break;
   84:                 case Ia.Ftn.Cl.Models.Business.Huawei.Ems.BellcoreState.OosAu: s = "<span style=\"color:Red\">OOS-AU</span>"; break;
   85:                 case Ia.Ftn.Cl.Models.Business.Huawei.Ems.BellcoreState.OosAuma: s = "<span style=\"color:Red\">OOS-AUMA</span>"; break;
   86:                 case Ia.Ftn.Cl.Models.Business.Huawei.Ems.BellcoreState.OosMa: s = "<span style=\"color:Red\">OOS-MA</span>"; break;
   87:                 case Ia.Ftn.Cl.Models.Business.Huawei.Ems.BellcoreState.Unknown: s = "<span style=\"color:Red\">Unknown</span>"; break;
   88:                 default: s = "Unknown"; break;
   89:             }
   90:  
   91:             return s;
   92:         }
   93:  
   94:         ////////////////////////////////////////////////////////////////////////////
   95:  
   96:         /// <summary>
   97:         ///
   98:         /// </summary>
   99:         public static int NextVacantTelForOnt(Ia.Ftn.Cl.Models.Huawei.EmsOnt emsOnt)
  100:         {
  101:             int telPort;
  102:             List<int> list;
  103:  
  104:             list = Ia.Ftn.Cl.Models.Data.Huawei.Ems.UsedTelListForEmsOntId(emsOnt.Id);
  105:  
  106:             if (list.Count == 0) telPort = 1; // this means OntSipInfo does not exist for any number and the box is empty, and we should create number at 1
  107:             else
  108:             {
  109:                 list = Ia.Cl.Models.Default.ExcludedNumberListFromNumberListWithinRange(list, emsOnt.EquipmentType.TelPorts);
  110:  
  111:                 if (list.Count > 0) telPort = list[0];
  112:                 else telPort = Ia.Ftn.Cl.Models.Business.Default.PortUndefinedOrInvalidOrUnknown; // something went wrong
  113:             }
  114:  
  115:             return telPort;
  116:         }
  117:  
  118:         ////////////////////////////////////////////////////////////////////////////
  119:  
  120:         /// <summary>
  121:         ///
  122:         /// </summary>
  123:         private static List<int> UsedTelListForEmsOntId(string emsOntId)
  124:         {
  125:             List<int> list;
  126:  
  127:             using (var db = new Ia.Ftn.Cl.Db())
  128:             {
  129:                 list = (from eosi in db.EmsOntSipInfoes
  130:                         where eosi.EmsOnt.Id == emsOntId
  131:                         orderby eosi.TEL ascending
  132:                         select eosi.TEL).ToList<int>();
  133:             }
  134:  
  135:             return list;
  136:         }
  137:  
  138:         ////////////////////////////////////////////////////////////////////////////
  139:  
  140:         /// <summary>
  141:         ///
  142:         /// </summary>
  143:         public static List<int> VacantTelForOntList(Ia.Ftn.Cl.Models.Huawei.EmsOnt emsOnt)
  144:         {
  145:             List<int> usedlist, vacantList;
  146:  
  147:             usedlist = Ia.Ftn.Cl.Models.Data.Huawei.Ems.UsedTelListForEmsOntId(emsOnt.Id);
  148:  
  149:             vacantList = Ia.Cl.Models.Default.ExcludedNumberListFromNumberListWithinRange(usedlist, emsOnt.EquipmentType.TelPorts);
  150:  
  151:             return vacantList;
  152:         }
  153:  
  154:         ////////////////////////////////////////////////////////////////////////////
  155:         ////////////////////////////////////////////////////////////////////////////
  156:  
  157:         /// <summary>
  158:         ///
  159:         /// </summary>
  160:         public static Ia.Ftn.Cl.Models.Business.Huawei.Default.FnSnPnPort NextVacantMduFnSnPnForOnt(Ia.Ftn.Cl.Models.Business.Huawei.Dev.MduDev mdu, Ia.Ftn.Cl.Models.Huawei.EmsOnt emsOnt)
  161:         {
  162:             Ia.Ftn.Cl.Models.Business.Huawei.Default.FnSnPnPort fnSnPnPort;
  163:             List<Ia.Ftn.Cl.Models.Business.Huawei.Default.FnSnPnPort> usedList, possibleList, list;
  164:  
  165:             usedList = Ia.Ftn.Cl.Models.Data.Huawei.Ems.UsedEmsVoipPstnUserFnSnPnListForEmsOntId(emsOnt.Id);
  166:  
  167:             if (usedList.Count == 0)
  168:             {
  169:                 fnSnPnPort = mdu.PossibleFnSnPnPortList[0]; // this means EmsVoipPstnUsers does not exist for any number and the box is empty, and we should create number at 0
  170:             }
  171:             else
  172:             {
  173:                 possibleList = mdu.PossibleFnSnPnPortList;
  174:  
  175:                 list = possibleList.Where(p => !usedList.Any(u => u.Fn == p.Fn && u.Sn == p.Sn && u.Pn == p.Pn)).ToList();
  176:  
  177:                 if (list.Count > 0) fnSnPnPort = list[0];
  178:                 else fnSnPnPort = null; // something went wrong
  179:             }
  180:  
  181:             return fnSnPnPort;
  182:         }
  183:  
  184:         ////////////////////////////////////////////////////////////////////////////
  185:  
  186:         /// <summary>
  187:         ///
  188:         /// </summary>
  189:         public static List<Ia.Ftn.Cl.Models.Business.Huawei.Default.FnSnPnPort> VacantMduFnSnPnForOntList(Ia.Ftn.Cl.Models.Business.Huawei.Dev.MduDev mdu, Ia.Ftn.Cl.Models.Huawei.EmsOnt emsOnt)
  190:         {
  191:             List<Ia.Ftn.Cl.Models.Business.Huawei.Default.FnSnPnPort> usedList, possibleList, vacantlist;
  192:  
  193:             usedList = Ia.Ftn.Cl.Models.Data.Huawei.Ems.UsedEmsVoipPstnUserFnSnPnListForEmsOntId(emsOnt.Id);
  194:  
  195:             possibleList = mdu.PossibleFnSnPnPortList;
  196:  
  197:             vacantlist = possibleList.Where(p => !usedList.Any(u => u.Fn == p.Fn && u.Sn == p.Sn && u.Pn == p.Pn)).ToList();
  198:  
  199:             return vacantlist;
  200:         }
  201:  
  202:         ////////////////////////////////////////////////////////////////////////////
  203:  
  204:         /// <summary>
  205:         ///
  206:         /// </summary>
  207:         private static List<Ia.Ftn.Cl.Models.Business.Huawei.Default.FnSnPnPort> UsedEmsVoipPstnUserFnSnPnListForEmsOntId(string emsOntId)
  208:         {
  209:             List<Ia.Ftn.Cl.Models.Business.Huawei.Default.FnSnPnPort> list;
  210:  
  211:             using (var db = new Ia.Ftn.Cl.Db())
  212:             {
  213:                 list = (from evpu in db.EmsVoipPstnUsers
  214:                         where evpu.EmsOnt != null && evpu.EmsOnt.Id == emsOntId
  215:                         // below select will produce "Exception: System.NotSupportedException: Only parameterless constructors and initializers are supported in LINQ to Entities."
  216:                         // select new Ia.Ftn.Cl.Model.Business.Huawei.Default.FnSnPnPort(evpu.FN, evpu.SN, evpu.PN)).ToList<Ia.Ftn.Cl.Model.Business.Huawei.Default.FnSnPnPort>();
  217:                         select new Ia.Ftn.Cl.Models.Business.Huawei.Default.FnSnPnPort { Fn = evpu.FN, Sn = evpu.SN, Pn = evpu.PN }).AsNoTracking().ToList<Ia.Ftn.Cl.Models.Business.Huawei.Default.FnSnPnPort>();
  218:             }
  219:  
  220:             return list;
  221:         }
  222:  
  223:         ////////////////////////////////////////////////////////////////////////////
  224:         ////////////////////////////////////////////////////////////////////////////
  225:  
  226:         /// <summary>
  227:         ///
  228:         /// </summary>
  229:         public static Ia.Ftn.Cl.Models.Business.Huawei.Default.FnSnPnPort NextVacantMsanFnSnPnForMsanDev(Ia.Ftn.Cl.Models.Business.Huawei.Dev.MsanDev msanDev)
  230:         {
  231:             Ia.Ftn.Cl.Models.Business.Huawei.Default.FnSnPnPort fnSnPn;
  232:             List<Ia.Ftn.Cl.Models.Business.Huawei.Default.FnSnPnPort> usedList, possibleList, list;
  233:  
  234:             usedList = Ia.Ftn.Cl.Models.Data.Huawei.Ems.UsedEmsVoipPstnUserFnSnPnListForMsanDevDid(msanDev.Did);
  235:  
  236:             if (usedList.Count == 0)
  237:             {
  238:                 fnSnPn = msanDev.PossibleFnSnPnList[0]; // this means EmsVoipPstnUsers does not exist for any number and the box is empty, and we should create number at 0
  239:             }
  240:             else
  241:             {
  242:                 possibleList = msanDev.PossibleFnSnPnList;
  243:  
  244:                 list = possibleList.Where(p => !usedList.Any(u => u.Fn == p.Fn && u.Sn == p.Sn && u.Pn == p.Pn)).ToList();
  245:  
  246:                 if (list.Count > 0) fnSnPn = list[0];
  247:                 else fnSnPn = null; // something went wrong
  248:             }
  249:  
  250:             return fnSnPn;
  251:         }
  252:  
  253:         ////////////////////////////////////////////////////////////////////////////
  254:  
  255:         /// <summary>
  256:         ///
  257:         /// </summary>
  258:         public static List<Ia.Ftn.Cl.Models.Business.Huawei.Default.FnSnPnPort> VacantMsanFnSnPnListForMsanDev(Ia.Ftn.Cl.Models.Business.Huawei.Dev.MsanDev msanDev)
  259:         {
  260:             List<Ia.Ftn.Cl.Models.Business.Huawei.Default.FnSnPnPort> usedList, possibleList, vacantlist;
  261:  
  262:             usedList = Ia.Ftn.Cl.Models.Data.Huawei.Ems.UsedEmsVoipPstnUserFnSnPnListForMsanDevDid(msanDev.Did);
  263:  
  264:             possibleList = msanDev.PossibleFnSnPnList;
  265:  
  266:             vacantlist = possibleList.Where(p => !usedList.Any(u => u.Fn == p.Fn && u.Sn == p.Sn && u.Pn == p.Pn)).ToList();
  267:  
  268:             return vacantlist;
  269:         }
  270:  
  271:         ////////////////////////////////////////////////////////////////////////////
  272:  
  273:         /// <summary>
  274:         ///
  275:         /// </summary>
  276:         private static List<Ia.Ftn.Cl.Models.Business.Huawei.Default.FnSnPnPort> UsedEmsVoipPstnUserFnSnPnListForMsanDevDid(int msanDevDid)
  277:         {
  278:             List<Ia.Ftn.Cl.Models.Business.Huawei.Default.FnSnPnPort> list;
  279:  
  280:             using (var db = new Ia.Ftn.Cl.Db())
  281:             {
  282:                 list = (from evpu in db.EmsVoipPstnUsers
  283:                         where evpu.EmsOnt == null && evpu.DID == msanDevDid
  284:                         select new Ia.Ftn.Cl.Models.Business.Huawei.Default.FnSnPnPort
  285:                         {
  286:                             Fn = evpu.FN,
  287:                             Sn = evpu.SN,
  288:                             Pn = evpu.PN
  289:                         }).AsNoTracking().ToList<Ia.Ftn.Cl.Models.Business.Huawei.Default.FnSnPnPort>();
  290:             }
  291:  
  292:             return list;
  293:         }
  294:  
  295:         ////////////////////////////////////////////////////////////////////////////
  296:         ////////////////////////////////////////////////////////////////////////////
  297:  
  298:         /// <summary>
  299:         ///
  300:         /// </summary>
  301:         public static string SendReadDevListByDt(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, string devType)
  302:         {
  303:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.ReadDevListByDtCommand(devType);
  304:  
  305:             ems.SendQueue.Enqueue(command);
  306:  
  307:             return command;
  308:         }
  309:  
  310:         ////////////////////////////////////////////////////////////////////////////
  311:  
  312:         /// <summary>
  313:         ///
  314:         /// </summary>
  315:         public static string SendReadDevListByDev(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, string dev)
  316:         {
  317:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.ReadDevListByDevCommand(dev);
  318:  
  319:             ems.SendQueue.Enqueue(command);
  320:  
  321:             return command;
  322:         }
  323:  
  324:         ////////////////////////////////////////////////////////////////////////////
  325:  
  326:         /// <summary>
  327:         ///
  328:         /// </summary>
  329:         public static string SendSaveDev(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, Ia.Ftn.Cl.Models.Huawei.EmsDev emsDev)
  330:         {
  331:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.SaveDevCommand(emsDev.DEV);
  332:  
  333:             ems.SendQueue.Enqueue(command);
  334:  
  335:             return command;
  336:         }
  337:  
  338:         ////////////////////////////////////////////////////////////////////////////
  339:  
  340:         /// <summary>
  341:         ///
  342:         /// </summary>
  343:         public static string SendSaveDev(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, Ia.Ftn.Cl.Models.Business.Huawei.Dev.MduDev mduDev)
  344:         {
  345:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.SaveDevCommand(mduDev);
  346:  
  347:             ems.SendQueue.Enqueue(command);
  348:  
  349:             return command;
  350:         }
  351:  
  352:         ////////////////////////////////////////////////////////////////////////////
  353:  
  354:         /// <summary>
  355:         ///
  356:         /// </summary>
  357:         public static string SendSaveDev(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, Ia.Ftn.Cl.Models.Business.Huawei.Dev.MsanDev msanDev)
  358:         {
  359:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.SaveDevCommand(msanDev);
  360:  
  361:             ems.SendQueue.Enqueue(command);
  362:  
  363:             return command;
  364:         }
  365:  
  366:         ////////////////////////////////////////////////////////////////////////////
  367:  
  368:         /// <summary>
  369:         ///
  370:         /// </summary>
  371:         public static string SendSaveDev(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, string dev)
  372:         {
  373:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.SaveDevCommand(dev);
  374:  
  375:             ems.SendQueue.Enqueue(command);
  376:  
  377:             return command;
  378:         }
  379:  
  380:         ////////////////////////////////////////////////////////////////////////////
  381:         ////////////////////////////////////////////////////////////////////////////
  382:  
  383:         /// <summary>
  384:         ///
  385:         /// </summary>
  386:         public static string SendReadBoardList(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, string dev)
  387:         {
  388:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.ReadBoardListCommand(dev);
  389:  
  390:             ems.SendQueue.Enqueue(command);
  391:  
  392:             return command;
  393:         }
  394:  
  395:         ////////////////////////////////////////////////////////////////////////////
  396:  
  397:         /// <summary>
  398:         ///
  399:         /// </summary>
  400:         public static string SendReadOntList(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, int did)
  401:         {
  402:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.ReadOntListCommand(did);
  403:  
  404:             ems.SendQueue.Enqueue(command);
  405:  
  406:             return command;
  407:         }
  408:  
  409:         ////////////////////////////////////////////////////////////////////////////
  410:  
  411:         /// <summary>
  412:         ///
  413:         /// </summary>
  414:         public static string SendReadOnt(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont ont)
  415:         {
  416:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.ReadOntCommand(ont);
  417:  
  418:             ems.SendQueue.Enqueue(command);
  419:  
  420:             return command;
  421:         }
  422:  
  423:         ////////////////////////////////////////////////////////////////////////////
  424:  
  425:         /// <summary>
  426:         ///
  427:         /// </summary>
  428:         public static string SendUpdateOntFromH248ToSip(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont ont)
  429:         {
  430:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.UpdateOntFromH248ToSipCommand(ont);
  431:  
  432:             ems.SendQueue.Enqueue(command);
  433:  
  434:             return command;
  435:         }
  436:  
  437:         ////////////////////////////////////////////////////////////////////////////
  438:         ////////////////////////////////////////////////////////////////////////////
  439:  
  440:         /// <summary>
  441:         ///
  442:         /// </summary>
  443:         public static string SendReadPortList(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, string dev, int fn, int sn)
  444:         {
  445:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.ReadPortListCommand(dev, fn, sn);
  446:  
  447:             ems.SendQueue.Enqueue(command);
  448:  
  449:             return command;
  450:         }
  451:  
  452:         ////////////////////////////////////////////////////////////////////////////
  453:         ////////////////////////////////////////////////////////////////////////////
  454:  
  455:         /// <summary>
  456:         ///
  457:         /// </summary>
  458:         public static string SendCreateOntSipInfo(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont nddOnt, string service, int telPort)
  459:         {
  460:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.CreateOrModifyOntSipInfoCommand(nddOnt, service, telPort);
  461:  
  462:             ems.SendQueue.Enqueue(command);
  463:  
  464:             return command;
  465:         }
  466:  
  467:         ////////////////////////////////////////////////////////////////////////////
  468:  
  469:         /// <summary>
  470:         ///
  471:         /// </summary>
  472:         public static string SendReadOntSipInfo(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont nddOnt)
  473:         {
  474:             return Ia.Ftn.Cl.Models.Data.Huawei.Ems.SendReadOntSipInfo(ems, nddOnt, false);
  475:         }
  476:  
  477:         ////////////////////////////////////////////////////////////////////////////
  478:  
  479:         /// <summary>
  480:         ///
  481:         /// </summary>
  482:         public static string SendReadOntSipInfo(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont nddOnt, bool sendReadOntSipInfoCommandAgainAfterNSeconds)
  483:         {
  484:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.ReadOntSipInfoCommand(nddOnt);
  485:  
  486:             ems.SendQueue.Enqueue(command);
  487:  
  488:             if (sendReadOntSipInfoCommandAgainAfterNSeconds)
  489:             {
  490:                 var command2 = Ia.Ftn.Cl.Models.Business.Huawei.Ems.ReadOntSipInfoCommand(nddOnt);
  491:  
  492:                 ems.OntSipInfoCommandAgainAfterNSecondsToDateTimeDictionary[command2] = DateTime.UtcNow.AddHours(3);
  493:             }
  494:  
  495:             return command;
  496:         }
  497:  
  498:         ////////////////////////////////////////////////////////////////////////////
  499:  
  500:         /// <summary>
  501:         ///
  502:         /// </summary>
  503:         public static string SendVacateOntSipInfo(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont nddOnt, string service, int telPort)
  504:         {
  505:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.VacateOntSipInfoCommand(nddOnt, service, telPort);
  506:  
  507:             ems.SendQueue.Enqueue(command);
  508:  
  509:             return command;
  510:         }
  511:  
  512:         ////////////////////////////////////////////////////////////////////////////
  513:         ////////////////////////////////////////////////////////////////////////////
  514:  
  515:         /// <summary>
  516:         ///
  517:         /// </summary>
  518:         public static string SendResetOnt(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont nddOnt)
  519:         {
  520:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.ResetOntCommand(nddOnt);
  521:  
  522:             ems.SendQueue.Enqueue(command);
  523:  
  524:             return command;
  525:         }
  526:  
  527:         ////////////////////////////////////////////////////////////////////////////
  528:         ////////////////////////////////////////////////////////////////////////////
  529:  
  530:         /// <summary>
  531:         ///
  532:         /// </summary>
  533:         public static string SendCreateVoipPstnUser(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, Ia.Ftn.Cl.Models.Business.Huawei.Dev.MduDev mduDev, Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont nddOnt, string service, int sn, int port)
  534:         {
  535:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.CreateOrModifyVoipPstnUserCommand(mduDev, nddOnt, service, sn, port);
  536:  
  537:             ems.SendQueue.Enqueue(command);
  538:  
  539:             return command;
  540:         }
  541:  
  542:         ////////////////////////////////////////////////////////////////////////////
  543:  
  544:         /// <summary>
  545:         ///
  546:         /// </summary>
  547:         public static string SendCreateMsanVoipPstnUser(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, Ia.Ftn.Cl.Models.Business.Huawei.Dev.MsanDev msanDev, int fn, int sn, int pn, string service)
  548:         {
  549:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.CreateOrModifyMsanVoipPstnUserCommand(msanDev, fn, sn, pn, service);
  550:  
  551:             ems.SendQueue.Enqueue(command);
  552:  
  553:             return command;
  554:         }
  555:  
  556:         ////////////////////////////////////////////////////////////////////////////
  557:  
  558:         /// <summary>
  559:         ///
  560:         /// </summary>
  561:         public static string SendReadVoipPstnUser(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, string dev, int sn, int pn)
  562:         {
  563:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.ReadVoipPstnUserCommand(dev, sn, pn);
  564:  
  565:             ems.SendQueue.Enqueue(command);
  566:  
  567:             return command;
  568:         }
  569:  
  570:         ////////////////////////////////////////////////////////////////////////////
  571:  
  572:         /// <summary>
  573:         ///
  574:         /// </summary>
  575:         public static string SendReadVoipPstnUser(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, string service)
  576:         {
  577:             var list = Ia.Ftn.Cl.Models.Business.Huawei.Ems.EmsCommandsToRetriveOntNetworkElementDataByService(service);
  578:  
  579:             foreach (string s in list) ems.SendQueue.Enqueue(s);
  580:  
  581:             return string.Join(", ", list);
  582:         }
  583:  
  584:         ////////////////////////////////////////////////////////////////////////////
  585:  
  586:         /// <summary>
  587:         ///
  588:         /// </summary>
  589:         public static string SendDeleteVoipPstnUser(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, Ia.Ftn.Cl.Models.Business.Huawei.Dev.MduDev mduDev, Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont nddOnt, string service, int sn, int telPort)
  590:         {
  591:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.DeleteVoipPstnUserCommand(mduDev, nddOnt, service, sn, telPort);
  592:  
  593:             ems.SendQueue.Enqueue(command);
  594:  
  595:             return command;
  596:         }
  597:  
  598:         ////////////////////////////////////////////////////////////////////////////
  599:  
  600:         /// <summary>
  601:         ///
  602:         /// </summary>
  603:         public static string SendDeleteVoipPstnUser(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, string dev, int fn, int sn, int pn)
  604:         {
  605:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.DeleteVoipPstnUserCommand(dev, fn, sn, pn);
  606:  
  607:             ems.SendQueue.Enqueue(command);
  608:  
  609:             return command;
  610:         }
  611:  
  612:         ////////////////////////////////////////////////////////////////////////////
  613:         ////////////////////////////////////////////////////////////////////////////
  614:  
  615:         /// <summary>
  616:         ///
  617:         /// </summary>
  618:         public static string SendCreateVoipPstnAccount(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, Ia.Ftn.Cl.Models.Business.Huawei.Dev.MduDev mduDev, Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont nddOnt, string service, int sn, int telPort)
  619:         {
  620:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.CreateOrModifyVoipPstnAccountCommand(mduDev, nddOnt, service, sn, telPort);
  621:  
  622:             ems.SendQueue.Enqueue(command);
  623:  
  624:             return command;
  625:         }
  626:  
  627:         ////////////////////////////////////////////////////////////////////////////
  628:  
  629:         /// <summary>
  630:         ///
  631:         /// </summary>
  632:         public static string SendReadVoipPstnAccount(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont nddOnt)
  633:         {
  634:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.ReadVoipPstnAccountCommand(nddOnt);
  635:  
  636:             ems.SendQueue.Enqueue(command);
  637:  
  638:             return command;
  639:         }
  640:  
  641:         ////////////////////////////////////////////////////////////////////////////
  642:  
  643:         /// <summary>
  644:         ///
  645:         /// </summary>
  646:         public static string SendVacateVoipPstnAccount(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, Ia.Ftn.Cl.Models.Business.Huawei.Dev.MduDev mduDev, Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont nddOnt, string service, int sn, int telPort)
  647:         {
  648:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.VacateVoipPstnAccountCommand(mduDev, nddOnt, service, sn, telPort);
  649:  
  650:             ems.SendQueue.Enqueue(command);
  651:  
  652:             return command;
  653:         }
  654:  
  655:         ////////////////////////////////////////////////////////////////////////////
  656:  
  657:         /// <summary>
  658:         ///
  659:         /// </summary>
  660:         public static string SendVacateVoipPstnAccount(Ia.Ftn.Cl.Models.Client.Huawei.Ems ems, string dev, int fn, int sn, int pn)
  661:         {
  662:             var command = Ia.Ftn.Cl.Models.Business.Huawei.Ems.VacateVoipPstnAccountCommand(dev, fn, sn, pn);
  663:  
  664:             ems.SendQueue.Enqueue(command);
  665:  
  666:             return command;
  667:         }
  668:  
  669:         ////////////////////////////////////////////////////////////////////////////
  670:         ////////////////////////////////////////////////////////////////////////////   
  671:     }
  672:  
  673:     ////////////////////////////////////////////////////////////////////////////
  674:     ////////////////////////////////////////////////////////////////////////////   
  675: }