1: using Microsoft.EntityFrameworkCore;
2: using System;
3: using System.Collections.Generic;
4: using System.Data;
5: using System.Linq;
6: using System.Text;
7: using System.Web;
8:
9: namespace Ia.Ngn.Cl.Model.Data.Nokia
10: {
11: ////////////////////////////////////////////////////////////////////////////
12:
13: /// <summary publish="true">
14: /// Optical Fiber Network's Operations Support System Management Intranet (OFN OSS) support class for Nokia's Optical Fiber Network (OFN) data model.
15: /// </summary>
16: ///
17: /// <remarks>
18: /// Copyright © 2014-2019 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
19: ///
20: /// This library is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by
21: /// the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
22: ///
23: /// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
24: /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
25: ///
26: /// You should have received a copy of the GNU General Public License along with this library. If not, see http://www.gnu.org/licenses.
27: ///
28: /// Copyright notice: This notice may not be removed or altered from any source distribution.
29: /// </remarks>
30: public class Ims
31: {
32: private static List<string> agcfGatewayRecordIp1sWithinWhichSubPartiesHaveServiceBundle2CategoryList, agcfGatewayRecordIp1sThatIndicateFsdb0List;
33:
34: private static readonly object objectLock = new object();
35:
36: ////////////////////////////////////////////////////////////////////////////
37:
38: /// <summary>
39: ///
40: /// </summary>
41: public Ims() { }
42:
43: ////////////////////////////////////////////////////////////////////////////
44:
45: /// <summary>
46: ///
47: /// </summary>
48: public static List<Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord> AgcfGatewayRecordsWithinNddOntListWithWrongSecondaryIpList()
49: {
50: string ip;
51: Dictionary<string, string> agcfGatewayRecordIpToMateExternalIPAddrDictionary;
52: Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord agcfGatewayRecord;
53: List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> ngnOntList;
54: List<Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord> agcfGatewayRecordList, agcfGatewayRecordList2;
55:
56: ngnOntList = Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntList;
57: agcfGatewayRecordList = Ia.Ngn.Cl.Model.Data.Nokia.AgcfGatewayRecord.List();
58:
59: agcfGatewayRecordIpToMateExternalIPAddrDictionary = Ia.Ngn.Cl.Model.Data.Nokia.AgcfGatewayRecord.IpToMateExternalIPAddrDictionary;
60:
61: agcfGatewayRecordList2 = new List<Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord>();
62:
63: foreach (var v in ngnOntList)
64: {
65: if (agcfGatewayRecordIpToMateExternalIPAddrDictionary.ContainsKey(v.Ip))
66: {
67: ip = agcfGatewayRecordIpToMateExternalIPAddrDictionary[v.Ip];
68:
69: if (ip != v.MgcSecondaryIp)
70: {
71: agcfGatewayRecord = (from gr in agcfGatewayRecordList
72: where gr.IP1 == v.Ip
73: select gr).SingleOrDefault();
74:
75: if (agcfGatewayRecord != null)
76: {
77: agcfGatewayRecordList2.Add(agcfGatewayRecord);
78: }
79: }
80: }
81: }
82:
83: return agcfGatewayRecordList2;
84: }
85:
86: ////////////////////////////////////////////////////////////////////////////
87:
88: /// <summary>
89: ///
90: /// </summary>
91: public static List<string> ServiceWhereSubscriberAlternateOtasRealmGroupNumberDoesNotEqualSubPartyAssocOtasRealmGroupNumberList()
92: {
93: List<string> list;
94:
95: using (var db = new Ia.Ngn.Cl.Model.Ngn())
96: {
97: list = (from su in db.Subscribers
98: join sp in db.SubParties on su.SubParty.Id equals sp.Id
99: //join ep in db.AgcfEndpoints on sp.AgcfEndpoint.Id equals ep.Id
100: where sp.AssocOtasRealm.Substring(0, 26) != su.AlternateOtasRealm.Substring(0, 26)
101: // "stas-stdn.fsimsgroup0-001." length = 26
102: select su.PartyId).AsNoTracking().ToList();
103: }
104:
105: return list;
106: }
107:
108: ////////////////////////////////////////////////////////////////////////////
109:
110: /// <summary>
111: ///
112: /// </summary>
113: public static void CreateH248SubscriberAndSubPartyAndAgcfEndpoint(Ia.Ngn.Cl.Model.Client.Nokia.Ims ims, int gwId, string service, int flatTermId, Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt, out string result)
114: {
115: Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response entNgfsSubscriberResponse, entNgfsAgcfEndpointResponse;
116:
117: ims.EntNgfsSubscriberAndNgfsSubPartyV2_H248(service, gwId, nddOnt, out entNgfsSubscriberResponse);
118:
119: if (entNgfsSubscriberResponse.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful)
120: {
121: ims.EntNgfsAgcfEndpointV2(service, gwId, flatTermId, nddOnt, out entNgfsAgcfEndpointResponse);
122:
123: // remove number if creation of endpoint failed
124: if (entNgfsAgcfEndpointResponse.ResultCode != Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful)
125: {
126: ims.DltNgfsSubscriberAndNgfsSubPartyV2(service, nddOnt, out entNgfsSubscriberResponse);
127: }
128: else
129: {
130:
131: }
132: }
133: else
134: {
135: entNgfsAgcfEndpointResponse = new Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response();
136:
137: entNgfsAgcfEndpointResponse.ResultCode = Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Null;
138: }
139:
140: result = service + "," + gwId + "," + flatTermId + "," + entNgfsSubscriberResponse.ResultCode.ToString() + "," + entNgfsAgcfEndpointResponse.ResultCode.ToString();
141: }
142:
143: ////////////////////////////////////////////////////////////////////////////
144:
145: /// <summary>
146: ///
147: /// </summary>
148: public static void CreateSipSubscriber(Ia.Ngn.Cl.Model.Client.Nokia.Ims alIms, string service, Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt, out string result)
149: {
150: alIms.EntNgfsSubscriberAndNgfsSubPartyV2_Sip(service, nddOnt, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response response);
151:
152: result = service + "," + response.ResultCode.ToString();
153: }
154:
155: ////////////////////////////////////////////////////////////////////////////
156:
157: /// <summary>
158: ///
159: /// </summary>
160: public static void Modify248SubscriberAndSubPartyAndDeleteAgcfEndpointToSip(Ia.Ngn.Cl.Model.Client.Nokia.Ims alIms, string service, Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt, out string result)
161: {
162: Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response edNgfsSubscriberResponse, dltNgfsAgcfEndpointResponse;
163:
164: alIms.EdNgfsSubscriberAndNgfsSubPartyV2_H248ToSip(service, nddOnt, out edNgfsSubscriberResponse);
165:
166: if (edNgfsSubscriberResponse.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful)
167: {
168: alIms.DltNgfsAgcfEndpointV2(service, nddOnt, out dltNgfsAgcfEndpointResponse);
169: }
170: else
171: {
172: dltNgfsAgcfEndpointResponse = new Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response();
173:
174: dltNgfsAgcfEndpointResponse.ResultCode = Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Null;
175: }
176:
177: result = service + "," + edNgfsSubscriberResponse.ResultCode.ToString() + "," + dltNgfsAgcfEndpointResponse.ResultCode.ToString();
178: }
179:
180: ////////////////////////////////////////////////////////////////////////////
181:
182: /// <summary>
183: ///
184: /// </summary>
185: public static void DeleteAgcfEndpointAndH248SubscriberAndSubParty(Ia.Ngn.Cl.Model.Client.Nokia.Ims alIms, string service, Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt, out string result)
186: {
187: alIms.DltNgfsAgcfEndpointV2(service, nddOnt, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response dltNgfsAgcfEndpointResponse);
188:
189: alIms.DltNgfsSubscriberAndNgfsSubPartyV2(service, nddOnt, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response dltNgfsSubscriberResponse);
190:
191: result = service + "," + dltNgfsSubscriberResponse.ResultCode.ToString() + "," + dltNgfsAgcfEndpointResponse.ResultCode.ToString();
192: }
193:
194: ////////////////////////////////////////////////////////////////////////////
195:
196: /// <summary>
197: ///
198: /// </summary>
199: public static void DeleteAgcfEndpointAndH248SubscriberAndSubParty(Ia.Ngn.Cl.Model.Client.Nokia.Ims alIms, string service, string primarySwitch, string fsdb, out string result)
200: {
201: alIms.DltNgfsAgcfEndpointV2(service, primarySwitch, fsdb, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response dltNgfsAgcfEndpointResponse);
202:
203: alIms.DltNgfsSubscriberAndNgfsSubPartyV2(service, primarySwitch, fsdb, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response dltNgfsSubscriberResponse);
204:
205: result = service + "," + dltNgfsSubscriberResponse.ResultCode.ToString() + "," + dltNgfsAgcfEndpointResponse.ResultCode.ToString();
206: }
207:
208: ////////////////////////////////////////////////////////////////////////////
209:
210: /// <summary>
211: ///
212: /// </summary>
213: public static void DeleteH248SubscriberAndSubParty(Ia.Ngn.Cl.Model.Client.Nokia.Ims alIms, string service, Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt, out string result)
214: {
215: // I use this function sometimes to delete wrong subscriber entries by staff
216:
217: alIms.DltNgfsSubscriberAndNgfsSubPartyV2(service, nddOnt, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response dltNgfsSubscriberResponse);
218:
219: result = service + "," + dltNgfsSubscriberResponse.ResultCode.ToString();
220: }
221:
222: ////////////////////////////////////////////////////////////////////////////
223:
224: /// <summary>
225: ///
226: /// </summary>
227: public static void DeleteSipSubscriber(Ia.Ngn.Cl.Model.Client.Nokia.Ims alIms, string service, Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt, out string result)
228: {
229: alIms.DltNgfsSubscriberAndNgfsSubPartyV2(service, nddOnt, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response dltNgfsSubscriberResponse);
230:
231: result = service + "," + dltNgfsSubscriberResponse.ResultCode.ToString();
232: }
233:
234: ////////////////////////////////////////////////////////////////////////////
235: ////////////////////////////////////////////////////////////////////////////
236:
237:
238:
239:
240:
241:
242: ////////////////////////////////////////////////////////////////////////////
243: ////////////////////////////////////////////////////////////////////////////
244:
245: /// <summary>
246: ///
247: /// </summary>
248: public static void UpdateSupplementaryService(Ia.Ngn.Cl.Model.Client.Nokia.Ims alIms, string service, Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt, Ia.Ngn.Cl.Model.Business.Service.SupplementaryService supplementaryService, bool supplementaryServiceState, out string result)
249: {
250: Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response response;
251:
252: switch (supplementaryService)
253: {
254: case (Ia.Ngn.Cl.Model.Business.Service.SupplementaryService.CallerId):
255: {
256: alIms.EdNgfsSubscriberV2_CallingLineId(service, nddOnt, supplementaryServiceState, out response);
257: result = service + "," + nddOnt.Access.Name + ",CallerId: " + supplementaryServiceState.ToString().ToLower() + "," + response.ResultCode.ToString();
258: break;
259: }
260: case (Ia.Ngn.Cl.Model.Business.Service.SupplementaryService.AbbriviatedCalling):
261: {
262: alIms.EdNgfsSubscriberV2_OneDigitSpeedDial(service, nddOnt, supplementaryServiceState, out response);
263: result = service + "," + nddOnt.Access.Name + ",AbbriviatedCalling: " + supplementaryServiceState.ToString().ToLower() + "," + response.ResultCode.ToString();
264: break;
265: }
266: case (Ia.Ngn.Cl.Model.Business.Service.SupplementaryService.CallForwarding):
267: {
268: alIms.EdNgfsSubscriberV2_CallForwardingVari(service, nddOnt, supplementaryServiceState, out response);
269: result = service + "," + nddOnt.Access.Name + ",CallForwarding: " + supplementaryServiceState.ToString().ToLower() + "," + response.ResultCode.ToString();
270: break;
271: }
272: case (Ia.Ngn.Cl.Model.Business.Service.SupplementaryService.CallWaiting):
273: {
274: alIms.EdNgfsSubscriberV2_CallWaiting(service, nddOnt, supplementaryServiceState, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response subscriberResponse);
275:
276: if (nddOnt.Pon.PonGroup.Olt.IsSip == false) // if H.248
277: {
278: result = service + "," + nddOnt.Access.Name + ",CallWaiting: " + supplementaryServiceState.ToString().ToLower() + ", subscriber: " + subscriberResponse.ResultCode.ToString();
279: }
280: else
281: {
282: alIms.EdNgfsAgcfEndpointV2_CallWaiting(service, nddOnt, supplementaryServiceState, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response agcfEndpointResponse);
283:
284: result = service + "," + nddOnt.Access.Name + ",CallWaiting: " + supplementaryServiceState.ToString().ToLower() + ", subscriber: " + subscriberResponse.ResultCode.ToString() + ", agcfEndpoint: " + agcfEndpointResponse.ResultCode.ToString();
285: }
286:
287: break;
288: }
289: case (Ia.Ngn.Cl.Model.Business.Service.SupplementaryService.ConferenceCall):
290: {
291: alIms.EdNgfsSubscriberV2_ConferenceCall(service, nddOnt, supplementaryServiceState, out response);
292: result = service + "," + nddOnt.Access.Name + ",ConferenceCall: " + supplementaryServiceState.ToString().ToLower() + "," + response.ResultCode.ToString();
293: break;
294: }
295: case (Ia.Ngn.Cl.Model.Business.Service.SupplementaryService.WakeupCall):
296: {
297: alIms.EdNgfsSubscriberV2_ReminderCall(service, nddOnt, supplementaryServiceState, out response);
298: result = service + "," + nddOnt.Access.Name + ",WakeupCall: " + supplementaryServiceState.ToString().ToLower() + "," + response.ResultCode.ToString();
299: break;
300: }
301: case (Ia.Ngn.Cl.Model.Business.Service.SupplementaryService.InternationalCallingUserControlled):
302: {
303: alIms.EdNgfsSubscriberV2_InternationalCallingUserControlled(service, nddOnt, supplementaryServiceState, out response);
304: result = service + "," + nddOnt.Access.Name + ",InternationalCallingUserControlled: " + supplementaryServiceState.ToString().ToLower() + "," + response.ResultCode.ToString();
305: break;
306: }
307: case (Ia.Ngn.Cl.Model.Business.Service.SupplementaryService.InternationalCalling):
308: {
309: alIms.EdNgfsSubscriberV2_InternationalCalling(service, nddOnt, supplementaryServiceState, out response);
310: result = service + "," + nddOnt.Access.Name + ",InternationalCalling: " + supplementaryServiceState.ToString().ToLower() + "," + response.ResultCode.ToString();
311: break;
312: }
313: case (Ia.Ngn.Cl.Model.Business.Service.SupplementaryService.ServiceSuspension):
314: {
315: alIms.EdNgfsSubscriberV2_ServiceSuspension(service, nddOnt, supplementaryServiceState, out response);
316: result = service + "," + nddOnt.Access.Name + ",ServiceSuspension: " + supplementaryServiceState.ToString().ToLower() + "," + response.ResultCode.ToString();
317: break;
318: }
319: default:
320: {
321: result = service + ",unknown SupplementaryService: " + supplementaryServiceState.ToString().ToLower();
322: break;
323: }
324: }
325: }
326:
327: ////////////////////////////////////////////////////////////////////////////
328:
329: /// <summary>
330: ///
331: /// </summary>
332: public static void AssignServiceSuspensionStateToServiceSubscriber(Ia.Ngn.Cl.Model.Client.Nokia.Ims alIms, string service, Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt, bool serviceSuspensionState, out string result)
333: {
334: alIms.EdNgfsSubscriberV2_ServiceSuspension(service, nddOnt, serviceSuspensionState, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response response);
335:
336: result = service + "," + nddOnt.Access.Name + ",service suspension: " + serviceSuspensionState.ToString().ToLower() + "," + response.ResultCode.ToString();
337: }
338:
339: ////////////////////////////////////////////////////////////////////////////
340:
341: /// <summary>
342: ///
343: /// </summary>
344: public static Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord ReadAgcfGatewayRecordForGwId(Ia.Ngn.Cl.Model.Client.Nokia.Ims alIms, int gwId, out string result)
345: {
346: bool b;
347: string r;
348: Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord agcfGatewayRecord;
349:
350: r = string.Empty;
351:
352: agcfGatewayRecord = alIms.RtrvNgfsAgcfGatewayRecordV2(gwId, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response response);
353:
354: if (response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful || response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.PlxServiceObjectDoesNotExist)
355: {
356: b = Ia.Ngn.Cl.Model.Data.Nokia.Ims.UpdateAgcfGatewayRecord(gwId, response, agcfGatewayRecord, out r);
357: }
358:
359: result = "GatewayRecord: " + gwId + ": " + response.ResultCode.ToString() + ": " + r;
360:
361: return agcfGatewayRecord;
362: }
363:
364: ////////////////////////////////////////////////////////////////////////////
365:
366: /// <summary>
367: ///
368: /// </summary>
369: public static Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecordTemp ReadAgcfGatewayRecordFromSkbForGwId(Ia.Ngn.Cl.Model.Client.Nokia.Ims alIms, int gwId, out string result)
370: {
371: bool b;
372: Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecordTemp agcfGatewayRecord;
373:
374: agcfGatewayRecord = alIms.RtrvNgfsAgcfGatewayRecordFromSkbV2(gwId, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response response);
375:
376: if (response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful || response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.PlxServiceObjectDoesNotExist)
377: {
378: b = Ia.Ngn.Cl.Model.Data.Nokia.Ims.UpdateAgcfGatewayRecordForSkb(gwId, response, agcfGatewayRecord);
379: }
380:
381: result = "GatewayRecord: " + gwId + ": " + response.ResultCode.ToString();
382:
383: return agcfGatewayRecord;
384: }
385:
386: /*
387: ////////////////////////////////////////////////////////////////////////////
388:
389: /// <summary>
390: ///
391: /// </summary>
392: public static void ReadAgcfEndpointListForGwId(Ia.Ngn.Cl.Model.Client.Nokia.Ims alIms, int gwId, out string result)
393: {
394: bool b;
395: int agcfGatewayRecordId;
396: Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt;
397: Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord agcfGatewayRecord;
398: List<Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint> agcfEndpointList;
399:
400: // below: read the AgcfGatewayRecord
401: agcfGatewayRecordId = Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord.AgcfGatewayRecordId(Ia.Ngn.Cl.Model.Business.Nokia.AgcfGatewayTable.NgfsAgcfGatewayTableAid, gwId);
402: agcfGatewayRecord = Ia.Ngn.Cl.Model.Data.Nokia.AgcfGatewayRecord.Read(agcfGatewayRecordId);
403:
404: if (agcfGatewayRecord != null)
405: {
406: nddOnt = Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntIpToOntDictionary.ContainsKey(agcfGatewayRecord.IP1) ? Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntIpToOntDictionary[agcfGatewayRecord.IP1] : null;
407:
408: if (nddOnt != null)
409: {
410: agcfEndpointList = alIms.RtrvNgfsAgcfEndpointV2List(agcfGatewayRecord.GwId, nddOnt, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response response);
411:
412: if (response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful || response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.PlxServiceObjectDoesNotExist || response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.SuccessfulButNoParameters)
413: {
414: b = Ia.Ngn.Cl.Model.Data.Nokia.Ims.UpdateNgfsAgcfEndpointList(gwId, agcfGatewayRecordId, response, agcfEndpointList);
415: }
416: else if (response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.SessionInvalid)
417: {
418: }
419: else throw new Exception(@"Undefined result code """ + response + @""" seen in Ia.Ngn.Cl.Model.Data.Nokia.Ims.ResultCode");
420:
421: result = "Endpoint: GwId:" + gwId + ", " + response.ResultCode.ToString();
422: }
423: else
424: {
425: result = "Endpoint: " + "Error: nddOnt == null, GwId:" + gwId;
426: }
427: }
428: else
429: {
430: result = "Endpoint: " + "GwId:" + gwId + ", Exception: " + @"agcfGatewayRecord is null, agcfGatewayRecordsId=" + agcfGatewayRecordId;
431: }
432: }
433: */
434:
435: ////////////////////////////////////////////////////////////////////////////
436:
437: /// <summary>
438: ///
439: /// </summary>
440: public static void CreateAgcfGatewayRecordForGwId(Ia.Ngn.Cl.Model.Client.Nokia.Ims nokiaIms, int gwId, Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt, out string result)
441: {
442: nokiaIms.EntNgfsAgcfGwCombinedRecV2(gwId, nddOnt, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response response);
443:
444: result = response.ResultCode.ToString();
445: }
446:
447: ////////////////////////////////////////////////////////////////////////////
448:
449: /// <summary>
450: ///
451: /// </summary>
452: public static void ReadUpdateAgcfGatewayRecordAndAgcfEndpointListAndSubPartyAndSubscriberAndServiceForGwId(Ia.Ngn.Cl.Model.Client.Nokia.Ims nokiaIms/*, Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt*/, int gwId, out string result)
453: {
454: bool agcfGatewayRecordUpdated, agcfEndpointListUpdated, ngfsSubPartyUpdated, ngfsSubscriberUpdated;
455: int agcfGatewayRecordId, imsService;
456: string service, primarySwitch, partyId, prividUser, subPartyId, r;
457: //Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt;
458: Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord agcfGatewayRecord;
459: Ia.Ngn.Cl.Model.Nokia.SubParty subParty;
460: Ia.Ngn.Cl.Model.Nokia.Subscriber subscriber;
461: List<Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint> agcfEndpointList;
462:
463: // Read GwId->Ep(s)->Sp->Sub, and ask about non FSDB sub search on XML
464:
465: result = "gwId: " + gwId;
466:
467: agcfGatewayRecordId = Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord.AgcfGatewayRecordId(Ia.Ngn.Cl.Model.Business.Nokia.AgcfGatewayTable.NgfsAgcfGatewayTableAid, gwId);
468: agcfGatewayRecord = nokiaIms.RtrvNgfsAgcfGatewayRecordV2(gwId, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response response);
469:
470: if (response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful || response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.PlxServiceObjectDoesNotExist)
471: {
472: agcfGatewayRecordUpdated = Ia.Ngn.Cl.Model.Data.Nokia.Ims.UpdateAgcfGatewayRecord(gwId, response, agcfGatewayRecord, out r);
473:
474: if (!string.IsNullOrEmpty(r)) result += ", UpdateAgcfGatewayRecord: " + r;
475:
476: if (agcfGatewayRecord != null)
477: {
478: imsService = Ia.Ngn.Cl.Model.Business.Nokia.Ims.ImsServiceFromAgcfSipIaPort(agcfGatewayRecord.AgcfSipIaPort);
479: primarySwitch = Ia.Ngn.Cl.Model.Business.Nokia.Ims.PrimarySwitchFromAgcfGatewayRecord(agcfGatewayRecord.IsPrimary);
480:
481: //if (nddOnt != null) result += " " + nddOnt.Access.Name;
482: //else result += " warning: nddOnt is null for IP: " + agcfGatewayRecord.IP1;
483:
484: agcfEndpointList = nokiaIms.RtrvNgfsAgcfEndpointV2List(agcfGatewayRecord.GwId, primarySwitch, imsService, out response);
485:
486: if (response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful || response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.PlxServiceObjectDoesNotExist || response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.SuccessfulButNoParameters)
487: {
488: agcfEndpointListUpdated = Ia.Ngn.Cl.Model.Data.Nokia.Ims.UpdateNgfsAgcfEndpointList(gwId, agcfGatewayRecordId, response, agcfEndpointList);
489:
490: agcfEndpointList = Ia.Ngn.Cl.Model.Data.Nokia.AgcfEndpoint.List(gwId);
491:
492: if (agcfEndpointList != null)
493: {
494: foreach (Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint agcfEndpoint in agcfEndpointList)
495: {
496: prividUser = agcfEndpoint.PrividUser;
497: partyId = Ia.Ngn.Cl.Model.Business.NumberFormatConverter.PartyId(prividUser);
498:
499: subParty = nokiaIms.RtrvNgfsSubPartyV2(partyId, primarySwitch, imsService, out response);
500:
501: if (response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful || response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.PlxServiceObjectDoesNotExist)
502: {
503: ngfsSubPartyUpdated = Ia.Ngn.Cl.Model.Data.Nokia.Ims.UpdateNgfsSubParty(partyId, agcfEndpoint.Id, response, subParty);
504:
505: // below: read the SubParty
506: subPartyId = Ia.Ngn.Cl.Model.Nokia.SubParty.SubPartyId(partyId);
507: subParty = Ia.Ngn.Cl.Model.Data.Nokia.SubParty.Read(subPartyId);
508:
509: if (subParty != null)
510: {
511: subscriber = nokiaIms.RtrvNgfsSubscriberV2(partyId, primarySwitch, imsService, out response);
512:
513: if (response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful || response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.PlxServiceObjectDoesNotExist)
514: {
515: service = Ia.Ngn.Cl.Model.Business.NumberFormatConverter.Service(partyId);
516:
517: ngfsSubscriberUpdated = Ia.Ngn.Cl.Model.Data.Nokia.Ims.UpdateNgfsSubscriber(partyId, subPartyId, response, subscriber);
518:
519: Ia.Ngn.Cl.Model.Data.Nokia.Ims.UpdateServiceFromAgcfGatewayRecordAndAgcfEndpointAndSubPartyAndSubscriber(service, agcfGatewayRecord, agcfEndpoint, subParty, subscriber);
520:
521: result += "," + service;
522: }
523: else
524: {
525: result += " error: subscriber: " + response.ResultCode.ToString();
526: }
527: }
528: else
529: {
530: result += " subParty is null";
531: }
532: }
533: else
534: {
535: result += " error: subParty: " + response.ResultCode.ToString();
536: }
537: }
538: }
539: else
540: {
541: result += " agcfEndpointList is null";
542: }
543: }
544: else
545: {
546: result += " error: agcfEndpointList: " + response.ResultCode.ToString();
547: }
548: }
549: else
550: {
551: result += " agcfGatewayRecord is null";
552: }
553: }
554: else
555: {
556: result += " error: agcfGatewayRecord: " + response.ResultCode.ToString();
557: }
558:
559: // temp
560: //Ia.Ngn.Cl.Model.Data.Nokia.Ims.ReadAgcfGatewayRecordFromSkbForGwId(nokiaIms, gwId, out r2);
561: //result += ". AgcfGatewayRecord (SKB): " + r2;
562: }
563:
564: ////////////////////////////////////////////////////////////////////////////
565:
566: /// <summary>
567: ///
568: /// </summary>
569: public static void ReadUpdateSubPartyAndSubscriberAndServiceForService(Ia.Ngn.Cl.Model.Client.Nokia.Ims nokiaIms, string _service, Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt, out string result)
570: {
571: bool updated;
572: int imsService;
573: string service, primarySwitch, partyId, subPartyId;
574: Ia.Ngn.Cl.Model.Nokia.SubParty subParty;
575: Ia.Ngn.Cl.Model.Nokia.Subscriber subscriber;
576: Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response subPartyResponse, subscriberResponse;
577:
578: result = string.Empty;
579:
580: partyId = Ia.Ngn.Cl.Model.Business.NumberFormatConverter.PartyId(_service);
581: subPartyId = Ia.Ngn.Cl.Model.Nokia.SubParty.SubPartyId(partyId);
582: service = Ia.Ngn.Cl.Model.Business.NumberFormatConverter.Service(partyId);
583:
584: if (nddOnt != null)
585: {
586: imsService = nddOnt.ImsService;
587: primarySwitch = nddOnt.PrimarySwitch;
588:
589: subParty = nokiaIms.RtrvNgfsSubPartyV2(subPartyId, primarySwitch, imsService, out subPartyResponse);
590: subscriber = nokiaIms.RtrvNgfsSubscriberV2(partyId, primarySwitch, imsService, out subscriberResponse);
591:
592: updated = Ia.Ngn.Cl.Model.Data.Nokia.Ims.UpdateNgfsSubPartyAndNgfsSubscriberWithoutEndPoint(subPartyId, subParty, subPartyResponse, partyId, subscriber, subscriberResponse);
593: Ia.Ngn.Cl.Model.Data.Nokia.Ims.UpdateServiceFromSubPartyAndSubscriber(service, nddOnt.Access.Id);
594: }
595: else
596: {
597: /*
598: foreach (Ia.Ngn.Cl.Model.Business.Nokia.Ims.ImsBasicService ibs in Ia.Ngn.Cl.Model.Business.Nokia.Ims.ImsBasicServiceList)
599: {
600: Ia.Ngn.Cl.Model.Data.Nokia.Ims.ReadSubPartyAndSubscriber(nokiaIms, service, ibs.PrimarySwitch, ibs.Fsdb, ibs.Service, out string r);
601:
602: result += r + ",";
603: }
604: */
605: }
606: }
607:
608: ////////////////////////////////////////////////////////////////////////////
609:
610: /// <summary>
611: ///
612: /// </summary>
613: public static void ReadSubPartyAndSubscriber(Ia.Ngn.Cl.Model.Client.Nokia.Ims nokiaIms, string _service, string primarySwitch, string fsdb, int imsService, out string result)
614: {
615: bool updated;
616: string service, partyId, subPartyId;
617: Ia.Ngn.Cl.Model.Nokia.SubParty subParty;
618: Ia.Ngn.Cl.Model.Nokia.Subscriber subscriber;
619: Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response subPartyResponse, subscriberResponse;
620:
621: result = string.Empty;
622:
623: partyId = Ia.Ngn.Cl.Model.Business.NumberFormatConverter.PartyId(_service);
624: subPartyId = Ia.Ngn.Cl.Model.Nokia.SubParty.SubPartyId(partyId);
625: service = Ia.Ngn.Cl.Model.Business.NumberFormatConverter.Service(partyId);
626:
627: subParty = nokiaIms.RtrvNgfsSubPartyV2(subPartyId, primarySwitch, imsService, out subPartyResponse);
628: subscriber = nokiaIms.RtrvNgfsSubscriberV2(partyId, primarySwitch, imsService, out subscriberResponse);
629:
630: updated = Ia.Ngn.Cl.Model.Data.Nokia.Ims.UpdateNgfsSubPartyAndNgfsSubscriberWithoutEndPoint(subPartyId, subParty, subPartyResponse, partyId, subscriber, subscriberResponse);
631: Ia.Ngn.Cl.Model.Data.Nokia.Ims.UpdateServiceFromSubPartyAndSubscriber(service, string.Empty);
632: }
633:
634: ////////////////////////////////////////////////////////////////////////////
635:
636: /// <summary>
637: ///
638: /// </summary>
639: public static void DeleteAgcfGatewayRecordForGwId(Ia.Ngn.Cl.Model.Client.Nokia.Ims nokiaIms, Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord agcfGatewayRecord, out string result)
640: {
641: string primarySwitch, secondarySwitch;
642:
643: primarySwitch = Ia.Ngn.Cl.Model.Business.Nokia.Ims.PrimarySwitchFromAgcfGatewayRecord(agcfGatewayRecord.IsPrimary);
644: secondarySwitch = Ia.Ngn.Cl.Model.Business.Nokia.Ims.SecondarySwitchFromAgcfGatewayRecord(agcfGatewayRecord.IsPrimary);
645:
646: nokiaIms.DltNgfsAgcfGwCombinedRecV2(agcfGatewayRecord.GwId, primarySwitch, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response primarySwitchDeleteResponse);
647: nokiaIms.DltNgfsAgcfGwCombinedRecV2(agcfGatewayRecord.GwId, secondarySwitch, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response secondarySwitchDeleteResponse);
648:
649: result = "Primary: " + primarySwitchDeleteResponse.ResultCode.ToString() + " (FailureReason: " + primarySwitchDeleteResponse.FailureReason.ToString() + "), Secondary: " + secondarySwitchDeleteResponse.ResultCode.ToString() + " (FailureReason: " + secondarySwitchDeleteResponse.FailureReason.ToString() + "). ";
650: }
651:
652: ////////////////////////////////////////////////////////////////////////////
653:
654: /// <summary>
655: ///
656: /// </summary>
657: public static void DeleteAgcfGatewayRecordForGwId(Ia.Ngn.Cl.Model.Client.Nokia.Ims nokiaIms, int gwId, out string result)
658: {
659: string firstSwitch, secondSwitch;
660:
661: firstSwitch = Ia.Ngn.Cl.Model.Business.Nokia.Ims.TEC;
662: secondSwitch = Ia.Ngn.Cl.Model.Business.Nokia.Ims.SKB;
663:
664: nokiaIms.DltNgfsAgcfGwCombinedRecV2(gwId, firstSwitch, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response primarySwitchDeleteResponse);
665: nokiaIms.DltNgfsAgcfGwCombinedRecV2(gwId, secondSwitch, out Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response secondarySwitchDeleteResponse);
666:
667: result = "First: " + primarySwitchDeleteResponse.ResultCode.ToString() + ", Second: " + secondarySwitchDeleteResponse.ResultCode.ToString() + ". ";
668: }
669:
670: /*
671: ////////////////////////////////////////////////////////////////////////////
672:
673: /// <summary>
674: ///
675: /// </summary>
676: public static void ReadAgcfEndpointAndSubPartyAndSubscriberForService(Ia.Ngn.Cl.Model.Client.Nokia.Ims alIms, int gwId, string service, out string result)
677: {
678: bool ngfsSubPartyUpdated, ngfsSubscriberUpdated;
679: int imsService;
680: string primarySwitch, partyId, prividUser, subPartyId;
681: Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt;
682: Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord agcfGatewayRecord;
683: Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint agcfEndpoint;
684: Ia.Ngn.Cl.Model.Nokia.SubParty subParty;
685: Ia.Ngn.Cl.Model.Nokia.Subscriber subscriber;
686: Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response response;
687:
688: result = "service: " + service + ", gwId: " + gwId;
689:
690: prividUser = Ia.Ngn.Cl.Model.Business.NumberFormatConverter.PrividUser(service);
691: partyId = Ia.Ngn.Cl.Model.Business.NumberFormatConverter.PartyId(service);
692:
693: Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord agcfGatewayRecord;
694:
695: agcfEndpoint = alIms.RtrvNgfsAgcfEndpointV2(prividUser, primarySwitch, imsService, out response);
696:
697: if (response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful || response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.PLX_SERVICE_OBJECT_DOES_NOT_EXIST || response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.SuccessfulButNoParameters)
698: {
699: agcfEndpoint = Ia.Ngn.Cl.Model.Data.Nokia.AgcfEndpoint.Read(prividUser);
700:
701: if (agcfEndpoint != null)
702: {
703: nddOnt = (from q in Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntList where q.Ip == agcfEndpoint.AgcfGatewayRecord.IP1 select q).SingleOrDefault();
704: imsService = Ia.Ngn.Cl.Model.Business.Nokia.Ims.ImsServiceFromAgcfSipIaPort(agcfEndpoint.AgcfGatewayRecord.AgcfSipIaPort);
705: primarySwitch = Ia.Ngn.Cl.Model.Business.Nokia.Ims.PrimarySwitchFromAgcfGatewayRecord(agcfEndpoint.AgcfGatewayRecord.IsPrimary);
706:
707: if (nddOnt != null) result += " " + nddOnt.Access.Name;
708: else result += " warning: nddOnt is null for IP: " + agcfEndpoint.AgcfGatewayRecord.IP1;
709:
710: subParty = alIms.RtrvNgfsSubPartyV2(partyId, primarySwitch, imsService, out response);
711:
712: if (response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful || response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.PLX_SERVICE_OBJECT_DOES_NOT_EXIST)
713: {
714: ngfsSubPartyUpdated = Ia.Ngn.Cl.Model.Data.Nokia.Ims.UpdateNgfsSubParty(partyId, agcfEndpoint.Id, response, subParty);
715:
716: // below: read the SubParty
717: subPartyId = Ia.Ngn.Cl.Model.Nokia.SubParty.SubPartyId(partyId);
718: subParty = Ia.Ngn.Cl.Model.Nokia.SubParty.Read(subPartyId);
719:
720: if (subParty != null)
721: {
722: subscriber = alIms.RtrvNgfsSubscriberV2(partyId, primarySwitch, imsService, out response);
723:
724: if (response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful || response.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.PLX_SERVICE_OBJECT_DOES_NOT_EXIST)
725: {
726: service = Ia.Ngn.Cl.Model.Business.NumberFormatConverter.Service(partyId);
727:
728: ngfsSubscriberUpdated = Ia.Ngn.Cl.Model.Data.Nokia.Ims.UpdateNgfsSubscriber(partyId, subPartyId, response, subscriber);
729:
730: Ia.Ngn.Cl.Model.Data.Nokia.Ims.UpdateServiceFromAgcfEndpointAndSubPartyAndSubscriber(service, agcfEndpoint, subParty, subscriber);
731:
732: result += "," + service;
733: }
734: else
735: {
736: result += " error: subscriber: " + response.ResultCode.ToString();
737: }
738: }
739: else
740: {
741: result += " subParty is null";
742: }
743: }
744: else
745: {
746: result += " error: subParty: " + response.ResultCode.ToString();
747: }
748: }
749: else
750: {
751: result += " agcfEndpoint is null";
752: }
753: }
754: else
755: {
756: result += " error: agcfEndpointList: " + response.ResultCode.ToString();
757: }
758: }
759: */
760:
761: ////////////////////////////////////////////////////////////////////////////
762:
763: /// <summary>
764: ///
765: /// </summary>
766: public static bool UpdateAgcfGatewayRecord(int gwId, Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response response, Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord newAgcfGatewayRecord, out string result)
767: {
768: bool updated;
769: int id, tableId;
770: Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord agcfGatewayRecord;
771:
772: tableId = Ia.Ngn.Cl.Model.Business.Nokia.AgcfGatewayTable.NgfsAgcfGatewayTableAid;
773:
774: result = string.Empty;
775:
776: using (var db = new Ia.Ngn.Cl.Model.Ngn())
777: {
778: id = Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord.AgcfGatewayRecordId(tableId, gwId);
779:
780: agcfGatewayRecord = (from gr in db.AgcfGatewayRecords where gr.Id == id select gr).Include(gr => gr.AgcfEndpoints).SingleOrDefault();
781:
782: switch (response.ResultCode)
783: {
784: case Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful:
785: {
786: if (agcfGatewayRecord == null)
787: {
788: newAgcfGatewayRecord.Created = newAgcfGatewayRecord.Updated = DateTime.UtcNow.AddHours(3);
789: db.AgcfGatewayRecords.Add(newAgcfGatewayRecord);
790:
791: updated = true;
792: }
793: else
794: {
795: if (agcfGatewayRecord.Update(newAgcfGatewayRecord))
796: {
797: db.AgcfGatewayRecords.Attach(agcfGatewayRecord);
798: db.Entry(agcfGatewayRecord).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
799:
800: updated = true;
801: }
802: else updated = false;
803: }
804:
805: break;
806: }
807: case Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.PlxServiceObjectDoesNotExist:
808: {
809: if (agcfGatewayRecord != null)
810: {
811: // below: delete if foreign key is not null or zero
812: if (agcfGatewayRecord.AgcfEndpoints == null || agcfGatewayRecord.AgcfEndpoints.Count == 0)
813: {
814: db.AgcfGatewayRecords.Remove(agcfGatewayRecord);
815:
816: updated = true;
817: }
818: else
819: {
820: updated = false;
821:
822: result = "AGCF gateway record for GwId " + gwId + " does not exist in IMS, but agcfGatewayRecord.AgcfEndpoints != null && agcfGatewayRecord.AgcfEndpoints.Count > 0. ";
823: }
824: }
825: else updated = false;
826:
827: break;
828: }
829: default: updated = false; break;
830: }
831:
832: db.SaveChanges();
833: }
834:
835: return updated;
836: }
837:
838: ////////////////////////////////////////////////////////////////////////////
839:
840: /// <summary>
841: ///
842: /// </summary>
843: public static bool UpdateAgcfGatewayRecordForSkb(int gwId, Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response response, Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecordTemp newAgcfGatewayRecord)
844: {
845: bool updated;
846: int id, tableId;
847: Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecordTemp agcfGatewayRecord;
848:
849: tableId = Ia.Ngn.Cl.Model.Business.Nokia.AgcfGatewayTable.NgfsAgcfGatewayTableAid;
850:
851: using (var db = new Ia.Ngn.Cl.Model.Ngn())
852: {
853: id = Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord.AgcfGatewayRecordId(tableId, gwId);
854:
855: agcfGatewayRecord = (from gr in db.AgcfGatewayRecordTemps where gr.Id == id select gr).SingleOrDefault();
856:
857: switch (response.ResultCode)
858: {
859: case Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful:
860: {
861: if (agcfGatewayRecord == null)
862: {
863: newAgcfGatewayRecord.Created = newAgcfGatewayRecord.Updated = DateTime.UtcNow.AddHours(3);
864: db.AgcfGatewayRecordTemps.Add(newAgcfGatewayRecord);
865:
866: updated = true;
867: }
868: else
869: {
870: if (agcfGatewayRecord.Update(newAgcfGatewayRecord, out string result))
871: {
872: db.AgcfGatewayRecordTemps.Attach(agcfGatewayRecord);
873: db.Entry(agcfGatewayRecord).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
874:
875: updated = true;
876: }
877: else updated = false;
878: }
879:
880: break;
881: }
882: case Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.PlxServiceObjectDoesNotExist:
883: {
884: if (agcfGatewayRecord != null)
885: {
886: // below: delete if foreign key is not null or zero
887: if (agcfGatewayRecord.AgcfEndpoints == null || agcfGatewayRecord.AgcfEndpoints.Count == 0)
888: {
889: db.AgcfGatewayRecordTemps.Remove(agcfGatewayRecord);
890:
891: updated = true;
892: }
893: else updated = false;
894: }
895: else updated = false;
896:
897: break;
898: }
899: default: updated = false; break;
900: }
901:
902: db.SaveChanges();
903: }
904:
905: return updated;
906: }
907:
908: ////////////////////////////////////////////////////////////////////////////
909:
910: /// <summary>
911: ///
912: /// </summary>
913: public static bool UpdateNgfsAgcfEndpoint(string prividUser, Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response response, Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint newAgcfEndpoint)
914: {
915: bool isOk;
916: int agcfGatewayRecordsId;
917: string id;
918: Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint agcfEndpoint;
919:
920: isOk = false;
921:
922: using (var db = new Ia.Ngn.Cl.Model.Ngn())
923: {
924: id = Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint.AgcfEndpointId(prividUser);
925:
926: agcfEndpoint = (from ep in db.AgcfEndpoints where ep.Id == id select ep).SingleOrDefault();
927:
928: switch (response.ResultCode)
929: {
930: case Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful:
931: {
932: if (agcfEndpoint == null)
933: {
934: newAgcfEndpoint.Created = newAgcfEndpoint.Updated = DateTime.UtcNow.AddHours(3);
935: db.AgcfEndpoints.Add(newAgcfEndpoint);
936: }
937: else
938: {
939: // below: reference
940: agcfGatewayRecordsId = Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord.AgcfGatewayRecordId(Ia.Ngn.Cl.Model.Business.Nokia.AgcfGatewayTable.NgfsAgcfGatewayTableAid, newAgcfEndpoint.GwId);
941: newAgcfEndpoint.AgcfGatewayRecord = (from gr in db.AgcfGatewayRecords where gr.Id == agcfGatewayRecordsId select gr).SingleOrDefault();
942:
943: if (agcfEndpoint.Update(newAgcfEndpoint))
944: {
945: db.AgcfEndpoints.Attach(agcfEndpoint);
946: db.Entry(agcfEndpoint).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
947: }
948: }
949:
950: break;
951: }
952: case Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.PlxServiceObjectDoesNotExist:
953: {
954: if (agcfEndpoint != null)
955: {
956: // below: skip delete if the foreign key is not null
957: if (agcfEndpoint.SubParties == null)
958: {
959: db.AgcfEndpoints.Remove(agcfEndpoint);
960: }
961: }
962: break;
963: }
964: }
965:
966: db.SaveChanges();
967:
968: isOk = true;
969: }
970:
971: return isOk;
972: }
973:
974: ////////////////////////////////////////////////////////////////////////////
975:
976: /// <summary>
977: ///
978: /// </summary>
979: public static bool UpdateNgfsAgcfEndpointList(int gwId, int agcfGatewayRecordId, Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response response, List<Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint> newAgcfEndpointList)
980: {
981: bool updated;
982: Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord agcfGatewayRecord;
983: Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint agcfEndpoint;
984: List<Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint> agcfEndpointList;
985:
986: updated = false;
987:
988: using (var db = new Ia.Ngn.Cl.Model.Ngn())
989: {
990: agcfEndpointList = (from ep in db.AgcfEndpoints where ep.GwId == gwId select ep).Include(ep => ep.SubParties).ToList();
991:
992: switch (response.ResultCode)
993: {
994: case Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful:
995: {
996: // below: add or update read endpoints
997: foreach (Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint newAgcfEndpoint in newAgcfEndpointList)
998: {
999: // below: reference
1000: agcfGatewayRecord = (from gr in db.AgcfGatewayRecords where gr.Id == agcfGatewayRecordId select gr).SingleOrDefault();
1001: agcfEndpoint = (from ep in db.AgcfEndpoints where ep.Id == newAgcfEndpoint.Id select ep).SingleOrDefault();
1002: newAgcfEndpoint.AgcfGatewayRecord = agcfGatewayRecord;
1003:
1004: if (agcfEndpoint == null)
1005: {
1006: newAgcfEndpoint.Created = newAgcfEndpoint.Updated = DateTime.UtcNow.AddHours(3);
1007: db.AgcfEndpoints.Add(newAgcfEndpoint);
1008:
1009: updated = updated || true;
1010: }
1011: else
1012: {
1013: if (agcfEndpoint.Update(newAgcfEndpoint))
1014: {
1015: db.AgcfEndpoints.Attach(agcfEndpoint);
1016: db.Entry(agcfEndpoint).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
1017:
1018: updated = updated || true;
1019: }
1020: else updated = updated || false;
1021: }
1022: }
1023:
1024: // below: remove stored endpoint that do not exist in read
1025: if (agcfEndpointList != null && agcfEndpointList.Count > 0)
1026: {
1027: foreach (Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint storedAgcfEndpoint in agcfEndpointList)
1028: {
1029: agcfEndpoint = (from a in newAgcfEndpointList where a.Id == storedAgcfEndpoint.Id select a).SingleOrDefault();
1030:
1031: if (agcfEndpoint == null && (storedAgcfEndpoint.SubParties == null || storedAgcfEndpoint.SubParties.Count == 0))
1032: {
1033: db.AgcfEndpoints.Remove(storedAgcfEndpoint);
1034:
1035: updated = updated || true;
1036: }
1037: }
1038: }
1039:
1040: break;
1041: }
1042: case Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.SuccessfulButNoParameters:
1043: case Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.PlxServiceObjectDoesNotExist:
1044: {
1045: if (agcfEndpointList != null && agcfEndpointList.Count > 0)
1046: {
1047: foreach (Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint deletedAgcfEndpoint in agcfEndpointList)
1048: {
1049: // below: delete if foreign key is not null or zero
1050: if (deletedAgcfEndpoint.SubParties == null || deletedAgcfEndpoint.SubParties.Count == 0)
1051: {
1052: db.AgcfEndpoints.Remove(deletedAgcfEndpoint);
1053:
1054: updated = updated || true;
1055: }
1056: else updated = updated || false;
1057:
1058: }
1059: }
1060: break;
1061: }
1062: default: updated = updated || false; break;
1063: }
1064:
1065: db.SaveChanges();
1066: }
1067:
1068: return updated;
1069: }
1070:
1071: ////////////////////////////////////////////////////////////////////////////
1072:
1073: /// <summary>
1074: ///
1075: /// </summary>
1076: public static bool UpdateNgfsSubParty(string partyId, string agcfEndpointId, Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response response, Ia.Ngn.Cl.Model.Nokia.SubParty newSubParty)
1077: {
1078: bool updated;
1079: string id;
1080: Ia.Ngn.Cl.Model.Nokia.SubParty subParty;
1081:
1082: using (var db = new Ia.Ngn.Cl.Model.Ngn())
1083: {
1084: id = Ia.Ngn.Cl.Model.Nokia.SubParty.SubPartyId(partyId);
1085:
1086: subParty = (from sp in db.SubParties where sp.Id == id select sp).Include(sp => sp.Subscribers).SingleOrDefault();
1087:
1088: switch (response.ResultCode)
1089: {
1090: case Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful:
1091: {
1092: // below: reference
1093: agcfEndpointId = Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint.AgcfEndpointId(agcfEndpointId);
1094: newSubParty.AgcfEndpoint = (from ep in db.AgcfEndpoints where ep.Id == agcfEndpointId select ep).SingleOrDefault();
1095:
1096: if (subParty == null)
1097: {
1098: newSubParty.Created = newSubParty.Updated = DateTime.UtcNow.AddHours(3);
1099: db.SubParties.Add(newSubParty);
1100:
1101: updated = true;
1102: }
1103: else
1104: {
1105: // below: they don't
1106: // <PrimaryPUID>icsSubAgcfpuid</PrimaryPUID> in <SubParty> element of ent-ngfs-subscriber-v2 has to match <Dn>icsSubAgcfpuid</Dn> in ent-ngfs-agcfendpoint-v2
1107:
1108: if (subParty.Update(newSubParty))
1109: {
1110: db.SubParties.Attach(subParty);
1111: db.Entry(subParty).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
1112:
1113: updated = true;
1114: }
1115: else updated = false;
1116: }
1117:
1118: break;
1119: }
1120: case Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.PlxServiceObjectDoesNotExist:
1121: {
1122: if (subParty != null)
1123: {
1124: // below: delete if foreign key is not null or zero
1125: if (subParty.Subscribers == null || subParty.Subscribers.Count == 0)
1126: {
1127: db.SubParties.Remove(subParty);
1128:
1129: updated = true;
1130: }
1131: else updated = false;
1132: }
1133: else updated = false;
1134: break;
1135: }
1136: default: updated = false; break;
1137: }
1138:
1139: db.SaveChanges();
1140: }
1141:
1142: return updated;
1143: }
1144:
1145: ////////////////////////////////////////////////////////////////////////////
1146:
1147: /// <summary>
1148: ///
1149: /// </summary>
1150: public static bool UpdateNgfsSubPartyAndNgfsSubscriberWithoutEndPoint(string subPartyId, Ia.Ngn.Cl.Model.Nokia.SubParty retrievedSubParty, Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response retrievedSubPartyResponse, string partyId, Ia.Ngn.Cl.Model.Nokia.Subscriber retrievedSubscriber, Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response retrievedSubscriberResponse)
1151: {
1152: bool updated;
1153: Ia.Ngn.Cl.Model.Nokia.SubParty subParty;
1154: Ia.Ngn.Cl.Model.Nokia.Subscriber subscriber;
1155:
1156: updated = false;
1157:
1158: using (var db = new Ia.Ngn.Cl.Model.Ngn())
1159: {
1160: subParty = (from sp in db.SubParties where sp.Id == subPartyId select sp).SingleOrDefault();
1161: subscriber = (from s in db.Subscribers where s.Id == partyId select s).SingleOrDefault();
1162:
1163: if (retrievedSubParty != null && retrievedSubPartyResponse.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful && retrievedSubscriber != null && retrievedSubscriberResponse.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful)
1164: {
1165: if (subParty == null)
1166: {
1167: retrievedSubParty.Created = retrievedSubParty.Updated = DateTime.UtcNow.AddHours(3);
1168: db.SubParties.Add(retrievedSubParty);
1169:
1170: updated = true;
1171: }
1172: else
1173: {
1174: if (subParty.Update(retrievedSubParty))
1175: {
1176: db.SubParties.Attach(subParty);
1177: db.Entry(subParty).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
1178:
1179: updated = true;
1180: }
1181: }
1182:
1183: // below: reference
1184: retrievedSubscriber.SubParty = (from sp in db.SubParties where sp.Id == retrievedSubParty.Id select sp).SingleOrDefault();
1185:
1186: if (subscriber == null)
1187: {
1188: retrievedSubscriber.Created = retrievedSubscriber.Updated = DateTime.UtcNow.AddHours(3);
1189: db.Subscribers.Add(retrievedSubscriber);
1190:
1191: updated = true;
1192: }
1193: else
1194: {
1195: if (subscriber.Update(retrievedSubscriber))
1196: {
1197: db.Subscribers.Attach(subscriber);
1198: db.Entry(subscriber).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
1199:
1200: updated = true;
1201: }
1202: }
1203: }
1204: else if (retrievedSubParty == null && retrievedSubPartyResponse.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.PlxServiceObjectDoesNotExist && retrievedSubscriber == null && retrievedSubscriberResponse.ResultCode == Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.PlxServiceObjectDoesNotExist)
1205: {
1206: if (subscriber != null)
1207: {
1208: db.Subscribers.Remove(subscriber);
1209:
1210: updated = true;
1211: }
1212:
1213: if (subParty != null)
1214: {
1215: db.SubParties.Remove(subParty);
1216:
1217: updated = true;
1218: }
1219: }
1220: else
1221: {
1222:
1223: }
1224:
1225: db.SaveChanges();
1226: }
1227:
1228: return updated;
1229: }
1230:
1231: ////////////////////////////////////////////////////////////////////////////
1232:
1233: /// <summary>
1234: ///
1235: /// </summary>
1236: public static bool UpdateNgfsSubscriber(string partyId, string subPartyId, Ia.Ngn.Cl.Model.Business.Nokia.Ims.Response response, Ia.Ngn.Cl.Model.Nokia.Subscriber newSubscriber)
1237: {
1238: bool updated;
1239: string id;
1240: Ia.Ngn.Cl.Model.Nokia.Subscriber subscriber;
1241:
1242: using (var db = new Ia.Ngn.Cl.Model.Ngn())
1243: {
1244: id = Ia.Ngn.Cl.Model.Nokia.Subscriber.SubscriberId(partyId);
1245:
1246: subscriber = (from s in db.Subscribers where s.Id == id select s).SingleOrDefault();
1247:
1248: switch (response.ResultCode)
1249: {
1250: case Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.Successful:
1251: {
1252: // below: reference
1253: newSubscriber.SubParty = (from s in db.SubParties where s.Id == subPartyId select s).SingleOrDefault();
1254:
1255: if (subscriber == null)
1256: {
1257: newSubscriber.Created = newSubscriber.Updated = DateTime.UtcNow.AddHours(3);
1258: db.Subscribers.Add(newSubscriber);
1259:
1260: updated = true;
1261: }
1262: else
1263: {
1264: if (subscriber.Update(newSubscriber))
1265: {
1266: db.Subscribers.Attach(subscriber);
1267: db.Entry(subscriber).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
1268:
1269: updated = true;
1270: }
1271: else updated = false;
1272: }
1273:
1274: break;
1275: }
1276: case Ia.Ngn.Cl.Model.Client.Nokia.Ims.ResultCode.PlxServiceObjectDoesNotExist:
1277: {
1278: if (subscriber != null)
1279: {
1280: db.Subscribers.Remove(subscriber);
1281:
1282: updated = true;
1283: }
1284: else updated = false;
1285:
1286: break;
1287: }
1288: default: updated = false; break;
1289: }
1290:
1291: db.SaveChanges();
1292: }
1293:
1294: return updated;
1295: }
1296:
1297: ////////////////////////////////////////////////////////////////////////////
1298:
1299: /// <summary>
1300: ///
1301: /// </summary>
1302: public static bool UpdateServiceFromAgcfGatewayRecordAndAgcfEndpointAndSubPartyAndSubscriber(string service, Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord agcfGatewayRecord, Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint agcfEndpoint, Ia.Ngn.Cl.Model.Nokia.SubParty subParty, Ia.Ngn.Cl.Model.Nokia.Subscriber subscriber)
1303: {
1304: bool insert, update, delete;
1305: int serviceType;
1306: string serviceId;
1307: Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont nddOnt;
1308: Ia.Ngn.Cl.Model.Service2 service2, newService;
1309:
1310: insert = update = delete = false;
1311: //result = new Ia.Cl.Model.Result();
1312:
1313: serviceType = Ia.Ngn.Cl.Model.Business.Service.ServiceType.ImsService;
1314: serviceId = Ia.Ngn.Cl.Model.Business.Service2.ServiceId(service, serviceType);
1315:
1316: using (var db = new Ia.Ngn.Cl.Model.Ngn())
1317: {
1318: if (agcfGatewayRecord != null && agcfEndpoint != null && subParty != null && subscriber != null)
1319: {
1320: newService = new Ia.Ngn.Cl.Model.Service2();
1321:
1322: newService.Id = serviceId;
1323: newService.AreaCode = Ia.Ngn.Cl.Model.Business.Service.CountryCode;
1324: newService.Service = service;
1325: newService.ServiceType = serviceType;
1326:
1327: newService.CallerId = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.CallingLineIdIsAssigned(subscriber._CallingLineId);
1328: newService.AbbriviatedCalling = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.OneDigitSpeedDialIsAssigned(subscriber._OneDigitSpeedDial);
1329: newService.CallForwarding = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.CallForwardingIsAssigned(subscriber._CallForwardingVari);
1330: newService.CallWaiting = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.CallWaitingIsAssigned(subscriber._CallWaiting, agcfEndpoint.CallWaitingLc);
1331: newService.ConferenceCall = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.ConferenceCallIsAssigned(subscriber._ConferenceCalling);
1332: newService.InternationalCalling = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.InternationalCallingIsAssigned(subscriber._CallBarring);
1333: newService.InternationalCallingUserControlled = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.InternationalCallingUserControlledIsAssigned(subscriber._OutgoingCallBarring);
1334:
1335: newService.AlarmCall = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.ReminderCallIsAssigned(subscriber._ReminderCall);
1336: newService.WakeupCall = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.ReminderCallIsAssigned(subscriber._ReminderCall);
1337:
1338: newService.ServiceSuspension = subParty.ServiceSuspension;
1339: //newService.CallBarring = subParty.ServiceSuspension;
1340:
1341: newService.Pin = int.TryParse(subParty.Pin, out int i) ? i : 0;
1342:
1343: nddOnt = Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntIpToOntDictionary.ContainsKey(agcfGatewayRecord.IP1) ? Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntIpToOntDictionary[agcfGatewayRecord.IP1] : null;
1344:
1345: if (nddOnt != null) newService.Access = (from a in db.Accesses where a.Id == nddOnt.Access.Id select a).SingleOrDefault();
1346: else newService.Access = null;
1347:
1348: service2 = (from s in db.Service2
1349: where s.ServiceType == Ia.Ngn.Cl.Model.Business.Service.ServiceType.ImsService && s.Id == newService.Id
1350: select s).SingleOrDefault();
1351:
1352: if (service2 == null)
1353: {
1354: newService.Created = newService.Updated = DateTime.UtcNow.AddHours(3);
1355: db.Service2.Add(newService);
1356:
1357: insert = true;
1358: }
1359: else
1360: {
1361: if (service2.Update(newService))
1362: {
1363: db.Service2.Attach(service2);
1364: db.Entry(service2).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
1365:
1366: update = true;
1367: }
1368: else update = false;
1369: }
1370: }
1371: else
1372: {
1373: service2 = (from s in db.Service2
1374: where s.ServiceType == Ia.Ngn.Cl.Model.Business.Service.ServiceType.ImsService && s.Id == serviceId
1375: select s).SingleOrDefault();
1376:
1377: if (service2 != null)
1378: {
1379: db.Service2.Remove(service2);
1380:
1381: delete = true;
1382: }
1383: }
1384:
1385: db.SaveChanges();
1386: }
1387:
1388: //result.AddSuccess(service + ": state: " + Ia.Ngn.Cl.Model.Ui.Text.ExpressionOfInsertOrUpdateOrDelete(insert, update, delete));
1389:
1390: return insert || update || delete;
1391: }
1392:
1393: ////////////////////////////////////////////////////////////////////////////
1394:
1395: /// <summary>
1396: ///
1397: /// </summary>
1398: public static bool UpdateServiceFromSubPartyAndSubscriber(string service, string accessId)
1399: {
1400: bool insert, update, delete;
1401: int serviceType;
1402: string serviceId;
1403: Ia.Ngn.Cl.Model.Nokia.SubParty subParty;
1404: Ia.Ngn.Cl.Model.Nokia.Subscriber subscriber;
1405: Ia.Ngn.Cl.Model.Service2 service2, newService;
1406:
1407: insert = update = delete = false;
1408: //result = new Ia.Cl.Model.Result();
1409:
1410: serviceType = Ia.Ngn.Cl.Model.Business.Service.ServiceType.ImsService;
1411: serviceId = Ia.Ngn.Cl.Model.Business.Service2.ServiceId(service, serviceType);
1412:
1413: using (var db = new Ia.Ngn.Cl.Model.Ngn())
1414: {
1415: var partyId = Ia.Ngn.Cl.Model.Business.NumberFormatConverter.PartyId(service);
1416: var subPartyId = Ia.Ngn.Cl.Model.Nokia.SubParty.SubPartyId(partyId);
1417:
1418: subParty = (from sp in db.SubParties where sp.Id == subPartyId select sp).SingleOrDefault();
1419: subscriber = (from s in db.Subscribers where s.Id == partyId select s).SingleOrDefault();
1420:
1421: if (subParty != null && subscriber != null)
1422: {
1423: newService = new Ia.Ngn.Cl.Model.Service2();
1424:
1425: newService.Id = serviceId;
1426: newService.AreaCode = Ia.Ngn.Cl.Model.Business.Service.CountryCode;
1427: newService.Service = service;
1428: newService.ServiceType = serviceType;
1429:
1430: newService.CallerId = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.CallingLineIdIsAssigned(subscriber._CallingLineId);
1431: newService.AbbriviatedCalling = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.OneDigitSpeedDialIsAssigned(subscriber._OneDigitSpeedDial);
1432: newService.CallForwarding = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.CallForwardingIsAssigned(subscriber._CallForwardingVari);
1433: newService.CallWaiting = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.CallWaitingIsAssigned(subscriber._CallWaiting, false);// agcfEndpoint.CallWaitingLc);
1434: newService.ConferenceCall = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.ConferenceCallIsAssigned(subscriber._ConferenceCalling);
1435: newService.InternationalCalling = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.InternationalCallingIsAssigned(subscriber._CallBarring);
1436: newService.InternationalCallingUserControlled = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.InternationalCallingUserControlledIsAssigned(subscriber._OutgoingCallBarring);
1437:
1438: newService.AlarmCall = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.ReminderCallIsAssigned(subscriber._ReminderCall);
1439: newService.WakeupCall = Ia.Ngn.Cl.Model.Business.Nokia.Subscriber.ReminderCallIsAssigned(subscriber._ReminderCall);
1440:
1441: newService.ServiceSuspension = subParty.ServiceSuspension;
1442: //newService.CallBarring = subParty.ServiceSuspension;
1443:
1444: newService.Pin = int.TryParse(subParty.Pin, out int i) ? i : 0;
1445:
1446: if (!string.IsNullOrEmpty(accessId)) newService.Access = (from a in db.Accesses where a.Id == accessId select a).SingleOrDefault();
1447: else newService.Access = null;
1448:
1449: service2 = (from s in db.Service2
1450: where s.ServiceType == Ia.Ngn.Cl.Model.Business.Service.ServiceType.ImsService && s.Id == newService.Id
1451: select s).SingleOrDefault();
1452:
1453: if (service2 == null)
1454: {
1455: newService.Created = newService.Updated = DateTime.UtcNow.AddHours(3);
1456: db.Service2.Add(newService);
1457:
1458: insert = true;
1459: }
1460: else
1461: {
1462: if (service2.Update(newService))
1463: {
1464: db.Service2.Attach(service2);
1465: db.Entry(service2).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
1466:
1467: update = true;
1468: }
1469: else update = false;
1470: }
1471: }
1472: else
1473: {
1474: service2 = (from s in db.Service2
1475: where s.ServiceType == Ia.Ngn.Cl.Model.Business.Service.ServiceType.ImsService && s.Id == serviceId
1476: select s).SingleOrDefault();
1477:
1478: if (service2 != null)
1479: {
1480: db.Service2.Remove(service2);
1481:
1482: delete = true;
1483: }
1484: }
1485:
1486: db.SaveChanges();
1487: }
1488:
1489: //result.AddSuccess(service + ": state: " + Ia.Ngn.Cl.Model.Ui.Text.ExpressionOfInsertOrUpdateOrDelete(insert, update, delete));
1490:
1491: return insert || update || delete;
1492: }
1493:
1494: /*
1495: ////////////////////////////////////////////////////////////////////////////
1496:
1497: /// <summary>
1498: ///
1499: /// </summary>
1500: public static bool UpdateServiceList(Dictionary<long, Ia.Ngn.Cl.Model.Service> dnServiceDictionary)
1501: {
1502: bool isOk;
1503: int serviceType;
1504: long dn;
1505: string serviceId;
1506: Ia.Ngn.Cl.Model.Service service;
1507: Ia.Ngn.Cl.Model.Service2 service2, newService2;
1508:
1509: isOk = false;
1510:
1511: using (var db = new Ia.Ngn.Cl.Model.Ngn())
1512: {
1513: // below:
1514: foreach (KeyValuePair<long, Ia.Ngn.Cl.Model.Service> u in dnServiceDictionary)
1515: {
1516: dn = u.Key;
1517: service = u.Value;
1518:
1519: serviceType = Ia.Ngn.Cl.Model.Business.Service.ServiceType.Ngn;
1520: serviceId = Ia.Ngn.Cl.Model.Service2.ServiceId(dn.ToString().Remove(0, 3), serviceType); // temp: remove 3 digits
1521:
1522: // below:
1523: if (service != null)
1524: {
1525: newService2 = new Ia.Ngn.Cl.Model.Service2();
1526:
1527: newService2.Id = serviceId;
1528: newService2.AreaCode = Ia.Ngn.Cl.Model.Data.Service.CountryCode;
1529: newService2.Service = dn.ToString();
1530: newService2.ServiceType = serviceType;
1531:
1532: //newService2.ServiceSuspension = ??
1533: newService2.CallBarring = service.OCBUC_ass;
1534: newService2.CallForwarding = service.CFU_ass;
1535: newService2.ConferenceCall = service.CONF;
1536: //newService2.ConferenceCall = service.TPS_ass;
1537:
1538: newService2.AlarmCall = service.ALM_ass;
1539: newService2.CallWaiting = service.CW_ass;
1540: newService2.Pin = service.PIN_code;
1541:
1542: newService2.CallerId = service.CLIP;
1543:
1544: service2 = (from q in db.Service2s where s.ServiceType == Ia.Ngn.Cl.Model.Business.Service.ServiceType.NgnService && q.Id == newService2.Id select q).SingleOrDefault();
1545:
1546: if (service2 == null)
1547: {
1548: newService2.Created = newService2.Updated = DateTime.UtcNow.AddHours(3);
1549: db.Service2s.Add(newService2);
1550: }
1551: else
1552: {
1553: if (service2.Update(newService2))
1554: {
1555: db.Service2s.Attach(service2);
1556: db.Entry(service2).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
1557: }
1558: }
1559: }
1560: else
1561: {
1562: service2 = (from q in db.Service2s where s.ServiceType == Ia.Ngn.Cl.Model.Business.Service.ServiceType.NgnService && q.Id == serviceId select q).SingleOrDefault();
1563:
1564: if (service2 != null) db.Service2s.Remove(service2);
1565: }
1566: }
1567:
1568: db.SaveChanges();
1569:
1570: isOk = true;
1571: }
1572:
1573: return isOk;
1574: }
1575: */
1576:
1577: ////////////////////////////////////////////////////////////////////////////
1578:
1579: /// <summary>
1580: ///
1581: /// </summary>
1582: public static List<int> AllPossibleGatewayIdList
1583: {
1584: get
1585: {
1586: // below: GwId are defined by Nokia
1587:
1588: List<int> allPossibleGatewayIdList;
1589:
1590: allPossibleGatewayIdList = new List<int>(Ia.Ngn.Cl.Model.Business.Nokia.Ims.LastGatewayId - Ia.Ngn.Cl.Model.Business.Nokia.Ims.FirstGatewayId);
1591:
1592: //allPossibleGatewayIdList = Ia.Ngn.Cl.Model.Data.Nokia.Default.GatewayIdList;
1593:
1594: for (int i = Ia.Ngn.Cl.Model.Business.Nokia.Ims.FirstGatewayId; i <= Ia.Ngn.Cl.Model.Business.Nokia.Ims.LastGatewayId; i++)
1595: {
1596: allPossibleGatewayIdList.Add(i);
1597: }
1598:
1599: return allPossibleGatewayIdList;
1600: }
1601: }
1602:
1603: ////////////////////////////////////////////////////////////////////////////
1604:
1605: /// <summary>
1606: ///
1607: /// </summary>
1608: public static List<Ia.Ngn.Cl.Model.Ont> AllPossibleOntNotInAgcfGatewayRecordList(Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Olt olt)
1609: {
1610: DiscrepancyBetweenOntListAndAgctGatewayRecordList(olt, out List<Ia.Ngn.Cl.Model.Ont> ontsNotInAgcfGatewayRecordsList, out List<Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord> agcfGatewayRecordsNoInOntsList);
1611:
1612: return ontsNotInAgcfGatewayRecordsList;
1613: }
1614:
1615: ////////////////////////////////////////////////////////////////////////////
1616:
1617: /// <summary>
1618: ///
1619: /// </summary>
1620: public static List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> NddOntNotInAgcfGatewayRecordList(Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Olt olt)
1621: {
1622: List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> ngnOntList;
1623: List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> ngnOntsNotInAgcfGatewayRecordsList;
1624: List<Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord> agcfGatewayRecordList;
1625:
1626: // below: NGN ONT list
1627: ngnOntList = (from o in Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntList
1628: where o.Pon.PonGroup.Olt.Id == olt.Id
1629: select o).ToList();
1630:
1631: using (var db = new Ia.Ngn.Cl.Model.Ngn())
1632: {
1633: // below: AgcfGatewayRecord list
1634: agcfGatewayRecordList = (from a in db.AgcfGatewayRecords select a).AsNoTracking().ToList();
1635: }
1636:
1637: // below: ONTs not in AgcfGatewayRecord list
1638: ngnOntsNotInAgcfGatewayRecordsList = (from no in ngnOntList
1639: join a in agcfGatewayRecordList on no.Ip equals a.IP1
1640: into gj
1641: from sub in gj.DefaultIfEmpty()
1642: where sub == null
1643: select no).ToList();
1644:
1645: return ngnOntsNotInAgcfGatewayRecordsList;
1646: }
1647:
1648: ////////////////////////////////////////////////////////////////////////////
1649:
1650: /// <summary>
1651: ///
1652: /// </summary>
1653: public static List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> NddNokiaSwitchOntInNonSipOltWithAccessButNoAgcfGatewayRecordList()
1654: {
1655: var accessIdDictionary = Ia.Ngn.Cl.Model.Data.Access.IdDictionary;
1656:
1657: var ontList = Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntList;
1658:
1659: var nddOntWithinAccessList = (from o in ontList
1660: where o.Pon.PonGroup.Olt.IsSip == false
1661: && o.Pon.PonGroup.Olt.Odf.Router.Vendor == Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Nokia
1662: && accessIdDictionary.ContainsKey(o.Access.Id)
1663: //&& accessIdList.Contains(o.Access.Id) // very slow
1664: select o).ToList();
1665:
1666: var agcfGatewayRecordIp1List = Ia.Ngn.Cl.Model.Data.Nokia.AgcfGatewayRecord.IpList();
1667:
1668: // below: ONTs in Accesses but not in AgcfGatewayRecord list
1669: var nddOntList = (from no in nddOntWithinAccessList
1670: join grip1 in agcfGatewayRecordIp1List on no.Ip equals grip1
1671: into gj
1672: from sub in gj.DefaultIfEmpty()
1673: where sub == null
1674: select no).ToList();
1675:
1676: return nddOntList;
1677: }
1678:
1679: ////////////////////////////////////////////////////////////////////////////
1680:
1681: /// <summary>
1682: ///
1683: /// </summary>
1684: public static List<Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord> AgcfGatewayRecordWithNoNddNokiaSwitchOntInNonSipOltAndNullOrEmptyAgcfEndpointList()
1685: {
1686: List<string> accessIdList;
1687: List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> ontList, nddOntWithNoAccessList;
1688: List<Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord> agcfGatewayRecordList, agcfGatewayRecordWithNoNddOntList, agcfGatewayRecordWithNoNddOntAccessList;
1689: List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> nokiaSwitchOntInNonSipOltList;
1690:
1691: using (var db = new Ia.Ngn.Cl.Model.Ngn())
1692: {
1693: accessIdList = (from a in db.Accesses select a.Id).AsNoTracking().ToList();
1694:
1695: agcfGatewayRecordList = (from a in db.AgcfGatewayRecords
1696: select a)/*.Include(u => u.AgcfEndpoints)*/.AsNoTracking().ToList();
1697:
1698: ontList = Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntList;
1699:
1700: nokiaSwitchOntInNonSipOltList = (from o in ontList
1701: where o.Pon.PonGroup.Olt.IsSip == false
1702: && o.Pon.PonGroup.Olt.Odf.Router.Vendor == Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Vendor.Nokia
1703: select o).ToList();
1704:
1705: // below: AgcfGatewayRecord with no corresponding NDD ONT entries
1706: agcfGatewayRecordWithNoNddOntList = (from gr in agcfGatewayRecordList
1707: join no in nokiaSwitchOntInNonSipOltList
1708: on gr.IP1 equals no.Ip
1709: into gj
1710: from sub in gj.DefaultIfEmpty()
1711: where sub == null
1712: select gr).ToList();
1713:
1714: // below: NDD ONTs with no access
1715: nddOntWithNoAccessList = (from o in nokiaSwitchOntInNonSipOltList
1716: join a in accessIdList on o.Access.Id equals a
1717: into gj
1718: from sub in gj.DefaultIfEmpty()
1719: where sub == null
1720: select o).ToList();
1721:
1722: // below: AgcfGatewayRecord with no corresponding NDD ONT access entries
1723: agcfGatewayRecordWithNoNddOntAccessList = (from gr in agcfGatewayRecordList
1724: join no in nddOntWithNoAccessList
1725: on gr.IP1 equals no.Ip
1726: select gr).ToList();
1727: }
1728:
1729: return agcfGatewayRecordWithNoNddOntList.Union(agcfGatewayRecordWithNoNddOntAccessList).ToList();
1730: }
1731:
1732: ////////////////////////////////////////////////////////////////////////////
1733:
1734: /// <summary>
1735: ///
1736: /// </summary>
1737: public static List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> NddOntWithAgcfGatewayRecordAndNotEmptyAgcfEndpointAndNullAccessList()
1738: {
1739: List<string> accessIdList;
1740: List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> nddOntWithNoAccessList, nddOntWithAgcfGatewayRecordAndNotEmptyAgcfEndpointAndNullAccessList;
1741: List<Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord> agcfGatewayRecordList, agcfGatewayRecordWithNddOntAndNotEmptyAgcfEndpointList;
1742:
1743: using (var db = new Ia.Ngn.Cl.Model.Ngn())
1744: {
1745: accessIdList = (from a in db.Accesses select a.Id).AsNoTracking().ToList();
1746:
1747: agcfGatewayRecordList = (from a in db.AgcfGatewayRecords select a).Include(u => u.AgcfEndpoints).AsNoTracking().ToList();
1748:
1749: // below: AgcfGatewayRecord with corresponding NDD ONT entries and not empty AgcfEndpoints
1750: agcfGatewayRecordWithNddOntAndNotEmptyAgcfEndpointList = (from gr in agcfGatewayRecordList
1751: join no in Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntList
1752: on gr.IP1 equals no.Ip
1753: where gr.AgcfEndpoints != null && gr.AgcfEndpoints.Count > 0
1754: select gr).ToList();
1755:
1756: // below: NDD ONTs with no access
1757: nddOntWithNoAccessList = (from o in Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntList
1758: join a in accessIdList on o.Access.Id equals a
1759: into gj
1760: from sub in gj.DefaultIfEmpty()
1761: where sub == null
1762: select o).ToList();
1763:
1764: // below: AgcfGatewayRecord with corresponding NDD ONT entries and not empty AgcfEndpoints, but with no corresponding NDD ONT access entries
1765: nddOntWithAgcfGatewayRecordAndNotEmptyAgcfEndpointAndNullAccessList = (from no in nddOntWithNoAccessList
1766: join gr in agcfGatewayRecordList
1767: on no.Ip equals gr.IP1
1768: select no).ToList();
1769: }
1770:
1771: return nddOntWithAgcfGatewayRecordAndNotEmptyAgcfEndpointAndNullAccessList.ToList();
1772: }
1773:
1774: ////////////////////////////////////////////////////////////////////////////
1775:
1776: /// <summary>
1777: ///
1778: /// </summary>
1779: public static List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> NddOntWithNoAccessList()
1780: {
1781: List<string> accessIdList;
1782: List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> nddOntList;
1783:
1784: using (var db = new Ia.Ngn.Cl.Model.Ngn())
1785: {
1786: accessIdList = (from a in db.Accesses select a.Id).AsNoTracking().ToList();
1787:
1788: // below:
1789: nddOntList = (from o in Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntList
1790: join a in accessIdList on o.Access.Id equals a
1791: into gj
1792: from sub in gj.DefaultIfEmpty()
1793: where sub == null
1794: select o).ToList();
1795: }
1796:
1797: return nddOntList;
1798: }
1799:
1800: ////////////////////////////////////////////////////////////////////////////
1801:
1802: /// <summary>
1803: ///
1804: /// </summary>
1805: public static List<Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord> AllPossibleAgcfGatewayRecordsNoInOntsList(Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Olt olt)
1806: {
1807: DiscrepancyBetweenOntListAndAgctGatewayRecordList(olt, out List<Ia.Ngn.Cl.Model.Ont> ontsNotInAgcfGatewayRecordsList, out List<Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord> agcfGatewayRecordsNoInOntsList);
1808:
1809: return agcfGatewayRecordsNoInOntsList;
1810: }
1811:
1812: ////////////////////////////////////////////////////////////////////////////
1813:
1814: /// <summary>
1815: ///
1816: /// </summary>
1817: private static void DiscrepancyBetweenOntListAndAgctGatewayRecordList(Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Olt olt, out List<Ia.Ngn.Cl.Model.Ont> ontsNotInAgcfGatewayRecordsList, out List<Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord> agcfGatewayRecordsNoInOntsList)
1818: {
1819: List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> ngnOntList;
1820: List<Ia.Ngn.Cl.Model.Ont> ontList;
1821: List<Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord> agcfGatewayRecordList;
1822:
1823: // below: NGN ONT list
1824: ngnOntList = (from o in Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntList
1825: where o.Pon.PonGroup.Olt.Id == olt.Id
1826: select o).ToList();
1827:
1828: using (var db = new Ia.Ngn.Cl.Model.Ngn())
1829: {
1830: // below: ONT list
1831: ontList = (from o in db.Onts
1832: where o.Access != null && o.Access.Olt == olt.Id
1833: select o).AsNoTracking().ToList();
1834:
1835: // below: AgcfGatewayRecord list
1836: agcfGatewayRecordList = (from a in db.AgcfGatewayRecords select a).AsNoTracking().ToList();
1837: }
1838:
1839: // below: ONTs not in AgcfGatewayRecord list
1840: ontsNotInAgcfGatewayRecordsList = (from o in ontList
1841: join no in ngnOntList on o.Id equals no.Id
1842: join a in agcfGatewayRecordList on no.Ip equals a.IP1
1843: into gj
1844: from sub in gj.DefaultIfEmpty()
1845: where sub == null
1846: select o).ToList();
1847:
1848: // below: AgcfGatewayRecords with IPs that are not in NGN ONT list
1849: agcfGatewayRecordsNoInOntsList = (from a in agcfGatewayRecordList
1850: join no in ngnOntList on a.IP1 equals no.Ip
1851: into gj
1852: from sub in gj.DefaultIfEmpty()
1853: where sub == null
1854: select a).ToList();
1855:
1856: }
1857:
1858: ////////////////////////////////////////////////////////////////////////////
1859:
1860: /// <summary>
1861: ///
1862: /// </summary>
1863: private static List<Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint> AgcfEndpointsWithNoSubPartyReferenceList
1864: {
1865: get
1866: {
1867: List<Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint> agcfEndpointList;
1868:
1869: using (var db = new Ia.Ngn.Cl.Model.Ngn())
1870: {
1871: agcfEndpointList = (from e in db.AgcfEndpoints
1872: join s in db.SubParties on e equals s.AgcfEndpoint
1873: into gj
1874: from u in gj.DefaultIfEmpty()
1875: where u == null
1876: select e).ToList();
1877: }
1878:
1879: return agcfEndpointList;
1880: }
1881: }
1882:
1883: ////////////////////////////////////////////////////////////////////////////
1884:
1885: /// <summary>
1886: ///
1887: /// </summary>
1888: public static List<string> ServiceProvisionedManuallyWithNonStandardHenceNotFunctionalPartyIdNames
1889: {
1890: get
1891: {
1892: List<string> list;
1893:
1894: list = new List<string>();
1895:
1896: using (var db = new Ia.Ngn.Cl.Model.Ngn())
1897: {
1898: // exclude 1-800 numbers and numbers without AgcfEndpoints
1899:
1900: // select Id from Subscribers where Id not like '+965________'
1901: var subscriberSubpartyIdList = (from s in db.Subscribers where !(s.Id.StartsWith("+965") && s.Id.Length == 12) && !s.Id.StartsWith("+96518") select s.SubParty.Id).ToList();
1902:
1903: // select DisplayName,PartyId from SubParties where AgcfEndpoint_Id not like 'priv____________'
1904: var subPartyIdList = (from sp in db.SubParties where !(sp.AgcfEndpoint.Id.StartsWith("priv") && sp.AgcfEndpoint.Id.Length == 16) && !sp.Id.StartsWith("+96518") && sp.AgcfEndpoint != null select sp.Id).ToList();
1905:
1906: // select PrividUser, GwId from AgcfEndpoints where Id not like 'priv____________'
1907: var agcfEndpointDnList = (from ep in db.AgcfEndpoints where !(ep.Id.StartsWith("priv") && ep.Id.Length == 16) && !ep.Dn.StartsWith("+96518") select ep.Dn).ToList();
1908:
1909: list.AddRange(subscriberSubpartyIdList);
1910: list.AddRange(subPartyIdList);
1911: list.AddRange(agcfEndpointDnList);
1912: }
1913:
1914: return list;
1915: }
1916: }
1917:
1918: ////////////////////////////////////////////////////////////////////////////
1919: ////////////////////////////////////////////////////////////////////////////
1920:
1921: /// <summary>
1922: ///
1923: /// </summary>
1924: public static List<string> AgcfGatewayRecordIp1sWithinWhichSubPartiesHaveServiceBundle2CategoryList
1925: {
1926: get
1927: {
1928: if (agcfGatewayRecordIp1sWithinWhichSubPartiesHaveServiceBundle2CategoryList == null || agcfGatewayRecordIp1sWithinWhichSubPartiesHaveServiceBundle2CategoryList.Count == 0)
1929: {
1930: lock (objectLock)
1931: {
1932: agcfGatewayRecordIp1sWithinWhichSubPartiesHaveServiceBundle2CategoryList = Ia.Ngn.Cl.Model.Data.Nokia.Ims._AgcfGatewayRecordIp1sWithinWhichSubPartiesHaveServiceBundle2CategoryList;
1933: }
1934: }
1935:
1936: return agcfGatewayRecordIp1sWithinWhichSubPartiesHaveServiceBundle2CategoryList;
1937: }
1938: }
1939:
1940: ////////////////////////////////////////////////////////////////////////////
1941:
1942: /// <summary>
1943: ///
1944: /// </summary>
1945: private static List<string> _AgcfGatewayRecordIp1sWithinWhichSubPartiesHaveServiceBundle2CategoryList
1946: {
1947: get
1948: {
1949: using (var db = new Ia.Ngn.Cl.Model.Ngn())
1950: {
1951: agcfGatewayRecordIp1sWithinWhichSubPartiesHaveServiceBundle2CategoryList = (from sp in db.SubParties
1952: where sp.Category == "SERVICEBUNDLE2"
1953: join e in db.AgcfEndpoints on sp.AgcfEndpoint.Id equals e.Id
1954: join gr in db.AgcfGatewayRecords on e.AgcfGatewayRecord.Id equals gr.Id
1955: select gr.IP1).Distinct().ToList();
1956:
1957: /*
1958: select distinct gr.IP1 from AgcfGatewayRecords gr
1959: left outer join AgcfEndpoints ep on ep.AgcfGatewayRecord_Id = gr.Id
1960: left outer join SubParties sp on sp.AgcfEndpoint_Id = ep.Id
1961: where sp.Category = 'SERVICEBUNDLE2'
1962: */
1963: }
1964:
1965: return agcfGatewayRecordIp1sWithinWhichSubPartiesHaveServiceBundle2CategoryList;
1966: }
1967: }
1968:
1969: ////////////////////////////////////////////////////////////////////////////
1970: ////////////////////////////////////////////////////////////////////////////
1971:
1972: /// <summary>
1973: ///
1974: /// </summary>
1975: public static List<string> AgcfGatewayRecordIp1sThatIndicateFsdb0List
1976: {
1977: get
1978: {
1979: if (agcfGatewayRecordIp1sThatIndicateFsdb0List == null || agcfGatewayRecordIp1sThatIndicateFsdb0List.Count == 0)
1980: {
1981: lock (objectLock)
1982: {
1983: agcfGatewayRecordIp1sThatIndicateFsdb0List = Ia.Ngn.Cl.Model.Data.Nokia.Ims._AgcfGatewayRecordIp1sThatIndicateFsdb0List;
1984: }
1985: }
1986:
1987: return agcfGatewayRecordIp1sThatIndicateFsdb0List;
1988: }
1989: }
1990:
1991: ////////////////////////////////////////////////////////////////////////////
1992:
1993: /// <summary>
1994: ///
1995: /// </summary>
1996: private static List<string> _AgcfGatewayRecordIp1sThatIndicateFsdb0List
1997: {
1998: get
1999: {
2000: using (var db = new Ia.Ngn.Cl.Model.Ngn())
2001: {
2002: agcfGatewayRecordIp1sThatIndicateFsdb0List = (from gr in db.AgcfGatewayRecords where gr.AgcfSipIaPort == "agcf-stdn.imsgroup0-000" select gr.IP1).Distinct().ToList();
2003:
2004: // select distinct IP1 from AgcfGatewayRecords where AgcfSipIaPort = 'agcf-stdn.imsgroup0-000'
2005: }
2006:
2007: return agcfGatewayRecordIp1sThatIndicateFsdb0List;
2008: }
2009: }
2010:
2011: ////////////////////////////////////////////////////////////////////////////
2012: ////////////////////////////////////////////////////////////////////////////
2013: }
2014:
2015: ////////////////////////////////////////////////////////////////////////////
2016: ////////////////////////////////////////////////////////////////////////////
2017: }