public async Task <ActionResult> ByMaster(int projectId, int masterId)
        {
            var project = await ProjectRepository.GetProjectWithFinances(projectId);

            var transfers =
                await FinanceReportRepository.GetMoneyTransfersForMaster(projectId, masterId);

            var user = await UserRepository.GetById(masterId);

            var operations = project.FinanceOperations
                             .Where(fo => fo.State == FinanceOperationState.Approved).ToArray();

            var payments = project.PaymentTypes
                           .Where(pt => pt.UserId == masterId)
                           .Select(pt => new PaymentTypeSummaryViewModel(pt, project.FinanceOperations))
                           .Where(m => m.Total != 0).OrderByDescending(m => m.Total).ToArray();


            var viewModel = new MoneyInfoForUserViewModel(project,
                                                          transfers,
                                                          user,
                                                          UriService,
                                                          operations,
                                                          payments,
                                                          CurrentUserId);

            return(View(viewModel));
        }
        public async Task <ActionResult> MoneySummary(int projectId)
        {
            var project = await ProjectRepository.GetProjectWithFinances(projectId);

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

            var transfers =
                await FinanceReportRepository.GetAllMoneyTransfers(projectId);

            var payments = project.PaymentTypes
                           .Select(pt => new PaymentTypeSummaryViewModel(pt, project.FinanceOperations))
                           .Where(m => m.Total != 0).OrderByDescending(m => m.Total).ToArray();

            var viewModel = new MoneyInfoTotalViewModel(project,
                                                        transfers,
                                                        UriService,
                                                        project.FinanceOperations.ToArray(),
                                                        payments,
                                                        CurrentUserId);

            return(View(viewModel));
        }
        public async Task <ActionResult> SummaryByMaster(string token, int projectId)
        {
            var project = await ProjectRepository.GetProjectWithFinances(projectId);

            var guid = new Guid(token.FromHexString());

            var acl = project.ProjectAcls.SingleOrDefault(a => a.Token == guid);

            if (acl == null)
            {
                return(Content("Unauthorized"));
            }

            var masterOperations = project.FinanceOperations.ToArray();

            var masterTransfers = await FinanceReportRepository.GetAllMoneyTransfers(projectId);

            var summary =
                MasterBalanceBuilder.ToMasterBalanceViewModels(masterOperations, masterTransfers, projectId);

            var generator = ExportDataService.GetGenerator(ExportType.Csv, summary,
                                                           new MoneySummaryByMasterExporter(UriService));

            return(await ReturnExportResult(project.ProjectName + ": " + "money-summary", generator));
        }