Ejemplo n.º 1
0
        public static List <T> GetUserAuthorizedEquipment <T>(CtsDbContext cdb, IIdentity user) where T : class, IEquip
        {
            var    userLogin = user.Name.Split(new char[] { '\\' }).Last();
            var    domain    = user.Name.Split(new char[] { '\\' }).First();
            string equipName = typeof(T).ToString();
            var    equipment = Cacher.Instance.TryRead(domain + userLogin + equipName) as List <T>;

            if (equipment == null)
            {
                equipment = new List <T>();
                var locations = GetUserLocations(cdb, user);
                if (locations != null)
                {
                    var locationsArray = locations.Select(x => x.ID).ToList();
                    var genericContext = new CtsEquipContext <T>();
                    equipment.AddRange(genericContext.DbSet.Where(n => locationsArray.Contains(n.LocationID)).ToList());
                }
                if (equipment.Count > 0)
                {
                    Cacher.Instance.Write(domain + userLogin + equipName, equipment);
                }
            }

            return(equipment);
        }
Ejemplo n.º 2
0
        private static bool SyncFromCentralToLocal <TTransfer, TEquip>(ConnectionStringSettings connectionStringSettings)
            where TTransfer : class, ITransfer
            where TEquip : class, IEquip
        {
            List <TTransfer> centralTransferList = new List <TTransfer>();
            string           stringForLogger     = "";

            int[] scalesArray;

            try
            {
                List <DateTime> time = new List <DateTime>();

                using (CtsEquipContext <TEquip> centralDB = new CtsEquipContext <TEquip>("centralDBConnection"))
                {
                    scalesArray = centralDB.DbSet.Where(x => x.LocationID == connectionStringSettings.Name.ToString()).Select(m => m.ID).ToArray();
                }

                using (CtsTransferContext <TTransfer> centralDB = new CtsTransferContext <TTransfer>("centralDBConnection"))
                {
                    centralTransferList.AddRange(centralDB.DbSet.Where(x => scalesArray.Contains((int)x.EquipID))
                                                 .Where(n => n.OperatorName != "System Platform")
                                                 .Where(x => x.TransferTimeStamp > DbFunctions.AddDays(System.DateTime.Now, -2)));
                }

                if (centralTransferList.Count != 0)
                {
                    using (CtsTransferContext <TTransfer> localDB = new CtsTransferContext <TTransfer>(connectionStringSettings.ConnectionString))
                    {
                        using (var transaction = localDB.Database.BeginTransaction())
                        {
                            foreach (var t in centralTransferList)
                            {
                                if (t is IHaveAnalysis transfer)
                                {
                                    transfer.AnalysisID = null;
                                }
                                localDB.DbSet.AddOrUpdate(t as TTransfer);
                                stringForLogger = String.Concat(stringForLogger, t.ID, ";");
                            }

                            localDB.SaveChanges();
                            transaction.Commit();
                        }
                    }
                }
                return(true);
            }
            catch (Exception ex)
            {
                lock (log)
                {
                    log.Message(ex);
                }
                return(false);
            }
        }
