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

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

Nokia's Siemens EWSD support class of Fixed Telecommunications Network (FTN) data model.

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