1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Data.Entity;
5:
6: namespace Ia.Ngn.Cl.Model.Data.Huawei
7: {
8: ////////////////////////////////////////////////////////////////////////////
9:
10: /// <summary publish="true">
11: /// Huawei ONU support class for Next Generation Network (NGN) data model.
12: /// </summary>
13: ///
14: /// <remarks>
15: /// Copyright © 2016-2018 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 partial class Onu
28: {
29: /// <summary/>
30: public Onu() { }
31:
32: ////////////////////////////////////////////////////////////////////////////
33:
34: /// <summary>
35: ///
36: /// </summary>
37: public static bool Create(Ia.Ngn.Cl.Model.Huawei.Onu onu, out string result)
38: {
39: bool b;
40:
41: b = false;
42: result = "";
43:
44: using (var db = new Ia.Ngn.Cl.Model.Ngn())
45: {
46: onu.Created = onu.Updated = DateTime.UtcNow.AddHours(3);
47:
48: onu.Access = (from a in db.Accesses where a.Id == onu.Access.Id select a).SingleOrDefault();
49:
50: db.Onus.Add(onu);
51: db.SaveChanges();
52:
53: b = true;
54: }
55:
56: return b;
57: }
58:
59: ////////////////////////////////////////////////////////////////////////////
60:
61: /// <summary>
62: ///
63: /// </summary>
64: public static Ia.Ngn.Cl.Model.Huawei.Onu Read(string id)
65: {
66: Ia.Ngn.Cl.Model.Huawei.Onu onu;
67:
68: using (var db = new Ia.Ngn.Cl.Model.Ngn())
69: {
70: onu = (from o in db.Onus where o.Id == id select o)/*.Include(o => o.OnuServiceVoips)*/.SingleOrDefault();
71: }
72:
73: return onu;
74: }
75:
76: ////////////////////////////////////////////////////////////////////////////
77:
78: /// <summary>
79: ///
80: /// </summary>
81: public static List<Ia.Ngn.Cl.Model.Huawei.Onu> List()
82: {
83: List<Ia.Ngn.Cl.Model.Huawei.Onu> onuList;
84:
85: using (var db = new Ia.Ngn.Cl.Model.Ngn())
86: {
87: onuList = (from o in db.Onus select o).ToList();
88: }
89:
90: return onuList;
91: }
92:
93: ////////////////////////////////////////////////////////////////////////////
94:
95: /// <summary>
96: ///
97: /// </summary>
98: public static Dictionary<string, string> IdToAccessIdDictionary
99: {
100: get
101: {
102: Dictionary<string, string> dictionary, nullDictionary;
103:
104: using (var db = new Ia.Ngn.Cl.Model.Ngn())
105: {
106: dictionary = (from s in db.Onus
107: where s.Access != null
108: select new
109: {
110: s.Id,
111: s.Access
112: }).ToDictionary(u => u.Id, u => u.Access.Id);
113:
114: nullDictionary = (from s in db.Onus where s.Access == null select s.Id).ToDictionary(u => u, null);
115: }
116:
117: return dictionary.Union(nullDictionary).ToDictionary(u => u.Key, u => u.Value);
118: }
119: }
120:
121: ////////////////////////////////////////////////////////////////////////////
122:
123: /// <summary>
124: ///
125: /// </summary>
126: public static Dictionary<string, List<string>> SerialToIdListDictionary
127: {
128: get
129: {
130: Dictionary<string, List<string>> dictionary;
131:
132: dictionary = IdToSerialDictionary.GroupBy(p => p.Value).ToDictionary(g => g.Key, g => g.Select(pp => pp.Key).ToList());
133:
134: return dictionary;
135: }
136: }
137:
138: ////////////////////////////////////////////////////////////////////////////
139:
140: /// <summary>
141: ///
142: /// </summary>
143: public static Dictionary<string, string> IdToSerialDictionary
144: {
145: get
146: {
147: Dictionary<string, string> dictionary;
148:
149: using (var db = new Ia.Ngn.Cl.Model.Ngn())
150: {
151: dictionary = (from s in db.Onus
152: select new
153: {
154: s.Id,
155: s.Serial
156: }).ToDictionary(u => u.Id, u => u.Serial);
157: }
158:
159: return dictionary.ToDictionary(u => u.Key, u => u.Value);
160: }
161: }
162:
163: ////////////////////////////////////////////////////////////////////////////
164:
165: /// <summary>
166: ///
167: /// </summary>
168: public static List<string> IdList()
169: {
170: List<string> list;
171:
172: using (var db = new Ia.Ngn.Cl.Model.Ngn())
173: {
174: list = (from o in db.Onus select o.Id).ToList();
175: }
176:
177: return list;
178: }
179:
180: ////////////////////////////////////////////////////////////////////////////
181:
182: /// <summary>
183: ///
184: /// </summary>
185: public static List<string> IdList(int oltId)
186: {
187: List<string> list;
188:
189: using (var db = new Ia.Ngn.Cl.Model.Ngn())
190: {
191: list = (from o in db.Onus where o.Access.Olt == oltId select o.Id).ToList();
192: }
193:
194: return list;
195: }
196:
197: ////////////////////////////////////////////////////////////////////////////
198: ////////////////////////////////////////////////////////////////////////////
199:
200: /// <summary>
201: ///
202: /// </summary>
203: public static string FamilyTypeFromId(int familyTypeId)
204: {
205: string s;
206: Ia.Ngn.Cl.Model.Business.Huawei.Ont.EquipmentType familyType;
207:
208: familyType = (Ia.Ngn.Cl.Model.Business.Huawei.Ont.EquipmentType)familyTypeId;
209:
210: s = familyType.ToString().ToUpper();
211:
212: return s;
213: }
214:
215: ////////////////////////////////////////////////////////////////////////////
216:
217: /// <summary>
218: ///
219: /// </summary>
220: public static List<Ia.Ngn.Cl.Model.Huawei.Onu> List(string serial)
221: {
222: List<Ia.Ngn.Cl.Model.Huawei.Onu> list;
223:
224: using (var db = new Ia.Ngn.Cl.Model.Ngn())
225: {
226: list = (from o in db.Onus where o.Serial == serial select o).ToList();
227: }
228:
229: return list;
230: }
231:
232: ////////////////////////////////////////////////////////////////////////////
233:
234: /// <summary>
235: ///
236: /// </summary>
237: public static List<Ia.Ngn.Cl.Model.Huawei.Onu> List(int oltId)
238: {
239: List<Ia.Ngn.Cl.Model.Huawei.Onu> list;
240:
241: using (var db = new Ia.Ngn.Cl.Model.Ngn())
242: {
243: list = (from o in db.Onus where o.Access.Olt == oltId select o).ToList();
244: }
245:
246: return list;
247: }
248:
249: /*
250: ////////////////////////////////////////////////////////////////////////////
251:
252: /// <summary>
253: ///
254: /// </summary>
255: public static List<Ia.Ngn.Cl.Model.Huawei.Onu> ReadListIncludeOnuServiceVoipsAndAccess(int oltId)
256: {
257: List<Ia.Ngn.Cl.Model.Huawei.Onu> list;
258:
259: using (var db = new Ia.Ngn.Cl.Model.Ngn())
260: {
261: list = (from o in db.Onus where o.Access.Olt == oltId select o).Include(x => x.Access).Include(x => x.OnuServiceVoips).ToList();
262: }
263:
264: return list;
265: }
266: */
267:
268: ////////////////////////////////////////////////////////////////////////////
269:
270: /// <summary>
271: ///
272: /// </summary>
273: public static List<Ia.Ngn.Cl.Model.Huawei.Onu> ListIncludeAccess()
274: {
275: List<Ia.Ngn.Cl.Model.Huawei.Onu> onuList;
276:
277: using (var db = new Ia.Ngn.Cl.Model.Ngn())
278: {
279: onuList = (from o in db.Onus select o).Include(u => u.Access).ToList();
280: }
281:
282: return onuList;
283: }
284:
285: /*
286: ////////////////////////////////////////////////////////////////////////////
287:
288: /// <summary>
289: ///
290: /// </summary>
291: public static List<Ia.Ngn.Cl.Model.Huawei.Onu> ListIncludeAccessAndOnuOnuPots()
292: {
293: List<Ia.Ngn.Cl.Model.Huawei.Onu> onuList;
294:
295: using (var db = new Ia.Ngn.Cl.Model.Ngn())
296: {
297: onuList = (from o in db.Onus select o).Include(u => u.Access).Include(v => v.OnuOnuPotses).ToList();
298: }
299:
300: return onuList;
301: }
302: */
303:
304: /*
305: ////////////////////////////////////////////////////////////////////////////
306:
307: /// <summary>
308: ///
309: /// </summary>
310: public static List<Ia.Ngn.Cl.Model.Huawei.Onu> ListIncludeAccessAndOnuOnuPots(int oltId)
311: {
312: List<Ia.Ngn.Cl.Model.Huawei.Onu> onuList;
313:
314: using (var db = new Ia.Ngn.Cl.Model.Ngn())
315: {
316: onuList = (from o in db.Onus where o.Access.Olt == oltId select o).Include(u => u.Access).Include(v => v.OnuOnuPotses).ToList();
317: }
318:
319: return onuList;
320: }
321: */
322:
323: ////////////////////////////////////////////////////////////////////////////
324:
325: /// <summary>
326: ///
327: /// </summary>
328: public static List<Ia.Ngn.Cl.Model.Huawei.Onu> ListIncludeAccess(int oltId)
329: {
330: List<Ia.Ngn.Cl.Model.Huawei.Onu> onuList;
331:
332: using (var db = new Ia.Ngn.Cl.Model.Ngn())
333: {
334: onuList = (from o in db.Onus where o.Access.Olt == oltId select o).Include(u => u.Access).ToList();
335: }
336:
337: return onuList;
338: }
339:
340: /*
341: ////////////////////////////////////////////////////////////////////////////
342:
343: /// <summary>
344: ///
345: /// </summary>
346: public static List<string> ReadNetworkDesignDocumentAccessNameListWithOnuEquipmentIdNotNullAndAccessIsNullIncludeOnuServiceVoips
347: {
348: get
349: {
350: Hashtable ht;
351: List<string> onuNameList;
352: List<Ia.Ngn.Cl.Model.Huawei.Onu> onuList;
353:
354: using (var db = new Ia.Ngn.Cl.Model.Ngn())
355: {
356: onuList = (from o in db.Onus where o.EquipmentId != null && o.Access == null select o).ToList();
357:
358: onuNameList = new List<string>(onuList.Count);
359:
360: ht = Ia.Ngn.Cl.Model.Data.NetworkDesignDocument.OnuListIdToAccessNameHashtable;
361:
362: foreach (var onu in onuList)
363: {
364: if (ht.ConuainsKey(onu.Id)) onuNameList.Add(ht[onu.Id].ToString());
365: }
366: }
367:
368: return onuNameList;
369: }
370: }
371: */
372:
373: ////////////////////////////////////////////////////////////////////////////
374:
375: /// <summary>
376: ///
377: /// </summary>
378: public static bool Update(Ia.Ngn.Cl.Model.Huawei.Onu onu, out string result)
379: {
380: bool b;
381:
382: b = false;
383: result = "";
384:
385: using (var db = new Ia.Ngn.Cl.Model.Ngn())
386: {
387: onu = (from o in db.Onus where o.Id == onu.Id select o).SingleOrDefault();
388:
389: onu.Updated = DateTime.UtcNow.AddHours(3);
390:
391: db.Onus.Attach(onu);
392:
393: db.Entry(onu).State = System.Data.Entity.EntityState.Modified;
394: db.SaveChanges();
395:
396: b = true;
397: }
398:
399: return b;
400: }
401:
402: ////////////////////////////////////////////////////////////////////////////
403:
404: /// <summary>
405: ///
406: /// </summary>
407: public static bool Delete(string id, out string result)
408: {
409: bool b;
410:
411: b = false;
412: result = "";
413:
414: using (var db = new Ia.Ngn.Cl.Model.Ngn())
415: {
416: var v = (from o in db.Onus where o.Id == id select o).FirstOrDefault();
417:
418: if (v != null)
419: {
420: db.Onus.Remove(v);
421: db.SaveChanges();
422:
423: b = true;
424: }
425: else b = false;
426: }
427:
428: return b;
429: }
430:
431: ////////////////////////////////////////////////////////////////////////////
432:
433: /// <summary>
434: ///
435: /// </summary>
436: public static bool DeleteByAccessId(string accessId, out string result)
437: {
438: bool b;
439:
440: b = false;
441: result = "";
442:
443: using (var db = new Ia.Ngn.Cl.Model.Ngn())
444: {
445: var v = (from o in db.Onus where o.Access.Id == accessId select o).Include(u => u.Access).FirstOrDefault();
446:
447: if (v != null)
448: {
449: db.Onus.Remove(v);
450: db.SaveChanges();
451:
452: b = true;
453: }
454: else b = false;
455: }
456:
457: return b;
458: }
459:
460: ////////////////////////////////////////////////////////////////////////////
461: ////////////////////////////////////////////////////////////////////////////
462: }
463:
464: ////////////////////////////////////////////////////////////////////////////
465: ////////////////////////////////////////////////////////////////////////////
466: }