1: using System;
2: using System.ComponentModel.DataAnnotations;
3: using System.ComponentModel.DataAnnotations.Schema;
4: using System.Linq;
5: using System.Threading;
6: using System.Threading.Tasks;
7:
8: namespace Ia.Ngn.Cl.Model.Huawei
9: {
10: ////////////////////////////////////////////////////////////////////////////
11:
12: /// <summary publish="true">
13: /// SERUATTR Signaling Service Processing System (SPS) support class for Huawei's Optical Fiber Network (OFN) entity model.
14: /// </summary>
15: ///
16: /// <remarks>
17: /// Copyright © 2018-2021 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
18: ///
19: /// This library is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by
20: /// the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
21: ///
22: /// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
23: /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
24: ///
25: /// You should have received a copy of the GNU General Public License along with this library. If not, see http://www.gnu.org/licenses.
26: ///
27: /// Copyright notice: This notice may not be removed or altered from any source distribution.
28: /// </remarks>
29: public class Seruattr
30: {
31: /*
32: * HUAWEI SPS Signaling Service Processing System
33: * V300R008C10
34: * SPS V300R008C10 PGW MML Command Protocol (NP)
35: */
36:
37: /// <summary/>
38: public Seruattr() { }
39:
40: /// <summary/>
41: [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
42: public string Id { get; set; }
43:
44: /// <summary>
45: /// int SERVATTR Whether enable related services (e.g. OMNP-1) Enumerated This parameter specifies which service is enabled. It is a mandatory parameter. Value: OMNP(Enable MNP service). No default value
46: /// </summary>
47: public int SERVATTR { get; set; }
48:
49: /// <summary>
50: /// int NUMTYPE Number type Enumerated This parameter specifies the type of a subscriber. It is a mandatory parameter.
51: /// </summary>
52: public int NUMTYPE { get; set; }
53:
54: /// <summary>
55: /// string USRNUM MSISDN String (16) The parameter specifies the MSISDN of a service subscriber. It is the key parameter that identifies a service subscriber. It is mandatory.
56: /// </summary>
57: public string USRNUM { get; set; }
58:
59: /// <summary>
60: /// string IMSINUM User IMSI number String (16) This parameter specifies the IMSI of a subscriber.
61: /// </summary>
62: public string IMSINUM { get; set; }
63:
64: /// <summary>
65: /// string DESC Description
66: /// </summary>
67: public string DESC { get; set; }
68:
69: /// <summary>
70: /// int RNIDXTYPE Route index type Enumerated This parameter specifies the route index type of a subscriber. It is a mandatory parameter.
71: /// </summary>
72: public int RNIDXTYPE { get; set; }
73:
74: /// <summary>
75: /// int HLRIDX HLR address index e.g. HLRIDX=1 HLRIDX HLR address index Numeric This parameter specifies the homing HLR index of a subscriber. It is valid only when Route index type is set to HLR(HLR number index) or ALL(HLR+RN). This parameter must be defined by running ADD SEMNPHLRADDR before being used. Value range: 0 to 65535. Default value: 65535
76: /// </summary>
77: public int HLRIDX { get; set; }
78:
79: /// <summary>
80: /// int RNIDX NP route index (e.g. RNIDX=0) NP route index Numeric This parameter specifies the route number index of the network where a subscriber belongs. It is valid only when Route index type is set to RN(Route number index). This parameter must be defined by running ADD SEMNPROUTENUM before being used. Value range: 0 to 65535. Default value: 65535
81: /// </summary>
82: public int RNIDX { get; set; }
83:
84: /// <summary>
85: /// int RNIDX2 Routing number index Numeric This parameter specifies the route number index of the network where a subscriber belongs. It is valid only when Route index type is set to ALL(HLR+RN). This parameter must be defined by running ADD SEMNPROUTENUM before being used. Value range: 0 to 65535. Default value: 65535
86: /// </summary>
87: public int RNIDX2 { get; set; }
88:
89: /// <summary>
90: /// string RN Routing number String (16) This parameter specifies the route number of the network where a subscriber belongs. It is valid only when Route index type is set to ALL(HLR+RN). This parameter must be defined by running ADD SEMNPROUTENUM before being used.. Value: a number of a maximum of 16 hexadecimal digits. No default value
91: /// </summary>
92: public string RN { get; set; }
93:
94: /// <summary/>
95: public DateTime Created { get; set; }
96:
97: /// <summary/>
98: public DateTime Updated { get; set; }
99:
100: ////////////////////////////////////////////////////////////////////////////
101:
102: /// <summary>
103: ///
104: /// </summary>
105: public bool Equal(Ia.Ngn.Cl.Model.Huawei.Seruattr b)
106: {
107: // below: this will not check the Id, Created, Updated fields
108: bool areEqual;
109:
110: if (this.SERVATTR != b.SERVATTR) areEqual = false;
111: else if (this.NUMTYPE != b.NUMTYPE) areEqual = false;
112: else if (this.USRNUM != b.USRNUM) areEqual = false;
113: else if (this.IMSINUM != b.IMSINUM) areEqual = false;
114: else if (this.DESC != b.DESC) areEqual = false;
115: else if (this.RNIDXTYPE != b.RNIDXTYPE) areEqual = false;
116: else if (this.HLRIDX != b.HLRIDX) areEqual = false;
117: else if (this.RNIDX != b.RNIDX) areEqual = false;
118: else if (this.RNIDX2 != b.RNIDX2) areEqual = false;
119: else if (this.RN != b.RN) areEqual = false;
120: else areEqual = true;
121:
122: return areEqual;
123: }
124:
125: ////////////////////////////////////////////////////////////////////////////
126:
127: /// <summary>
128: ///
129: /// </summary>
130: public bool Update(Ia.Ngn.Cl.Model.Huawei.Seruattr updatedItem)
131: {
132: // below: this will not update Id, Created
133: bool updated;
134:
135: updated = false;
136:
137: if (this.SERVATTR != updatedItem.SERVATTR) { this.SERVATTR = updatedItem.SERVATTR; updated = true; }
138: if (this.NUMTYPE != updatedItem.NUMTYPE) { this.NUMTYPE = updatedItem.NUMTYPE; updated = true; }
139: if (this.USRNUM != updatedItem.USRNUM) { this.USRNUM = updatedItem.USRNUM; updated = true; }
140: if (this.IMSINUM != updatedItem.IMSINUM) { this.IMSINUM = updatedItem.IMSINUM; updated = true; }
141: if (this.DESC != updatedItem.DESC) { this.DESC = updatedItem.DESC; updated = true; }
142: if (this.RNIDXTYPE != updatedItem.RNIDXTYPE) { this.RNIDXTYPE = updatedItem.RNIDXTYPE; updated = true; }
143: if (this.HLRIDX != updatedItem.HLRIDX) { this.HLRIDX = updatedItem.HLRIDX; updated = true; }
144: if (this.RNIDX != updatedItem.RNIDX) { this.RNIDX = updatedItem.RNIDX; updated = true; }
145: if (this.RNIDX2 != updatedItem.RNIDX2) { this.RNIDX2 = updatedItem.RNIDX2; updated = true; }
146: if (this.RN != updatedItem.RN) { this.RN = updatedItem.RN; updated = true; }
147:
148: if (updated) this.Updated = DateTime.UtcNow.AddHours(3);
149:
150: return updated;
151: }
152:
153: ////////////////////////////////////////////////////////////////////////////
154: ////////////////////////////////////////////////////////////////////////////
155:
156: /// <summary>
157: ///
158: /// </summary>
159: public string ToSimpleTextString()
160: {
161: return Ia.Ngn.Cl.Model.Data.Huawei.Seruattr.ToSimpleTextString(this);
162: }
163:
164: ////////////////////////////////////////////////////////////////////////////
165: ////////////////////////////////////////////////////////////////////////////
166: }
167:
168: ////////////////////////////////////////////////////////////////////////////
169: ////////////////////////////////////////////////////////////////////////////
170: }