public BaseResult CreateAnnualBudget(AnnualBudget annualBudget) { BaseResult result = null; if (annualBudget != null) { annualBudget.EntityState = EntityState.Added; annualBudget.CreationDate = DateTime.Now; annualBudget.LastModifited = annualBudget.CreationDate; // set related entities to added if (annualBudget.MonthlyBudgets != null && annualBudget.MonthlyBudgets.Count > 0) { annualBudget.MonthlyBudgets.Select(b => { b.Id = 0; b.EntityState = EntityState.Added; return(b); }).ToList(); } try { annualBudgetBL.Add(annualBudget); result = new OperationResult(ResultStatus.Success, Reflection.GetCurrentMethodName()) { Value = annualBudget.Id }; } catch (Exception Ex) { _log.Error(string.Format("Cannot save new annual plan.\r\n{0}", Ex.Message), Ex); result = new OperationResult(ResultStatus.Exception, Reflection.GetCurrentMethodName()) { Message = "Cannot save new annual plan.", Value = Ex.Message }; } } return(result); }
/// <summary> /// 添加一条年度预算条目 /// </summary> /// <param name="annualBudgetItemDTO">年度预算条目信息</param> /// <returns> /// 添加成功返回ResponseStatus.success, /// 否则返回ResponseStatus.unkown_error和错误信息 /// </returns> public GetAnnualBudgetItemDTO AddOrUpdateAnnualBudgetItem(AddAnnualBudgetItemDTO annualBudgetItemDTO, Func <Application, CurrentUser, bool> privilege) { if (annualBudgetItemDTO.Amount < 0) { throw new OtherException("额度值不能为负数"); } using (var ctx = new AspodesDB()) { var application = ctx.Applications.FirstOrDefault(a => a.ApplicationId == annualBudgetItemDTO.ApplicationId); if (null == application) { throw new NotFoundException(); } if (!privilege(application, UserHelper.GetCurrentUser())) { throw new UnauthorizationException("您没有权限修改或者超过了申请书提交日期"); } AnnualBudget budget = ctx.AnnualBudgets.FirstOrDefault(ab => ab.ApplicationId == annualBudgetItemDTO.ApplicationId && ab.Year == annualBudgetItemDTO.Year); //年度预算是否存在,不存在添加一个 if (budget == null) { budget = new AnnualBudget() { ApplicationId = annualBudgetItemDTO.ApplicationId, Year = annualBudgetItemDTO.Year, Amount = 0 }; budget = ctx.AnnualBudgets.Add(budget); } ctx.SaveChanges(); AnnualBudgetItem item = Mapper.Map <AnnualBudgetItem>(annualBudgetItemDTO); //预算条目是否存在,不存在,添加,存在,更新数据 var oldItem = ctx.AnnualBudgetItems.FirstOrDefault(abi => abi.AnnualBudgetId == budget.AnnualBudgetId && abi.SubjectId == annualBudgetItemDTO.SubjectId); if (oldItem == null) { item.AnnualBudgetId = budget.AnnualBudgetId; item = ctx.AnnualBudgetItems.Add(item); budget.Amount += item.Amount; } else { budget.Amount -= oldItem.Amount; oldItem.Reason = annualBudgetItemDTO.Reason; oldItem.Amount = annualBudgetItemDTO.Amount; budget.Amount += oldItem.Amount; } ctx.SaveChanges(); return(Mapper.Map <GetAnnualBudgetItemDTO>(item)); } }
public bool DefaultAddEntity(IEntity Entity) { bool actionResult = true; if (Entity != null) { Entity.EntityState = EntityState.Added; try { if (Entity is AnnualBudget) { AnnualBudget ab = Entity as AnnualBudget; // set related entities to added if (ab.MonthlyBudgets != null && ab.MonthlyBudgets.Count > 0) { ab.MonthlyBudgets.Select(b => { b.Id = 0; b.EntityState = EntityState.Added; return(b); }).ToList(); } annualBudgetBL.Add(Entity as AnnualBudget); } else if (Entity is MonthlyBudget) { MonthlyBudget mb = Entity as MonthlyBudget; // set related entities to added if (mb.Expenses != null && mb.Expenses.Count > 0) { mb.Expenses.Select(b => { b.Id = 0; b.EntityState = EntityState.Added; return(b); }).ToList(); } monthlyBudgetBL.Add(Entity as MonthlyBudget); } else if (Entity is Expense) { expenseBL.Add(Entity as Expense); } else if (Entity is MonthlyPlanTemplate) { monthlyTemplateBL.Add(Entity as MonthlyPlanTemplate); } else { actionResult = false; } } catch (Exception Ex) { string errMessage = "Save new entity failed."; _log.Error(string.Format("{0} : {1} {2}", this.GetType().Name, errMessage + Environment.NewLine, Ex.Message), Ex); } } return(actionResult); }
public static AnnualPlanViewModel MapToViewModel(this AnnualBudget annual) { if (annual != null) { return(new AnnualPlanViewModel { AnnualBudgetId = annual.Id, CreationDate = annual.CreationDate, LastModified = annual.LastModifited, AnnualBudgetName = annual.AnnualBudgetName }); } else { return(null); } }
public static AnnualBudget MapToModel(this AnnualPlanViewModel annualVM) { AnnualBudget budget = null; if (annualVM != null) { budget = new AnnualBudget() { Id = annualVM.AnnualBudgetId, CreationDate = annualVM.CreationDate, LastModifited = annualVM.LastModified, AnnualBudgetName = annualVM.AnnualBudgetName }; } return(budget); }
public AnnualBudget GetAnnualBudget(int AnnualBudgetId) { AnnualBudget annualBudget = null; if (AnnualBudgetId != 0) { try { annualBudget = annualBudgetBL.GetById(AnnualBudgetId, ab => ab.MonthlyBudgets); } catch (Exception Ex) { _log.Error(string.Format("{0} : Failed to get annual budget by Id {1} : \r\n{2}", Reflection.GetCurrentMethodName(), AnnualBudgetId, Ex.Message), Ex); throw; } } return(annualBudget); }
public BaseResult UpdateAnnualPlan(AnnualBudget annualBudget) { BaseResult result = null; if (annualBudget != null) { try { dynamic businessLayer = businessLayers[typeof(AnnualBudget)]; if (businessLayer != null) { annualBudget.LastModifited = DateTime.Now; annualBudget.EntityState = EntityState.Modified; // save the budget item entity businessLayer.Update(annualBudget); // update the monthly plan relevant fields result = new OperationResult(ResultStatus.Success) { Value = annualBudget.Id }; } } catch (Exception Ex) { _log.Error(string.Format("{0} : Cannot update annual budget plan.\r\n{1}", this.GetType().Name, Ex.Message), Ex); result = new OperationResult(ResultStatus.Exception, Reflection.GetCurrentMethodName()) { Message = "Cannot update annual budget plan item.", Value = Ex.Message }; } } else { result = new OperationResult(ResultStatus.Failure, Reflection.GetCurrentMethodName()) { Message = "Monthly budget plan cannot be null", Value = null }; } return(result); }
public BaseResult DeleteAnnualBudget(AnnualBudget AnnualBudget) { List <BaseResult> results = new List <BaseResult>(); BaseResult result = null; bool partialResultsContainsError = false; if (AnnualBudget != null) { AnnualBudget.EntityState = EntityState.Deleted; // Delete annual budget and all it's related child entities foreach (MonthlyBudget mb in AnnualBudget.MonthlyBudgets) { // delete monthly budget try { var partialResult = DeleteMonthlyBudget(mb); if (partialResult.Status != ResultStatus.Success) { partialResultsContainsError = true; results.AddRange(partialResult.Value as List <BaseResult>); } } catch (Exception Ex) { _log.Error(string.Format("{0} : Unable to delete related monthly plan (ID: {1}). {2}", Reflection.GetCurrentMethodName(), mb.Id, Ex.Message), Ex); // Handle cases of unable to delete monthly plans partialResultsContainsError = true; results.Add(new OperationResult(ResultStatus.Exception, Reflection.GetCurrentMethodName()) { Message = "Unable to delete a related monthly plan", Value = Ex.Message }); } } if (partialResultsContainsError == false) { try { // delete the main entity from the database annualBudgetBL.Remove(AnnualBudget); // remove the relation to the old entities AnnualBudget.MonthlyBudgets = null; var id = AnnualBudget.Id; result = new OperationResult(ResultStatus.Success, "DeleteMonthlyBudget") { Value = id }; } catch (Exception Ex) { _log.Error(string.Format("Cannot fully annual monthly plan.\r\n{0}", Ex.Message), Ex); result = new OperationResult(ResultStatus.Exception, Reflection.GetCurrentMethodName()) { Message = "Cannot delete annual plan.", Value = Ex.Message }; } } else { result = new OperationResult(ResultStatus.Failure, Reflection.GetCurrentMethodName()) { Value = results }; } } return(result); }