Beispiel #1
0
        public IActionResult Word(string userId)
        {
            string path         = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "template.docx");
            string templatePath = AppDomain.CurrentDomain.BaseDirectory + "temp.docx";

            System.IO.File.Copy(path, templatePath, true);
            List <ProjectReport> projectReports = new List <ProjectReport>();
            var user = _context.ApplicationUsers.FirstOrDefault(e => e.Id == userId);

            var listEmployees = _context.ListEmployees
                                .Include(e => e.Project)
                                .Where(e => e.ApplicationUserId == userId)
                                .ToList();

            List <Project> project = new List <Project>();

            foreach (var listempl in listEmployees)
            {
                var tempProject = listempl.Project;
                project.Add(tempProject);
            }


            user.Position           = _context.Positions.FirstOrDefault(e => e.Id == user.PositionId);
            user.QualificationLevel = _context.QualificationLevels.FirstOrDefault(e => e.Id == user.QualificationLevelId);
            foreach (var tempProject in project)
            {
                var module = _context.Modules.Where(e => e.ProjectId == tempProject.Id).ToList();
                List <ModuleReport> moduleReports = new List <ModuleReport>();
                foreach (var tempModule in tempProject.Module)
                {
                    var          task         = _context.Tasks.Where(e => e.ModuleId == tempModule.Id && e.ApplicationUserId == userId).ToList();
                    ModuleReport moduleReport = new ModuleReport();
                    moduleReport.Module = tempModule;
                    moduleReport.Tasks  = task;
                    moduleReports.Add(moduleReport);
                }
                ProjectReport projectReport = new ProjectReport();
                projectReport.Modules = moduleReports;
                projectReport.Project = tempProject;
                projectReports.Add(projectReport);
            }

            DateTime dateTime     = DateTime.Now;
            var      valuesToFill = GetContent(projectReports, user, dateTime, dateTime);

            using (var outputDocument = new TemplateProcessor(templatePath)
                                        .SetRemoveContentControls(true))
            {
                outputDocument.FillContent(valuesToFill);
                outputDocument.SaveChanges();
            }

            var    bytes     = System.IO.File.ReadAllBytes(templatePath);
            string file_name = "department.docx";

            System.IO.File.Delete(templatePath);
            return(File(bytes, DOCX_FILE_MIME_TYPE, file_name));
        }
        public IActionResult ReportSelect(ReportViewModel report)
        {
            if (!dateScale(false, report.FirstDate, report.LastDate))
            {
                ViewData["userId"] = new SelectList(_context.ApplicationUsers, "Id", "UserName");
                DateTime startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
                DateTime endDate   = startDate.AddMonths(1).AddDays(-1);
                ViewBag.firstDate    = startDate.ToString("yyyy-MM-dd");
                ViewBag.secondDate   = endDate.ToString("yyyy-MM-dd");
                ViewBag.ErrorMassage = "Задайте верные данные, конечная дата должна быть пожже начальной или они должны быть равны";
                return(View());
            }
            string uploadPath   = Path.Combine(hostingEnvironment.WebRootPath, "template");
            string path         = Path.Combine(uploadPath, "template.docx");
            string templatePath = Path.Combine(uploadPath + "temp.docx");

            System.IO.File.Copy(path, templatePath, true);
            List <ProjectReport> projectReports = new List <ProjectReport>();
            var user = _context.ApplicationUsers.FirstOrDefault(e => e.Id == report.userId);

            var utils = _context.Utils.Find(1);

            if (utils == null)
            {
                ViewData["userId"]   = new SelectList(_context.ApplicationUsers, "Id", "UserName");
                ViewBag.ErrorMassage = "Укажите конфигурационный данные! Этими правами обладает администратор!";
                return(View());
            }
            if (utils.firstParameter == "")
            {
                ViewData["userId"]   = new SelectList(_context.ApplicationUsers, "Id", "UserName");
                ViewBag.ErrorMassage = "Задайте имя главному бухгалтеру! Этими правами обладает администратор!";
                return(View());
            }
            if (utils.secondParameter == "")
            {
                ViewData["userId"]   = new SelectList(_context.ApplicationUsers, "Id", "UserName");
                ViewBag.ErrorMassage = "Задайте имя Координатору разработки программного обеспечения и тех. задания! Этими правами обладает администратор!";
                return(View());
            }
            if (utils.thirdParameter == "")
            {
                ViewData["userId"]   = new SelectList(_context.ApplicationUsers, "Id", "UserName");
                ViewBag.ErrorMassage = "Задайте имя Специалисту по управлению проектной деятельностью! Этими правами обладает администратор!";
                return(View());
            }
            var listEmployees = _context.ListEmployees
                                .Include(e => e.Project)
                                .Where(e => e.ApplicationUserId == report.userId)
                                .ToList();

            if (listEmployees.Count == 0)
            {
                ViewData["userId"]   = new SelectList(_context.ApplicationUsers, "Id", "UserName");
                ViewBag.ErrorMassage = "У выбранного вами пользователя нет проектов. Поручите ему проекты!";
                return(View());
            }

            List <Project> project = new List <Project>();

            foreach (var listempl in listEmployees)
            {
                var tempProject = listempl.Project;
                project.Add(tempProject);
            }

            int counter = 0;

            user.Position           = _context.Positions.FirstOrDefault(e => e.Id == user.PositionId);
            user.QualificationLevel = _context.QualificationLevels.FirstOrDefault(e => e.Id == user.QualificationLevelId);
            if (user.PositionId == null)
            {
                ViewData["userId"]   = new SelectList(_context.ApplicationUsers, "Id", "UserName");
                ViewBag.ErrorMassage = "У выбранного вами пользователя нет должности. Задайте ему должность! На это способен администратор";
                return(View());
            }
            if (user.QualificationLevel == null)
            {
                ViewData["userId"]   = new SelectList(_context.ApplicationUsers, "Id", "UserName");
                ViewBag.ErrorMassage = "У выбранного вами пользователя не указан уровень знаний. Укажите ему уровень знаний! На это способен администратор";
                return(View());
            }
            foreach (var tempProject in project)
            {
                var module = _context.Modules.Where(e => e.ProjectId == tempProject.Id).ToList();
                List <ModuleReport> moduleReports = new List <ModuleReport>();
                foreach (var tempModule in tempProject.Module)
                {
                    var task = _context.Tasks.Where(e => e.ModuleId == tempModule.Id && e.ApplicationUserId == report.userId).Include(e => e.Appendix).ToList();
                    for (int i = 0; i < task.Count; i++)
                    {
                        if (DataPicker(task[i], report.FirstDate, report.LastDate))
                        {
                            task.Remove(task[i]);
                        }
                        else
                        {
                            counter++;
                        }
                    }
                    ModuleReport moduleReport = new ModuleReport();
                    moduleReport.Module = tempModule;
                    moduleReport.Tasks  = task;
                    moduleReports.Add(moduleReport);
                }
                ProjectReport projectReport = new ProjectReport();
                projectReport.Modules = moduleReports;
                projectReport.Project = tempProject;
                projectReports.Add(projectReport);
            }

            if (counter == 0)
            {
                ViewData["userId"]   = new SelectList(_context.ApplicationUsers, "Id", "UserName");
                ViewBag.ErrorMassage = "У выбранного вами пользователя нет задач за текущий период!";
                return(View());
            }

            var valuesToFill = GetContent(projectReports, user, report.FirstDate, report.LastDate, utils);

            using (var outputDocument = new TemplateProcessor(templatePath)
                                        .SetRemoveContentControls(true))
            {
                outputDocument.FillContent(valuesToFill);
                outputDocument.SaveChanges();
            }

            var    bytes     = System.IO.File.ReadAllBytes(templatePath);
            string file_name = "department.docx";

            System.IO.File.Delete(templatePath);
            return(File(bytes, DOCX_FILE_MIME_TYPE, file_name));
        }