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); }
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); } }
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); } }
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); } }
public TEquip FindEquipmentById <TEquip>(int Id) where TEquip : class, IEquip { var bd = new CtsEquipContext <TEquip>(); return(bd.DbSet.Find(Id)); }