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

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

Default NFC Near-Field Communication (NFC) Support Business functions

    1: using System;
    2: using System.Collections.Generic;
    3: using System.Configuration;
    4: using System.Linq;
    5:  
    6: namespace Ia.Cl.Models.Business.Nfc
    7: {
    8:     ////////////////////////////////////////////////////////////////////////////
    9:  
   10:     /// <summary publish="true">
   11:     /// Default NFC Near-Field Communication (NFC) Support Business functions
   12:     /// </summary>
   13:     /// 
   14:     /// <remarks> 
   15:     /// Copyright © 2020-2021 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 Default
   28:     {
   29:         // private const int fixedLengthOfId = 18;
   30:  
   31:         //public static int FixedLengthOfId { get { return fixedLengthOfId; } }
   32:  
   33:         /// <summary/>
   34:         public enum ProjectType
   35:         {
   36:             /// <summary/>
   37:             Inventory,
   38:  
   39:             /// <summary/>            
   40:             UrlRedirection
   41:         }
   42:  
   43:         ////////////////////////////////////////////////////////////////////////////
   44:  
   45:         /// <summary>
   46:         ///
   47:         /// </summary>
   48:         public class NfcProject
   49:         {
   50:             /// <summary/>
   51:             public int Id { get; set; }
   52:  
   53:             /// <summary/>
   54:             public Guid Guid { get; set; }
   55:  
   56:             /// <summary/>
   57:             public string Name { get; set; }
   58:  
   59:             /// <summary/>
   60:             public ProjectType ProjectType { get; set; }
   61:  
   62:             /// <summary/>
   63:             public string CardType { get; set; }
   64:  
   65:             /// <summary/>
   66:             public string Url { get; set; }
   67:  
   68:             /// <summary/>
   69:             public string ApiKeyName { get; set; }
   70:  
   71:             /// <summary/>
   72:             public string ApiKeyValue { get; set; }
   73:  
   74:             /// <summary/>
   75:             public List<Ia.Cl.Models.Business.Nfc.Inventory.Type> InventoryItemTypeList { get; set; }
   76:  
   77:             /// <summary/>
   78:             public List<Ia.Cl.Models.Business.Nfc.Inventory.State> InventoryItemStateList { get; set; }
   79:         }
   80:  
   81:         ////////////////////////////////////////////////////////////////////////////
   82:  
   83:         /// <summary>
   84:         ///
   85:         /// </summary>
   86:         public static List<NfcProject> NfcProjectList
   87:         {
   88:             get
   89:             {
   90:                 var list = new List<NfcProject>();
   91:  
   92:                 ////////////////////////////////////////////////////////////////////////////
   93:  
   94:                 list.Add(new NfcProject
   95:                 {
   96:                     Id = 0,
   97:                     Name = "Scrap/NFC Inventory System Project",
   98:                     Guid = Guid.Parse("69c7df71-ca57-4627-8fc4-42fa4caec9a4"),
   99:                     ProjectType = ProjectType.Inventory,
  100:                     CardType = "NTAG 213",
  101:                     Url = "https://nfc.ia.com.kw/p",
  102:                     ApiKeyName = "nfcApiKey",
  103:                     ApiKeyValue = ConfigurationManager.AppSettings["nfcApiKey"],
  104:                     InventoryItemTypeList = Ia.Cl.Models.Business.Nfc.Inventory.TypeList(0),
  105:                     InventoryItemStateList = Ia.Cl.Models.Business.Nfc.Inventory.StateList(0),
  106:                 });
  107:  
  108:                 ////////////////////////////////////////////////////////////////////////////
  109:  
  110:                 list.Add(new NfcProject
  111:                 {
  112:                     Id = 1,
  113:                     Name = "Boutiqaat",
  114:                     Guid = Guid.Parse("3e540d34-2e8a-4fc5-bcda-03d11dc044f0"),
  115:                     ProjectType = ProjectType.UrlRedirection,
  116:                     CardType = "NTAG 213",
  117:                     Url = "https://nfc.ia.com.kw/p",
  118:                     ApiKeyName = "nfcApiKey",
  119:                     ApiKeyValue = ConfigurationManager.AppSettings["nfcApiKey"],
  120:                 });
  121:  
  122:                 ////////////////////////////////////////////////////////////////////////////
  123:  
  124:                 if (list.Select(u => u.Id).Distinct().Count() != list.Count())
  125:                 {
  126:                     throw new Exception("Duplicate Id in Ia.Cl.Models.Business.Nfc.Default.NfcProjectList.");
  127:                 }
  128:  
  129:                 return list;
  130:             }
  131:         }
  132:  
  133:         /*
  134:         ////////////////////////////////////////////////////////////////////////////
  135: 
  136:         /// <summary>
  137:         ///
  138:         /// </summary>
  139:         public static NfcProject CurrentNfcProject
  140:         {
  141:             get
  142:             {
  143:                 var projectId = ConfigurationManager.AppSettings["projectId"];
  144:                 Ia.Cl.Models.Business.Nfc.Default.NfcProject nfcProject;
  145: 
  146:                 if (!string.IsNullOrEmpty(projectId) && int.TryParse(projectId, out int id))
  147:                 {
  148:                     nfcProject = (from n in Ia.Cl.Models.Business.Nfc.Default.NfcProjectList where n.Id == id select n).SingleOrDefault();
  149: 
  150:                     if (nfcProject == null)
  151:                     {
  152:                         throw new Exception("CurrentNfcProject is not defined in Ia.Cl.Models.Business.Nfc.Default.CurrentNfcProject.");
  153:                     }
  154:                 }
  155:                 else
  156:                 {
  157:                     nfcProject = null;
  158: 
  159:                     throw new Exception("CurrentNfcProject is not defined in Ia.Cl.Models.Business.Nfc.Default.CurrentNfcProject.");
  160:                 }
  161: 
  162:                 return nfcProject;
  163:             }
  164:         }
  165:         */
  166:  
  167:         ////////////////////////////////////////////////////////////////////////////
  168:  
  169:         /// <summary>
  170:         ///
  171:         /// </summary>
  172:         public static NfcProject NfcProjectById(int id)
  173:         {
  174:             var nfcProject = (from n in Ia.Cl.Models.Business.Nfc.Default.NfcProjectList where n.Id == id select n).SingleOrDefault();
  175:  
  176:             return nfcProject;
  177:         }
  178:  
  179:         ////////////////////////////////////////////////////////////////////////////
  180:  
  181:         /// <summary>
  182:         ///
  183:         /// </summary>
  184:         public static string NfcProjectNameById(int id)
  185:         {
  186:             string name;
  187:  
  188:             var nfcProject = (from n in Ia.Cl.Models.Business.Nfc.Default.NfcProjectList where n.Id == id select n).SingleOrDefault();
  189:  
  190:             name = nfcProject != null ? nfcProject.Name : string.Empty;
  191:  
  192:             return name;
  193:         }
  194:  
  195:         ////////////////////////////////////////////////////////////////////////////
  196:  
  197:         /// <summary>
  198:         ///
  199:         /// </summary>
  200:         public static NfcProject NfcProjectByApiKeyValue(string apiKeyValue)
  201:         {
  202:             NfcProject nfcProject;
  203:  
  204:             if (Guid.TryParse(apiKeyValue, out Guid guid))
  205:             {
  206:                 nfcProject = (from n in Ia.Cl.Models.Business.Nfc.Default.NfcProjectList where n.ApiKeyValue == guid.ToString() select n).SingleOrDefault();
  207:             }
  208:             else nfcProject = null;
  209:  
  210:             return nfcProject;
  211:         }
  212:  
  213:         ////////////////////////////////////////////////////////////////////////////
  214:         ////////////////////////////////////////////////////////////////////////////
  215:  
  216:         /// <summary>
  217:         ///
  218:         /// </summary>
  219:         public class UIdUrl
  220:         {
  221:             /// <summary/>
  222:             public string UId { get; set; }
  223:  
  224:             /// <summary/>
  225:             public string Url { get; set; }
  226:         }
  227:  
  228:         ////////////////////////////////////////////////////////////////////////////
  229:         ////////////////////////////////////////////////////////////////////////////
  230:  
  231:         /// <summary>
  232:         ///
  233:         /// </summary>
  234:         public class NfcProjectIdUIdUrlListItem
  235:         {
  236:             /// <summary/>
  237:             public int ProjectId { get; set; }
  238:  
  239:             /// <summary/>
  240:             public string Url { get; set; }
  241:  
  242:             /// <summary/>
  243:             public List<Ia.Cl.Models.Business.Nfc.Default.UIdUrl> uIdUrlList { get; set; }
  244:         }
  245:  
  246:         ////////////////////////////////////////////////////////////////////////////
  247:  
  248:         /// <summary>
  249:         ///
  250:         /// </summary>
  251:         public Default()
  252:         {
  253:         }
  254:  
  255:         ////////////////////////////////////////////////////////////////////////////
  256:  
  257:         /// <summary>
  258:         ///
  259:         /// </summary>
  260:         public static string Id(int projectId, string uId)
  261:         {
  262:             string id;
  263:  
  264:             id = projectId.ToString().PadLeft(4, '0') + uId.PadLeft(14, '0');
  265:  
  266:             /*
  267:             if (id.Length != fixedLengthOfId)
  268:             {
  269:                 throw new ArgumentOutOfRangeException(@"Id(): Id length is not " + fixedLengthOfId);
  270:             }
  271:             */
  272:  
  273:             return id;
  274:         }
  275:  
  276:         ////////////////////////////////////////////////////////////////////////////
  277:         ////////////////////////////////////////////////////////////////////////////
  278:     }
  279:  
  280:     ////////////////////////////////////////////////////////////////////////////
  281:     ////////////////////////////////////////////////////////////////////////////
  282: }