public async Task <IActionResult> AccountTransfers(int id, string fromDate, string toDate, string excel, string fullName, int page = 1)
        {
            User user = userService.FindUserByName(User.Identity.Name);


            List <StatementObjectViewModel> transfers = await transferService.GetAccountTransfers(id);

            if (fromDate != null)
            {
                transfers = transfers.Where(t => t.TransferDate >= DateTime.Parse(fromDate)).ToList();
            }
            if (toDate != null)
            {
                transfers = transfers.Where(t => t.TransferDate <= DateTime.Parse(toDate)).ToList();
            }
            Account account = await accountService.FindAccountById(id);

            List <ExchangeRate>       rates = exchangeRateService.GetExchangeRates();
            AccountTransfersViewModel model = new AccountTransfersViewModel {
                Transfers = transfers, Account = account, FromDate = fromDate, ToDate = toDate, FullName = fullName, Rates = rates
            };

            if (excel == "True")
            {
                return(ExportToExcel(model));
            }

            return(View(model));
        }
 public PhysicalFileResult ExportToExcel(AccountTransfersViewModel model)
 {
     string[] file = documentFormatService.CreateExcelStatement(model);
     return(PhysicalFile(file[0], file[1], file[2]));
 }
        public string[] CreateExcelStatement(AccountTransfersViewModel model)
        {
            var fileName = "Выписка-" + model.FullName + DateTime.Now.ToString("-yyyy-MM-dd--hh-mm-ss") + ".xlsx";
            var path     = Path.Combine(
                _appEnvironment.WebRootPath,
                $"statements\\");
            // Create the file using the FileInfo object
            var file = new FileInfo(path + fileName);

            using (var package = new ExcelPackage(file))
            {
                // add a new worksheet to the empty workbook
                ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sales list - " + DateTime.Now.ToShortDateString());

                // --------- Data and styling goes here -------------- //
                worksheet.Cells[1, 1].Value = "Клиент";
                worksheet.Cells[2, 1].Value = "Номер счета";
                worksheet.Cells[3, 1].Value = "Период";

                // Add the second row of header data
                worksheet.Cells[1, 2].Value = model.FullName;
                worksheet.Cells[2, 2].Value = string.Format("{0},{1}", model.Account.Number, model.Account.Currency.Name);
                worksheet.Cells[3, 2].Value = string.Format("{0} - {1}", model.FromDate, model.ToDate);

                worksheet.Cells[4, 1].Value = "№";
                worksheet.Cells[4, 2].Value = "Дата";
                worksheet.Cells[4, 3].Value = "Счет-кореспондент";
                worksheet.Cells[4, 4].Value = "Расход";
                worksheet.Cells[4, 5].Value = "Приход";
                worksheet.Cells[4, 6].Value = "Назначение платежа";
                worksheet.Cells[4, 7].Value = "Курс";
                int row    = 4;
                int number = 0;
                foreach (StatementObjectViewModel transfer in model.Transfers)
                {
                    row    = row + 1;
                    number = number + 1;
                    worksheet.Cells[row, 1].Value = number;
                    worksheet.Cells[row, 2].Value = transfer.TransferDate.ToString("d");
                    worksheet.Cells[row, 3].Value = transfer.AccountNumber;
                    worksheet.Cells[row, 4].Value = transfer.CreditAmount;
                    worksheet.Cells[row, 5].Value = transfer.DebitAmount;
                    worksheet.Cells[row, 6].Value = transfer.Comment;
                    worksheet.Cells[row, 7].Value = transfer.Rate;
                }

                worksheet.Column(1).Width = 13;
                worksheet.Column(2).Width = 20;
                worksheet.Column(3).Width = 21;
                worksheet.Column(4).Width = 14;
                worksheet.Column(5).Width = 14;
                worksheet.Column(6).Width = 26;
                worksheet.Column(7).Width = 17;
                package.Save();
            }
            string file_path = Path.Combine(_appEnvironment.ContentRootPath, path + fileName);
            string file_type = "application/xlsx";

            string[] dFile = { file_path, file_type, fileName };
            return(dFile);
        }