1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Web;
5: using System.ComponentModel.DataAnnotations;
6: using System.ComponentModel.DataAnnotations.Schema;
7: using System.Xml.Linq;
8:
9: namespace Ia.Ngn.Cl.Model
10: {
11: ////////////////////////////////////////////////////////////////////////////
12:
13: /// <summary publish="true">
14: /// Logical-Circuit Entity Framework class for Next Generation Network (NGN) entity model.
15: /// </summary>
16: ///
17: /// <remarks>
18: /// Copyright © 2006-2015 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 partial class LogicalCircuit
31: {
32: /// <summary/>
33: public LogicalCircuit() { }
34:
35: /// <summary/>
36: [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
37: public int Id { get; set; }
38:
39: /// <summary/>
40: public int GatewayIndex { get; set; } // GWY_INDEX
41:
42: /// <summary/>
43: public int TerminationIdIndex { get; set; } // TERMID_INDEX
44:
45: /// <summary/>
46: public string GatewayName { get; set; } // GWY_NAME
47:
48: /// <summary/>
49: public string TerminationString { get; set; } // TERM_STRING
50:
51: /// <summary/>
52: public int Lceid { get; set; } // LCEID
53:
54: /// <summary/>
55: public string LceidName { get; set; } // LCEID Name
56:
57: /// <summary/>
58: public int Tn { get; set; } // TN
59:
60: /// <summary/>
61: public DateTime Created { get; set; }
62:
63: /// <summary/>
64: public DateTime Updated { get; set; }
65:
66: /*
67: ////////////////////////////////////////////////////////////////////////////
68:
69: /// <summary>
70: ///
71: /// </summary>
72: public static int LogicalCircuitId(string lceid, int lan)
73: {
74: // below: logic below is based on LCEID data in service.xml
75: int id;
76:
77: id = global::Ia.Cl.Model.Default.HexToDec(lceid);
78: id = (id - 48000) / 16 * 100000;
79: id += lan;
80:
81: return id;
82: }
83:
84: ////////////////////////////////////////////////////////////////////////////
85:
86: /// <summary>
87: ///
88: /// </summary>
89: public static int LogicalCircuitId(int lceid, int lan)
90: {
91: // below: logic below is based on LCEID data in service.xml
92: int id;
93:
94: id = (lceid - 48000) / 16 * 100000;
95: id += lan;
96:
97: return id;
98: }
99:
100: ////////////////////////////////////////////////////////////////////////////
101:
102: /// <summary>
103: ///
104: /// </summary>
105: public static bool Create(LogicalCircuit newLogicalCircuit, out string result)
106: {
107: bool b;
108:
109: b = false;
110: result = "";
111:
112: using (var db = new Ia.Ngn.Cl.Model.Ngn())
113: {
114: newLogicalCircuit.Created = newLogicalCircuit.Updated = DateTime.UtcNow.AddHours(3);
115:
116: db.LogicalCircuits.Add(newLogicalCircuit);
117: db.SaveChanges();
118:
119: b = true;
120: }
121:
122: return b;
123: }
124:
125: ////////////////////////////////////////////////////////////////////////////
126:
127: /// <summary>
128: ///
129: /// </summary>
130: public static LogicalCircuit Read(int id)
131: {
132: LogicalCircuit logicalCircuit;
133:
134: using (var db = new Ia.Ngn.Cl.Model.Ngn())
135: {
136: logicalCircuit = (from q in db.LogicalCircuits where q.Id == id select q).SingleOrDefault();
137: }
138:
139: return logicalCircuit;
140: }
141:
142: ////////////////////////////////////////////////////////////////////////////
143:
144: /// <summary>
145: /// Read all logical circuits
146: /// </summary>
147: public static List<LogicalCircuit> ReadList()
148: {
149: List<LogicalCircuit> logicalCircuitList;
150:
151: using (var db = new Ia.Ngn.Cl.Model.Ngn())
152: {
153: logicalCircuitList = (from q in db.LogicalCircuits orderby q.Id select q).ToList();
154: }
155:
156: return logicalCircuitList;
157: }
158:
159: ////////////////////////////////////////////////////////////////////////////
160:
161: /// <summary>
162: /// Read all logical circuits for a certain LCEID
163: /// </summary>
164: public static List<LogicalCircuit> ReadList(string lceidName)
165: {
166: int logicalCircuitNumber;
167: List<LogicalCircuit> logicalCircuitList;
168:
169: // lceid = Ia.Ngn.Cl.Model.Data.Service.LceidInDecFromLceidName(lceidName);
170: logicalCircuitNumber = (from q in Ia.Ngn.Cl.Model.Data.Service.LceidList where q.Name == lceidName select q.LogicalCircuitNumber).SingleOrDefault();
171:
172: using (var db = new Ia.Ngn.Cl.Model.Ngn())
173: {
174: logicalCircuitList = (from q in db.LogicalCircuits where q.Lceid == logicalCircuitNumber select q).ToList();
175: }
176:
177: return logicalCircuitList;
178: }
179:
180: ////////////////////////////////////////////////////////////////////////////
181:
182: /// <summary>
183: /// Read all logical circuits within lan range given the lceid number
184: /// </summary>
185: public static List<LogicalCircuit> ReadList(int lceid, int startTn, int endTn)
186: {
187: List<LogicalCircuit> logicalCircuitList;
188:
189: using (var db = new Ia.Ngn.Cl.Model.Ngn())
190: {
191: logicalCircuitList = (from q in db.LogicalCircuits where q.Lceid == lceid && q.Tn >= startTn && q.Tn <= endTn select q).ToList();
192: }
193:
194: return logicalCircuitList;
195: }
196:
197: ////////////////////////////////////////////////////////////////////////////
198:
199: /// <summary>
200: ///
201: /// </summary>
202: public bool Update(LogicalCircuit updatedLogicalCircuit)
203: {
204: // below: this will not update Id, Created
205: bool updated;
206:
207: updated = false;
208:
209: if (this.GatewayIndex != updatedLogicalCircuit.GatewayIndex) { this.GatewayIndex = updatedLogicalCircuit.GatewayIndex; updated = true; }
210: if (this.GatewayName != updatedLogicalCircuit.GatewayName) { this.GatewayName = updatedLogicalCircuit.GatewayName; updated = true; }
211: if (this.Lceid != updatedLogicalCircuit.Lceid) { this.Lceid = updatedLogicalCircuit.Lceid; updated = true; }
212: if (this.LceidName != updatedLogicalCircuit.LceidName) { this.LceidName = updatedLogicalCircuit.LceidName; updated = true; }
213: if (this.TerminationIdIndex != updatedLogicalCircuit.TerminationIdIndex) { this.TerminationIdIndex = updatedLogicalCircuit.TerminationIdIndex; updated = true; }
214: if (this.TerminationString != updatedLogicalCircuit.TerminationString) { this.TerminationString = updatedLogicalCircuit.TerminationString; updated = true; }
215: if (this.Tn != updatedLogicalCircuit.Tn) { this.Tn = updatedLogicalCircuit.Tn; updated = true; }
216:
217: if (updated) this.Updated = /*this.Inspected =* / DateTime.UtcNow.AddHours(3);
218: //else this.Inspected = DateTime.UtcNow.AddHours(3);
219:
220: return updated;
221: }
222:
223: //////////////////////////////////////////////////////////////////////////////
224:
225: ///// <summary>
226: /////
227: ///// </summary>
228: //public static bool CreateOrUpdate(LogicalCircuit updatedLogicalCircuit, out string result)
229: //{
230: // bool b;
231:
232: // b = false;
233: // result = "";
234:
235: // using (var db = new Ia.Ngn.Cl.Model.Ngn())
236: // {
237: // if (Read(updatedLogicalCircuit.Id) != null) b = Update(updatedLogicalCircuit, out result);
238: // else b = Create(updatedLogicalCircuit, out result);
239: // }
240:
241: // return b;
242: //}
243:
244: ////////////////////////////////////////////////////////////////////////////
245:
246: /// <summary>
247: ///
248: /// </summary>
249: public static bool Delete(int id, out string result)
250: {
251: bool b;
252:
253: b = false;
254: result = "";
255:
256: using (var db = new Ia.Ngn.Cl.Model.Ngn())
257: {
258: var x = (from q in db.LogicalCircuits where q.Id == id select q).FirstOrDefault();
259:
260: db.LogicalCircuits.Remove(x);
261: db.SaveChanges();
262:
263: b = true;
264: }
265:
266: return b;
267: }
268: */
269:
270: ////////////////////////////////////////////////////////////////////////////
271: ////////////////////////////////////////////////////////////////////////////
272: }
273:
274: ////////////////////////////////////////////////////////////////////////////
275: ////////////////////////////////////////////////////////////////////////////
276: }