internal static decimal ConvertQuantityToStandardUnit(string uom, decimal quantity)
        {
            // if alread a StandarUnit, then no need to convert
            using (DBContextWithConnectionString context = new DBContextWithConnectionString()) {
                if (!context.DoesConnectionStringExist)
                {
                    // probably for Unit Testing, so use
                    return(quantity);
                }

                var found = context.StandardUnits.Find(uom);
                if (found != null)
                {
                    return(quantity);
                }

                // not found, so convert
                var sourceUnitMap = context.SourceUnitMaps.Find(uom);
                if (sourceUnitMap == null)
                {
                    throw new Exception("cannot find UOM mapping for " + uom);
                }
                var foundConversion = context.Conversions.Find(sourceUnitMap.StandardUnit);
                if (foundConversion == null)
                {
                    throw new Exception("cannot find UOM conversion for " + uom);
                }
                quantity = quantity * foundConversion.Factor.Value;
            }
            return(quantity);
        }
        internal static TagMap LookupTag(string tag, string plant)
        {
            TagMap tm = null;

            using (DBContextWithConnectionString context = new DBContextWithConnectionString()) {
                if (context.DoesConnectionStringExist)
                {
                    tm = context.TagMaps.Find(new object[] { tag, plant });
                    return(tm);
                }
                else
                {
                    // probably for Unit Testing, so use
                    return(new TagMap()
                    {
                        Tag = "EP Sweet Crude Trucks", DefaultUnit = "abc", MaterialNumber = "abc", WorkCenter = "123", Plant = plant, DefaultValuationType = "asd"
                    });
                }

                /*
                 * if (tm == null) {
                 *  tm = new TagMap();
                 *  tm.Tag = tag;
                 *  tm.Plant = plant;
                 *  tm.DefaultValuationType = "SUNCOR";
                 *  tm.StandardUnit = context.StandardUnits.ToArray()[0];
                 *  tm.DefaultUnit = context.StandardUnits.ToArray()[0].Name;
                 *  tm.MaterialNumber = "999";
                 *  tm.WorkCenter = "123";
                 *  context.TagMaps.Add(tm);
                 *  context.SaveChanges();
                 * }
                 */
            }
        }
 public static List <TagBalance> GetAllTagBalances()
 {
     using (DBContextWithConnectionString context = new DBContextWithConnectionString()) {
         var items = context.TagBalances.ToList();
         return(items);
     }
 }
 public static void SaveTagBalance(String file, SuncorProductionFile pf, List <TagBalance> tb)
 {
     using (DBContextWithConnectionString context = new DBContextWithConnectionString()) {
         Batch batch = new Batch();
         batch.Id        = pf.BatchId.ToString();
         batch.Created   = DateTime.Now;
         batch.CreatedBy = "System";
         batch.Filename  = file;
         context.Batches.Add(batch);
         foreach (var item in tb)
         {
             TagBalance found = context.TagBalances.Find(new object[] { item.Tag, item.BalanceDate });
             if (found == null)
             {
                 batch.TagBalances.Add(item);
             }
             else
             {
                 UpdateTagBalance(found, item);
             }
         }
         context.SaveChanges();
         pf.SavedRecords = tb;
     }
 }
 public static void RecordFailure(String plantName, string fileName, int successfulRecordCount, int failedRecordCount, string msg)
 {
     using (DBContextWithConnectionString context = new DBContextWithConnectionString()) {
         TransactionEvent te = new TransactionEvent()
         {
             Plant = plantName, Filename = fileName, SuccessfulRecordCount = 0, FailedRecordCount = failedRecordCount, ErrorMessage = msg
         };
         context.TransactionEvents.Add(te);
         context.SaveChanges();
     }
 }
        public static string UpdateTagMappings(string plant, DataTable dt)
        {
            string        output     = "";
            List <TagMap> existingTM = null;
            List <TagMap> toAdd      = new List <TagMap>();
            List <TagMap> toChange   = new List <TagMap>();

            using (DBContextWithConnectionString context = new DBContextWithConnectionString()) {
                existingTM = context.TagMaps.Where(t => t.Plant == plant).ToList();
            }
            foreach (DataRow r in dt.AsEnumerable())
            {
                TagMap current = TagMapFromRow(r);
                if (current.Plant != plant)
                {
                    continue;                          // ignore other plant tags
                }
                TagMap found = existingTM.SingleOrDefault(t => t.Plant == current.Plant && t.Tag == current.Tag);
                if (found == null)
                {
                    toAdd.Add(current);
                    output += "adding " + current.Plant + "," + current.Tag + "\r\n";
                }
                else
                {
                    existingTM.Remove(found);
                    if (UpdateValues(found, current))
                    {
                        toChange.Add(current);
                        output += "updated " + current.Plant + "," + current.Tag + "\r\n";
                    }
                }
            }
            existingTM.ForEach(t => { output += "deleting " + t.Plant + "," + t.Tag + "\r\n"; });

            using (DBContextWithConnectionString context = new DBContextWithConnectionString()) {
                context.TagMaps.RemoveRange(existingTM);
                context.TagMaps.AddRange(toAdd);
                toChange.ForEach(chg => { UpdateValues(context.TagMaps.Single(t => t.Plant == chg.Plant && t.Tag == chg.Tag), chg); });
                context.SaveChanges();
            }
            return(output);
        }
        public static void RecordStats(SuncorProductionFile pf, string filename, List <WarningMessage> warnings)
        {
            using (DBContextWithConnectionString context = new DBContextWithConnectionString()) {
                TransactionEvent te = new TransactionEvent()
                {
                    Plant = pf.Plant, Filename = filename, SuccessfulRecordCount = pf.SavedRecords.Count, FailedRecordCount = pf.FailedRecords.Count
                };

                foreach (var item in warnings.Select(y => new { Tag = y.Tag, Message = y.Message }).Distinct())
                {
                    te.TransactionEventDetails.Add(new TransactionEventDetail()
                    {
                        Tag = item.Tag, ErrorMessage = item.Message
                    });
                }
                List <WarningMessage> noMappings  = warnings.Where(t => t.Message == "No TagMapping").ToList();
                List <WarningMessage> otherErrors = warnings.Where(t => t.Message != "No TagMapping").ToList();
                te.ErrorMessage = "";
                if (otherErrors.Count > 0)
                {
                    te.ErrorMessage = String.Join(",", otherErrors.Select(y => y.Message).Distinct().ToArray());
                }
                if (noMappings.Count > 0)
                {
                    te.ErrorMessage += (te.ErrorMessage.Length > 0 ? " and " : "") + noMappings.Count + " records with no tag mappings";
                }
                if (pf.SavedRecords.Count == 0 && te.ErrorMessage == "")
                {
                    te.ErrorMessage = "File rejected due to no successfuly records";
                }
                if (te.ErrorMessage == "")
                {
                    te.ErrorMessage = "File completed successfully";
                }
                context.TransactionEvents.Add(te);
                context.SaveChanges();
            }
        }
