Exemplo n.º 1
0
        Task IProjectGrain.PostProjectExpenses(ProjectExpenses source)
        {
            if (Kernel == null)
            {
                throw new ProjectNotFoundException();
            }

            Database.Execute((DbTransaction dbTransaction) =>
            {
                source.InsertSelf(dbTransaction);
                Kernel.UpdateSelf(dbTransaction,
                                  NameValue.Set <ProjectInfo>(p => p.TotalReimbursementAmount, p => p.TotalReimbursementAmount + source.ReimbursementAmount));
            });
            ProjectExpensesList.Add(source);
            return(Task.CompletedTask);
        }
Exemplo n.º 2
0
        async Task IProjectGrain.DeleteProjectExpenses(long id)
        {
            if (Kernel == null)
            {
                throw new ProjectNotFoundException();
            }

            if (!await IsMyProject())
            {
                throw new SecurityException("非请毋删!");
            }

            ProjectExpenses projectExpenses = null;

            foreach (ProjectExpenses item in ProjectExpensesList)
            {
                if (item.Id == id)
                {
                    projectExpenses = item;
                    break;
                }
            }

            if (projectExpenses == null)
            {
                throw new ValidationException(String.Format("未找到 {0} 可删除的报销记录!", Kernel.ProjectName));
            }

            Database.Execute((DbTransaction dbTransaction) =>
            {
                projectExpenses.DeleteSelf(dbTransaction);
                Kernel.UpdateSelf(dbTransaction,
                                  NameValue.Set <ProjectInfo>(p => p.TotalReimbursementAmount, p => p.TotalReimbursementAmount - projectExpenses.ReimbursementAmount));
            });
            ProjectExpensesList.Remove(projectExpenses);
        }