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

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

EWSD Subscriber support class for Fixed Telecommunications Network (FTN) data model.

    1: using Microsoft.EntityFrameworkCore;
    2: using System;
    3: using System.Collections.Generic;
    4: using System.Data;
    5: using System.Linq;
    6: using System.Text;
    7:  
    8: namespace Ia.Ftn.Cl.Models.Data.Siemens
    9: {
   10:     ////////////////////////////////////////////////////////////////////////////
   11:  
   12:     /// <summary publish="true">
   13:     /// EWSD Subscriber support class for Fixed Telecommunications Network (FTN) data model.
   14:     /// </summary>
   15:     /// 
   16:     /// <remarks> 
   17:     /// Copyright © 2018-2020 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   18:     /// </remarks> 
   19:     public class Subscriber
   20:     {
   21:         /// <summary/>
   22:         public Subscriber() { }
   23:  
   24:         ////////////////////////////////////////////////////////////////////////////
   25:  
   26:         /// <summary>
   27:         ///
   28:         /// </summary>
   29:         public static bool Update(Ia.Ftn.Cl.Models.Business.Siemens.Ewsd.Response response, out Ia.Cl.Models.Result result)
   30:         {
   31:             bool isUpdated;
   32:             int queryDn, readItemCount, existingItemCount, insertedItemCount, updatedItemCount, deletedItemCount;
   33:             string id, queryDnString, queryCommand;
   34:             Ia.Ftn.Cl.Models.Siemens.EwsdSubscriber subscriber, newSubscriber;
   35:  
   36:             isUpdated = false;
   37:             readItemCount = existingItemCount = insertedItemCount = updatedItemCount = deletedItemCount = 0;
   38:             result = new Ia.Cl.Models.Result();
   39:  
   40:             queryCommand = response.CommandString;
   41:  
   42:             // DISPSUB:DN=25421113;
   43:             queryDnString = Ia.Cl.Models.Default.Match(queryCommand, @"DN=(\d{8})");
   44:  
   45:             queryDn = int.Parse(queryDnString);
   46:  
   47:             readItemCount = 1; // response.Count;
   48:  
   49:             using (var db = new Ia.Ftn.Cl.Db())
   50:             {
   51:                 id = Ia.Ftn.Cl.Models.Business.Siemens.Subscriber.SubscriberId(queryDn);
   52:  
   53:                 subscriber = (from es in db.EwsdSubscribers where es.Id == id select es).SingleOrDefault();
   54:                 //subscriber = (from es in db.EwsdSubscribers where es.DN == queryDn select es).SingleOrDefault(); very slow.
   55:  
   56:                 existingItemCount = (subscriber != null) ? 1 : 0;
   57:  
   58:                 if (response.IsSuccess) //.Count >= 1)
   59:                 {
   60:                     newSubscriber = new Ia.Ftn.Cl.Models.Siemens.EwsdSubscriber()
   61:                     {
   62:                         Id = id,
   63:                         DN = response.Dn,
   64:                         LAC = response.Lac,
   65:                         EQN = response.Eqn,
   66:                         CAT = response.Cat,
   67:                         LTT = response.Ltt,
   68:                         OPTRCL = response.Optrcl,
   69:                         SUBTRCL = response.Subtrcl,
   70:                         NUMCAL = response.Numcal,
   71:                         ORIG1 = response.Orig1,
   72:                         TRARSTR = response.Trarstr,
   73:                         LNATT = response.Lnatt,
   74:                         DIV = response.Div,
   75:                         COS = response.Cos,
   76:                         ADDINF = response.Addinf,
   77:                         NUMBCH = response.Numbch,
   78:                         CTDIVI = response.Ctdivi,
   79:                         BLK = response.Blk,
   80:                         Content = string.Empty// response.Content
   81:                     };
   82:  
   83:                     if (subscriber == null)
   84:                     {
   85:                         newSubscriber.Created = newSubscriber.Updated = DateTime.UtcNow.AddHours(3);
   86:  
   87:                         db.EwsdSubscribers.Add(newSubscriber);
   88:  
   89:                         insertedItemCount++;
   90:                     }
   91:                     else
   92:                     {
   93:                         if (subscriber.Update(newSubscriber))
   94:                         {
   95:                             db.EwsdSubscribers.Attach(subscriber);
   96:                             db.Entry(subscriber).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
   97:  
   98:                             updatedItemCount++;
   99:                         }
  100:                     }
  101:                 }
  102:                 else
  103:                 {
  104:                     // below: remove since reading was empty
  105:  
  106:                     if (subscriber != null)
  107:                     {
  108:                         subscriber = (from es in db.EwsdSubscribers where es.Id == id select es).SingleOrDefault();
  109:                         //subscriber = (from es in db.EwsdSubscribers where es.DN == queryDn select es).SingleOrDefault(); very slow.
  110:  
  111:                         db.EwsdSubscribers.Remove(subscriber);
  112:  
  113:                         deletedItemCount++;
  114:                     }
  115:                 }
  116:  
  117:                 db.SaveChanges();
  118:             }
  119:  
  120:             if (insertedItemCount != 0 || updatedItemCount != 0 || deletedItemCount != 0) isUpdated = true;
  121:             else isUpdated = false;
  122:  
  123:             result.AddSuccess("(" + readItemCount + "/" + existingItemCount + "/" + insertedItemCount + "," + updatedItemCount + "," + deletedItemCount + ")");
  124:  
  125:             return isUpdated;
  126:         }
  127:  
  128:         ////////////////////////////////////////////////////////////////////////////
  129:  
  130:         /// <summary>
  131:         ///
  132:         /// </summary>
  133:         public static List<Ia.Ftn.Cl.Models.Siemens.EwsdSubscriber> List()
  134:         {
  135:             List<Ia.Ftn.Cl.Models.Siemens.EwsdSubscriber> list;
  136:  
  137:             using (var db = new Ia.Ftn.Cl.Db())
  138:             {
  139:                 list = (from es in db.EwsdSubscribers select es).ToList();
  140:             }
  141:  
  142:             return list;
  143:         }
  144:  
  145:         ////////////////////////////////////////////////////////////////////////////
  146:  
  147:         /// <summary>
  148:         ///
  149:         /// </summary>
  150:         public static List<int> DnList()
  151:         {
  152:             List<int> list;
  153:  
  154:             using (var db = new Ia.Ftn.Cl.Db())
  155:             {
  156:                 list = (from es in db.EwsdSubscribers select es.DN).ToList();
  157:             }
  158:  
  159:             return list;
  160:         }
  161:  
  162:         ////////////////////////////////////////////////////////////////////////////
  163:  
  164:         /// <summary>
  165:         ///
  166:         /// </summary>
  167:         public static List<int> ProvisionedDnList()
  168:         {
  169:             List<int> list;
  170:  
  171:             using (var db = new Ia.Ftn.Cl.Db())
  172:             {
  173:                 list = (from es in db.EwsdSubscribers where es.LAC != null && es.EQN != null select es.DN).ToList();
  174:             }
  175:  
  176:             return list;
  177:         }
  178:  
  179:         ////////////////////////////////////////////////////////////////////////////
  180:  
  181:         /// <summary>
  182:         ///
  183:         /// </summary>
  184:         public static List<string> ProvisionedServiceList()
  185:         {
  186:             List<string> list;
  187:  
  188:             using (var db = new Ia.Ftn.Cl.Db())
  189:             {
  190:                 list = (from es in db.EwsdSubscribers
  191:                         where es.LAC != null && es.EQN != null
  192:                         select es.DN.ToString()).AsNoTracking().ToList();
  193:             }
  194:  
  195:             return list;
  196:         }
  197:  
  198:         ////////////////////////////////////////////////////////////////////////////
  199:  
  200:         /// <summary>
  201:         /// 
  202:         /// </summary>
  203:         public static List<Ia.Ftn.Cl.Models.Siemens.EwsdSubscriber> List(List<string> serviceList)
  204:         {
  205:             List<Ia.Ftn.Cl.Models.Siemens.EwsdSubscriber> list;
  206:  
  207:             if (serviceList.Count > 0)
  208:             {
  209:                 var dnList = serviceList.ConvertAll(int.Parse);
  210:                 var idList = new List<string>();
  211:  
  212:                 foreach (var dn in dnList)
  213:                 {
  214:                     idList.Add(Ia.Ftn.Cl.Models.Business.Siemens.Subscriber.SubscriberId(dn));
  215:                 }
  216:  
  217:                 using (var db = new Ia.Ftn.Cl.Db())
  218:                 {
  219:                     list = (from es in db.EwsdSubscribers
  220:                             where idList.Contains(es.Id)
  221:                             select es).ToList();
  222:                 }
  223:             }
  224:             else list = new List<Ia.Ftn.Cl.Models.Siemens.EwsdSubscriber>();
  225:  
  226:             return list;
  227:         }
  228:  
  229:         ////////////////////////////////////////////////////////////////////////////
  230:  
  231:         /// <summary>
  232:         ///
  233:         /// </summary>
  234:         public static List<Ia.Ftn.Cl.Models.Ui.Siemens.Subscriber> ListWithoutContent()
  235:         {
  236:             List<Ia.Ftn.Cl.Models.Ui.Siemens.Subscriber> list;
  237:  
  238:             using (var db = new Ia.Ftn.Cl.Db())
  239:             {
  240:                 list = (from es in db.EwsdSubscribers
  241:                         select new Ia.Ftn.Cl.Models.Ui.Siemens.Subscriber()
  242:                         {
  243:                             DN = es.DN,
  244:                             LAC = es.LAC,
  245:                             EQN = es.EQN,
  246:                             CAT = es.CAT,
  247:                             LTT = es.LTT,
  248:                             OPTRCL = es.OPTRCL,
  249:                             SUBTRCL = es.SUBTRCL,
  250:                             NUMCAL = es.NUMCAL,
  251:                             ORIG1 = es.ORIG1,
  252:                             TRARSTR = es.TRARSTR,
  253:                             LNATT = es.LNATT,
  254:                             DIV = es.DIV,
  255:                             COS = es.COS,
  256:                             ADDINF = es.ADDINF,
  257:                             NUMBCH = es.NUMBCH,
  258:                             CTDIVI = es.CTDIVI,
  259:                             BLK = es.BLK
  260:                         }).ToList();
  261:  
  262:                 return list;
  263:             }
  264:         }
  265:  
  266:         ////////////////////////////////////////////////////////////////////////////
  267:  
  268:         /// <summary>
  269:         ///
  270:         /// </summary>
  271:         public static List<Ia.Ftn.Cl.Models.Siemens.EwsdSubscriber> InServicePstnServiceList()
  272:         {
  273:             List<Ia.Ftn.Cl.Models.Siemens.EwsdSubscriber> list;
  274:  
  275:             // select * from EwsdSubscribers a inner join Service2 s on a.DN = s.Service where s.ServiceType = 2
  276:  
  277:             var serviceType = Ia.Ftn.Cl.Models.Business.Service.ServiceType.PstnService;
  278:  
  279:             using (var db = new Ia.Ftn.Cl.Db())
  280:             {
  281:                 list = (from es in db.EwsdSubscribers
  282:                         join s in db.Service2 on es.DN.ToString() equals s.Service
  283:                         where s.ServiceType == serviceType
  284:                         select es).ToList();
  285:             }
  286:  
  287:             return list;
  288:         }
  289:  
  290:         ////////////////////////////////////////////////////////////////////////////
  291:  
  292:         /// <summary>
  293:         ///
  294:         /// </summary>
  295:         public static List<string> InServiceImsServiceList()
  296:         {
  297:             List<string> list;
  298:  
  299:             // select DN from EwsdSubscribers a inner join Service2 s on a.DN = s.Service where s.ServiceType = 1
  300:  
  301:             var serviceType = Ia.Ftn.Cl.Models.Business.Service.ServiceType.ImsService;
  302:  
  303:             using (var db = new Ia.Ftn.Cl.Db())
  304:             {
  305:                 list = (from es in db.EwsdSubscribers
  306:                         join s in db.Service2 on es.DN.ToString() equals s.Service
  307:                         where s.ServiceType == serviceType
  308:                         select es.DN.ToString()).ToList();
  309:             }
  310:  
  311:             return list;
  312:         }
  313:  
  314:         ////////////////////////////////////////////////////////////////////////////
  315:  
  316:         /// <summary>
  317:         ///
  318:         /// </summary>
  319:         public static List<string> ServiceNotWithinEwsdPstnDomainList()
  320:         {
  321:             var list = new List<string>();
  322:  
  323:             var ewsdPstnDomainList = Ia.Ftn.Cl.Models.Data.Service.EwsdPstnDomainList;
  324:  
  325:             var dnList = Ia.Ftn.Cl.Models.Data.Siemens.Subscriber.DnList();
  326:  
  327:             var serviceList = dnList.ConvertAll(delegate (int i) { return i.ToString(); });
  328:  
  329:             foreach (var s in serviceList)
  330:             {
  331:                 if (!ewsdPstnDomainList.Any(u => s.StartsWith(u.ToString()))) list.Add(s);
  332:             }
  333:  
  334:             list.Sort();
  335:  
  336:             return list;
  337:         }
  338:  
  339:         ////////////////////////////////////////////////////////////////////////////
  340:  
  341:         /// <summary>
  342:         ///
  343:         /// </summary>
  344:         public static List<string> DnWhereBlkIsNotEmptyList()
  345:         {
  346:             List<string> list;
  347:  
  348:             // select * from EwsdSubscribers where BLK <> ''
  349:  
  350:             using (var db = new Ia.Ftn.Cl.Db())
  351:             {
  352:                 list = (from es in db.EwsdSubscribers
  353:                         where es.BLK != null && es.BLK != ""
  354:                         select es.DN.ToString()).ToList();
  355:             }
  356:  
  357:             return list;
  358:         }
  359:  
  360:         ////////////////////////////////////////////////////////////////////////////
  361:         ////////////////////////////////////////////////////////////////////////////
  362:  
  363:         /// <summary>
  364:         ///
  365:         /// </summary>
  366:         public static string ToSimpleTextString(Ia.Ftn.Cl.Models.Siemens.EwsdSubscriber subscriber)
  367:         {
  368:             StringBuilder sb;
  369:  
  370:             sb = new StringBuilder();
  371:  
  372:             sb.AppendLine("DN: " + subscriber.DN);
  373:             sb.AppendLine("LAC: " + subscriber.LAC);
  374:             sb.AppendLine("EQN: " + subscriber.EQN);
  375:             sb.AppendLine("CAT: " + subscriber.CAT);
  376:             sb.AppendLine("LTT: " + subscriber.LTT);
  377:             sb.AppendLine("OPTRCL: " + subscriber.OPTRCL);
  378:             sb.AppendLine("SUBTRCL: " + subscriber.SUBTRCL);
  379:             sb.AppendLine("NUMCAL: " + subscriber.NUMCAL);
  380:             sb.AppendLine("ORIG1: " + subscriber.ORIG1);
  381:             sb.AppendLine("TRARSTR: " + subscriber.TRARSTR);
  382:             sb.AppendLine("LNATT: " + subscriber.LNATT);
  383:             sb.AppendLine("DIV: " + subscriber.DIV);
  384:             sb.AppendLine("COS: " + subscriber.COS);
  385:             sb.AppendLine("ADDINF: " + subscriber.ADDINF);
  386:             sb.AppendLine("NUMBCH: " + subscriber.NUMBCH);
  387:             sb.AppendLine("CTDIVI: " + subscriber.CTDIVI);
  388:             sb.AppendLine("BLK: " + subscriber.BLK);
  389:             //sb.AppendLine("Content: " + subscriber.Content);
  390:  
  391:             return sb.ToString();
  392:         }
  393:  
  394:         ////////////////////////////////////////////////////////////////////////////
  395:         ////////////////////////////////////////////////////////////////////////////
  396:     }
  397:  
  398:     ////////////////////////////////////////////////////////////////////////////
  399:     ////////////////////////////////////////////////////////////////////////////
  400: }