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)); }