示例#1
0
 /// <summary>
 /// 删除单位预算
 /// </summary>
 /// <param name="instBudgetId">单位预算ID</param>
 /// <returns></returns>
 public void Delete(int instBudgetId, Func <Application, CurrentUser, bool> privilege)
 {
     using (var ctx = new AspodesDB())
     {
         InstBudget instBudget = ctx.InstBudgets.FirstOrDefault(ib => ib.InstBudgetId == instBudgetId);
         if (null == instBudget)
         {
             throw new NotFoundException("未找到预算内容");
         }
         if (!privilege(instBudget.Application, UserHelper.GetCurrentUser()))
         {
             throw new UnauthorizationException();
         }
         //单位年度预算设置为级联删除,单位预算和它的年度预算同时删除
         ctx.InstBudgets.Remove(instBudget);
         ctx.SaveChanges();
     }
 }
示例#2
0
        /// <summary>
        /// 添加单位预算
        /// </summary>
        /// <param name="budgetDTO">单位预算信息</param>
        /// <returns>
        /// 需要下一步修改
        /// </returns>
        public InstBudget AddInstBudget(AddInstTotalWithAnnualBudget budgetDTO, Func <Application, CurrentUser, bool> privilege)
        {
            using (var ctx = new AspodesDB())
            {
                using (var transaction = ctx.Database.BeginTransaction())
                {
                    var application = ctx.Applications.FirstOrDefault(a => a.ApplicationId == budgetDTO.ApplicationId);
                    if (application == null)
                    {
                        throw new NotFoundException("未找到申请书");
                    }
                    var userInfo = UserHelper.GetCurrentUser();
                    if (!privilege(application, userInfo))
                    {
                        throw new UnauthorizationException();
                    }
                    InstBudget instBudget = new InstBudget()
                    {
                        InstituteId   = budgetDTO.InstituteId,
                        ApplicationId = budgetDTO.ApplicationId,
                        Amount        = budgetDTO.Amount
                    };

                    try
                    {
                        //如果有旧的记录,删除
                        var old = ctx.InstBudgets.FirstOrDefault(ib => ib.ApplicationId == budgetDTO.ApplicationId && ib.InstituteId == budgetDTO.InstituteId);
                        if (old != null)
                        {
                            ctx.InstBudgets.Remove(old);
                        }
                        //添加新的单位预算
                        instBudget = ctx.InstBudgets.Add(instBudget);
                        ctx.SaveChanges();

                        //添加单位预算的年度预算
                        if (budgetDTO.AnnualBudgets != null)
                        {
                            int year = 1;
                            foreach (var ab in budgetDTO.AnnualBudgets)
                            {
                                if (ab < 0)
                                {
                                    throw new OtherException("预算额不能是负数");
                                }
                                InstAnnualBudget annual = new InstAnnualBudget()
                                {
                                    InstBudgetId = instBudget.InstBudgetId,
                                    Year         = year++,
                                    Amount       = ab
                                };
                                ctx.InstAnnualBudgets.Add(annual);
                            }
                        }
                        ctx.SaveChanges();
                        transaction.Commit();
                        return(instBudget);
                    }
                    catch (Exception e)
                    {
                        transaction.Rollback();
                        throw e;
                    }
                }
            }
        }