)>}]
شركة التطبيقات المتكاملة لتصميم وبرمجة البرمجيات الخاصة ش.ش.و.
Integrated Applications Programming Company
Home » Code Library » Axe (Ia.Ftn.Cl.Models.Data.Ericsson)

Public general use code classes and xml files that we've compiled and used over the years:

Ericsson AXE support class of Fixed Telecommunications Network (FTN) data model.

    1: using System;
    2: using System.Data;
    3: using System.Linq;
    4:  
    5: namespace Ia.Ftn.Cl.Models.Data.Ericsson
    6: {
    7:     ////////////////////////////////////////////////////////////////////////////
    8:  
    9:     /// <summary publish="true">
   10:     /// Ericsson AXE support class of Fixed Telecommunications Network (FTN) data model.
   11:     /// </summary>
   12:     /// 
   13:     /// <remarks> 
   14:     /// Copyright © 2017-2020 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   15:     /// </remarks> 
   16:     public class Axe
   17:     {
   18:         ////////////////////////////////////////////////////////////////////////////
   19:  
   20:         /// <summary>
   21:         ///
   22:         /// </summary>
   23:         public Axe() { }
   24:  
   25:         ////////////////////////////////////////////////////////////////////////////
   26:  
   27:         /// <summary>
   28:         ///
   29:         /// </summary>
   30:         public static bool UpdateDatabaseWithAxeCommandOutput(string content, ref Ia.Ftn.Cl.Models.Client.Ericsson.Axe axe, out Ia.Cl.Models.Result result)
   31:         {
   32:             bool b;
   33:             Ia.Ftn.Cl.Models.Business.Ericsson.Axe.Response response;
   34:  
   35:             b = false;
   36:             result = new Ia.Cl.Models.Result();
   37:  
   38:             if (content.StartsWith("WO   ")) b = true; // WO      MSF KW64/CN-G2/ACG210   NVT-929   TIME 200103 2115  PAGE    1
   39:             else
   40:             {
   41:                 response = Ia.Ftn.Cl.Models.Data.Ericsson.Axe.ParseResponse(content);
   42:  
   43:                 if (response != null)
   44:                 {
   45:                     if (response.ReturnCode == Ia.Ftn.Cl.Models.Client.Ericsson.Axe.ResultCode.Successful)
   46:                     {
   47:                         if (!string.IsNullOrEmpty(response.CommandString))
   48:                         {
   49:                             if (response.CommandString.StartsWith("SUSCP:"))
   50:                             {
   51:                                 Ia.Ftn.Cl.Models.Data.Ericsson.Axe.UpdateSubscriberAndServiceFromAxeResponse(response, out result);
   52:  
   53:                                 b = result.IsSuccessful;
   54:                             }
   55:                             else if (response.CommandString.StartsWith("SUSCC:"))
   56:                             {
   57:                                 result.AddSuccess(response.DateTime.ToString("yyyy-MM-dd hh:mm:ss"));
   58:                             }
   59:                             else if (response.CommandString.StartsWith("SULIE:"))
   60:                             {
   61:                                 result.AddSuccess(response.DateTime.ToString("yyyy-MM-dd hh:mm:ss"));
   62:                             }
   63:                             else
   64:                             {
   65:                                 result.AddError("No designated opcode to process");
   66:  
   67:                                 b = false;
   68:                             }
   69:                         }
   70:                         else
   71:                         {
   72:                             result.AddSuccess(response.ReturnCode.ToString());
   73:                         }
   74:                     }
   75:                     else
   76:                     {
   77:                         result.AddError(response.ReturnCode.ToString());
   78:  
   79:                         b = false;
   80:                     }
   81:                 }
   82:                 else
   83:                 {
   84:                     result.AddError("Response is null");
   85:  
   86:                     b = false;
   87:                 }
   88:             }
   89:  
   90:             return b;
   91:         }
   92:  
   93:         ////////////////////////////////////////////////////////////////////////////
   94:  
   95:         /// <summary>
   96:         ///
   97:         /// </summary>
   98:         private static void UpdateSubscriberAndServiceFromAxeResponse(Ia.Ftn.Cl.Models.Business.Ericsson.Axe.Response response, out Ia.Cl.Models.Result result)
   99:         {
  100:             result = new Ia.Cl.Models.Result();
  101:  
  102:             Ia.Ftn.Cl.Models.Data.Ericsson.Subscriber.Update(response, out Ia.Cl.Models.Result subscriberResult);
  103:  
  104:             Ia.Ftn.Cl.Models.Data.Ericsson.Axe.UpdateService(response, out Ia.Cl.Models.Result serviceResult);
  105:  
  106:             result.AddSuccess("Subscriber: " + subscriberResult.Message + "Service: " + serviceResult.Message);
  107:         }
  108:  
  109:         ////////////////////////////////////////////////////////////////////////////
  110:  
  111:         /// <summary>
  112:         ///
  113:         /// </summary>
  114:         private static bool UpdateService(Ia.Ftn.Cl.Models.Business.Ericsson.Axe.Response response, out Ia.Cl.Models.Result result)
  115:         {
  116:             bool wasUpdated;
  117:             int /*querySnb,*/ readItemCount, existingItemCount, insertedItemCount, updatedItemCount, deletedItemCount;
  118:             int serviceType;
  119:             string serviceId, service;
  120:             Ia.Ftn.Cl.Models.Service2 service2, newService;
  121:  
  122:             wasUpdated = false;
  123:             readItemCount = existingItemCount = insertedItemCount = updatedItemCount = deletedItemCount = 0;
  124:             result = new Ia.Cl.Models.Result();
  125:  
  126:             service = response.Service.ToString();
  127:  
  128:             serviceType = Ia.Ftn.Cl.Models.Business.Service.ServiceType.PstnService;
  129:             serviceId = Ia.Ftn.Cl.Models.Business.Service2.ServiceId(service, serviceType);
  130:  
  131:             readItemCount = 1; // response.Count;
  132:  
  133:             using (var db = new Ia.Ftn.Cl.Db())
  134:             {
  135:                 if (response.IsProvisioned)
  136:                 {
  137:                     newService = new Ia.Ftn.Cl.Models.Service2();
  138:  
  139:                     newService.Id = serviceId;
  140:                     newService.AreaCode = Ia.Ftn.Cl.Models.Business.Service.CountryCode;
  141:                     newService.Service = service;
  142:                     newService.ServiceType = serviceType;
  143:  
  144:                     newService.CallerId = response.ServiceSupplementaryService.SupplementaryServiceList.Contains(Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.CallerId);
  145:                     newService.AbbriviatedCalling = response.ServiceSupplementaryService.SupplementaryServiceList.Contains(Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.AbbriviatedCalling);
  146:                     newService.CallForwarding = response.ServiceSupplementaryService.SupplementaryServiceList.Contains(Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.CallForwarding);
  147:                     newService.CallWaiting = response.ServiceSupplementaryService.SupplementaryServiceList.Contains(Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.CallWaiting);
  148:                     newService.ConferenceCall = response.ServiceSupplementaryService.SupplementaryServiceList.Contains(Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.ConferenceCall);
  149:                     newService.InternationalCalling = response.ServiceSupplementaryService.SupplementaryServiceList.Contains(Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.InternationalCalling);
  150:                     newService.InternationalCallingUserControlled = response.ServiceSupplementaryService.SupplementaryServiceList.Contains(Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.InternationalCallingUserControlled);
  151:  
  152:                     newService.AlarmCall = response.ServiceSupplementaryService.SupplementaryServiceList.Contains(Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.WakeupCall);
  153:                     newService.WakeupCall = response.ServiceSupplementaryService.SupplementaryServiceList.Contains(Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.WakeupCall);
  154:  
  155:                     newService.ServiceSuspension = response.ServiceSupplementaryService.SupplementaryServiceList.Contains(Ia.Ftn.Cl.Models.Business.Service.SupplementaryService.ServiceSuspension);
  156:                     //newService.CallBarring = subParty.ServiceSuspension;
  157:  
  158:                     newService.Pin = int.TryParse(response.ServiceSupplementaryService.Pin, out int i) ? i : 0;
  159:  
  160:                     //if (nddOnt != null) newService.Access = (from a in db.Accesses where a.Id == nddOnt.Access.Id select a).SingleOrDefault();
  161:                     //else
  162:                     newService.Access = null;
  163:  
  164:                     service2 = (from s in db.Service2
  165:                                 where s.ServiceType == Ia.Ftn.Cl.Models.Business.Service.ServiceType.PstnService && s.Id == newService.Id
  166:                                 select s).SingleOrDefault();
  167:  
  168:                     existingItemCount = (service2 != null) ? 1 : 0;
  169:  
  170:                     if (service2 == null)
  171:                     {
  172:                         newService.Created = newService.Updated = DateTime.UtcNow.AddHours(3);
  173:                         db.Service2.Add(newService);
  174:  
  175:                         insertedItemCount++;
  176:                     }
  177:                     else
  178:                     {
  179:                         if (service2.Update(newService))
  180:                         {
  181:                             db.Service2.Attach(service2);
  182:                             db.Entry(service2).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
  183:  
  184:                             updatedItemCount++;
  185:                         }
  186:                     }
  187:                 }
  188:                 else
  189:                 {
  190:                     service2 = (from s in db.Service2
  191:                                 where s.ServiceType == Ia.Ftn.Cl.Models.Business.Service.ServiceType.PstnService && s.Id == serviceId
  192:                                 select s).SingleOrDefault();
  193:  
  194:                     if (service2 != null)
  195:                     {
  196:                         db.Service2.Remove(service2);
  197:  
  198:                         deletedItemCount++;
  199:                     }
  200:                 }
  201:  
  202:                 db.SaveChanges();
  203:             }
  204:  
  205:             if (insertedItemCount != 0 || updatedItemCount != 0 || deletedItemCount != 0) wasUpdated = true;
  206:             else wasUpdated = false;
  207:  
  208:             result.AddSuccess("(" + readItemCount + "/" + existingItemCount + "/" + insertedItemCount + "," + updatedItemCount + "," + deletedItemCount + ")");
  209:  
  210:             return wasUpdated;
  211:         }
  212:  
  213:         ////////////////////////////////////////////////////////////////////////////
  214:  
  215:         /// <summary>
  216:         /// Parse response of Ericsson AXE
  217:         /// </summary>
  218:         public static Ia.Ftn.Cl.Models.Business.Ericsson.Axe.Response ParseResponse(string content)
  219:         {
  220:             Ia.Ftn.Cl.Models.Business.Ericsson.Axe.Response response;
  221:  
  222:             response = new Ia.Ftn.Cl.Models.Business.Ericsson.Axe.Response(content);
  223:  
  224:             return response;
  225:         }
  226:  
  227:         ////////////////////////////////////////////////////////////////////////////
  228:         ////////////////////////////////////////////////////////////////////////////
  229:     }
  230:  
  231:     ////////////////////////////////////////////////////////////////////////////
  232:     ////////////////////////////////////////////////////////////////////////////    
  233: }
  234: