public async Task <ViewResult> Summary(string selectedMonth) { // zjištění, který uživatel je přihlášen pro filtrování přemluvených her podle pobočky var user = await userManager.FindByNameAsync(User.Identity.Name); DateTime month = DateTime.Parse(selectedMonth); // získání všech zaměstnanců z databáze IEnumerable <Employee> employees = employeeRepository.GetAllEmployees(); // získání všech typů her z databáze IEnumerable <GameType> gameTypes = additionalGameRepostioty.GetAllGameTypes(); // inicializace modelu AdditionalGamesOverviewViewModel model = new AdditionalGamesOverviewViewModel(); model.SelectedDate = month; model.GameTypes = gameTypes; // uspořádání přemluvených her a výpočet provizí foreach (Employee employee in employees) { model.EmployeeGames.Add(GetEmployeeGames(employee, month, gameTypes, user.BranchOffice.Value)); } ViewBag.SelectedMonth = selectedMonth; ViewBag.BranchOfficeName = user.BranchOffice.Value == BranchOfficeEnum.Branik ? "Braník" : "Holešovice"; return(View(model)); }
public async Task <IActionResult> ExportToExcel(DateTime selectedDate) { await Task.Yield(); // získání přihlášeného uživatele pro filtrování přemluveenéch her podle pobočky var user = await userManager.FindByNameAsync(User.Identity.Name); string branchOfficeName = user.BranchOffice.Value == BranchOfficeEnum.Branik ? "Braník" : "Holešovice"; // získání všech zaměstnanců z databáze IEnumerable <Employee> employees = employeeRepository.GetAllEmployees(); // získání všech typů her z databáze IEnumerable <GameType> gameTypes = additionalGameRepostioty.GetAllGameTypes(); AdditionalGamesOverviewViewModel model = new AdditionalGamesOverviewViewModel(); model.SelectedDate = selectedDate; model.GameTypes = gameTypes; // uspořádání přemluvených her a výpočet provizí foreach (Employee employee in employees) { model.EmployeeGames.Add(GetEmployeeGames(employee, selectedDate, gameTypes, user.BranchOffice.Value)); } var stream = new MemoryStream(); string excelName = $"PremluveneHry-{branchOfficeName}-{DateTime.Now.ToString("yyyy-MM")}.xlsx"; // vytvoření XL workbooku using (var workbook = new XLWorkbook()) { // přidání listu var ws = workbook.Worksheets.Add("Přemluvené hry"); // počáteční hodnoty buněk pro zápis výsledků int rowStart = 1; char columnStart = 'C'; char columnEnd = 'C'; for (int i = 0; i < gameTypes.Count() - 1; i++) { columnEnd++; } // vyplnění a formátování názvů sloupců... ws.Cells("A1").Value = "Zaměstnanci"; ws.Cells("B1").Value = "Celkové prémie"; ws.Range("A1:A2").Merge(); ws.Range("B1:B2").Merge(); ws.Cell("A1").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; ws.Cell("A1").Style.Alignment.Vertical = XLAlignmentVerticalValues.Center; ws.Cell("B1").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; ws.Cell("B1").Style.Alignment.Vertical = XLAlignmentVerticalValues.Center; ws.Cell("B1").Style.Alignment.WrapText = true; ws.Cell(string.Format("{0}{1}", columnStart, rowStart)).Value = "Počty společných přemluvených her"; ws.Range(string.Format("{0}{1}:{2}{3}", columnStart, rowStart, columnEnd, rowStart)).Merge(); for (int i = 0; i < gameTypes.Count(); i++) { columnStart++; columnEnd++; } ws.Cell(string.Format("{0}{1}", columnStart, rowStart)).Value = "Počty sólo přemluvených her"; ws.Range(string.Format("{0}{1}:{2}{3}", columnStart, rowStart, columnEnd, rowStart)).Merge(); columnStart = 'C'; rowStart++; // výpis typů her pro společné přemluvené hry foreach (var item in gameTypes) { ws.Cells(string.Format("{0}{1}", columnStart, rowStart)).Value = string.Format("{0}", item.Name); columnStart++; } // výpis typů her pro sólo přemluvené hry foreach (var item in gameTypes) { ws.Cells(string.Format("{0}{1}", columnStart, rowStart)).Value = string.Format("{0}", item.Name); columnStart++; } columnStart = 'A'; columnEnd = 'A'; rowStart++; // naplnění tabulky hodnotami provizí a počty přemluvených her sečtených podle typů her foreach (var emp in model.EmployeeGames) { ws.Cells(string.Format("{0}{1}", columnStart, rowStart)).Value = string.Format("{0}", emp.Employee.Name); columnStart++; columnEnd++; ws.Cells(string.Format("{0}{1}", columnStart, rowStart)).Value = emp.TotalCommision; ws.Cell(string.Format("{0}{1}", columnStart, rowStart)).Style.NumberFormat.Format = "# ### kč"; columnStart++; columnEnd++; // počty společných přemluvených her foreach (var duoGame in emp.SummedDuoGames) { ws.Cells(string.Format("{0}{1}", columnStart, rowStart)).Value = duoGame.Count; columnStart++; columnEnd++; } // počty sólo přemluvených her foreach (var soloGame in emp.SummedSoloGames) { ws.Cells(string.Format("{0}{1}", columnStart, rowStart)).Value = soloGame.Count; columnStart++; columnEnd++; } columnStart = 'A'; rowStart++; } //var rngGamesCounts = ws.Range(string.Format("C3:{0}{1}", columnEnd, rowStart)); //rngGamesCounts.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; //var rngCommision = ws.Range(string.Format("B3:B{0}", rowStart)); //rngCommision.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; // zarovnání hodnot v buňkách ws.Columns(1, 30).AdjustToContents(); ws.Columns(1, 30).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; var colB = ws.Column("B"); colB.Width = 10; workbook.SaveAs(stream); } stream.Position = 0; // vrácení souboru užvateli return(File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", excelName)); }