Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
        }