1: using System;
2: using System.Collections.Generic;
3: using System.Data;
4: using System.Linq;
5: using System.Text.RegularExpressions;
6: using System.Web;
7:
8: namespace Ia.Ngn.Cl.Model.Business.Maintenance
9: {
10: ////////////////////////////////////////////////////////////////////////////
11:
12: /// <summary publish="true">
13: /// Execute backend task support class for the Optical Fiber Network business model
14: /// </summary>
15: ///
16: /// <remarks>
17: /// Copyright © 2019-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 Task
30: {
31: ////////////////////////////////////////////////////////////////////////////
32:
33: /// <summary>
34: ///
35: /// </summary>
36: public Task() { }
37:
38: ////////////////////////////////////////////////////////////////////////////
39:
40: /// <summary>
41: ///
42: /// </summary>
43: public static void AccessTask(string processItemValue, string accessName, Ia.Ngn.Cl.Model.Staff staff, out Ia.Cl.Model.Result result)
44: {
45: string rawAccessName, input;
46:
47: result = new Ia.Cl.Model.Result();
48:
49: if (Ia.Ngn.Cl.Model.Business.Authority.StaffCanExecuteAccessTasks(staff))
50: {
51: if (!string.IsNullOrEmpty(accessName))
52: {
53: rawAccessName = accessName;
54:
55: var process = (Ia.Ngn.Cl.Model.Business.Msmq.Process)int.Parse(processItemValue);
56:
57: if (!string.IsNullOrEmpty(accessName))
58: {
59: accessName = accessName.Trim();
60: input = accessName.ToUpper();
61:
62: if (input.Length > 0)
63: {
64: if (Ia.Ngn.Cl.Model.Business.Access.AccessNameIsInAValidFormat(input))
65: {
66: var nddOnt = Ia.Ngn.Cl.Model.Business.Default.NddOntUsingExtractedAccessNameWithValidSymbolAndLegalFormatForPonAndOntFromValue(input);
67:
68: if (nddOnt != null)
69: {
70: if (process == Ia.Ngn.Cl.Model.Business.Msmq.Process.ReadAccess || process == Ia.Ngn.Cl.Model.Business.Msmq.Process.ResetAccess)
71: {
72: Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, process, input);
73: }
74: else
75: {
76:
77: }
78:
79: result.AddSuccess("Task Enqueued (تم إرسال المهمة).");
80: }
81: else
82: {
83: result.AddError("The ONT \"" + rawAccessName + "\" does not belong to the network (الجهاز لا ينتمي للشبكة).");
84: }
85: }
86: else
87: {
88: result.AddError("Input format is unknown (قيمة غير مفهومة).");
89: }
90: }
91: else result.AddError("No input was entered (لم يتم إدخال أي شيء).");
92: }
93: else result.AddError("Input is null or empty (لم يتم إدخال أي شيء).");
94: }
95: else
96: {
97: //rawInput = null;
98: }
99: }
100: else result.AddError("You are not authorized to execute tasks (لست مخولاً بتنفيذ وظائف).");
101: }
102:
103: ////////////////////////////////////////////////////////////////////////////
104:
105: /// <summary>
106: ///
107: /// </summary>
108: public static void ServiceAccessTask(Ia.Ngn.Cl.Model.Business.Msmq.Process process, string service, string accessName, bool overrideRouterDomainRestriction, Ia.Ngn.Cl.Model.Staff staff, out Ia.Cl.Model.Result result)
109: {
110: Guid userId;
111:
112: result = new Ia.Cl.Model.Result();
113:
114: var port = Ia.Ngn.Cl.Model.Business.Default.PortUndefinedOrInvalidOrUnknown;
115:
116: if (staff == null || Ia.Ngn.Cl.Model.Business.Authority.StaffCanExecuteTasks(staff))
117: {
118: userId = (staff != null) ? staff.UserId : Guid.Empty;
119:
120: if (process == Ia.Ngn.Cl.Model.Business.Msmq.Process.CreateReadServiceAccessPort || process == Ia.Ngn.Cl.Model.Business.Msmq.Process.DeleteReadServiceAccess)
121: {
122: Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, process, service, accessName, port, overrideRouterDomainRestriction, userId);
123:
124: result.AddSuccess("Task Enqueued (تم إرسال المهمة).");
125: }
126: else
127: {
128: throw new ArgumentOutOfRangeException("MSMQ process " + process + " is undefined");
129: }
130: }
131: else result.AddError("You are not authorized to execute tasks (لست مخولاً بتنفيذ وظائف).");
132: }
133:
134: ////////////////////////////////////////////////////////////////////////////
135:
136: /// <summary>
137: ///
138: /// </summary>
139: public static void ServiceAccessPortTask(Ia.Ngn.Cl.Model.Business.Msmq.Process process, string service, string accessName, int port, bool overrideRouterDomainRestriction, Ia.Ngn.Cl.Model.Staff staff, out Ia.Cl.Model.Result result)
140: {
141: Guid userId;
142:
143: result = new Ia.Cl.Model.Result();
144:
145: if (staff == null || Ia.Ngn.Cl.Model.Business.Authority.StaffCanExecuteTasks(staff))
146: {
147: userId = (staff != null) ? staff.UserId : Guid.Empty;
148:
149: if (process == Ia.Ngn.Cl.Model.Business.Msmq.Process.CreateReadServiceAccessPort || process == Ia.Ngn.Cl.Model.Business.Msmq.Process.DeleteReadServiceAccess)
150: {
151: Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, process, service, accessName, port, overrideRouterDomainRestriction, userId);
152:
153: result.AddSuccess("Task Enqueued (تم إرسال المهمة).");
154: }
155: else
156: {
157: throw new ArgumentOutOfRangeException("MSMQ process " + process + " is undefined");
158: }
159: }
160: else result.AddError("You are not authorized to execute tasks (لست مخولاً بتنفيذ وظائف).");
161: }
162:
163: ////////////////////////////////////////////////////////////////////////////
164:
165: /// <summary>
166: ///
167: /// </summary>
168: public static void ServiceAccessPortTask(Ia.Ngn.Cl.Model.Business.Msmq.Process process, string service, string accessName, int port, Ia.Ngn.Cl.Model.Staff staff, out Ia.Cl.Model.Result result)
169: {
170: result = new Ia.Cl.Model.Result();
171:
172: if (staff == null || Ia.Ngn.Cl.Model.Business.Authority.StaffCanExecuteTasks(staff))
173: {
174: if (process == Ia.Ngn.Cl.Model.Business.Msmq.Process.CreateReadNceOrAmsServiceAccessPort || process == Ia.Ngn.Cl.Model.Business.Msmq.Process.DeleteReadNceOrAmsServiceAccessPort)
175: {
176: Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, process, service, accessName, port);
177:
178: result.AddSuccess("Task Enqueued (تم إرسال المهمة).");
179: }
180: else
181: {
182: throw new ArgumentOutOfRangeException("MSMQ process " + process.ToString() + " is undefined");
183: }
184: }
185: else result.AddError("You are not authorized to execute tasks (لست مخولاً بتنفيذ وظائف).");
186: }
187:
188: ////////////////////////////////////////////////////////////////////////////
189:
190: /// <summary>
191: ///
192: /// </summary>
193: public static void ServiceMsanTask(Ia.Ngn.Cl.Model.Business.Msmq.Process process, string msanDevId, int cabinet, int frame, int fn, int sn, int pn, string service, Ia.Ngn.Cl.Model.Staff staff, out Ia.Cl.Model.Result result)
194: {
195: result = new Ia.Cl.Model.Result();
196:
197: if (Ia.Ngn.Cl.Model.Business.Authority.StaffCanExecuteTasks(staff))
198: {
199: if (process == Ia.Ngn.Cl.Model.Business.Msmq.Process.CreateReadNceMsanServiceMsanCabinetFrameFnSnPn)
200: {
201: Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, process, msanDevId, fn, sn, pn, service);
202:
203: result.AddSuccess("Task Enqueued (تم إرسال المهمة).");
204: }
205: else
206: {
207: throw new ArgumentOutOfRangeException("MSMQ process " + process + " is undefined");
208: }
209: }
210: else result.AddError("You are not authorized to execute tasks (لست مخولاً بتنفيذ وظائف).");
211: }
212:
213: ////////////////////////////////////////////////////////////////////////////
214:
215: /// <summary>
216: ///
217: /// </summary>
218: public static void ServiceMsanTask(Ia.Ngn.Cl.Model.Business.Msmq.Process process, string service, Ia.Ngn.Cl.Model.Staff staff, out Ia.Cl.Model.Result result)
219: {
220: result = new Ia.Cl.Model.Result();
221:
222: if (Ia.Ngn.Cl.Model.Business.Authority.StaffCanExecuteTasks(staff))
223: {
224: if (process == Ia.Ngn.Cl.Model.Business.Msmq.Process.DeleteReadNceMsanService)
225: {
226: Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, process, service);
227:
228: result.AddSuccess("Task Enqueued (تم إرسال المهمة).");
229: }
230: else
231: {
232: throw new ArgumentOutOfRangeException("MSMQ process " + process.ToString() + " is undefined");
233: }
234: }
235: else result.AddError("You are not authorized to execute tasks (لست مخولاً بتنفيذ وظائف).");
236: }
237:
238: ////////////////////////////////////////////////////////////////////////////
239:
240: /// <summary>
241: ///
242: /// </summary>
243: public static void SupplementaryServiceTask(Ia.Ngn.Cl.Model.Business.Msmq.Process process, string service, string supplementaryServiceItemValue, bool supplementaryServiceState, Ia.Ngn.Cl.Model.Staff staff, out Ia.Cl.Model.Result result)
244: {
245: Guid userId;
246:
247: result = new Ia.Cl.Model.Result();
248:
249: if (staff == null || Ia.Ngn.Cl.Model.Business.Authority.StaffCanExecuteTasks(staff))
250: {
251: userId = (staff != null) ? staff.UserId : Guid.Empty;
252:
253: result = new Ia.Cl.Model.Result();
254:
255: var supplementaryService = (Ia.Ngn.Cl.Model.Business.Service.SupplementaryService)Enum.Parse(typeof(Ia.Ngn.Cl.Model.Business.Service.SupplementaryService), supplementaryServiceItemValue);
256:
257: if (Ia.Ngn.Cl.Model.Business.Service.ServiceHasEightDigitsAndIsWithinAllowedDomainList(service))
258: {
259: if (process == Ia.Ngn.Cl.Model.Business.Msmq.Process.UpdateReadServiceSupplementaryService)
260: {
261: Ia.Ngn.Cl.Model.Data.Msmq.SecretaryApplication.Enqueue(Ia.Ngn.Cl.Model.Business.Msmq.Application.OfnApplication, process, service, supplementaryService, supplementaryServiceState, userId);
262:
263: result.AddSuccess("Task Enqueued (تم إرسال المهمة).");
264: }
265: else
266: {
267: throw new ArgumentOutOfRangeException("MSMQ process " + process.ToString() + " is undefined");
268: }
269: }
270: else result.AddError("Input format is unknown (قيمة غير مفهومة).");
271: }
272: else result.AddError("You are not authorized to execute tasks (لست مخولاً بتنفيذ وظائف).");
273: }
274:
275: ////////////////////////////////////////////////////////////////////////////
276: ////////////////////////////////////////////////////////////////////////////
277: }
278:
279: ////////////////////////////////////////////////////////////////////////////
280: ////////////////////////////////////////////////////////////////////////////
281: }