Ejemplo n.º 3
0
        private static bool SyncFromLocalToCental <TTransfer, TEquip>(ConnectionStringSettings connectionStringSettings)
            where TTransfer : class, ITransfer
            where TEquip : class, IEquip
        {
            List <TTransfer> localTransferList = new List <TTransfer>();
            string           stringForLogger   = "";

            int[] scalesArray;
            var   scalesTime = new Dictionary <int, DateTime>();

            try
            {
                using (CtsEquipContext <TEquip> centralDB = new CtsEquipContext <TEquip>("centralDBConnection"))
                {
                    scalesArray = centralDB.DbSet.Where(x => x.LocationID == connectionStringSettings.Name.ToString()).Select(m => m.ID).ToArray();
                }

                using (CtsTransferContext <TTransfer> centralDB = new CtsTransferContext <TTransfer>("centralDBConnection"))
                {
                    foreach (var scale in scalesArray)
                    {
                        DateTime lastTime = new DateTime(2018, 01, 01);
                        var      transfer = centralDB.DbSet.Where(x => x.EquipID == scale).OrderByDescending(t => t.TransferTimeStamp).FirstOrDefault();
                        if (transfer != null)
                        {
                            lastTime = transfer.TransferTimeStamp;
                        }
                        scalesTime.Add(scale, lastTime);
                    }
                }

                using (CtsTransferContext <TTransfer> localDB = new CtsTransferContext <TTransfer>(connectionStringSettings.ConnectionString))
                {
                    foreach (var scale in scalesTime)
                    {
                        localTransferList.AddRange(localDB.DbSet.Where(s => s.EquipID == scale.Key)
                                                   .Where(x => x.OperatorName == "System Platform").Where(t => t.TransferTimeStamp > scale.Value));
                    }
                }

                if (localTransferList.Count != 0)
                {
                    using (CtsTransferContext <TTransfer> centralDB = new CtsTransferContext <TTransfer>("centralDBConnection"))
                    {
                        using (var transaction = centralDB.Database.BeginTransaction())
                        {
                            foreach (var t in localTransferList)
                            {
                                TTransfer transfer = t;
                                transfer.LasEditDateTime = System.DateTime.Now;
                                centralDB.DbSet.Add(transfer);
                                stringForLogger = String.Concat(stringForLogger, t.ID, ";");
                            }

                            centralDB.SaveChanges();
                            transaction.Commit();
                        }
                    }
                }

                _logger.Trace(string.Format("{0} Successfully synchronized FromLocalToCentral {1}: {2}", connectionStringSettings.Name.ToString(), typeof(TTransfer).ToString(), stringForLogger));
                return(true);
            }
            catch (Exception ex)
            {
                _logger.Error(string.Format("{0} Unsuccess with FromLocalToCentral {1}", connectionStringSettings.Name.ToString(), typeof(TTransfer).ToString()));
                _logger.Error(ex.ToString());

                return(false);
            }
        }
Ejemplo n.º 4
0
        private static bool SyncFromLocalToCental <TTransfer, TEquip>(ConnectionStringSettings connectionStringSettings)
            where TTransfer : class, ITransfer
            where TEquip : class, IEquip
        {
            List <TTransfer> localTransferList = new List <TTransfer>();

            int[] scalesArray;
            var   scalesTime = new Dictionary <int, DateTime>();

            try
            {
                using (CtsEquipContext <TEquip> centralDB = new CtsEquipContext <TEquip>("centralDBConnection"))
                {
                    scalesArray = centralDB.DbSet.Where(x => x.LocationID == connectionStringSettings.Name.ToString()).Select(m => m.ID).ToArray();
                }

                using (CtsTransferContext <TTransfer> centralDB = new CtsTransferContext <TTransfer>("centralDBConnection"))
                {
                    foreach (var scale in scalesArray)
                    {
                        DateTime lastTime = new DateTime(2018, 01, 01);
                        var      transfer = centralDB.DbSet.Where(x => x.EquipID == scale).OrderByDescending(t => t.TransferTimeStamp).FirstOrDefault();
                        if (transfer != null)
                        {
                            lastTime = transfer.TransferTimeStamp;
                        }
                        scalesTime.Add(scale, lastTime);
                    }
                }

                List <DateTime> time = new List <DateTime>();

                using (CtsTransferContext <TTransfer> localDB = new CtsTransferContext <TTransfer>(connectionStringSettings.ConnectionString))
                {
                    foreach (var scale in scalesTime)
                    {
                        localTransferList.AddRange(localDB.DbSet.Where(s => s.EquipID == scale.Key)
                                                   .Where(x => x.OperatorName == "System Platform").Where(t => t.TransferTimeStamp > scale.Value));

                        time = localDB.DbSet.Select(x => x.TransferTimeStamp).ToList();
                    }
                }

                if (localTransferList.Count != 0)
                {
                    using (CtsTransferContext <TTransfer> centralDB = new CtsTransferContext <TTransfer>("centralDBConnection"))
                    {
                        foreach (var t in localTransferList)
                        {
                            TTransfer transfer = t;
                            transfer.LasEditDateTime = System.DateTime.Now;
                            centralDB.DbSet.Add(transfer);
                        }
                        centralDB.SaveChanges();
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                lock (log)
                {
                    log.Message(ex);
                }
                return(false);
            }
        }
Ejemplo n.º 5
0
        public TEquip FindEquipmentById <TEquip>(int Id) where TEquip : class, IEquip
        {
            var bd = new CtsEquipContext <TEquip>();

            return(bd.DbSet.Find(Id));
        }