Exemplo n.º 1
0
        public async Task <IActionResult> Manage(int id)
        {
            var project = await this.projectService.GetAsync(id);

            if (!await this.projectService.IsWorkerInProjectAsync(id, this.User.Identity.Name))
            {
                return(this.Unauthorized());
            }

            var details = this.mapper.Map <ProjectDetailsViewModel>(project);

            var users = this.companyService
                        .GetUsers()
                        .AsQueryable()
                        .ProjectTo <UserListViewModel>()
                        .ToList();

            var model = new ProjectManageViewModel()
            {
                Details = details,
                Users   = users.Except(details.Workers)
            };

            return(this.View(model));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> DeleteTerms(ProjectManageViewModel model)
        {
            var termsId = model.EditingTerms.TermsId;
            await _projectService.DeleteTerms(termsId);

            return(RedirectToAction(nameof(Manage), new { id = model.EditingTerms.ProjectId, tab = model.EditingTerms.Category }));
        }
Exemplo n.º 3
0
        public async Task <IActionResult> SaveBalance(ProjectManageViewModel model)
        {
            if (ModelState.IsValid)
            {
                var balances = await _projectService.GetAnnualBalances(model.EditingBalance.ProjectId, model.EditingBalance.Year);

                //1. 检查和保存incoming
                var incoming = balances.Where(b => b.BalanceCategory == (int)BalanceCategory.Incoming).FirstOrDefault();
                if (incoming == null || incoming.Id <= 0)
                {
                    //新增
                    incoming = new AnnualBalance
                    {
                        ProjectId       = model.EditingBalance.ProjectId,
                        Year            = model.EditingBalance.Year,
                        BalanceCategory = (int)BalanceCategory.Incoming,
                    };
                }
                incoming.Balance = model.EditingBalance.Incoming;

                await _projectService.SaveBalance(incoming);

                //2. 检查和保存settle
                var settle = balances.Where(b => b.BalanceCategory == (int)BalanceCategory.Settlement).FirstOrDefault();
                if (settle == null || settle.Id <= 0)
                {
                    //新增
                    settle = new AnnualBalance
                    {
                        ProjectId       = model.EditingBalance.ProjectId,
                        Year            = model.EditingBalance.Year,
                        BalanceCategory = (int)BalanceCategory.Settlement,
                    };
                }
                settle.Balance = model.EditingBalance.Settlement;

                await _projectService.SaveBalance(settle);

                //3. 检查和保存retrieve
                var retrieve = balances.Where(b => b.BalanceCategory == (int)BalanceCategory.Retrievable).FirstOrDefault();
                if (retrieve == null || retrieve.Id <= 0)
                {
                    //新增
                    retrieve = new AnnualBalance
                    {
                        ProjectId       = model.EditingBalance.ProjectId,
                        Year            = model.EditingBalance.Year,
                        BalanceCategory = (int)BalanceCategory.Retrievable,
                    };
                }
                retrieve.Balance = model.EditingBalance.Retrievable;

                await _projectService.SaveBalance(retrieve);

                return(RedirectToAction(nameof(Manage), new { id = model.EditingBalance.ProjectId }));
            }
            return(StatusCode(500));
        }
Exemplo n.º 4
0
        public async Task <IActionResult> DeleteBalance(ProjectManageViewModel model)
        {
            var projectId = model.EditingBalance.ProjectId;
            var year      = model.EditingBalance.Year;
            var balances  = await _projectService.GetAnnualBalances(projectId, year);

            foreach (var b in balances)
            {
                await _projectService.DeleteBalance(b.Id);
            }
            return(RedirectToAction(nameof(Manage), new { id = projectId }));
        }
Exemplo n.º 5
0
        public async Task <IActionResult> SaveTerms(ProjectManageViewModel model)
        {
            if (ModelState.IsValid)
            {
                Terms terms = new Terms
                {
                    Id            = model.EditingTerms.TermsId,
                    ProjectId     = model.EditingTerms.ProjectId,
                    Provision     = model.EditingTerms.Provision,
                    Remarks       = model.EditingTerms.Remarks,
                    TermsCategory = (int)model.EditingTerms.Category,
                    TargetAmount  = model.EditingTerms.Amount,
                    TargetDate    = model.EditingTerms.OnDate,
                };

                await _projectService.SaveTerms(terms);

                return(RedirectToAction(nameof(Manage), new { id = model.EditingTerms.ProjectId, tab = model.EditingTerms.Category }));
            }
            return(StatusCode(500));
        }
Exemplo n.º 6
0
        public async Task <IActionResult> Manage(int id, string tab)
        {
            var project = await _projectService.RetriveProjectWithDetails(id, ProjectApiContent.WithBalanceAndTerms);

            if (project == null || project.ProjectId <= 0)
            {
                return(NotFound());
            }

            var model = ProjectManageViewModel.Create(project);

            if (string.IsNullOrWhiteSpace(tab))
            {
                ViewBag.ActiveTabName = TermsCategory.Settle.ToString();
            }
            else
            {
                ViewBag.ActiveTabName = tab;
            }

            return(View(model));
        }