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

Integrated Applications Programming Company

Skip Navigation LinksHome » Code Library » Ams

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

Access Management System (AMS) support class for Nokia data model.

   1:  using System.Collections.Generic;
   2:  using System.Data;
   3:  using System.Linq;
   4:   
   5:  namespace Ia.Ngn.Cl.Model.Data.Nokia
   6:  {
   7:      ////////////////////////////////////////////////////////////////////////////
   8:   
   9:      /// <summary publish="true">
  10:      /// Access Management System (AMS) support class for Nokia data model.
  11:      /// </summary>
  12:      /// 
  13:      /// <remarks> 
  14:      /// Copyright © 2006-2020 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
  15:      ///
  16:      /// 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
  17:      /// the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
  18:      ///
  19:      /// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
  20:      /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
  21:      /// 
  22:      /// You should have received a copy of the GNU General Public License along with this library. If not, see http://www.gnu.org/licenses.
  23:      /// 
  24:      /// Copyright notice: This notice may not be removed or altered from any source distribution.
  25:      /// </remarks> 
  26:      public class Ams
  27:      {
  28:          private static Dictionary<string, string> correlationTagDictionary = new Dictionary<string, string>(1000);
  29:   
  30:          public static Dictionary<string, string> CorrelationTagDictionary { get { return correlationTagDictionary; } set { correlationTagDictionary = value; } }
  31:   
  32:          ////////////////////////////////////////////////////////////////////////////
  33:   
  34:          /// <summary>
  35:          ///
  36:          /// </summary>
  37:          public Ams() { }
  38:   
  39:          ////////////////////////////////////////////////////////////////////////////
  40:   
  41:          /// <summary>
  42:          ///
  43:          /// </summary>
  44:          public static string BellcoreStateFromId(int stateId)
  45:          {
  46:              // see: ColoredBellcoreStateFromId()            
  47:              string s;
  48:              Ia.Ngn.Cl.Model.Business.Nokia.Ams.BellcoreState bellcoreState;
  49:   
  50:              bellcoreState = (Ia.Ngn.Cl.Model.Business.Nokia.Ams.BellcoreState)stateId;
  51:   
  52:              /*
  53:               * IS-NR: (In-Service and Normal) The entity is fully operational and will perform as provisioned.
  54:               * OOS-AU: (Out-of-Service and Autonomous) The entity is not operational because of an autonomous event.
  55:               * OOS-AUMA: (Out-of-Service and Autonomous Management) The entity is not operational because of an autonomous event and has also been manually removed from service.
  56:               * OOS-MA: (Out-of-Service and Management) The entity has been manually removed from service.
  57:               */
  58:   
  59:              switch (bellcoreState)
  60:              {
  61:                  case Ia.Ngn.Cl.Model.Business.Nokia.Ams.BellcoreState.IsNr: s = "IS-NR"; break;
  62:                  case Ia.Ngn.Cl.Model.Business.Nokia.Ams.BellcoreState.OosAu: s = "OOS-AU"; break;
  63:                  case Ia.Ngn.Cl.Model.Business.Nokia.Ams.BellcoreState.OosAuma: s = "OOS-AUMA"; break;
  64:                  case Ia.Ngn.Cl.Model.Business.Nokia.Ams.BellcoreState.OosMa: s = "OOS-MA"; break;
  65:                  case Ia.Ngn.Cl.Model.Business.Nokia.Ams.BellcoreState.Undefined: s = "Unknown"; break;
  66:                  default: s = "Unknown"; break;
  67:              }
  68:   
  69:              return s;
  70:          }
  71:   
  72:          ////////////////////////////////////////////////////////////////////////////
  73:   
  74:          /// <summary>
  75:          ///
  76:          /// </summary>
  77:          public static string ColoredBellcoreStateFromId(int stateId)
  78:          {
  79:              // see: BellcoreStateFromId()
  80:              string s;
  81:              Ia.Ngn.Cl.Model.Business.Nokia.Ams.BellcoreState bellcoreState;
  82:   
  83:              bellcoreState = (Ia.Ngn.Cl.Model.Business.Nokia.Ams.BellcoreState)stateId;
  84:   
  85:              switch (bellcoreState)
  86:              {
  87:                  case Ia.Ngn.Cl.Model.Business.Nokia.Ams.BellcoreState.IsNr: s = "<span style=\"color:Green\">IS-NR</span>"; break;
  88:                  case Ia.Ngn.Cl.Model.Business.Nokia.Ams.BellcoreState.OosAu: s = "<span style=\"color:Red\">OOS-AU</span>"; break;
  89:                  case Ia.Ngn.Cl.Model.Business.Nokia.Ams.BellcoreState.OosAuma: s = "<span style=\"color:Red\">OOS-AUMA</span>"; break;
  90:                  case Ia.Ngn.Cl.Model.Business.Nokia.Ams.BellcoreState.OosMa: s = "<span style=\"color:Red\">OOS-MA</span>"; break;
  91:                  case Ia.Ngn.Cl.Model.Business.Nokia.Ams.BellcoreState.Undefined: s = "<span style=\"color:Red\">Unknown</span>"; break;
  92:                  default: s = "Unknown"; break;
  93:              }
  94:   
  95:              return s;
  96:          }
  97:   
  98:          ////////////////////////////////////////////////////////////////////////////
  99:   
 100:          /// <summary>
 101:          ///
 102:          /// </summary>
 103:          public static string PlannedSoftware
 104:          {
 105:              get
 106:              {
 107:                  return "3FE50853AFXA35";
 108:              }
 109:          }
 110:   
 111:          ////////////////////////////////////////////////////////////////////////////
 112:   
 113:          /// <summary>
 114:          ///
 115:          /// </summary>
 116:          public static int NextVacantFlatTermIdForOnt(int familyTypeId, Ia.Ngn.Cl.Model.Ont ont)
 117:          {
 118:              int ft, gwId;
 119:              List<int> list;
 120:   
 121:              if (ont.OntServiceVoips != null && ont.OntServiceVoips.Count > 0)
 122:              {
 123:                  gwId = Ia.Ngn.Cl.Model.Data.Nokia.AgcfGatewayRecord.GwIdFromIp(ont.OntServiceVoips.First().Ip);
 124:   
 125:                  list = Ia.Ngn.Cl.Model.Data.Nokia.AgcfEndpoint.UsedFlatTermIdListForGatewayId(gwId);
 126:   
 127:                  if (list.Count == 0) ft = 1; // this means agcfEndpoint does not exist for any number and the box is empty, and we should create agcfEndpoint at 1
 128:                  else
 129:                  {
 130:                      list = Ia.Cl.Model.Default.ExcludedNumberListFromNumberListWithinRange(list, Ia.Ngn.Cl.Model.Business.Nokia.Ont.PossibleNumberOfTdForOntFamilyType((Ia.Ngn.Cl.Model.Business.Nokia.Ont.FamilyType)familyTypeId));
 131:   
 132:                      if (list.Count > 0) ft = list[0];
 133:                      else ft = Ia.Ngn.Cl.Model.Business.Default.PortUndefinedOrInvalidOrUnknown; // something went wrong
 134:                  }
 135:              }
 136:              else ft = Ia.Ngn.Cl.Model.Business.Default.PortUndefinedOrInvalidOrUnknown; // something went wrong
 137:   
 138:              return ft;
 139:          }
 140:   
 141:          ////////////////////////////////////////////////////////////////////////////
 142:   
 143:          /// <summary>
 144:          ///
 145:          /// </summary>
 146:          public static List<int> VacantFlatTermIdForOntList(int familyTypeId, Ia.Ngn.Cl.Model.Ont ont)
 147:          {
 148:              int gwId;
 149:              List<int> vacantList, usedList;
 150:   
 151:              if (ont.OntServiceVoips != null && ont.OntServiceVoips.Count > 0)
 152:              {
 153:                  gwId = Ia.Ngn.Cl.Model.Data.Nokia.AgcfGatewayRecord.GwIdFromIp(ont.OntServiceVoips.First().Ip);
 154:   
 155:                  usedList = Ia.Ngn.Cl.Model.Data.Nokia.AgcfEndpoint.UsedFlatTermIdListForGatewayId(gwId);
 156:   
 157:                  vacantList = Ia.Cl.Model.Default.ExcludedNumberListFromNumberListWithinRange(usedList, Ia.Ngn.Cl.Model.Business.Nokia.Ont.PossibleNumberOfTdForOntFamilyType((Ia.Ngn.Cl.Model.Business.Nokia.Ont.FamilyType)familyTypeId));
 158:              }
 159:              else
 160:              {
 161:                  vacantList = new List<int>();
 162:              }
 163:   
 164:              return vacantList;
 165:          }
 166:   
 167:          ////////////////////////////////////////////////////////////////////////////
 168:   
 169:          /// <summary>
 170:          ///
 171:          /// </summary>
 172:          public static Ia.Ngn.Cl.Model.Ont OntFromGwId(int gwId)
 173:          {
 174:              string ip;
 175:              Ia.Ngn.Cl.Model.Ont ont;
 176:   
 177:              using (var db = new Ia.Ngn.Cl.Model.Ngn())
 178:              {
 179:                  ip = Ia.Ngn.Cl.Model.Data.Nokia.AgcfGatewayRecord.IpFromGatewayId(gwId);
 180:   
 181:                  ont = (from o in db.Onts where o.OntServiceVoips.First().Ip == ip select o).SingleOrDefault();
 182:              }
 183:   
 184:              return ont;
 185:          }
 186:   
 187:          ////////////////////////////////////////////////////////////////////////////
 188:   
 189:          /// <summary>
 190:          ///
 191:          /// </summary>
 192:          public static List<Ia.Ngn.Cl.Model.Business.Nokia.OntOntPotsService> OntOntPotsCustomerNoEqualToSubPartyDisplayNameServiceList()
 193:          {
 194:              List<Ia.Ngn.Cl.Model.Business.Nokia.OntOntPotsService> list;
 195:   
 196:              using (var db = new Ia.Ngn.Cl.Model.Ngn())
 197:              {
 198:                  list = (from sp in db.SubParties
 199:                          join e in db.AgcfEndpoints on sp.AgcfEndpoint.Id equals e.Id
 200:                          join gr in db.AgcfGatewayRecords on e.GwId equals gr.GwId
 201:                          join osv in db.OntServiceVoips on gr.IP1 equals osv.Ip
 202:                          join o in db.Onts on osv.Ont.Id equals o.Id
 203:                          join oop in db.OntOntPots on o.Id equals oop.Ont.Id
 204:                          where oop.Customer != sp.DisplayName && oop.Termination == "td" + e.FlatTermID.ToString()
 205:                          select new Ia.Ngn.Cl.Model.Business.Nokia.OntOntPotsService
 206:                          {
 207:                              Service = sp.DisplayName,
 208:                              Termination = oop.Termination,
 209:                              OntId = o.Id,
 210:                              OntFamilyTypeId = o.FamilyTypeId
 211:                          }).ToList();
 212:              }
 213:   
 214:              return list;
 215:          }
 216:   
 217:          ////////////////////////////////////////////////////////////////////////////
 218:   
 219:          /// <summary>
 220:          ///
 221:          /// </summary>
 222:          public static List<Ia.Ngn.Cl.Model.Business.Nokia.OntOntPotsService> OntOntPotsCustomerExistsButSubPartyIsNullServiceList()
 223:          {
 224:              List<Ia.Ngn.Cl.Model.Business.Nokia.OntOntPotsService> list;
 225:   
 226:              using (var db = new Ia.Ngn.Cl.Model.Ngn())
 227:              {
 228:                  list = (from oop in db.OntOntPots
 229:                          join o in db.Onts on oop.Ont.Id equals o.Id
 230:                          join osv in db.OntServiceVoips on o.Id equals osv.Ont.Id
 231:                          join gr in db.AgcfGatewayRecords on osv.Ip equals gr.IP1
 232:                          join e in db.AgcfEndpoints on gr.GwId equals e.GwId
 233:                          join sp in db.SubParties on e.Id equals sp.AgcfEndpoint.Id into sp2
 234:                          from sp in sp2.DefaultIfEmpty()
 235:                          where sp == null //  oop.Customer != sp.DisplayName && oop.Termination == "td" + e.FlatTermID.ToString()
 236:                          select new Ia.Ngn.Cl.Model.Business.Nokia.OntOntPotsService
 237:                          {
 238:                              Service = oop.Customer,
 239:                              Termination = oop.Termination,
 240:                              OntId = o.Id,
 241:                              OntFamilyTypeId = o.FamilyTypeId
 242:                          }).ToList();
 243:              }
 244:   
 245:              return list;
 246:          }
 247:   
 248:          ////////////////////////////////////////////////////////////////////////////
 249:          ////////////////////////////////////////////////////////////////////////////
 250:      }
 251:   
 252:      ////////////////////////////////////////////////////////////////////////////
 253:      ////////////////////////////////////////////////////////////////////////////
 254:  }