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

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

Fixed Telecommunications Network's Operations Support System Management Intranet (FTN OSS) support class for Nokia's Fixed Telecommunications Network (FTN) data model.

    1: using Microsoft.EntityFrameworkCore.Internal;
    2: using SimpleImpersonation;
    3: using System;
    4: using System.Collections.Generic;
    5: using System.Configuration;
    6: using System.IO;
    7: using System.Linq;
    8: using System.Text;
    9: using System.Text.Json;
   10: using static Ia.Cl.Models.Db.Temp;
   11: using static Ia.Ftn.Cl.Models.Business.NetworkDesignDocument;
   12: using static Ia.Ftn.Cl.Models.Business.Nokia.Sdc;
   13: using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
   14:  
   15: namespace Ia.Ftn.Cl.Models.Data.Nokia
   16: {
   17:     ////////////////////////////////////////////////////////////////////////////
   18:  
   19:     /// <summary publish="true">
   20:     /// Fixed Telecommunications Network's Operations Support System Management Intranet (FTN OSS) support class for Nokia's Fixed Telecommunications Network (FTN) data model.
   21:     /// </summary>
   22:     /// 
   23:     /// <remarks> 
   24:     /// Copyright © 2018-2022 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   25:     /// </remarks> 
   26:     public class Sdc
   27:     {
   28:         private static Dictionary<string, List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue>> ponNameToTransactionTimestampValueListDictionary, ponNameToTransactionTimestampValueHourlyListDictionary;
   29:  
   30:         private static readonly object objectLock = new object();
   31:  
   32:         //public static readonly string SdcArchiveFilePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\SdcPonNameToTimestampValueListDictionary " + DateTime.UtcNow.AddHours(3).ToString("yyyy-MM") + ".json";
   33:         public static readonly string SdcArchiveFilePath = @"\\" + ArchiveServerHostIp + @"\Users\Public\Documents\Archive\SdcPonNameToTransactionTimestampValueListDictionary ";
   34:  
   35:         /// <summary/>
   36:         public static string ArchiveServerHostIp { get { return Ia.Cl.Models.ApplicationConfiguration.GetSetting("AppSettings:ArchiveServerHostIp"); } }
   37:  
   38:         /// <summary/>
   39:         public static string ArchiveServerDomain { get { return "dummydomain"; } }
   40:  
   41:         /// <summary/>
   42:         public static string ArchiveServerUserName { get { return Ia.Cl.Models.ApplicationConfiguration.GetSetting("AppSettings:ArchiveServerUserName"); } }
   43:  
   44:         /// <summary/>
   45:         public static string ArchiveServerPassword { get { return Ia.Cl.Models.ApplicationConfiguration.GetSetting("AppSettings:ArchiveServerPassword"); } }
   46:  
   47:         ////////////////////////////////////////////////////////////////////////////
   48:  
   49:         /// <summary>
   50:         ///
   51:         /// </summary>
   52:         public Sdc() { }
   53:  
   54:         ////////////////////////////////////////////////////////////////////////////
   55:  
   56:         /// <summary>
   57:         ///
   58:         /// </summary>
   59:         public static List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue> ReadTransactionTimestampHourlyValueListOfPon(Ia.Ftn.Cl.Models.Business.Nokia.Sdc.Transaction transaction, Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Pon pon)
   60:         {
   61:             var transactionTimestampValueList0 = Ia.Ftn.Cl.Models.Data.Nokia.Sdc.TransactionTimestampValueHourlyListByPonName(pon.Name);
   62:  
   63:             var transactionTimestampValueList = Ia.Ftn.Cl.Models.Business.Nokia.Sdc.AdjustTransactionTimestampHourlyValueList(transaction, transactionTimestampValueList0);
   64:  
   65:             return transactionTimestampValueList;
   66:         }
   67:  
   68:         ////////////////////////////////////////////////////////////////////////////
   69:  
   70:         /// <summary>
   71:         ///
   72:         /// </summary>
   73:         public static List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue> TransactionTimestampValueListByPonName(string ponName)
   74:         {
   75:             List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue> list;
   76:  
   77:             var d = Ia.Ftn.Cl.Models.Data.Nokia.Sdc.PonNameToTransactionTimestampValueListDictionary();
   78:  
   79:             if (d.ContainsKey(ponName)) list = d[ponName];
   80:             else list = new List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue>();
   81:  
   82:             return list;
   83:         }
   84:  
   85:         ////////////////////////////////////////////////////////////////////////////
   86:  
   87:         /// <summary>
   88:         ///
   89:         /// </summary>
   90:         public static Dictionary<string, List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue>> PonNameToTransactionTimestampValueListDictionary()
   91:         {
   92:             return Ia.Ftn.Cl.Models.Data.Nokia.Sdc.PonNameToTransactionTimestampValueListDictionary(false);
   93:         }
   94:  
   95:         ////////////////////////////////////////////////////////////////////////////
   96:  
   97:         /// <summary>
   98:         ///
   99:         /// </summary>
  100:         public static Dictionary<string, List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue>> PonNameToTransactionTimestampValueListDictionary(bool resetContent)
  101:         {
  102:             if (ponNameToTransactionTimestampValueListDictionary == null || ponNameToTransactionTimestampValueListDictionary.Count == 0 || resetContent)
  103:             {
  104:                 lock (objectLock)
  105:                 {
  106:                     ponNameToTransactionTimestampValueListDictionary = Ia.Ftn.Cl.Models.Data.Nokia.Sdc._PonNameToTransactionTimestampValueListDictionaryFromArchiveServer();
  107:                 }
  108:             }
  109:  
  110:             return ponNameToTransactionTimestampValueListDictionary;
  111:         }
  112:  
  113:         ////////////////////////////////////////////////////////////////////////////
  114:  
  115:         /// <summary>
  116:         ///
  117:         /// </summary>
  118:         private static Dictionary<string, List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue>> _PonNameToTransactionTimestampValueListDictionaryFromArchiveServer()
  119:         {
  120:             try
  121:             {
  122:                 var userCredentials = new UserCredentials(Ia.Ftn.Cl.Models.Data.Nokia.Sdc.ArchiveServerDomain,
  123:                     Ia.Ftn.Cl.Models.Data.Nokia.Sdc.ArchiveServerUserName,
  124:                     Ia.Ftn.Cl.Models.Data.Nokia.Sdc.ArchiveServerPassword);
  125:  
  126:                 Impersonation.RunAsUser(userCredentials, LogonType.NewCredentials, () =>
  127:                 {
  128:                     var zipBytes = File.ReadAllBytes(SdcArchiveFilePath + DateTime.UtcNow.AddHours(3).ToString("yyyy-MM") + ".zip.bytes");
  129:  
  130:                     string json = Ia.Cl.Models.Zip.UnzipString(zipBytes);
  131:  
  132:                     ponNameToTransactionTimestampValueListDictionary = JsonSerializer.Deserialize<Dictionary<string, List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue>>>(json);
  133:                 });
  134:             }
  135:             catch (Exception e)
  136:             {
  137:             }
  138:  
  139:             // default value
  140:             if (ponNameToTransactionTimestampValueListDictionary == null)
  141:             {
  142:                 ponNameToTransactionTimestampValueListDictionary = new Dictionary<string, List<Business.Nokia.Sdc.TransactionTimestampValue>>();
  143:             }
  144:  
  145:             return ponNameToTransactionTimestampValueListDictionary;
  146:         }
  147:  
  148:         ////////////////////////////////////////////////////////////////////////////
  149:  
  150:         /// <summary>
  151:         ///
  152:         /// </summary>
  153:         public static void SaveTransactionTimestampValueListOfPon(Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Pon pon, Ia.Ftn.Cl.Models.Business.Nokia.Sdc.Transaction transaction, DateTime timestampDateTime, List<long> valueList)
  154:         {
  155:             var ponNameToTransactionTimestampValueListDictionary = Ia.Ftn.Cl.Models.Data.Nokia.Sdc.PonNameToTransactionTimestampValueListDictionary();
  156:  
  157:             // debug
  158:             /*
  159:             if (ponNameToTimestampValueListDictionary == null || ponNameToTimestampValueListDictionary.Count == 0)
  160:             {
  161:                 ponNameToTimestampValueListDictionary = new Dictionary<string, List<Business.Nokia.Sdc.TimestampValue>>();
  162:             }
  163:             */
  164:  
  165:             if (ponNameToTransactionTimestampValueListDictionary.ContainsKey(pon.Name))
  166:             {
  167:                 if (ponNameToTransactionTimestampValueListDictionary[pon.Name] == null)
  168:                 {
  169:                     ponNameToTransactionTimestampValueListDictionary[pon.Name] = new List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue>();
  170:                 }
  171:             }
  172:             else ponNameToTransactionTimestampValueListDictionary[pon.Name] = new List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue>();
  173:  
  174:             var transactiontimestampValueList = ponNameToTransactionTimestampValueListDictionary[pon.Name];
  175:  
  176:             int i = 1;
  177:  
  178:             foreach (var v in valueList)
  179:             {
  180:                 if (!transactiontimestampValueList.Any(u => u.Transaction == transaction && u.Timestamp.DayOfYear == timestampDateTime.DayOfYear && u.Timestamp.Hour == timestampDateTime.Hour && u.Value == v))
  181:                 {
  182:                     var transactionTimestampValue = new TransactionTimestampValue(transaction, timestampDateTime.AddMinutes(-i * 5), v);
  183:  
  184:                     ponNameToTransactionTimestampValueListDictionary[pon.Name].Add(transactionTimestampValue);
  185:                 }
  186:                 else
  187:                 {
  188:                 }
  189:  
  190:                 i++;
  191:             }
  192:         }
  193:  
  194:         ////////////////////////////////////////////////////////////////////////////
  195:  
  196:         /// <summary>
  197:         ///
  198:         /// </summary>
  199:         public static void WritePonNameToTransactionTimestampValueHourlyListDictionaryToJsonFile()
  200:         {
  201:             var now = DateTime.UtcNow.AddHours(3);
  202:  
  203:             var startOfThisMonth = new DateTime(now.Year, now.Month, 1, 0, 0, 0);
  204:  
  205:             var filteredPonNameToTransactionTimestampValueHourlyListDictionary = new Dictionary<string, List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue>>();
  206:  
  207:             var ponNameToTransactionTimestampValueHourlyListDictionary = Ia.Ftn.Cl.Models.Data.Nokia.Sdc.PonNameToTransactionTimestampValueHourlyListDictionary(true);
  208:             //var ponNameToTransactionTimestampValueListDictionary = Ia.Ftn.Cl.Model.Data.Nokia.Sdc.PonNameToTransactionTimestampValueListDictionary();
  209:  
  210:             if (ponNameToTransactionTimestampValueHourlyListDictionary != null)
  211:             {
  212:                 foreach (var ponName in ponNameToTransactionTimestampValueHourlyListDictionary.Keys)
  213:                 {
  214:                     var transactionTimestampValueList = ponNameToTransactionTimestampValueHourlyListDictionary[ponName];
  215:  
  216:                     foreach (var transactionTimestampValue in transactionTimestampValueList)
  217:                     {
  218:                         if (transactionTimestampValue.Timestamp >= startOfThisMonth)
  219:                         {
  220:                             if (!filteredPonNameToTransactionTimestampValueHourlyListDictionary.ContainsKey(ponName))
  221:                             {
  222:                                 filteredPonNameToTransactionTimestampValueHourlyListDictionary[ponName] = new List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue>();
  223:                             }
  224:  
  225:                             filteredPonNameToTransactionTimestampValueHourlyListDictionary[ponName].Add(transactionTimestampValue);
  226:                         }
  227:                     }
  228:                 }
  229:  
  230:                 var json = JsonSerializer.Serialize(filteredPonNameToTransactionTimestampValueHourlyListDictionary);
  231:  
  232:                 byte[] zipBytes = Ia.Cl.Models.Zip.ZipString(json);
  233:  
  234:                 File.WriteAllBytes(SdcArchiveFilePath + DateTime.UtcNow.AddHours(3).ToString("yyyy-MM") + ".zip.bytes", zipBytes);
  235:             }
  236:             else
  237:             {
  238:             }
  239:         }
  240:  
  241:         ////////////////////////////////////////////////////////////////////////////
  242:  
  243:         /// <summary>
  244:         ///
  245:         /// </summary>
  246:         public static Dictionary<string, List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue>> PonNameToTransactionTimestampValueHourlyListDictionary()
  247:         {
  248:             return Ia.Ftn.Cl.Models.Data.Nokia.Sdc.PonNameToTransactionTimestampValueHourlyListDictionary(false);
  249:         }
  250:  
  251:         ////////////////////////////////////////////////////////////////////////////
  252:  
  253:         /// <summary>
  254:         ///
  255:         /// </summary>
  256:         public static Dictionary<string, List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue>> PonNameToTransactionTimestampValueHourlyListDictionary(bool recalculateContent)
  257:         {
  258:             if (ponNameToTransactionTimestampValueHourlyListDictionary == null || ponNameToTransactionTimestampValueHourlyListDictionary.Count == 0 || recalculateContent)
  259:             {
  260:                 lock (objectLock)
  261:                 {
  262:                     ponNameToTransactionTimestampValueHourlyListDictionary = Ia.Ftn.Cl.Models.Data.Nokia.Sdc._PonNameToTransactionTimestampValueHourlyListDictionary();
  263:                 }
  264:             }
  265:  
  266:             return ponNameToTransactionTimestampValueHourlyListDictionary;
  267:         }
  268:  
  269:         ////////////////////////////////////////////////////////////////////////////
  270:  
  271:         /// <summary>
  272:         ///
  273:         /// </summary>
  274:         private static Dictionary<string, List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue>> _PonNameToTransactionTimestampValueHourlyListDictionary()
  275:         {
  276:             string key;
  277:             DateTime dateTime;
  278:  
  279:             var ponNameToTransactionTimestampValueListDictionary = Ia.Ftn.Cl.Models.Data.Nokia.Sdc.PonNameToTransactionTimestampValueListDictionary();
  280:  
  281:             var dictionary = new Dictionary<string, List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue>>();
  282:  
  283:             foreach (var ponName in ponNameToTransactionTimestampValueListDictionary.Keys)
  284:             {
  285:                 var transactionTimestampToTransactionTimestampValueDictionary = new Dictionary<string, Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue>();
  286:  
  287:                 var list = ponNameToTransactionTimestampValueListDictionary[ponName];
  288:  
  289:                 foreach (var l in list)
  290:                 {
  291:                     dateTime = new DateTime(l.Timestamp.Year, l.Timestamp.Month, l.Timestamp.Day, l.Timestamp.Hour, 0, 0);
  292:  
  293:                     key = l.Transaction + ":" + dateTime;
  294:  
  295:                     if (!transactionTimestampToTransactionTimestampValueDictionary.ContainsKey(key)) transactionTimestampToTransactionTimestampValueDictionary[key] = new Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue(l.Transaction, dateTime, 0);
  296:  
  297:                     if (transactionTimestampToTransactionTimestampValueDictionary.ContainsKey(key)) transactionTimestampToTransactionTimestampValueDictionary[key].Value += l.Value;
  298:                     else
  299:                     {
  300:                         transactionTimestampToTransactionTimestampValueDictionary[key] = new Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue(l.Transaction, dateTime, l.Value);
  301:                     }
  302:                 }
  303:  
  304:                 dictionary[ponName] = transactionTimestampToTransactionTimestampValueDictionary.Values.OrderBy(u => u.Timestamp).ToList();
  305:             }
  306:  
  307:             return dictionary;
  308:         }
  309:  
  310:         ////////////////////////////////////////////////////////////////////////////
  311:  
  312:         /// <summary>
  313:         ///
  314:         /// </summary>
  315:         public static List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue> TransactionTimestampValueHourlyListByPonName(string ponName)
  316:         {
  317:             string key;
  318:             DateTime dateTime;
  319:  
  320:             var transactionTimestampValueList = Ia.Ftn.Cl.Models.Data.Nokia.Sdc.TransactionTimestampValueListByPonName(ponName);
  321:  
  322:             var dictionary = new Dictionary<string, List<Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue>>();
  323:  
  324:             var transactionTimestampToTransactionTimestampValueDictionary = new Dictionary<string, Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue>();
  325:  
  326:             foreach (var l in transactionTimestampValueList)
  327:             {
  328:                 dateTime = new DateTime(l.Timestamp.Year, l.Timestamp.Month, l.Timestamp.Day, l.Timestamp.Hour, 0, 0);
  329:  
  330:                 key = l.Transaction + ":" + dateTime;
  331:  
  332:                 if (!transactionTimestampToTransactionTimestampValueDictionary.ContainsKey(key)) transactionTimestampToTransactionTimestampValueDictionary[key] = new Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue(l.Transaction, dateTime, 0);
  333:  
  334:                 if (transactionTimestampToTransactionTimestampValueDictionary.ContainsKey(key)) transactionTimestampToTransactionTimestampValueDictionary[key].Value += l.Value;
  335:                 else
  336:                 {
  337:                     transactionTimestampToTransactionTimestampValueDictionary[key] = new Ia.Ftn.Cl.Models.Business.Nokia.Sdc.TransactionTimestampValue(l.Transaction, dateTime, l.Value);
  338:                 }
  339:             }
  340:  
  341:             var list = transactionTimestampToTransactionTimestampValueDictionary.Values.OrderBy(u => u.Timestamp).ToList();
  342:  
  343:             return list;
  344:         }
  345:  
  346:         ////////////////////////////////////////////////////////////////////////////
  347:         ////////////////////////////////////////////////////////////////////////////
  348:     }
  349:  
  350:     ////////////////////////////////////////////////////////////////////////////
  351:     ////////////////////////////////////////////////////////////////////////////   
  352: }