Esempio n. 8
0
        public static void SetConnection(ExecutionContext context, ILogger log)
        {
            IConfiguration iconfig = new ConfigurationBuilder()
                                     .AddEnvironmentVariables() // needed for the ConnectionString - comes from local.settings.json or Azure Function Configuration
//            .AddJsonFile("local.settings.json", true, true)
                                     .Build();
            string cs = iconfig["ConnectionStrings:DataHub"];

            string aw = Utilities.GetEnvironmentVariable("AzureWebJobsStorage");

            //            log.LogInformation($"Connection String:" + cs);
            //log.LogInformation($"AW Storage:" + aw);
            //AzureFileHelper.WriteFile("system/" + ".AzureDataHubProduction.SS.log", cs == null ? "empty - connection" : "cs:" + cs, true);
            //AzureFileHelper.WriteFile("system/" + ".AzureDataHubProduction.SS.log", aw == null ? "empty - storage" : "env:" + aw, true);
            DBContextWithConnectionString.SetConnectionString(cs);

            string Url  = iconfig["MuleSoftUrl"];
            string User = iconfig["MuleSoftUser"];
            string PW   = iconfig["MuleSoftPassword"];
            string stop = iconfig["DoNotSendToMuleSoft"];

            MulesoftPush.SetConnection(stop == "true" ? null : Url, User, PW);
        }
Esempio n. 9
0
 public void Setup()
 {
     DBContextWithConnectionString.SetConnectionString("");
 }
 public void Setup()
 {
     DBContextWithConnectionString.SetConnectionString("Data Source=(local);Initial Catalog=suncor;Integrated Security=True;MultipleActiveResultSets=True;");
 }
Esempio n. 11
0
 public static List <TransactionEvent> GetTransactions()
 {
     using (DBContextWithConnectionString context = new DBContextWithConnectionString()) {
         return(context.TransactionEvents.ToList());
     }
 }