1: using Microsoft.EntityFrameworkCore;
2: using System;
3: using System.Collections.Generic;
4: using System.Linq;
5:
6: namespace Ia.Ngn.Cl.Model.Data.Nokia
7: {
8: ////////////////////////////////////////////////////////////////////////////
9:
10: /// <summary publish="true">
11: /// AGCF Endpoint support class for Nokia data model.
12: /// </summary>
13: ///
14: /// <remarks>
15: /// Copyright � 2014-2017 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
16: ///
17: /// 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
18: /// the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
19: ///
20: /// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
21: /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
22: ///
23: /// You should have received a copy of the GNU General Public License along with this library. If not, see http://www.gnu.org/licenses.
24: ///
25: /// Copyright notice: This notice may not be removed or altered from any source distribution.
26: /// </remarks>
27: public class AgcfEndpoint
28: {
29: public AgcfEndpoint() { }
30:
31: ////////////////////////////////////////////////////////////////////////////
32:
33: /// <summary>
34: ///
35: /// </summary>
36: public static bool Create(Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint agcfEndpoint, out string result)
37: {
38: bool b;
39:
40: b = false;
41: result = string.Empty;
42:
43: using (var db = new Ia.Ngn.Cl.Model.Ngn())
44: {
45: agcfEndpoint.Created = agcfEndpoint.Updated = DateTime.UtcNow.AddHours(3);
46:
47: db.AgcfEndpoints.Add(agcfEndpoint);
48: db.SaveChanges();
49:
50: b = true;
51: }
52:
53: return b;
54: }
55:
56: ////////////////////////////////////////////////////////////////////////////
57:
58: /// <summary>
59: ///
60: /// </summary>
61: public static Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint Read(string id)
62: {
63: Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint agcfEndpoint;
64:
65: using (var db = new Ia.Ngn.Cl.Model.Ngn())
66: {
67: agcfEndpoint = (from ep in db.AgcfEndpoints where ep.Id == id select ep).SingleOrDefault();
68: }
69:
70: return agcfEndpoint;
71: }
72:
73: ////////////////////////////////////////////////////////////////////////////
74:
75: /// <summary>
76: ///
77: /// </summary>
78: public static Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint ReadbyGwId(int gwId)
79: {
80: Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint agcfEndpoint;
81:
82: using (var db = new Ia.Ngn.Cl.Model.Ngn())
83: {
84: agcfEndpoint = (from ep in db.AgcfEndpoints where ep.GwId == gwId select ep).SingleOrDefault();
85: }
86:
87: return agcfEndpoint;
88: }
89:
90: ////////////////////////////////////////////////////////////////////////////
91:
92: /// <summary>
93: ///
94: /// </summary>
95: public static Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint ReadWithAgcfGatewayRecord(string id)
96: {
97: Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint agcfEndpoint;
98:
99: using (var db = new Ia.Ngn.Cl.Model.Ngn())
100: {
101: agcfEndpoint = (from ep in db.AgcfEndpoints where ep.Id == id select ep).Include(u => u.AgcfGatewayRecord).SingleOrDefault();
102: }
103:
104: return agcfEndpoint;
105: }
106:
107: ////////////////////////////////////////////////////////////////////////////
108:
109: /// <summary>
110: ///
111: /// </summary>
112: public static List<Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint> ReadList()
113: {
114: List<Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint> agcfEndpointList;
115:
116: using (var db = new Ia.Ngn.Cl.Model.Ngn())
117: {
118: agcfEndpointList = (from ep in db.AgcfEndpoints select ep).ToList();
119: }
120:
121: return agcfEndpointList;
122: }
123:
124: ////////////////////////////////////////////////////////////////////////////
125:
126: /// <summary>
127: ///
128: /// </summary>
129: public static bool Update(Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint agcfEndpoint, out string result)
130: {
131: bool b;
132:
133: b = false;
134: result = string.Empty;
135:
136: using (var db = new Ia.Ngn.Cl.Model.Ngn())
137: {
138: agcfEndpoint = (from ep in db.AgcfEndpoints where ep.Id == agcfEndpoint.Id select ep).SingleOrDefault();
139:
140: agcfEndpoint.Updated = DateTime.UtcNow.AddHours(3);
141:
142: db.AgcfEndpoints.Attach(agcfEndpoint);
143:
144: db.Entry(agcfEndpoint).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
145: db.SaveChanges();
146:
147: b = true;
148: }
149:
150: return b;
151: }
152:
153: ////////////////////////////////////////////////////////////////////////////
154:
155: /// <summary>
156: ///
157: /// </summary>
158: public static bool Delete(string id, out string result)
159: {
160: bool b;
161:
162: b = false;
163: result = string.Empty;
164:
165: using (var db = new Ia.Ngn.Cl.Model.Ngn())
166: {
167: var v = (from ep in db.AgcfEndpoints where ep.Id == id select ep).FirstOrDefault();
168:
169: db.AgcfEndpoints.Remove(v);
170: db.SaveChanges();
171:
172: b = true;
173: }
174:
175: return b;
176: }
177:
178: ////////////////////////////////////////////////////////////////////////////
179:
180: /// <summary>
181: ///
182: /// </summary>
183: public static Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord AgcfGatewayRecordFromId(string agcfEndpointId)
184: {
185: Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord agcfGatewayRecord;
186:
187: using (var db = new Ia.Ngn.Cl.Model.Ngn())
188: {
189: agcfGatewayRecord = (from e in db.AgcfEndpoints join g in db.AgcfGatewayRecords on e.GwId equals g.GwId where e.Id == agcfEndpointId select g).SingleOrDefault();
190: }
191:
192: return agcfGatewayRecord;
193: }
194:
195: ////////////////////////////////////////////////////////////////////////////
196:
197: /// <summary>
198: ///
199: /// </summary>
200: public static List<string> ReadPrividUserList
201: {
202: get
203: {
204: List<string> prividUserlist;
205:
206: using (var db = new Ia.Ngn.Cl.Model.Ngn())
207: {
208: prividUserlist = (from ep in db.AgcfEndpoints orderby ep.GwId ascending select ep.PrividUser).ToList();
209: }
210:
211: return prividUserlist;
212: }
213: }
214:
215: ////////////////////////////////////////////////////////////////////////////
216:
217: /// <summary>
218: ///
219: /// </summary>
220: public static List<int> UsedFlatTermIdListForGatewayId(int gwId)
221: {
222: List<int> list;
223:
224: using (var db = new Ia.Ngn.Cl.Model.Ngn())
225: {
226: list = (from e in db.AgcfEndpoints where e.GwId == gwId orderby e.FlatTermID ascending select e.FlatTermID).ToList<int>();
227: }
228:
229: return list;
230: }
231:
232: ////////////////////////////////////////////////////////////////////////////
233:
234: /// <summary>
235: ///
236: /// </summary>
237: public static List<Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint> List()
238: {
239: List<Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint> agcfEndpointList;
240:
241: using (var db = new Ia.Ngn.Cl.Model.Ngn())
242: {
243: agcfEndpointList = (from a in db.AgcfEndpoints select a).Include(a => a.AgcfGatewayRecord).ToList();
244: }
245:
246: return agcfEndpointList;
247: }
248:
249: ////////////////////////////////////////////////////////////////////////////
250:
251: /// <summary>
252: ///
253: /// </summary>
254: public static List<Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint> List(int gwId)
255: {
256: List<Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint> agcfEndpointList;
257:
258: using (var db = new Ia.Ngn.Cl.Model.Ngn())
259: {
260: agcfEndpointList = (from a in db.AgcfEndpoints
261: where a.GwId == gwId
262: select a).Include(a => a.AgcfGatewayRecord).AsNoTracking().ToList();
263: }
264:
265: return agcfEndpointList;
266: }
267:
268: ////////////////////////////////////////////////////////////////////////////
269:
270: /// <summary>
271: ///
272: /// </summary>
273: public static List<Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint> List(Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Olt olt)
274: {
275: List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> ngnOntList;
276: List<Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord> agcfGatewayRecordList;
277: List<Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint> agcfEndpointList;
278:
279: // below: NGN ONT list
280: ngnOntList = (from o in Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntList
281: where o.Pon.PonGroup.Olt.Id == olt.Id
282: select o).ToList();
283:
284: using (var db = new Ia.Ngn.Cl.Model.Ngn())
285: {
286: agcfGatewayRecordList = (from a in db.AgcfGatewayRecords select a).AsNoTracking().ToList();
287:
288: agcfEndpointList = (from a in db.AgcfEndpoints select a).AsNoTracking().ToList();
289: }
290:
291: agcfGatewayRecordList = (from gr in agcfGatewayRecordList
292: join no in ngnOntList on gr.IP1 equals no.Ip
293: select gr).ToList();
294:
295: agcfEndpointList = (from e in agcfEndpointList
296: join gr in agcfGatewayRecordList on e.GwId equals gr.GwId
297: select e).ToList();
298:
299: return agcfEndpointList;
300: }
301:
302: ////////////////////////////////////////////////////////////////////////////
303:
304: /// <summary>
305: ///
306: /// </summary>
307: public static List<Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint> List(List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Olt> oltList)
308: {
309: List<Ia.Ngn.Cl.Model.Business.NetworkDesignDocument.Ont> ngnOntList;
310: List<Ia.Ngn.Cl.Model.Nokia.AgcfGatewayRecord> agcfGatewayRecordList;
311: List<Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint> agcfEndpointList;
312:
313: // below: NGN ONT list
314: ngnOntList = (from o in Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OntList
315: where oltList.Any(u => u.Id == o.Pon.PonGroup.Olt.Id)
316: select o).ToList();
317:
318: using (var db = new Ia.Ngn.Cl.Model.Ngn())
319: {
320: agcfGatewayRecordList = (from a in db.AgcfGatewayRecords select a).AsNoTracking().ToList();
321:
322: agcfEndpointList = (from a in db.AgcfEndpoints select a).AsNoTracking().ToList();
323: }
324:
325: agcfGatewayRecordList = (from gr in agcfGatewayRecordList
326: join no in ngnOntList on gr.IP1 equals no.Ip
327: select gr).ToList();
328:
329: agcfEndpointList = (from e in agcfEndpointList
330: join gr in agcfGatewayRecordList on e.GwId equals gr.GwId
331: select e).ToList();
332:
333: return agcfEndpointList;
334: }
335:
336: ////////////////////////////////////////////////////////////////////////////
337:
338: /// <summary>
339: ///
340: /// </summary>
341: public static Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint ReadByPrividUser(string prividUser)
342: {
343: Ia.Ngn.Cl.Model.Nokia.AgcfEndpoint agcfEndpoint;
344:
345: using (var db = new Ia.Ngn.Cl.Model.Ngn())
346: {
347: agcfEndpoint = (from a in db.AgcfEndpoints where a.PrividUser == prividUser select a).Include(a => a.AgcfGatewayRecord).SingleOrDefault();
348: }
349:
350: return agcfEndpoint;
351: }
352:
353: ////////////////////////////////////////////////////////////////////////////
354: ////////////////////////////////////////////////////////////////////////////
355: }
356:
357: ////////////////////////////////////////////////////////////////////////////
358: ////////////////////////////////////////////////////////////////////////////
359: }