1: using System;
2: using System.Linq;
3: using System.Runtime.Serialization;
4: using System.Web.Http;
5:
6: namespace Ia.Ngn.Cl.Model.Api.Controller
7: {
8: ////////////////////////////////////////////////////////////////////////////
9:
10: /// <summary publish="true">
11: /// Service Suspension API Controller class of Next Generation Network'a (NGN's) model.
12: /// </summary>
13: ///
14: /// <remarks>
15: /// Copyright © 2006-2021 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 ServiceSuspensionController : ApiController
28: {
29: ////////////////////////////////////////////////////////////////////////////
30:
31: /// <summary>
32: ///
33: /// </summary>
34: [DataContract(IsReference = true, Name = "apiAdministrationServiceSuspensionActivateSuspendResult")]
35: public class ServiceSuspensionActivateSuspendResult
36: {
37: /// <summary/>
38: [DataMember(Name = "number")]
39: public string Number { get; set; }
40:
41: /// <summary/>
42: [DataMember(Name = "isSuccessful")]
43: public bool IsSuccessful { get; set; }
44:
45: /// <summary/>
46: [DataMember(Name = "message")]
47: public string Message { get; set; }
48: }
49:
50: ////////////////////////////////////////////////////////////////////////////
51:
52: /// <summary>
53: ///
54: /// </summary>
55: [DataContract(IsReference = true, Name = "apiAdministrationServiceSuspensionReadResult")]
56: public class ServiceSuspensionReadResult
57: {
58: /// <summary/>
59: [DataMember(Name = "number")]
60: public string Number { get; set; }
61:
62: /// <summary/>
63: [DataMember(Name = "isSuccessful")]
64: public bool IsSuccessful { get; set; }
65:
66: /// <summary/>
67: [DataMember(Name = "isSuspended")]
68: public bool IsSuspended { get; set; }
69:
70: /// <summary/>
71: [DataMember(Name = "serviceLastUpdated")]
72: public DateTime ServiceLastUpdated { get; set; }
73:
74: /// <summary/>
75: [DataMember(Name = "message")]
76: public string Message { get; set; }
77: }
78:
79: ////////////////////////////////////////////////////////////////////////////
80:
81: /// <summary>
82: /// Activate a service number
83: /// </summary>
84: /// <param name="key">Private access key</param>
85: /// <param name="service">Service number to activate</param>
86: [HttpGet]
87: [Route("api/administration/service-suspension/activate/{key}/{service}")]
88: public ServiceSuspensionActivateSuspendResult Activate(string key, string service)
89: {
90: var staffContact = (from sc in Ia.Ngn.Cl.Model.Data.Administration.StaffContactList
91: where sc.Email == "samih@bishara.com"
92: select sc).SingleOrDefault();
93:
94: if (staffContact != null && !string.IsNullOrEmpty(key))
95: {
96: // Ia.Ngn.Cl.Model.Business.ServiceRequestService.UpdateServiceSuspension(service, false, staffContact, out result);
97:
98: var response = new Ia.Ngn.Ofn.Wa.Api.Model.Controller.ServiceRequestAdministrativeIssueController.ReadIssueResponse();
99:
100: response.IsAuthorized = true;
101:
102: var serviceRequestAdministrativeIssueType = Ia.Ngn.Cl.Model.Business.ServiceRequestAdministrativeIssue.ServiceRequestAdministrativeIssueTypeByDisconnectionType(Ia.Ngn.Cl.Model.Business.ServiceRequestAdministrativeIssue.DisconnectionType.None);
103:
104: response.Issue = Ia.Ngn.Cl.Model.Data.ServiceRequestAdministrativeIssue.Update(service, serviceRequestAdministrativeIssueType, out Ia.Cl.Model.Result result);
105:
106: response.Service = service;
107: response.IsSuccessful = result.IsSuccessful;
108: response.IsSuspended = response.Issue != null;
109: response.Updated = response.Issue != null ? response.Issue.Updated : DateTime.MinValue;
110: response.Message = result.Message;
111:
112: return new ServiceSuspensionActivateSuspendResult()
113: {
114: Number = response.Service,
115: IsSuccessful = response.IsSuccessful,
116: Message = response.Message
117: };
118: }
119: else
120: {
121: return new ServiceSuspensionActivateSuspendResult()
122: {
123: Number = service,
124: IsSuccessful = false,
125: Message = string.Empty,
126: };
127: }
128: }
129:
130:
131: ////////////////////////////////////////////////////////////////////////////
132:
133: /// <summary>
134: /// Suspend a service number
135: /// </summary>
136: /// <param name="key">Private access key</param>
137: /// <param name="service">Service number to suspend</param>
138: [HttpGet]
139: [Route("api/administration/service-suspension/suspend/{key}/{service}")]
140: public ServiceSuspensionActivateSuspendResult Suspend(string key, string service)
141: {
142: var staffContact = (from sc in Ia.Ngn.Cl.Model.Data.Administration.StaffContactList
143: where sc.Email == "samih@bishara.com"
144: select sc).SingleOrDefault();
145:
146: if (staffContact != null && !string.IsNullOrEmpty(key))
147: {
148: // Ia.Ngn.Cl.Model.Business.ServiceRequestService.UpdateServiceSuspension(service, true, staffContact, out result);
149:
150: var response = new Ia.Ngn.Ofn.Wa.Api.Model.Controller.ServiceRequestAdministrativeIssueController.ReadIssueResponse();
151:
152: response.IsAuthorized = true;
153:
154: var serviceRequestAdministrativeIssueType = Ia.Ngn.Cl.Model.Business.ServiceRequestAdministrativeIssue.ServiceRequestAdministrativeIssueTypeByDisconnectionType(Ia.Ngn.Cl.Model.Business.ServiceRequestAdministrativeIssue.DisconnectionType.ProgrammedAccounting);
155:
156: response.Issue = Ia.Ngn.Cl.Model.Data.ServiceRequestAdministrativeIssue.Update(service, serviceRequestAdministrativeIssueType, out Ia.Cl.Model.Result result);
157:
158: response.Service = service;
159: response.IsSuccessful = result.IsSuccessful;
160: response.IsSuspended = response.Issue != null;
161: response.Updated = response.Issue != null ? response.Issue.Updated : DateTime.MinValue;
162: response.Message = result.Message;
163:
164: return new ServiceSuspensionActivateSuspendResult()
165: {
166: Number = response.Service,
167: IsSuccessful = response.IsSuccessful,
168: Message = response.Message
169: };
170: }
171: else
172: {
173: return new ServiceSuspensionActivateSuspendResult()
174: {
175: Number = service,
176: IsSuccessful = false,
177: Message = string.Empty,
178: };
179: }
180: }
181:
182: ////////////////////////////////////////////////////////////////////////////
183:
184: /// <summary>
185: /// Read the status of a service number. The output will indicate the update date in which data was last read and updated from the system.
186: /// </summary>
187: /// <param name="key">Private access key</param>
188: /// <param name="service">Service number to suspend</param>
189: [HttpGet]
190: [Route("api/administration/service-suspension/read/{key}/{service}")]
191: public ServiceSuspensionReadResult Read(string key, string service)
192: {
193: var staffContact = (from sc in Ia.Ngn.Cl.Model.Data.Administration.StaffContactList
194: where sc.Email == "samih@bishara.com"
195: select sc).SingleOrDefault();
196:
197: if (staffContact != null && !string.IsNullOrEmpty(key))
198: {
199: // Ia.Ngn.Cl.Model.Business.ServiceRequestService.ReadServiceSuspension(service, staffContact, key, out isSuspended, out serviceLastUpdated, out result);
200:
201: var response = new Ia.Ngn.Ofn.Wa.Api.Model.Controller.ServiceRequestAdministrativeIssueController.ReadIssueResponse();
202:
203: response.IsAuthorized = true;
204:
205: response.Issue = Ia.Ngn.Cl.Model.Data.ServiceRequestAdministrativeIssue.Read(service, out Ia.Cl.Model.Result result);
206: response.Service = service;
207: response.IsSuccessful = result.IsSuccessful;
208: response.IsSuspended = response.Issue != null;
209: response.Updated = response.Issue != null ? response.Issue.Updated : DateTime.MinValue;
210: response.Message = result.Message;
211:
212: return new ServiceSuspensionReadResult()
213: {
214: Number = response.Service,
215: IsSuccessful = response.IsSuccessful,
216: IsSuspended = response.Issue != null,
217: ServiceLastUpdated = response.Issue != null ? response.Issue.Updated : DateTime.MinValue,
218: Message = response.Message
219: };
220: }
221: else
222: {
223: return new ServiceSuspensionReadResult()
224: {
225: Number = service,
226: IsSuccessful = false,
227: IsSuspended = false,
228: ServiceLastUpdated = DateTime.MinValue,
229: Message = string.Empty,
230: };
231: }
232: }
233:
234: ////////////////////////////////////////////////////////////////////////////
235: ////////////////////////////////////////////////////////////////////////////
236: }
237: }