public static bool Update(ParkFeeRule model) { if (model == null) { throw new ArgumentNullException("model"); } ParkArea parkArea = ParkAreaServices.QueryByRecordId(model.AreaID); if (parkArea == null) { throw new MyException("获取区域信息失败"); } IParkFeeRule factory = ParkFeeRuleFactory.GetFactory(); if (model.IsOffline) { List <ParkFeeRule> models = factory.QueryParkFeeRuleByParkingId(parkArea.PKID); if (models.Exists(p => p.IsOffline == true && p.FeeRuleID != model.FeeRuleID)) { throw new MyException("该车场已存在脱机收费规则了"); } } model.ParkFeeRuleDetails.ForEach(p => { p.RuleDetailID = GuidGenerator.GetGuid().ToString(); p.RuleID = model.FeeRuleID; }); bool result = factory.Update(model); if (result) { OperateLogServices.AddOperateLog <ParkFeeRule>(model, OperateType.Update); } return(result); }
public bool Add(ParkFeeRule model) { using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { try { dbOperator.BeginTransaction(); bool result = AddFeeRule(model, dbOperator); if (!result) { throw new MyException("添加收费规则失败"); } result = AddFeeRuleDetails(model.ParkFeeRuleDetails, dbOperator); if (!result) { throw new MyException("添加收费规则明细失败"); } dbOperator.CommitTransaction(); return(true); } catch { dbOperator.RollbackTransaction(); throw; } } }
public ParkFeeRuleView ToParkFeeRuleView(ParkFeeRule rule, List <ParkArea> areas, List <ParkCarType> carTyeps, List <ParkCarModel> carModels) { this.AreaID = rule.AreaID; ParkArea area = areas.FirstOrDefault(p => p.AreaID == rule.AreaID); if (area != null) { this.AreaName = area.AreaName; } this.CarTypeID = rule.CarTypeID; ParkCarType card = carTyeps.FirstOrDefault(p => p.CarTypeID == rule.CarTypeID); if (card != null) { this.CarTypeName = card.CarTypeName; } this.CarModelID = rule.CarModelID; ParkCarModel carModel = carModels.FirstOrDefault(p => p.CarModelID == rule.CarModelID); if (carModel != null) { this.CarModelName = carModel.CarModelName; } this.RuleName = rule.RuleName; this.FeeRuleID = rule.FeeRuleID; this.FeeType = rule.FeeType; this.RuleText = rule.RuleText; this.FeeTypeName = ((FeeType)rule.FeeType).GetDescription(); this.LastUpdateTime = rule.LastUpdateTime; this.IsOffline = rule.IsOffline; FillParkFeeRuleDetail(rule.ParkFeeRuleDetails); return(this); }
public JsonResult SaveEdit(ParkFeeRuleView model) { try { ParkFeeRule ruleModel = model.ToParkFeeRule(); bool result = false; if (string.IsNullOrWhiteSpace(model.FeeRuleID)) { var parkingFeeRules = ParkFeeRuleServices.QueryFeeRules(model.ParkingID, model.CarTypeID, model.CarModelID); if (parkingFeeRules != null && parkingFeeRules.Count > 0 && parkingFeeRules.Exists(p => p.AreaID == model.AreaID)) { throw new MyException("该区域已经存在相同的收费规则了"); } result = ParkFeeRuleServices.Add(ruleModel); if (!result) { throw new MyException("添加收费规则失败"); } } else { var parkingFeeRules = ParkFeeRuleServices.QueryFeeRules(model.ParkingID, model.CarTypeID, model.CarModelID); if (parkingFeeRules != null && parkingFeeRules.Count > 0 && parkingFeeRules.Exists(p => p.AreaID == model.AreaID && p.FeeRuleID != model.FeeRuleID)) { throw new MyException("该区域已经存在相同的收费规则了!"); } result = ParkFeeRuleServices.Update(ruleModel); if (!result) { throw new MyException("修改收费规则失败"); } } return(Json(MyResult.Success())); } catch (MyException ex) { return(Json(MyResult.Error(ex.Message))); } catch (Exception ex) { ExceptionsServices.AddExceptions(ex, "收费规则管理设置收费规则失败"); return(Json(MyResult.Error("设置收费规则失败"))); } }
private bool UpdateFeeRule(ParkFeeRule model, DbOperator dbOperator) { model.LastUpdateTime = DateTime.Now; model.HaveUpdate = SystemDefaultConfig.DataUpdateFlag; StringBuilder strSql = new StringBuilder(); strSql.Append("update ParkFeeRule set RuleName=@RuleName,FeeType=@FeeType,CarTypeID=@CarTypeID,CarModelID=@CarModelID,AreaID=@AreaID"); strSql.Append(" ,RuleText=@RuleText,LastUpdateTime=@LastUpdateTime,HaveUpdate=@HaveUpdate,IsOffline=@IsOffline where FeeRuleID=@FeeRuleID"); dbOperator.ClearParameters(); dbOperator.AddParameter("FeeRuleID", model.FeeRuleID); dbOperator.AddParameter("RuleName", model.RuleName); dbOperator.AddParameter("FeeType", (int)model.FeeType); dbOperator.AddParameter("CarTypeID", model.CarTypeID); dbOperator.AddParameter("CarModelID", model.CarModelID); dbOperator.AddParameter("AreaID", model.AreaID); dbOperator.AddParameter("RuleText", model.RuleText); dbOperator.AddParameter("LastUpdateTime", model.LastUpdateTime); dbOperator.AddParameter("HaveUpdate", model.HaveUpdate); dbOperator.AddParameter("IsOffline", model.IsOffline); return(dbOperator.ExecuteNonQuery(strSql.ToString()) > 0); }
public ParkFeeRule ToParkFeeRule() { ParkFeeRule rule = new ParkFeeRule(); rule.FeeRuleID = this.FeeRuleID; rule.AreaID = this.AreaID; rule.RuleName = this.RuleName; rule.FeeType = this.FeeType; rule.CarTypeID = this.CarTypeID; rule.CarModelID = this.CarModelID; rule.RuleText = this.RuleText; rule.IsOffline = this.IsOffline; List <ParkFeeRuleDetail> details = new List <ParkFeeRuleDetail>(); details.Add(GetFirstFeeRuleDetail()); if (this.FeeType == FeeType.DayAndNight) { details.Add(GetLastFeeRuleDetail()); } rule.ParkFeeRuleDetails = details; return(rule); }
private bool AddFeeRule(ParkFeeRule model, DbOperator dbOperator) { model.DataStatus = DataStatus.Normal; model.LastUpdateTime = DateTime.Now; model.HaveUpdate = SystemDefaultConfig.DataUpdateFlag; StringBuilder strSql = new StringBuilder(); strSql.Append("insert into ParkFeeRule(FeeRuleID,RuleName,FeeType,CarTypeID,CarModelID,AreaID,LastUpdateTime,HaveUpdate,DataStatus,RuleText,IsOffline)"); strSql.Append(" values(@FeeRuleID,@RuleName,@FeeType,@CarTypeID,@CarModelID,@AreaID,@LastUpdateTime,@HaveUpdate,@DataStatus,@RuleText,@IsOffline)"); dbOperator.ClearParameters(); dbOperator.AddParameter("FeeRuleID", model.FeeRuleID); dbOperator.AddParameter("RuleName", model.RuleName); dbOperator.AddParameter("FeeType", (int)model.FeeType); dbOperator.AddParameter("CarTypeID", model.CarTypeID); dbOperator.AddParameter("CarModelID", model.CarModelID); dbOperator.AddParameter("AreaID", model.AreaID); dbOperator.AddParameter("RuleText", model.RuleText); dbOperator.AddParameter("LastUpdateTime", model.LastUpdateTime); dbOperator.AddParameter("HaveUpdate", model.HaveUpdate); dbOperator.AddParameter("DataStatus", (int)model.DataStatus); dbOperator.AddParameter("IsOffline", model.IsOffline); return(dbOperator.ExecuteNonQuery(strSql.ToString()) > 0); }
public static decimal TestCalculateFee(DateTime startTime, DateTime endTime, string feeRuleId) { IParkFeeRule factory = ParkFeeRuleFactory.GetFactory(); ParkFeeRule rule = factory.QueryParkFeeRuleByFeeRuleId(feeRuleId); if (rule == null) { throw new MyException("获取规则失败"); } switch (rule.FeeType) { case FeeType.DayAndNight: { IFeeRule IFee = new DayNight(); IFee.ParkingBeginTime = startTime; IFee.ParkingEndTime = endTime; IFee.FeeRule = rule; IFee.listRuleDetail = rule.ParkFeeRuleDetails; return(IFee.CalcFee()); } case FeeType.Hour12: { IFeeRule IFee = new Hours12(); IFee.ParkingBeginTime = startTime; IFee.ParkingEndTime = endTime; IFee.FeeRule = rule; IFee.listRuleDetail = rule.ParkFeeRuleDetails; return(IFee.CalcFee()); } case FeeType.Hour24: { IFeeRule IFee = new Hours24(); IFee.ParkingBeginTime = startTime; IFee.ParkingEndTime = endTime; IFee.FeeRule = rule; IFee.listRuleDetail = rule.ParkFeeRuleDetails; return(IFee.CalcFee()); } case FeeType.NaturalDay: { IFeeRule IFee = new NaturalDay(); IFee.ParkingBeginTime = startTime; IFee.ParkingEndTime = endTime; IFee.FeeRule = rule; IFee.listRuleDetail = rule.ParkFeeRuleDetails; return(IFee.CalcFee()); } case FeeType.Custom: { IFeeRule IFee = new Userdefined2(); IFee.ParkingBeginTime = startTime; IFee.ParkingEndTime = endTime; IFee.FeeRule = rule; IFee.FeeText = rule.RuleText; return(IFee.CalcFee()); } default: throw new MyException("算费规则不存在"); } }