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

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

Huawei's Ont support class of Fixed Telecommunications Network (FTN) data model.

    1: using Microsoft.EntityFrameworkCore;
    2: using System;
    3: using System.Collections;
    4: using System.Collections.Generic;
    5: using System.Data;
    6: using System.Linq;
    7: using System.Text;
    8:  
    9: namespace Ia.Ftn.Cl.Models.Data.Huawei
   10: {
   11:     ////////////////////////////////////////////////////////////////////////////
   12:  
   13:     /// <summary publish="true">
   14:     /// Huawei's Ont support class of Fixed Telecommunications Network (FTN) data model.
   15:     /// </summary>
   16:     /// 
   17:     /// <remarks> 
   18:     /// Copyright © 2016-2021 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   19:     /// </remarks> 
   20:     public class Ont
   21:     {
   22:         /// <summary/>
   23:         public Ont() { }
   24:  
   25:         ////////////////////////////////////////////////////////////////////////////
   26:  
   27:         /// <summary>
   28:         ///
   29:         /// </summary>
   30:         public static List<Ia.Ftn.Cl.Models.Huawei.EmsOnt> List()
   31:         {
   32:             List<Ia.Ftn.Cl.Models.Huawei.EmsOnt> list;
   33:  
   34:             using (var db = new Ia.Ftn.Cl.Db())
   35:             {
   36:                 list = (from o in db.EmsOnts select o).ToList();
   37:             }
   38:  
   39:             return list;
   40:         }
   41:  
   42:         ////////////////////////////////////////////////////////////////////////////
   43:  
   44:         /// <summary>
   45:         ///
   46:         /// </summary>
   47:         public static List<Ia.Ftn.Cl.Models.Huawei.EmsOnt> ListWithNullAccess()
   48:         {
   49:             List<Ia.Ftn.Cl.Models.Huawei.EmsOnt> list;
   50:  
   51:             using (var db = new Ia.Ftn.Cl.Db())
   52:             {
   53:                 list = (from o in db.EmsOnts where o.Access == null select o).ToList();
   54:             }
   55:  
   56:             return list;
   57:         }
   58:  
   59:         ////////////////////////////////////////////////////////////////////////////
   60:  
   61:         /// <summary>
   62:         ///
   63:         /// </summary>
   64:         public static List<Ia.Ftn.Cl.Models.Huawei.EmsOnt> ListIncludeAccess()
   65:         {
   66:             List<Ia.Ftn.Cl.Models.Huawei.EmsOnt> list;
   67:  
   68:             using (var db = new Ia.Ftn.Cl.Db())
   69:             {
   70:                 list = (from o in db.EmsOnts select o).Include(u => u.Access).AsNoTracking().ToList();
   71:             }
   72:  
   73:             return list;
   74:         }
   75:  
   76:         ////////////////////////////////////////////////////////////////////////////
   77:  
   78:         /// <summary>
   79:         ///
   80:         /// </summary>
   81:         public static List<string> IdList()
   82:         {
   83:             List<string> list;
   84:  
   85:             using (var db = new Ia.Ftn.Cl.Db())
   86:             {
   87:                 list = (from o in db.EmsOnts select o.Id).ToList();
   88:             }
   89:  
   90:             return list;
   91:         }
   92:  
   93:         ////////////////////////////////////////////////////////////////////////////
   94:  
   95:         /// <summary>
   96:         ///
   97:         /// </summary>
   98:         public static List<Ia.Ftn.Cl.Models.Huawei.EmsOnt> ListByDidFnSnPn(int did, int fn, int sn, int pn)
   99:         {
  100:             List<Ia.Ftn.Cl.Models.Huawei.EmsOnt> list;
  101:  
  102:             using (var db = new Ia.Ftn.Cl.Db())
  103:             {
  104:                 list = (from o in db.EmsOnts
  105:                         where o.DID == did && o.FN == fn && o.SN == sn && o.PN == pn
  106:                         select o).ToList();
  107:             }
  108:  
  109:             return list;
  110:         }
  111:  
  112:         ////////////////////////////////////////////////////////////////////////////
  113:  
  114:         /// <summary>
  115:         ///
  116:         /// </summary>
  117:         public static List<Ia.Ftn.Cl.Models.Huawei.EmsOnt> ListByDid(int did)
  118:         {
  119:             List<Ia.Ftn.Cl.Models.Huawei.EmsOnt> list;
  120:  
  121:             using (var db = new Ia.Ftn.Cl.Db())
  122:             {
  123:                 list = (from o in db.EmsOnts where o.DID == did select o).Include(u => u.Access).ToList();
  124:             }
  125:  
  126:             return list;
  127:         }
  128:  
  129:         ////////////////////////////////////////////////////////////////////////////
  130:  
  131:         /// <summary>
  132:         ///
  133:         /// </summary>
  134:         public static Ia.Ftn.Cl.Models.Huawei.EmsOnt ReadByDidFnSnPnOntId(int did, int fn, int sn, int pn, int ontId)
  135:         {
  136:             Ia.Ftn.Cl.Models.Huawei.EmsOnt item;
  137:  
  138:             using (var db = new Ia.Ftn.Cl.Db())
  139:             {
  140:                 item = (from o in db.EmsOnts
  141:                         where o.DID == did && o.FN == fn && o.SN == sn && o.PN == pn && o.ONTID == ontId
  142:                         select o).SingleOrDefault();
  143:             }
  144:  
  145:             return item;
  146:         }
  147:  
  148:         ////////////////////////////////////////////////////////////////////////////
  149:  
  150:         /// <summary>
  151:         ///
  152:         /// </summary>
  153:         public static Ia.Ftn.Cl.Models.Huawei.EmsOnt Read(string id)
  154:         {
  155:             Ia.Ftn.Cl.Models.Huawei.EmsOnt item;
  156:  
  157:             using (var db = new Ia.Ftn.Cl.Db())
  158:             {
  159:                 item = (from o in db.EmsOnts
  160:                         where o.Id == id
  161:                         select o).AsNoTracking().SingleOrDefault(); // use Id to connect MduDev.NddOntId instead.Include(u => u.Access).SingleOrDefault();
  162:             }
  163:  
  164:             return item;
  165:         }
  166:  
  167:         ////////////////////////////////////////////////////////////////////////////
  168:  
  169:         /// <summary>
  170:         ///
  171:         /// </summary>
  172:         public static Ia.Ftn.Cl.Models.Huawei.EmsOnt ReadIncludeAccess(string id)
  173:         {
  174:             Ia.Ftn.Cl.Models.Huawei.EmsOnt item;
  175:  
  176:             using (var db = new Ia.Ftn.Cl.Db())
  177:             {
  178:                 item = (from o in db.EmsOnts
  179:                         where o.Id == id
  180:                         select o).Include(u => u.Access)/*
  181:                         .Include(u => u.EmsPort)
  182:                         .Include(u => u.EmsPort.EmsBoard)
  183:                         .Include(u => u.EmsPort.EmsBoard.EmsDev)*/.AsNoTracking().SingleOrDefault();
  184:             }
  185:  
  186:             return item;
  187:         }
  188:  
  189:         ////////////////////////////////////////////////////////////////////////////
  190:  
  191:         /// <summary>
  192:         ///
  193:         /// </summary>
  194:         public static Ia.Ftn.Cl.Models.Huawei.EmsOnt ReadIncludeAccessAndEmsOntSipInfosAndEmsVoipPstnUsers(string id)
  195:         {
  196:             Ia.Ftn.Cl.Models.Huawei.EmsOnt item;
  197:  
  198:             using (var db = new Ia.Ftn.Cl.Db())
  199:             {
  200:                 item = (from o in db.EmsOnts
  201:                         where o.Id == id
  202:                         select o).Include(u => u.Access).Include(u => u.EmsOntSipInfos).Include(u => u.EmsVoipPstnUsers).AsNoTracking().SingleOrDefault();
  203:             }
  204:  
  205:             return item;
  206:         }
  207:  
  208:         /*
  209:         ////////////////////////////////////////////////////////////////////////////
  210: 
  211:         /// <summary>
  212:         ///
  213:         /// </summary>
  214:         public static List<Ia.Ftn.Cl.Model.Huawei.Ont> List(string portId)
  215:         {
  216:             List<Ia.Ftn.Cl.Model.Huawei.Ont> list;
  217: 
  218:             using (var db = new Ia.Ftn.Cl.Model.Ftn())
  219:             {
  220:                 list = (from o in db.EmsOnts where o.Port.Id == portId select o).ToList();
  221:             }
  222: 
  223:             return list;
  224:         }
  225:         */
  226:  
  227:         /*
  228:         ////////////////////////////////////////////////////////////////////////////
  229: 
  230:         /// <summary>
  231:         ///
  232:         /// </summary>
  233:         public static List<Ia.Ftn.Cl.Model.Huawei.Ont> ListByBoardId(string boardId)
  234:         {
  235:             List<Ia.Ftn.Cl.Model.Huawei.Ont> list;
  236: 
  237:             using (var db = new Ia.Ftn.Cl.Model.Ftn())
  238:             {
  239:                 list = (from o in db.EmsOnts where o.Port.Board.Id == boardId select o).ToList();
  240:             }
  241: 
  242:             return list;
  243:         }
  244:         */
  245:  
  246:         /*
  247:         ////////////////////////////////////////////////////////////////////////////
  248: 
  249:         /// <summary>
  250:         ///
  251:         /// </summary>
  252:         public static List<Ia.Ftn.Cl.Model.Huawei.Ont> ListByDevId(int devId)
  253:         {
  254:             List<Ia.Ftn.Cl.Model.Huawei.Ont> list;
  255: 
  256:             using (var db = new Ia.Ftn.Cl.Model.Ftn())
  257:             {
  258:                 list = (from o in db.EmsOnts where o.Port.Board.Dev.Id == devId select o).ToList();
  259:             }
  260: 
  261:             return list;
  262:         }
  263:         */
  264:  
  265:         ////////////////////////////////////////////////////////////////////////////
  266:  
  267:         /// <summary>
  268:         ///
  269:         /// </summary>
  270:         public static Dictionary<string, string> IdToAccessIdDictionary
  271:         {
  272:             get
  273:             {
  274:                 Dictionary<string, string> dictionary, nullDictionary;
  275:  
  276:                 using (var db = new Ia.Ftn.Cl.Db())
  277:                 {
  278:                     dictionary = (from s in db.EmsOnts
  279:                                   where s.Access != null
  280:                                   select new
  281:                                   {
  282:                                       s.Id,
  283:                                       s.Access
  284:                                   }).ToDictionary(u => u.Id, u => u.Access.Id);
  285:  
  286:                     nullDictionary = (from s in db.Onts where s.Access == null select s.Id).ToDictionary(u => u, null);
  287:                 }
  288:  
  289:                 return dictionary.Union(nullDictionary).ToDictionary(u => u.Key, u => u.Value);
  290:             }
  291:         }
  292:  
  293:         ////////////////////////////////////////////////////////////////////////////
  294:  
  295:         /// <summary>
  296:         ///
  297:         /// </summary>
  298:         public static Dictionary<string, Ia.Ftn.Cl.Models.Huawei.EmsOnt> IdToOntDictionary
  299:         {
  300:             get
  301:             {
  302:                 Dictionary<string, Ia.Ftn.Cl.Models.Huawei.EmsOnt> dictionary;
  303:  
  304:                 using (var db = new Ia.Ftn.Cl.Db())
  305:                 {
  306:                     dictionary = (from s in db.EmsOnts
  307:                                   where s.Access != null
  308:                                   select new { OntId = s.Id, Ont = s }).ToDictionary(u => u.OntId, u => u.Ont);
  309:                 }
  310:  
  311:                 return dictionary;
  312:             }
  313:         }
  314:  
  315:         ////////////////////////////////////////////////////////////////////////////
  316:  
  317:         /// <summary>
  318:         ///
  319:         /// </summary>
  320:         public static Dictionary<string, Ia.Ftn.Cl.Models.Huawei.EmsOnt> AccessIdToOntDictionary
  321:         {
  322:             get
  323:             {
  324:                 Dictionary<string, Ia.Ftn.Cl.Models.Huawei.EmsOnt> dictionary;
  325:  
  326:                 using (var db = new Ia.Ftn.Cl.Db())
  327:                 {
  328:                     dictionary = (from s in db.EmsOnts
  329:                                   where s.Access != null
  330:                                   select new { OntAccessId = s.Access.Id, Ont = s }).ToDictionary(u => u.OntAccessId, u => u.Ont);
  331:                 }
  332:  
  333:                 return dictionary;
  334:             }
  335:         }
  336:  
  337:         ////////////////////////////////////////////////////////////////////////////
  338:  
  339:         /// <summary>
  340:         ///
  341:         /// </summary>
  342:         public static Hashtable IdWithNullAccessHashtable
  343:         {
  344:             get
  345:             {
  346:                 List<string> list;
  347:                 Hashtable ht;
  348:  
  349:                 using (var db = new Ia.Ftn.Cl.Db())
  350:                 {
  351:                     list = (from eo in db.EmsOnts where eo.Access == null select eo.Id).ToList();
  352:  
  353:                     if (list.Count > 0)
  354:                     {
  355:                         ht = new Hashtable(list.Count);
  356:  
  357:                         foreach (string s in list) ht[s] = null;
  358:                     }
  359:                     else ht = null;
  360:                 }
  361:  
  362:                 return ht;
  363:             }
  364:         }
  365:  
  366:         ////////////////////////////////////////////////////////////////////////////
  367:  
  368:         /// <summary>
  369:         ///
  370:         /// </summary>
  371:         public static Dictionary<string, string> IdToAliasForNonNullAccessDictionary
  372:         {
  373:             get
  374:             {
  375:                 Dictionary<string, string> dictionary;
  376:  
  377:                 using (var db = new Ia.Ftn.Cl.Db())
  378:                 {
  379:                     dictionary = (from eo in db.EmsOnts
  380:                                   where eo.Access != null
  381:                                   select new
  382:                                   {
  383:                                       eo.Id,
  384:                                       eo.ALIAS
  385:                                   }).ToDictionary(u => u.Id, u => u.ALIAS);
  386:                 }
  387:  
  388:                 return dictionary;
  389:             }
  390:         }
  391:  
  392:         ////////////////////////////////////////////////////////////////////////////
  393:  
  394:         /// <summary>
  395:         ///
  396:         /// </summary>
  397:         public static Dictionary<string, int> DistributionOfEquipmentIdInEmsOntWhereAccessIsNotNullDictionary
  398:         {
  399:             get
  400:             {
  401:                 Dictionary<string, int> dictionary;
  402:  
  403:                 using (var db = new Ia.Ftn.Cl.Db())
  404:                 {
  405:                     var v = (from s in db.EmsOnts
  406:                              where s.Access != null
  407:                              group s by s.EQUIPMENTID into g
  408:                              select new { EquipmentId = g.Key, Count = g.Count() });
  409:  
  410:                     dictionary = v.ToDictionary(u => u.EquipmentId, u => u.Count);
  411:                 }
  412:  
  413:                 return dictionary;
  414:             }
  415:         }
  416:  
  417:         ////////////////////////////////////////////////////////////////////////////
  418:  
  419:         /// <summary>
  420:         ///
  421:         /// </summary>
  422:         public static bool Update(Ia.Ftn.Cl.Models.Business.Huawei.Ems.Response response, out Ia.Cl.Models.Result result)
  423:         {
  424:             bool isUpdated;
  425:             int did, dictionaryDid, fn, sn, pn, ontId, queryFn, querySn, queryPn, queryOntId, readItemCount, existingItemCount, insertedItemCount, updatedItemCount, deletedItemCount;
  426:             string id, queryCommand, queryDev, accessId;
  427:             DataColumnCollection columns;
  428:             DataRow dataRow;
  429:             Dictionary<string, int> devToDidDictionary;
  430:             Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Pon pon;
  431:             Ia.Ftn.Cl.Models.Huawei.EmsOnt ont, newOnt;
  432:             Ia.Ftn.Cl.Models.Huawei.EmsPort port;
  433:             //List<string> itemIdList;
  434:             //List<Ia.Ftn.Cl.Model.Huawei.EmsOnt> ontList;
  435:  
  436:             isUpdated = false;
  437:             readItemCount = existingItemCount = insertedItemCount = updatedItemCount = deletedItemCount = 0;
  438:             result = new Ia.Cl.Models.Result();
  439:  
  440:             queryCommand = response.CommandFromCorrelationTagDictionaryByCtag;
  441:  
  442:             // "LST-ONT::DEV=" + ont.Pon.PonGroup.Olt.EmsName + ",FN=0,SN=" + sn + ",PN=" + pn + ",ONTID=" + ontId + ":{ctag}::;";
  443:             queryDev = Ia.Cl.Models.Default.Match(queryCommand, @"DEV=(.+?),");
  444:             queryFn = int.Parse(Ia.Cl.Models.Default.Match(queryCommand, @"FN=(\d+)"));
  445:             querySn = int.Parse(Ia.Cl.Models.Default.Match(queryCommand, @"SN=(\d+)"));
  446:             queryPn = int.Parse(Ia.Cl.Models.Default.Match(queryCommand, @"PN=(\d+)"));
  447:             queryOntId = int.Parse(Ia.Cl.Models.Default.Match(queryCommand, @"ONTID=(\d+)"));
  448:  
  449:             if (response.CompletionCode == "COMPLD")
  450:             {
  451:                 devToDidDictionary = Ia.Ftn.Cl.Models.Data.Huawei.Dev.DevToDidDictionary;
  452:  
  453:                 if (devToDidDictionary.ContainsKey(queryDev))
  454:                 {
  455:                     dictionaryDid = devToDidDictionary[queryDev];
  456:  
  457:                     port = Ia.Ftn.Cl.Models.Data.Huawei.Port.ReadByDidFnSnPn(dictionaryDid, queryFn, querySn, queryPn);
  458:  
  459:                     if (port != null)
  460:                     {
  461:                         //itemIdList = new List<string>(readItemCount + 1);
  462:  
  463:                         pon = Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.PonByOltEmsNameAndSnAndPnAndOptionallyOntId(queryDev, querySn, queryPn, queryOntId);
  464:  
  465:                         if (pon != null)
  466:                         {
  467:                             id = Ia.Ftn.Cl.Models.Business.Huawei.Ont.OntId(pon.Id, queryOntId);
  468:  
  469:                             using (var db = new Ia.Ftn.Cl.Db())
  470:                             {
  471:                                 //ontList = (from eo in db.EmsOnts where eo.EmsPort.Id == port.Id select eo).ToList();
  472:  
  473:                                 ont = (from eo in db.EmsOnts where eo.Id == id select eo).SingleOrDefault();
  474:  
  475:                                 if (ont != null) existingItemCount = 1;
  476:  
  477:                                 if (response.QueryDataTable != null)
  478:                                 {
  479:                                     columns = response.QueryDataTable.Columns;
  480:                                     readItemCount = response.QueryDataTable.Rows.Count;
  481:  
  482:                                     if (readItemCount == 1)
  483:                                     {
  484:                                         dataRow = response.QueryDataTable.Rows[0];
  485:  
  486:                                         did = int.Parse(dataRow[columns.IndexOf("DID")].ToString());
  487:                                         fn = int.Parse(dataRow[columns.IndexOf("FN")].ToString());
  488:                                         sn = int.Parse(dataRow[columns.IndexOf("SN")].ToString());
  489:                                         pn = int.Parse(dataRow[columns.IndexOf("PN")].ToString());
  490:                                         ontId = int.Parse(dataRow[columns.IndexOf("ONTID")].ToString());
  491:  
  492:                                         if (fn == queryFn && sn == querySn && pn == queryPn && ontId == queryOntId)
  493:                                         {
  494:                                             newOnt = new Ia.Ftn.Cl.Models.Huawei.EmsOnt()
  495:                                             {
  496:                                                 Id = id,
  497:                                                 DID = did,
  498:                                                 ResultCode = (long)response.ResultCode,
  499:                                                 StateId = (int)Ia.Ftn.Cl.Models.Business.Huawei.Ems.BellcoreState.Unknown, // (int)response.ResultCode,
  500:                                                 FN = fn,
  501:                                                 SN = sn,
  502:                                                 PN = pn,
  503:                                                 ONTID = ontId,
  504:                                                 NAME = columns.Contains("NAME") ? dataRow[columns.IndexOf("NAME")].ToString() : string.Empty,
  505:                                                 ALIAS = columns.Contains("ALIAS") ? dataRow[columns.IndexOf("ALIAS")].ToString() : string.Empty,
  506:                                                 CAPABPROF = columns.Contains("CAPABPROF") ? dataRow[columns.IndexOf("CAPABPROF")].ToString() : string.Empty,
  507:                                                 VENDORID = columns.Contains("VENDORID") ? dataRow[columns.IndexOf("VENDORID")].ToString() : string.Empty,
  508:                                                 EQUIPMENTID = columns.Contains("EQUIPMENTID") ? dataRow[columns.IndexOf("EQUIPMENTID")].ToString() : string.Empty,
  509:                                                 MAINSOFTVERSION = columns.Contains("MAINSOFTVERSION") ? dataRow[columns.IndexOf("MAINSOFTVERSION")].ToString() : string.Empty,
  510:                                                 AUTH = columns.Contains("AUTH") ? dataRow[columns.IndexOf("AUTH")].ToString() : string.Empty,
  511:                                                 AUTHTIMEOUT = columns.Contains("AUTHTIMEOUT") ? Ia.Ftn.Cl.Models.Business.Huawei.Ont.SpecialIntegerParameterHandling("AUTHTIMEOUT", dataRow[columns.IndexOf("AUTHTIMEOUT")].ToString()) : 0,
  512:                                                 LINEPROF = columns.Contains("LINEPROF") ? dataRow[columns.IndexOf("LINEPROF")].ToString() : string.Empty,
  513:                                                 SRVPROF = columns.Contains("SRVPROF") ? dataRow[columns.IndexOf("SRVPROF")].ToString() : string.Empty,
  514:                                                 SERIALNUM = columns.Contains("SERIALNUM") ? dataRow[columns.IndexOf("SERIALNUM")].ToString() : string.Empty,
  515:                                                 LOID = columns.Contains("LOID") ? dataRow[columns.IndexOf("LOID")].ToString() : string.Empty,
  516:                                                 CHECKCODE = columns.Contains("CHECKCODE") ? dataRow[columns.IndexOf("CHECKCODE")].ToString() : string.Empty,
  517:                                                 PWD = columns.Contains("PWD") ? dataRow[columns.IndexOf("PWD")].ToString() : string.Empty,
  518:                                                 ALMPROF = columns.Contains("ALMPROF") ? dataRow[columns.IndexOf("ALMPROF")].ToString() : string.Empty,
  519:                                                 DEV = columns.Contains("DEV") ? dataRow[columns.IndexOf("DEV")].ToString() : string.Empty,
  520:                                                 VLAN = columns.Contains("VLAN") ? int.Parse(dataRow[columns.IndexOf("VLAN")].ToString()) : 0,
  521:                                                 PRI = columns.Contains("PRI") ? int.Parse(dataRow[columns.IndexOf("PRI")].ToString()) : 0,
  522:                                                 IP = columns.Contains("IP") ? dataRow[columns.IndexOf("IP")].ToString() : string.Empty,
  523:                                                 MASK = columns.Contains("MASK") ? dataRow[columns.IndexOf("MASK")].ToString() : string.Empty,
  524:                                                 GATE = columns.Contains("GATE") ? dataRow[columns.IndexOf("GATE")].ToString() : string.Empty,
  525:                                                 ROUTEIP = columns.Contains("ROUTEIP") ? dataRow[columns.IndexOf("ROUTEIP")].ToString() : string.Empty,
  526:                                                 ROUTEMASK = columns.Contains("ROUTEMASK") ? dataRow[columns.IndexOf("ROUTEMASK")].ToString() : string.Empty,
  527:                                                 NEXTHOP = columns.Contains("NEXTHOP") ? dataRow[columns.IndexOf("NEXTHOP")].ToString() : string.Empty,
  528:                                                 SNMPPROF = columns.Contains("SNMPPROF") ? dataRow[columns.IndexOf("SNMPPROF")].ToString() : string.Empty,
  529:                                                 OPTALMPROF = columns.Contains("OPTALMPROF") ? dataRow[columns.IndexOf("OPTALMPROF")].ToString() : string.Empty,
  530:                                                 VAPROF = columns.Contains("VAPROF") ? dataRow[columns.IndexOf("VAPROF")].ToString() : string.Empty,
  531:                                                 MACLEARN = columns.Contains("MACLEARN") ? dataRow[columns.IndexOf("MACLEARN")].ToString() : string.Empty,
  532:                                                 SRVLEVELPROF = columns.Contains("SRVLEVELPROF") ? dataRow[columns.IndexOf("SRVLEVELPROF")].ToString() : string.Empty,
  533:                                                 LSTUPTIME = columns.Contains("LSTUPTIME") ? int.Parse(dataRow[columns.IndexOf("LSTUPTIME")].ToString()) : 0,
  534:                                                 LSTDOWNTIME = columns.Contains("LSTDOWNTIME") ? int.Parse(dataRow[columns.IndexOf("LSTDOWNTIME")].ToString()) : 0,
  535:                                                 DEVCURRENTTIME = columns.Contains("DEVCURRENTTIME") ? int.Parse(dataRow[columns.IndexOf("DEVCURRENTTIME")].ToString()) : 0,
  536:                                                 VASPROFILESET = columns.Contains("VASPROFILESET") ? dataRow[columns.IndexOf("VASPROFILESET")].ToString() : string.Empty,
  537:                                                 HARDWAREVERSION = columns.Contains("HARDWAREVERSION") ? dataRow[columns.IndexOf("HARDWAREVERSION")].ToString() : string.Empty,
  538:                                                 OPERSTATE = columns.Contains("OPERSTATE") ? dataRow[columns.IndexOf("OPERSTATE")].ToString() : string.Empty,
  539:                                                 DEVNAME = columns.Contains("DEVNAME") ? dataRow[columns.IndexOf("DEVNAME")].ToString() : string.Empty,
  540:                                                 BINDWIDTHTYPE = columns.Contains("BINDWIDTHTYPE") ? int.Parse(dataRow[columns.IndexOf("BINDWIDTHTYPE")].ToString()) : 0,
  541:                                                 EmsPort = (from ep in db.EmsPorts where ep.Id == port.Id select ep).SingleOrDefault()
  542:                                             };
  543:  
  544:                                             accessId = Ia.Ftn.Cl.Models.Business.Access.AccessId(id);
  545:                                             if (accessId != null) newOnt.Access = (from a in db.Accesses where a.Id == accessId select a).SingleOrDefault();
  546:  
  547:                                             if (ont == null)
  548:                                             {
  549:                                                 newOnt.Created = newOnt.Updated = DateTime.UtcNow.AddHours(3);
  550:  
  551:                                                 db.EmsOnts.Add(newOnt);
  552:  
  553:                                                 insertedItemCount++;
  554:                                             }
  555:                                             else // update
  556:                                             {
  557:                                                 // below: copy values from newOnt to ont
  558:  
  559:                                                 if (ont.Update(newOnt))
  560:                                                 {
  561:                                                     db.EmsOnts.Attach(ont);
  562:                                                     db.Entry(ont).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
  563:  
  564:                                                     updatedItemCount++;
  565:                                                 }
  566:                                             }
  567:                                         }
  568:                                         else
  569:                                         {
  570:                                             result.AddError("LST-ONT (" + response.Ctag + "): did, fn, sn, pn, and/or ontId is/are not equal to queryDid, queryFn, querySn, queryPn, and/or ontId. did: " + did + ", queryDid: " + queryDev + ", fn: " + fn + ", queryFn: " + queryFn + ", sn: " + sn + ", querySn: " + querySn + ", pn: " + pn + ", queryPn: " + queryPn + ", ontId: " + ontId + ", queryOntId: " + queryOntId);
  571:                                         }
  572:                                     }
  573:                                     else //if (readItemCount > 1)
  574:                                     {
  575:                                         result.AddError("LST-ONT (" + response.Ctag + "): dataTable.Rows.Count has more than 1 row");
  576:                                     }
  577:                                 }
  578:                                 else
  579:                                 {
  580:                                     // if DataTable is null or "Resource does not exist"
  581:                                     // delete element if exists
  582:  
  583:                                     if (ont != null)
  584:                                     {
  585:                                         db.EmsOnts.Remove(ont);
  586:  
  587:                                         deletedItemCount++;
  588:                                     }
  589:  
  590:                                     result.AddWarning("LST-ONT (" + response.Ctag + "): " + response.CompletionCode + ", " + response.ResultCode.ToString());
  591:                                 }
  592:  
  593:                                 db.SaveChanges();
  594:                             }
  595:  
  596:                             if (insertedItemCount != 0 || updatedItemCount != 0 || deletedItemCount != 0) isUpdated = true;
  597:                             else isUpdated = false;
  598:  
  599:                             result.AddSuccess("LST-ONT (" + response.Ctag + "): " + response.CompletionCode + ", " + response.ResultCode.ToString() + " (" + readItemCount + "/" + existingItemCount + "/" + insertedItemCount + "," + updatedItemCount + "," + deletedItemCount + ")");
  600:                         }
  601:                         else
  602:                         {
  603:                             result.AddWarning("LST-ONT (" + response.Ctag + "): NDD PON is null");
  604:                         }
  605:                     }
  606:                     else
  607:                     {
  608:                         result.AddWarning("LST-ONT (" + response.Ctag + "): port is null");
  609:                     }
  610:                 }
  611:                 else
  612:                 {
  613:                     result.AddError("LST-ONT (" + response.Ctag + "): devToDidDictionary does not contain key: " + queryDev);
  614:                 }
  615:             }
  616:             else
  617:             {
  618:                 result.AddWarning("LST-ONT (" + response.Ctag + "): (" + response.CompletionCode + ", " + response.ResultCode.ToString() + ")");
  619:             }
  620:  
  621:             return isUpdated;
  622:         }
  623:  
  624:         ////////////////////////////////////////////////////////////////////////////
  625:  
  626:         /// <summary>
  627:         ///
  628:         /// </summary>
  629:         public static bool UpdateListWithDid(Ia.Ftn.Cl.Models.Business.Huawei.Ems.Response response, out Ia.Cl.Models.Result result)
  630:         {
  631:             bool isUpdated;
  632:             int queryDid, did, fn, sn, pn, ontId, readItemCount, existingItemCount, insertedItemCount, updatedItemCount, deletedItemCount;
  633:             string id, queryCommand, accessId;
  634:             DataColumnCollection columns;
  635:             Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Pon pon;
  636:             Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Olt olt;
  637:             Ia.Ftn.Cl.Models.Huawei.EmsOnt ont, newOnt;
  638:             Ia.Ftn.Cl.Models.Huawei.EmsPort port;
  639:             List<string> itemIdList;
  640:             List<Ia.Ftn.Cl.Models.Huawei.EmsOnt> ontList;
  641:  
  642:             isUpdated = false;
  643:             readItemCount = existingItemCount = insertedItemCount = updatedItemCount = deletedItemCount = 0;
  644:             result = new Ia.Cl.Models.Result();
  645:  
  646:             if (response.CompletionCode == "COMPLD")
  647:             {
  648:                 if (response.QueryDataTable != null)
  649:                 {
  650:                     queryCommand = response.CommandFromCorrelationTagDictionaryByCtag;
  651:  
  652:                     columns = response.QueryDataTable.Columns;
  653:                     readItemCount = response.QueryDataTable.Rows.Count;
  654:  
  655:                     // "LST-ONT::DID=" + olt.Did + ":{ctag}::;";
  656:                     queryDid = int.Parse(Ia.Cl.Models.Default.Match(queryCommand, @"DID=(\d+):"));
  657:  
  658:                     olt = Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.OltByDid(queryDid);
  659:  
  660:                     if (olt != null)
  661:                     {
  662:                         ontList = Ia.Ftn.Cl.Models.Data.Huawei.Ont.ListByDid(queryDid);
  663:                         existingItemCount = ontList.Count;
  664:  
  665:                         itemIdList = new List<string>(response.QueryDataTable.Rows.Count + 1);
  666:  
  667:                         using (var db = new Ia.Ftn.Cl.Db())
  668:                         {
  669:                             foreach (DataRow dataRow in response.QueryDataTable.Rows)
  670:                             {
  671:                                 did = int.Parse(dataRow[columns.IndexOf("DID")].ToString());
  672:                                 fn = int.Parse(dataRow[columns.IndexOf("FN")].ToString());
  673:                                 sn = int.Parse(dataRow[columns.IndexOf("SN")].ToString());
  674:                                 pn = int.Parse(dataRow[columns.IndexOf("PN")].ToString());
  675:                                 ontId = int.Parse(dataRow[columns.IndexOf("ONTID")].ToString());
  676:  
  677:                                 port = Ia.Ftn.Cl.Models.Data.Huawei.Port.ReadByDidFnSnPn(queryDid, fn, sn, pn);
  678:  
  679:                                 if (port != null)
  680:                                 {
  681:                                     ontList = (from eo in db.EmsOnts where eo.EmsPort.Id == port.Id select eo).ToList();
  682:                                     // or ontList = Ia.Ftn.Cl.Model.Data.Huawei.Ont.List(port.Id);
  683:  
  684:                                     if (did == queryDid)
  685:                                     {
  686:                                         pon = Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.PonByOltEmsNameAndSnAndPnAndOptionallyOntId(olt.EmsName, sn, pn, ontId);
  687:  
  688:                                         if (pon != null)
  689:                                         {
  690:                                             id = Ia.Ftn.Cl.Models.Business.Huawei.Ont.OntId(pon.Id, ontId);
  691:  
  692:                                             newOnt = new Ia.Ftn.Cl.Models.Huawei.EmsOnt()
  693:                                             {
  694:                                                 Id = id,
  695:                                                 DID = did,
  696:                                                 FN = fn,
  697:                                                 SN = sn,
  698:                                                 PN = pn,
  699:                                                 ONTID = ontId,
  700:                                                 NAME = columns.Contains("NAME") ? dataRow[columns.IndexOf("NAME")].ToString() : string.Empty,
  701:                                                 ALIAS = columns.Contains("ALIAS") ? dataRow[columns.IndexOf("ALIAS")].ToString() : string.Empty,
  702:                                                 CAPABPROF = columns.Contains("CAPABPROF") ? dataRow[columns.IndexOf("CAPABPROF")].ToString() : string.Empty,
  703:                                                 VENDORID = columns.Contains("VENDORID") ? dataRow[columns.IndexOf("VENDORID")].ToString() : string.Empty,
  704:                                                 EQUIPMENTID = columns.Contains("EQUIPMENTID") ? dataRow[columns.IndexOf("EQUIPMENTID")].ToString() : string.Empty,
  705:                                                 MAINSOFTVERSION = columns.Contains("MAINSOFTVERSION") ? dataRow[columns.IndexOf("MAINSOFTVERSION")].ToString() : string.Empty,
  706:                                                 AUTH = columns.Contains("AUTH") ? dataRow[columns.IndexOf("AUTH")].ToString() : string.Empty,
  707:                                                 AUTHTIMEOUT = columns.Contains("AUTHTIMEOUT") ? Ia.Ftn.Cl.Models.Business.Huawei.Ont.SpecialIntegerParameterHandling("AUTHTIMEOUT", dataRow[columns.IndexOf("AUTHTIMEOUT")].ToString()) : 0,
  708:                                                 LINEPROF = columns.Contains("LINEPROF") ? dataRow[columns.IndexOf("LINEPROF")].ToString() : string.Empty,
  709:                                                 SRVPROF = columns.Contains("SRVPROF") ? dataRow[columns.IndexOf("SRVPROF")].ToString() : string.Empty,
  710:                                                 SERIALNUM = columns.Contains("SERIALNUM") ? dataRow[columns.IndexOf("SERIALNUM")].ToString() : string.Empty,
  711:                                                 LOID = columns.Contains("LOID") ? dataRow[columns.IndexOf("LOID")].ToString() : string.Empty,
  712:                                                 CHECKCODE = columns.Contains("CHECKCODE") ? dataRow[columns.IndexOf("CHECKCODE")].ToString() : string.Empty,
  713:                                                 PWD = columns.Contains("PWD") ? dataRow[columns.IndexOf("PWD")].ToString() : string.Empty,
  714:                                                 ALMPROF = columns.Contains("ALMPROF") ? dataRow[columns.IndexOf("ALMPROF")].ToString() : string.Empty,
  715:                                                 DEV = columns.Contains("DEV") ? dataRow[columns.IndexOf("DEV")].ToString() : string.Empty,
  716:                                                 VLAN = columns.Contains("VLAN") ? int.Parse(dataRow[columns.IndexOf("VLAN")].ToString()) : 0,
  717:                                                 PRI = columns.Contains("PRI") ? int.Parse(dataRow[columns.IndexOf("PRI")].ToString()) : 0,
  718:                                                 IP = columns.Contains("IP") ? dataRow[columns.IndexOf("IP")].ToString() : string.Empty,
  719:                                                 MASK = columns.Contains("MASK") ? dataRow[columns.IndexOf("MASK")].ToString() : string.Empty,
  720:                                                 GATE = columns.Contains("GATE") ? dataRow[columns.IndexOf("GATE")].ToString() : string.Empty,
  721:                                                 ROUTEIP = columns.Contains("ROUTEIP") ? dataRow[columns.IndexOf("ROUTEIP")].ToString() : string.Empty,
  722:                                                 ROUTEMASK = columns.Contains("ROUTEMASK") ? dataRow[columns.IndexOf("ROUTEMASK")].ToString() : string.Empty,
  723:                                                 NEXTHOP = columns.Contains("NEXTHOP") ? dataRow[columns.IndexOf("NEXTHOP")].ToString() : string.Empty,
  724:                                                 SNMPPROF = columns.Contains("SNMPPROF") ? dataRow[columns.IndexOf("SNMPPROF")].ToString() : string.Empty,
  725:                                                 OPTALMPROF = columns.Contains("OPTALMPROF") ? dataRow[columns.IndexOf("OPTALMPROF")].ToString() : string.Empty,
  726:                                                 VAPROF = columns.Contains("VAPROF") ? dataRow[columns.IndexOf("VAPROF")].ToString() : string.Empty,
  727:                                                 MACLEARN = columns.Contains("MACLEARN") ? dataRow[columns.IndexOf("MACLEARN")].ToString() : string.Empty,
  728:                                                 SRVLEVELPROF = columns.Contains("SRVLEVELPROF") ? dataRow[columns.IndexOf("SRVLEVELPROF")].ToString() : string.Empty,
  729:                                                 LSTUPTIME = columns.Contains("LSTUPTIME") ? int.Parse(dataRow[columns.IndexOf("LSTUPTIME")].ToString()) : 0,
  730:                                                 LSTDOWNTIME = columns.Contains("LSTDOWNTIME") ? int.Parse(dataRow[columns.IndexOf("LSTDOWNTIME")].ToString()) : 0,
  731:                                                 DEVCURRENTTIME = columns.Contains("DEVCURRENTTIME") ? int.Parse(dataRow[columns.IndexOf("DEVCURRENTTIME")].ToString()) : 0,
  732:                                                 VASPROFILESET = columns.Contains("VASPROFILESET") ? dataRow[columns.IndexOf("VASPROFILESET")].ToString() : string.Empty,
  733:                                                 HARDWAREVERSION = columns.Contains("HARDWAREVERSION") ? dataRow[columns.IndexOf("HARDWAREVERSION")].ToString() : string.Empty,
  734:                                                 OPERSTATE = columns.Contains("OPERSTATE") ? dataRow[columns.IndexOf("OPERSTATE")].ToString() : string.Empty,
  735:                                                 DEVNAME = columns.Contains("DEVNAME") ? dataRow[columns.IndexOf("DEVNAME")].ToString() : string.Empty,
  736:                                                 BINDWIDTHTYPE = columns.Contains("BINDWIDTHTYPE") ? int.Parse(dataRow[columns.IndexOf("BINDWIDTHTYPE")].ToString()) : 0,
  737:                                                 EmsPort = (from ep in db.EmsPorts where ep.Id == port.Id select ep).SingleOrDefault()
  738:                                             };
  739:  
  740:                                             accessId = Ia.Ftn.Cl.Models.Business.Access.AccessId(id);
  741:                                             if (accessId != null) newOnt.Access = (from a in db.Accesses where a.Id == accessId select a).SingleOrDefault();
  742:  
  743:                                             ont = (from eo in /*ontList*/ db.EmsOnts where eo.Id == id select eo).SingleOrDefault();
  744:  
  745:                                             if (ont == null)
  746:                                             {
  747:                                                 newOnt.Created = newOnt.Updated = DateTime.UtcNow.AddHours(3);
  748:  
  749:                                                 db.EmsOnts.Add(newOnt);
  750:  
  751:                                                 insertedItemCount++;
  752:                                             }
  753:                                             else
  754:                                             {
  755:                                                 // below: copy values from newOnt to ont
  756:  
  757:                                                 if (ont.Update(newOnt))
  758:                                                 {
  759:                                                     db.EmsOnts.Attach(ont);
  760:                                                     db.Entry(ont).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
  761:  
  762:                                                     updatedItemCount++;
  763:                                                 }
  764:                                             }
  765:  
  766:                                             itemIdList.Add(id); // keep at the end
  767:                                         }
  768:                                         else
  769:                                         {
  770:                                             result.AddError("LST-ONT (" + response.Ctag + "): PON is null.");
  771:                                         }
  772:                                     }
  773:                                     else
  774:                                     {
  775:                                         result.AddError("LST-ONT (" + response.Ctag + "): did not equal to queryDid. did: " + did);
  776:                                     }
  777:                                 }
  778:                                 else
  779:                                 {
  780:                                     result.AddWarning("LST-ONT (" + response.Ctag + "): port is null");
  781:                                 }
  782:                             }
  783:  
  784:                             // below: this function will remove values that were not present in the reading
  785:                             if (ontList.Count > 0)
  786:                             {
  787:                                 foreach (Ia.Ftn.Cl.Models.Huawei.EmsOnt on in ontList)
  788:                                 {
  789:                                     if (!itemIdList.Contains(on.Id))
  790:                                     {
  791:                                         ont = (from o in db.EmsOnts where o.Id == @on.Id select o).SingleOrDefault();
  792:  
  793:                                         db.EmsOnts.Remove(ont);
  794:  
  795:                                         deletedItemCount++;
  796:                                     }
  797:                                 }
  798:                             }
  799:  
  800:                             db.SaveChanges();
  801:                         }
  802:  
  803:                         if (insertedItemCount != 0 || updatedItemCount != 0 || deletedItemCount != 0) isUpdated = true;
  804:                         else isUpdated = false;
  805:  
  806:                         result.AddSuccess("LST-ONT (" + response.Ctag + "): (" + readItemCount + "/" + existingItemCount + "/" + insertedItemCount + "," + updatedItemCount + "," + deletedItemCount + ")");
  807:                     }
  808:                     else
  809:                     {
  810:                         result.AddWarning("LST-ONT (" + response.Ctag + "): NDD OLT is null");
  811:                     }
  812:                 }
  813:                 else
  814:                 {
  815:                     result.AddWarning("LST-ONT (" + response.Ctag + "): QueryDataTable is null, (" + response.CompletionCode + ", " + response.ResultCode.ToString() + ")");
  816:                 }
  817:             }
  818:             else
  819:             {
  820:                 result.AddWarning("LST-ONT (" + response.Ctag + "): (" + response.CompletionCode + ", " + response.ResultCode.ToString() + ")");
  821:             }
  822:  
  823:             return isUpdated;
  824:         }
  825:  
  826:         ////////////////////////////////////////////////////////////////////////////
  827:  
  828:         /// <summary>
  829:         ///
  830:         /// </summary>
  831:         public static bool UpdateResultCode(Ia.Ftn.Cl.Models.Huawei.EmsOnt emsOnt, Ia.Ftn.Cl.Models.Client.Huawei.Ems.ResultCode resultCode)
  832:         {
  833:             // similar to Ia.Ftn.Cl.Model.Data.Huawei.Dev.UpdateResultCode();
  834:             bool isUpdated;
  835:  
  836:             using (var db = new Ia.Ftn.Cl.Db())
  837:             {
  838:                 if (emsOnt != null)
  839:                 {
  840:                     var updatedOnt = (from o in db.EmsOnts where o.Id == emsOnt.Id select o).SingleOrDefault();
  841:  
  842:                     if (updatedOnt != null)
  843:                     {
  844:                         if (updatedOnt.ResultCode != (long)resultCode)
  845:                         {
  846:                             updatedOnt.ResultCode = (long)resultCode;
  847:                             updatedOnt.Updated = DateTime.UtcNow.AddHours(3);
  848:  
  849:                             db.EmsOnts.Attach(updatedOnt);
  850:                             db.Entry(updatedOnt).Property(u => u.ResultCode).IsModified = true;
  851:                             db.Entry(updatedOnt).Property(u => u.Updated).IsModified = true;
  852:  
  853:                             db.SaveChanges();
  854:  
  855:                             isUpdated = true;
  856:                             //result.AddSuccess("EmsOnt.ResultCode updated. ");
  857:                         }
  858:                         else
  859:                         {
  860:                             isUpdated = false;
  861:                             // result.AddWarning("Warning: EmsOnt.ResultCode value was not updated because its the same. ");
  862:                         }
  863:                     }
  864:                     else
  865:                     {
  866:                         isUpdated = false;
  867:                         // result.AddError("Error: updatedOnt is null. ");
  868:                     }
  869:                 }
  870:                 else
  871:                 {
  872:                     isUpdated = false;
  873:                 }
  874:             }
  875:  
  876:             return isUpdated;
  877:         }
  878:  
  879:         ////////////////////////////////////////////////////////////////////////////
  880:  
  881:         /// <summary>
  882:         ///
  883:         /// </summary>
  884:         public static bool NullifyAccessIdByAccessId(string accessId, out string result)
  885:         {
  886:             bool b;
  887:             int numberOfRecordsWhereAccessIsNullified;
  888:             Ia.Ftn.Cl.Models.Huawei.EmsOnt ont;
  889:  
  890:             b = false;
  891:             numberOfRecordsWhereAccessIsNullified = 0;
  892:  
  893:             using (var db = new Ia.Ftn.Cl.Db())
  894:             {
  895:                 // --update EmsOnts set Access_Id = null where Access_Id = '1040101010040004'
  896:                 //var query = (from eo in db.EmsOnts where eo.Access.Id == accessId select eo).ToList();
  897:  
  898:                 //foreach (var v in query)
  899:                 //{
  900:                 ont = (from o in db.EmsOnts where o.Access.Id == accessId select o).Include(u => u.Access).FirstOrDefault(); //.SingleOrDefault();
  901:  
  902:                 if (ont != null)
  903:                 {
  904:                     ont.Access = null;
  905:                     ont.Updated = DateTime.UtcNow.AddHours(3);
  906:  
  907:                     db.EmsOnts.Attach(ont);
  908:                     db.Entry(ont).Property(u => u.Updated).IsModified = true;
  909:  
  910:                     db.SaveChanges();
  911:  
  912:                     numberOfRecordsWhereAccessIsNullified++;
  913:                 }
  914:                 //}
  915:  
  916:                 b = true;
  917:             }
  918:  
  919:             result = "Number of records where access is nullified: " + numberOfRecordsWhereAccessIsNullified;
  920:  
  921:             return b;
  922:         }
  923:  
  924:         ////////////////////////////////////////////////////////////////////////////
  925:  
  926:         /// <summary>
  927:         ///
  928:         /// </summary>
  929:         public static bool Delete(string id, out string result)
  930:         {
  931:             bool b;
  932:  
  933:             b = false;
  934:             result = string.Empty;
  935:  
  936:             using (var db = new Ia.Ftn.Cl.Db())
  937:             {
  938:                 var v = (from em in db.EmsOnts where em.Id == id select em).FirstOrDefault();
  939:  
  940:                 if (v != null)
  941:                 {
  942:                     db.EmsOnts.Remove(v);
  943:                     db.SaveChanges();
  944:  
  945:                     b = true;
  946:                 }
  947:                 else b = false;
  948:             }
  949:  
  950:             return b;
  951:         }
  952:  
  953:         ////////////////////////////////////////////////////////////////////////////
  954:  
  955:         /// <summary>
  956:         ///
  957:         /// </summary>
  958:         public static bool DeleteByAccessId(string accessId, out string result)
  959:         {
  960:             bool b;
  961:  
  962:             b = false;
  963:             result = string.Empty;
  964:  
  965:             using (var db = new Ia.Ftn.Cl.Db())
  966:             {
  967:                 var v = (from eo in db.EmsOnts where eo.Access.Id == accessId select eo).Include(u => u.Access).FirstOrDefault();
  968:  
  969:                 if (v != null)
  970:                 {
  971:                     db.EmsOnts.Remove(v);
  972:                     db.SaveChanges();
  973:  
  974:                     b = true;
  975:                 }
  976:                 else b = false;
  977:             }
  978:  
  979:             return b;
  980:         }
  981:  
  982:         ////////////////////////////////////////////////////////////////////////////
  983:         ////////////////////////////////////////////////////////////////////////////
  984:  
  985:         /// <summary>
  986:         ///
  987:         /// </summary>
  988:         public static string ToSimpleTextString(Ia.Ftn.Cl.Models.Huawei.EmsOnt ont)
  989:         {
  990:             StringBuilder sb;
  991:  
  992:             sb = new StringBuilder();
  993:  
  994:             /*
  995:             //sb.AppendLine("Vendor: " + Ia.Ftn.Cl.Model.Business.NetworkDesignDocument.Vendor.Nokia.Name);
  996:             sb.AppendLine("State: " + ont.State);
  997:             sb.AppendLine("FamilyType: " + Ia.Ftn.Cl.Model.Data.Nokia.Ont.FamilyTypeFromId(ont.FamilyTypeId));
  998:             sb.AppendLine("Serial: " + ont.Serial);
  999:             sb.AppendLine("EquipmentId: " + ont.EquipmentId);
 1000:             sb.AppendLine("ActiveSoftware: " + ont.ActiveSoftware);
 1001:             //sb.AppendLine("PassiveSoftware: " + ont.PassiveSoftware);
 1002:             sb.AppendLine("PlannedSoftware: " + ont.PlannedSoftware);
 1003:             //sb.AppendLine("BatteryBackupAvailable: " + ont.BatteryBackupAvailable);
 1004:             sb.AppendLine("Description1: " + ont.Description1);
 1005:             sb.AppendLine("Description2: " + ont.Description2);
 1006:             */
 1007:  
 1008:             return sb.ToString();
 1009:         }
 1010:  
 1011:         ////////////////////////////////////////////////////////////////////////////
 1012:         ////////////////////////////////////////////////////////////////////////////
 1013:     }
 1014:  
 1015:     ////////////////////////////////////////////////////////////////////////////
 1016:     ////////////////////////////////////////////////////////////////////////////
 1017: }