Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 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);
     }
 }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }