شركة التطبيقات المتكاملة لتصميم النظم البرمجية الخاصة ش.ش.و.

Integrated Applications Programming Company

Skip Navigation LinksHome » Code Library » SubParty

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

SubParty support class for Nokia's Optical Fiber Network (OFN) data model.

   1:  using Microsoft.EntityFrameworkCore;
   2:  using System;
   3:  using System.Collections.Generic;
   4:  using System.Linq;
   5:   
   6:  namespace Ia.Ngn.Cl.Model.Data.Nokia
   7:  {
   8:      ////////////////////////////////////////////////////////////////////////////
   9:   
  10:      /// <summary publish="true">
  11:      /// SubParty support class for Nokia's Optical Fiber Network (OFN) data model.
  12:      /// </summary>
  13:      /// 
  14:      /// <remarks> 
  15:      /// Copyright � 2014-2017 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 SubParty
  28:      {
  29:          public SubParty() { }
  30:   
  31:          ////////////////////////////////////////////////////////////////////////////
  32:   
  33:          /// <summary>
  34:          ///
  35:          /// </summary>
  36:          public static bool Create(Ia.Ngn.Cl.Model.Nokia.SubParty subParty, out string result)
  37:          {
  38:              bool b;
  39:   
  40:              b = false;
  41:              result = string.Empty;
  42:   
  43:              using (var db = new Ia.Ngn.Cl.Model.Ngn())
  44:              {
  45:                  subParty.Created = subParty.Updated = DateTime.UtcNow.AddHours(3);
  46:   
  47:                  db.SubParties.Add(subParty);
  48:                  db.SaveChanges();
  49:   
  50:                  b = true;
  51:              }
  52:   
  53:              return b;
  54:          }
  55:   
  56:          ////////////////////////////////////////////////////////////////////////////
  57:   
  58:          /// <summary>
  59:          ///
  60:          /// </summary>
  61:          public static Ia.Ngn.Cl.Model.Nokia.SubParty Read(string id)
  62:          {
  63:              Ia.Ngn.Cl.Model.Nokia.SubParty subParty;
  64:   
  65:              using (var db = new Ia.Ngn.Cl.Model.Ngn())
  66:              {
  67:                  subParty = (from sp in db.SubParties 
  68:                              where sp.Id == id 
  69:                              select sp).AsNoTracking().SingleOrDefault();
  70:              }
  71:   
  72:              return subParty;
  73:          }
  74:   
  75:          ////////////////////////////////////////////////////////////////////////////
  76:   
  77:          /// <summary>
  78:          ///
  79:          /// </summary>
  80:          public static List<Ia.Ngn.Cl.Model.Nokia.SubParty> ReadList()
  81:          {
  82:              List<Ia.Ngn.Cl.Model.Nokia.SubParty> subPartyList;
  83:   
  84:              using (var db = new Ia.Ngn.Cl.Model.Ngn())
  85:              {
  86:                  subPartyList = (from sp in db.SubParties select sp).ToList();
  87:              }
  88:   
  89:              return subPartyList;
  90:          }
  91:   
  92:          ////////////////////////////////////////////////////////////////////////////
  93:   
  94:          /// <summary>
  95:          ///
  96:          /// </summary>
  97:          public static bool Update(Ia.Ngn.Cl.Model.Nokia.SubParty subParty, out string result)
  98:          {
  99:              bool b;
 100:   
 101:              b = false;
 102:              result = string.Empty;
 103:   
 104:              using (var db = new Ia.Ngn.Cl.Model.Ngn())
 105:              {
 106:                  subParty = (from sp in db.SubParties where sp.Id == subParty.Id select sp).SingleOrDefault();
 107:   
 108:                  subParty.Updated = DateTime.UtcNow.AddHours(3);
 109:   
 110:                  db.SubParties.Attach(subParty);
 111:   
 112:                  db.Entry(subParty).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
 113:                  db.SaveChanges();
 114:   
 115:                  b = true;
 116:              }
 117:   
 118:              return b;
 119:          }
 120:   
 121:          ////////////////////////////////////////////////////////////////////////////
 122:   
 123:          /// <summary>
 124:          ///
 125:          /// </summary>
 126:          public static bool Delete(string id, out string result)
 127:          {
 128:              bool b;
 129:   
 130:              b = false;
 131:              result = string.Empty;
 132:   
 133:              using (var db = new Ia.Ngn.Cl.Model.Ngn())
 134:              {
 135:                  var v = (from sp in db.SubParties where sp.Id == id select sp).FirstOrDefault();
 136:   
 137:                  db.SubParties.Remove(v);
 138:                  db.SaveChanges();
 139:   
 140:                  b = true;
 141:              }
 142:   
 143:              return b;
 144:          }
 145:   
 146:          ////////////////////////////////////////////////////////////////////////////
 147:   
 148:          /// <summary>
 149:          /// Read list of service PBX numbers that have Category == "SERVICEBUNDLE2"
 150:          /// </summary>
 151:          public static List<string> ServicePbxList()
 152:          {
 153:              List<string> l1, l2;
 154:   
 155:              l1 = l2 = null;
 156:   
 157:              using (var db = new Ia.Ngn.Cl.Model.Ngn())
 158:              {
 159:                  l1 = (from sp in db.SubParties 
 160:                        where sp.Category == "SERVICEBUNDLE2" 
 161:                        select sp.PartyId).AsNoTracking().ToList();
 162:   
 163:                  if (l1.Count > 0)
 164:                  {
 165:                      l2 = new List<string>(l1.Count);
 166:   
 167:                      foreach (string s in l1) l2.Add(Ia.Ngn.Cl.Model.Business.NumberFormatConverter.Service(s));
 168:                  }
 169:              }
 170:   
 171:              return l2;
 172:          }
 173:   
 174:          ////////////////////////////////////////////////////////////////////////////
 175:   
 176:          /// <summary>
 177:          /// Read list of service Id PBX numbers that have Category == "SERVICEBUNDLE2"
 178:          /// </summary>
 179:          public static List<string> ServiceIdPbxList()
 180:          {
 181:              int serviceType;
 182:              string service, serviceId;
 183:              List<string> l1, l2;
 184:   
 185:              serviceType = Ia.Ngn.Cl.Model.Business.Service.ServiceType.ImsService;
 186:              l1 = l2 = null;
 187:   
 188:              using (var db = new Ia.Ngn.Cl.Model.Ngn())
 189:              {
 190:                  l1 = (from sp in db.SubParties where sp.Category == "SERVICEBUNDLE2" select sp.PartyId).ToList();
 191:   
 192:                  if (l1.Count > 0)
 193:                  {
 194:                      l2 = new List<string>(l1.Count);
 195:   
 196:                      foreach (string u in l1)
 197:                      {
 198:                          service = Ia.Ngn.Cl.Model.Business.NumberFormatConverter.Service(u);
 199:   
 200:                          serviceId = Ia.Ngn.Cl.Model.Business.Service2.ServiceId(service, serviceType);
 201:   
 202:                          l2.Add(serviceId);
 203:                      }
 204:                  }
 205:              }
 206:   
 207:              return l2;
 208:          }
 209:   
 210:          ////////////////////////////////////////////////////////////////////////////
 211:   
 212:          /// <summary>
 213:          /// select PrimaryPUIDCPEProfileNumber, count(0) as Count from SubParties group by PrimaryPUIDCPEProfileNumber
 214:          /// </summary>
 215:          public static Dictionary<int, int> PrimaryPuidCpeProfileNumberCountDistributionDictionary
 216:          {
 217:              get
 218:              {
 219:                  Dictionary<int, int> dictionary;
 220:   
 221:                  using (var db = new Ia.Ngn.Cl.Model.Ngn())
 222:                  {
 223:                      var v = (from sp in db.SubParties 
 224:                               group sp by sp.PrimaryPUIDCPEProfileNumber into g 
 225:                               select new { PrimaryPuidCpeProfileNumber = g.Key, Count = g.Count() }).AsNoTracking();
 226:   
 227:                      dictionary = v.ToDictionary(u => u.PrimaryPuidCpeProfileNumber, u => u.Count);
 228:                  }
 229:   
 230:                  return dictionary;
 231:              }
 232:          }
 233:   
 234:          ////////////////////////////////////////////////////////////////////////////
 235:   
 236:          /// <summary>
 237:          /// SIP numbers with AssocOtasRealm from SubParties
 238:          /// </summary>
 239:          public static Dictionary<string, string> SipNumberWithAssocOtasRealmList
 240:          {
 241:              get
 242:              {
 243:                  Dictionary<string, string> dictionary;
 244:   
 245:                  using (var db = new Ia.Ngn.Cl.Model.Ngn())
 246:                  {
 247:                      var v = (from sp in db.SubParties where sp.PrimaryPUIDCPEProfileNumber == Ia.Ngn.Cl.Model.Business.Nokia.Ims.PrimaryPUIDCPEProfileNumberForSip select new { sp.DisplayName, sp.AssocOtasRealm });
 248:   
 249:                      dictionary = v.ToDictionary(u => u.DisplayName, u => u.AssocOtasRealm);
 250:                  }
 251:   
 252:                  return dictionary;
 253:              }
 254:          }
 255:   
 256:          ////////////////////////////////////////////////////////////////////////////
 257:          ////////////////////////////////////////////////////////////////////////////
 258:      }
 259:   
 260:      ////////////////////////////////////////////////////////////////////////////
 261:      ////////////////////////////////////////////////////////////////////////////
 262:  }