public async Task <ActionResult> Create(int projectId)
        {
            var project = await ProjectRepository.GetProjectAsync(projectId);

            if (project == null)
            {
                return(HttpNotFound());
            }

            var viewModel = new CreateMoneyTransferViewModel
            {
                ProjectId = projectId, Receiver = CurrentUserId,
            };

            Fill(viewModel, project);

            return(View(viewModel));
        }
        public async Task <ActionResult> Create(CreateMoneyTransferViewModel viewModel)
        {
            var project = await ProjectRepository.GetProjectAsync(viewModel.ProjectId);

            if (project == null)
            {
                return(HttpNotFound());
            }

            Fill(viewModel, project);

            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }

            var request = new CreateTransferRequest()
            {
                ProjectId     = viewModel.ProjectId,
                Sender        = viewModel.Sender,
                Receiver      = viewModel.Receiver,
                Amount        = viewModel.Money,
                OperationDate = viewModel.OperationDate,
                Comment       = viewModel.CommentText,
            };

            try
            {
                await FinanceService.CreateTransfer(request);
            }
            catch (Exception e)
            {
                ModelState.AddException(e);
                return(View(viewModel));
            }

            return(RedirectToAction("MoneySummary", "Finances", new { viewModel.ProjectId }));
        }
 private void Fill(CreateMoneyTransferViewModel viewModel, Project project)
 {
     viewModel.Masters        = project.GetMasterListViewModel();
     viewModel.HasAdminAccess =
         project.HasMasterAccess(CurrentUserId, acl => acl.CanManageMoney);
 }