public static bool AddOrUpdateIOTime(List <ParkGateIOTime> list) { if (list == null || list.Count == 0) { throw new ArgumentNullException("list"); } IParkGate factory = ParkGateFactory.GetFactory(); List <ParkGateIOTime> models = factory.QueryGateIOTime(list.First().GateID); List <ParkGateIOTime> updateModels = new List <ParkGateIOTime>(); List <ParkGateIOTime> addModels = new List <ParkGateIOTime>(); using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { try { dbOperator.BeginTransaction(); foreach (var item in list) { ParkGateIOTime model = models.FirstOrDefault(p => p.RuleType == 0 && p.WeekIndex == item.WeekIndex); if (model != null) { model.StartTime = item.StartTime; model.EndTime = item.EndTime; model.InOutState = item.InOutState; bool result = factory.UpdateIOTime(model, dbOperator); if (!result) { throw new MyException("修改星期规则失败"); } updateModels.Add(model); } else { item.RecordID = GuidGenerator.GetGuid().ToString(); bool result = factory.AddIOTime(item, dbOperator); if (!result) { throw new MyException("添加星期规则失败"); } addModels.Add(item); } } dbOperator.CommitTransaction(); } catch { dbOperator.RollbackTransaction(); throw; } } if (updateModels.Count > 0) { OperateLogServices.AddOperateLog <List <ParkGateIOTime> >(updateModels, OperateType.Update); } if (addModels.Count > 0) { OperateLogServices.AddOperateLog <List <ParkGateIOTime> >(addModels, OperateType.Add); } return(true); }
/// <summary> /// 修改通道规则 /// </summary> /// <param name="model"></param> /// <returns></returns> public static bool UpdateIOTime(List <ParkGateIOTime> list) { if (list == null || list.Count == 0) { throw new ArgumentNullException("list"); } using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { try { dbOperator.BeginTransaction(); foreach (var model in list) { IParkGate factory = ParkGateFactory.GetFactory(); bool result = factory.UpdateIOTime(model, dbOperator); if (!result) { throw new MyException("修改通道规则失败"); } } dbOperator.CommitTransaction(); } catch { dbOperator.RollbackTransaction(); throw; } } OperateLogServices.AddOperateLog <List <ParkGateIOTime> >(list, OperateType.Update); return(true); }