/// <summary> /// 月租车恢复使用 /// </summary> /// <param name="cardGrantId"></param> /// <returns></returns> public static bool CarRestoreUse(string grantId) { IParkGrant factory = ParkGrantFactory.GetFactory(); ParkGrant grant = factory.QueryByGrantId(grantId); if (grant == null) { throw new MyException("获取授权信息失败"); } if (grant.State == ParkGrantState.Normal) { return(true); } ParkCarType carType = ParkCarTypeServices.QueryParkCarTypeByRecordId(grant.CarTypeID); if (carType == null) { throw new MyException("获取车型类型失败"); } IParkCardSuspendPlan planFactory = ParkCardSuspendPlanFactory.GetFactory(); using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { try { dbOperator.BeginTransaction(); ParkCardSuspendPlan plan = planFactory.QueryByGrantId(grantId); DateTime newEndDate = ComputeParkGrantNewEndDate(grant, plan); grant.BeginDate = grant.BeginDate == null ? DateTime.Now.Date : grant.BeginDate; bool result = factory.RestoreUse(grantId, grant.BeginDate, newEndDate, dbOperator); if (!result) { throw new MyException("恢复暂停失败"); } result = planFactory.Delete(grantId, dbOperator); if (!result) { throw new MyException("取消暂停计划失败"); } dbOperator.CommitTransaction(); ParkGrant dbGrant = factory.QueryByGrantId(grantId); if (dbGrant != null) { OperateLogServices.AddOperateLog <ParkGrant>(dbGrant, OperateType.Update); } OperateLogServices.AddOperateLog(OperateType.Update, string.Format("CarRestore.GrantID:{0}", grantId)); return(result); } catch (Exception ex) { dbOperator.RollbackTransaction(); throw ex; } } }
public bool Add(ParkCardSuspendPlan model, DbOperator dbOperator) { model.DataStatus = DataStatus.Normal; model.LastUpdateTime = DateTime.Now; model.HaveUpdate = SystemDefaultConfig.DataUpdateFlag; model.CreateTime = DateTime.Now; StringBuilder strSql = new StringBuilder(); strSql.Append("insert into ParkCardSuspendPlan(RecordId,GrantID,StartDate,EndDate,CreateTime,HaveUpdate,LastUpdateTime,DataStatus)"); strSql.Append(" values(@RecordId,@GrantID,@StartDate,@EndDate,@CreateTime,@HaveUpdate,@LastUpdateTime,@DataStatus)"); dbOperator.ClearParameters(); dbOperator.AddParameter("RecordId", model.RecordId); dbOperator.AddParameter("GrantID", model.GrantID); dbOperator.AddParameter("StartDate", model.StartDate); dbOperator.AddParameter("EndDate", model.EndDate); dbOperator.AddParameter("CreateTime", model.CreateTime); dbOperator.AddParameter("LastUpdateTime", model.LastUpdateTime); dbOperator.AddParameter("HaveUpdate", model.HaveUpdate); dbOperator.AddParameter("DataStatus", (int)model.DataStatus); return(dbOperator.ExecuteNonQuery(strSql.ToString()) > 0); }
private static DateTime ComputeParkGrantNewEndDate(ParkGrant grant, ParkCardSuspendPlan plan) { int suspendDays = (DateTime.Now - plan.StartDate).Days; if (suspendDays <= 0) { if (grant.EndDate == null) { return(DateTime.Now); } else { return(grant.EndDate); } } if (grant.EndDate.Date < DateTime.Now.Date) { return(DateTime.Now.Date.AddDays(suspendDays)); } return(grant.EndDate.Date.AddDays(suspendDays)); }
/// <summary> /// 月租车暂停使用 /// </summary> /// <param name="start"></param> /// <param name="end"></param> /// <param name="grantId"></param> /// <returns></returns> public static bool CarSuspendUse(DateTime start, DateTime end, string grantId) { IParkGrant factory = ParkGrantFactory.GetFactory(); ParkGrant grant = factory.QueryByGrantId(grantId); if (grant == null) { throw new MyException("获取授权信息失败"); } if (grant.State == ParkGrantState.Stop) { throw new MyException("停止状态不能设置,如需设置请先启用"); } if (grant.State == ParkGrantState.Pause) { throw new MyException("暂停状态不能设置,请先恢复使用后重新设置"); } ParkCarType carType = ParkCarTypeServices.QueryParkCarTypeByRecordId(grant.CarTypeID); if (carType == null) { throw new MyException("获取车型类型失败"); } //if (carType.BaseTypeID != BaseCarType.MonthlyRent && carType.BaseTypeID != BaseCarType.WorkCar // && carType.BaseTypeID != BaseCarType.VIPCar) throw new MyException("该车辆不能使用此功能"); IParkCardSuspendPlan planFactory = ParkCardSuspendPlanFactory.GetFactory(); ParkCardSuspendPlan plan = planFactory.QueryByGrantId(grantId); using (DbOperator dbOperator = ConnectionManager.CreateConnection()) { try { dbOperator.BeginTransaction(); if (plan != null) { if (start.Date < DateTime.Now.Date) { throw new MyException("开始时间不能小于系统当前时间"); } bool result = planFactory.Update(start, end, grantId, dbOperator); if (!result) { throw new MyException("保存暂停计划失败"); } if (start.Date == DateTime.Now.Date) { result = factory.Update(grantId, ParkGrantState.Pause, dbOperator); if (!result) { throw new MyException("修改使用状态失败"); } } } else { if (start.Date < DateTime.Now.Date) { throw new MyException("开始时间不能小于系统当前时间"); } ParkCardSuspendPlan model = new ParkCardSuspendPlan(); model.RecordId = GuidGenerator.GetGuidString(); model.StartDate = start; model.EndDate = end; model.GrantID = grantId; bool result = planFactory.Add(model, dbOperator); if (!result) { throw new MyException("保存暂停计划失败"); } if (start.Date == DateTime.Now.Date) { result = factory.Update(grantId, ParkGrantState.Pause, dbOperator); if (!result) { throw new MyException("修改使用状态失败"); } } } dbOperator.CommitTransaction(); string endDate = end == DateTime.MinValue ? end.ToString("yyyy-MM-dd") : string.Empty; OperateLogServices.AddOperateLog(OperateType.Update, string.Format("grantId:{0},startDate:{1},endDate:{2}", grantId, start.ToString("yyyy-MM-dd"), endDate)); return(true); } catch (Exception ex) { dbOperator.RollbackTransaction(); throw ex; } } }