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