public async Task <ActionResult> Import(IFormFile file) { if (!ModelState.IsValid) { throw new BindException(ModelState); } RoleFilter RoleFilter = new RoleFilter { Skip = 0, Take = int.MaxValue, Selects = RoleSelect.ALL }; List <Role> Roles = await RoleService.List(RoleFilter); WorkflowDefinitionFilter WorkflowDefinitionFilter = new WorkflowDefinitionFilter { Skip = 0, Take = int.MaxValue, Selects = WorkflowDefinitionSelect.ALL }; List <WorkflowDefinition> WorkflowDefinitions = await WorkflowDefinitionService.List(WorkflowDefinitionFilter); List <WorkflowStep> WorkflowSteps = new List <WorkflowStep>(); using (ExcelPackage excelPackage = new ExcelPackage(file.OpenReadStream())) { ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.FirstOrDefault(); if (worksheet == null) { return(Ok(WorkflowSteps)); } int StartColumn = 1; int StartRow = 1; int IdColumn = 0 + StartColumn; int WorkflowDefinitionIdColumn = 1 + StartColumn; int NameColumn = 2 + StartColumn; int RoleIdColumn = 3 + StartColumn; int SubjectMailForRejectColumn = 4 + StartColumn; int BodyMailForRejectColumn = 5 + StartColumn; for (int i = StartRow; i <= worksheet.Dimension.End.Row; i++) { if (string.IsNullOrEmpty(worksheet.Cells[i + StartRow, StartColumn].Value?.ToString())) { break; } string IdValue = worksheet.Cells[i + StartRow, IdColumn].Value?.ToString(); string WorkflowDefinitionIdValue = worksheet.Cells[i + StartRow, WorkflowDefinitionIdColumn].Value?.ToString(); string NameValue = worksheet.Cells[i + StartRow, NameColumn].Value?.ToString(); string RoleIdValue = worksheet.Cells[i + StartRow, RoleIdColumn].Value?.ToString(); string SubjectMailForRejectValue = worksheet.Cells[i + StartRow, SubjectMailForRejectColumn].Value?.ToString(); string BodyMailForRejectValue = worksheet.Cells[i + StartRow, BodyMailForRejectColumn].Value?.ToString(); WorkflowStep WorkflowStep = new WorkflowStep(); WorkflowStep.Name = NameValue; WorkflowStep.SubjectMailForReject = SubjectMailForRejectValue; WorkflowStep.BodyMailForReject = BodyMailForRejectValue; Role Role = Roles.Where(x => x.Id.ToString() == RoleIdValue).FirstOrDefault(); WorkflowStep.RoleId = Role == null ? 0 : Role.Id; WorkflowStep.Role = Role; WorkflowDefinition WorkflowDefinition = WorkflowDefinitions.Where(x => x.Id.ToString() == WorkflowDefinitionIdValue).FirstOrDefault(); WorkflowStep.WorkflowDefinitionId = WorkflowDefinition == null ? 0 : WorkflowDefinition.Id; WorkflowStep.WorkflowDefinition = WorkflowDefinition; WorkflowSteps.Add(WorkflowStep); } } WorkflowSteps = await WorkflowStepService.Import(WorkflowSteps); if (WorkflowSteps.All(x => x.IsValidated)) { return(Ok(true)); } else { List <string> Errors = new List <string>(); for (int i = 0; i < WorkflowSteps.Count; i++) { WorkflowStep WorkflowStep = WorkflowSteps[i]; if (!WorkflowStep.IsValidated) { string Error = $"Dòng {i + 2} có lỗi:"; if (WorkflowStep.Errors.ContainsKey(nameof(WorkflowStep.Id))) { Error += WorkflowStep.Errors[nameof(WorkflowStep.Id)]; } if (WorkflowStep.Errors.ContainsKey(nameof(WorkflowStep.WorkflowDefinitionId))) { Error += WorkflowStep.Errors[nameof(WorkflowStep.WorkflowDefinitionId)]; } if (WorkflowStep.Errors.ContainsKey(nameof(WorkflowStep.Name))) { Error += WorkflowStep.Errors[nameof(WorkflowStep.Name)]; } if (WorkflowStep.Errors.ContainsKey(nameof(WorkflowStep.RoleId))) { Error += WorkflowStep.Errors[nameof(WorkflowStep.RoleId)]; } if (WorkflowStep.Errors.ContainsKey(nameof(WorkflowStep.SubjectMailForReject))) { Error += WorkflowStep.Errors[nameof(WorkflowStep.SubjectMailForReject)]; } if (WorkflowStep.Errors.ContainsKey(nameof(WorkflowStep.BodyMailForReject))) { Error += WorkflowStep.Errors[nameof(WorkflowStep.BodyMailForReject)]; } Errors.Add(Error); } } return(BadRequest(Errors)); } }
public async Task <FileResult> Export([FromBody] WorkflowDirection_WorkflowDirectionFilterDTO WorkflowDirection_WorkflowDirectionFilterDTO) { if (!ModelState.IsValid) { throw new BindException(ModelState); } MemoryStream memoryStream = new MemoryStream(); using (ExcelPackage excel = new ExcelPackage(memoryStream)) { #region WorkflowDirection var WorkflowDirectionFilter = ConvertFilterDTOToFilterEntity(WorkflowDirection_WorkflowDirectionFilterDTO); WorkflowDirectionFilter.Skip = 0; WorkflowDirectionFilter.Take = int.MaxValue; WorkflowDirectionFilter = WorkflowDirectionService.ToFilter(WorkflowDirectionFilter); List <WorkflowDirection> WorkflowDirections = await WorkflowDirectionService.List(WorkflowDirectionFilter); var WorkflowDirectionHeaders = new List <string[]>() { new string[] { "Id", "WorkflowDefinitionId", "FromStepId", "ToStepId", "SubjectMailForCreator", "SubjectMailForNextStep", "BodyMailForCreator", "BodyMailForNextStep", } }; List <object[]> WorkflowDirectionData = new List <object[]>(); for (int i = 0; i < WorkflowDirections.Count; i++) { var WorkflowDirection = WorkflowDirections[i]; WorkflowDirectionData.Add(new Object[] { WorkflowDirection.Id, WorkflowDirection.WorkflowDefinitionId, WorkflowDirection.FromStepId, WorkflowDirection.ToStepId, WorkflowDirection.SubjectMailForCreator, WorkflowDirection.SubjectMailForNextStep, WorkflowDirection.BodyMailForCreator, WorkflowDirection.BodyMailForNextStep, }); } excel.GenerateWorksheet("WorkflowDirection", WorkflowDirectionHeaders, WorkflowDirectionData); #endregion #region WorkflowStep var WorkflowStepFilter = new WorkflowStepFilter(); WorkflowStepFilter.Selects = WorkflowStepSelect.ALL; WorkflowStepFilter.OrderBy = WorkflowStepOrder.Id; WorkflowStepFilter.OrderType = OrderType.ASC; WorkflowStepFilter.Skip = 0; WorkflowStepFilter.Take = int.MaxValue; List <WorkflowStep> WorkflowSteps = await WorkflowStepService.List(WorkflowStepFilter); var WorkflowStepHeaders = new List <string[]>() { new string[] { "Id", "WorkflowDefinitionId", "Name", "RoleId", "SubjectMailForReject", "BodyMailForReject", } }; List <object[]> WorkflowStepData = new List <object[]>(); for (int i = 0; i < WorkflowSteps.Count; i++) { var WorkflowStep = WorkflowSteps[i]; WorkflowStepData.Add(new Object[] { WorkflowStep.Id, WorkflowStep.WorkflowDefinitionId, WorkflowStep.Name, WorkflowStep.RoleId, WorkflowStep.SubjectMailForReject, WorkflowStep.BodyMailForReject, }); } excel.GenerateWorksheet("WorkflowStep", WorkflowStepHeaders, WorkflowStepData); #endregion #region WorkflowDefinition var WorkflowDefinitionFilter = new WorkflowDefinitionFilter(); WorkflowDefinitionFilter.Selects = WorkflowDefinitionSelect.ALL; WorkflowDefinitionFilter.OrderBy = WorkflowDefinitionOrder.Id; WorkflowDefinitionFilter.OrderType = OrderType.ASC; WorkflowDefinitionFilter.Skip = 0; WorkflowDefinitionFilter.Take = int.MaxValue; List <WorkflowDefinition> WorkflowDefinitions = await WorkflowDefinitionService.List(WorkflowDefinitionFilter); var WorkflowDefinitionHeaders = new List <string[]>() { new string[] { "Id", "Name", "WorkflowTypeId", "StartDate", "EndDate", "StatusId", } }; List <object[]> WorkflowDefinitionData = new List <object[]>(); for (int i = 0; i < WorkflowDefinitions.Count; i++) { var WorkflowDefinition = WorkflowDefinitions[i]; WorkflowDefinitionData.Add(new Object[] { WorkflowDefinition.Id, WorkflowDefinition.Name, WorkflowDefinition.WorkflowTypeId, WorkflowDefinition.StartDate, WorkflowDefinition.EndDate, WorkflowDefinition.StatusId, }); } excel.GenerateWorksheet("WorkflowDefinition", WorkflowDefinitionHeaders, WorkflowDefinitionData); #endregion excel.Save(); } return(File(memoryStream.ToArray(), "application/octet-stream", "WorkflowDirection.xlsx")); }