public async Task <IActionResult> UploadDepartmentExcel(DepartmentCollectionModel model) { var depts = model.depts; var entities = depts.Select(u => u.ToEntity()); var rs = new List <DepartmentErrorableModel>(); foreach (var item in entities) { try { await _coreRep.UpdateOrAddDepartmentByCode(item, await getCurrentUser()); if (item.ParentId != null) { item.Parent = await _coreRep.GetDepartmentById(item.ParentId ?? 0); } var irs = new DepartmentErrorableModel(item); rs.Add(irs); } catch (Exception e) { var irs = new DepartmentErrorableModel(item); irs.messages.Add(MessageModel.CreateError(e.Message + " ------" + e.StackTrace)); rs.Add(irs); } } return(Ok(new ResponseModel(rs))); }
public async Task <IActionResult> ReviewDepartmentExcel() { var file = Request.Form.Files[0]; var rs = new List <DepartmentErrorableModel>(); await FileHelper.scanExcel(file, 6, async (header, row) => { var dept = new DepartmentErrorableModel(); try { for (var i = 0; i < header.Cells.Count; i++) { if (row.Cells.Count > i) { await dept.UpdateDepartmentFromCell(header.Cells[i].StringCellValue, row.Cells[i], async(p) => { return(await _coreRep.GetDepartments(query: _context.Departments.Where(u => u.Code == p))); }); } } } catch (Exception e) { dept.messages.Add(MessageModel.CreateError(e.Message, e.Source)); } rs.Add(dept); }); return(Ok(new ResponseModel(rs))); }
public async Task <IActionResult> ReadEmployeeExcel() { var file = Request.Form.Files[0]; var rs = new List <EmployeeErrorableModel>(); await FileHelper.scanExcel(file, 6, async (header, row) => { var employee = new EmployeeErrorableModel(); employee.person = new ApiModels.Core.PersonModel(); try { for (var i = 0; i < header.Cells.Count; i++) { await employee.UpdateEmployeeFromCell(header.Cells[i].StringCellValue, row.Cells[i], async(p) => { return(await _coreRep.ListEmployees(filter: p)); }, async(p) => { return(await _coreRep.GetDepartments(filter: p)); }); } employee.person.AutoGenerateDisplayName(); employee.person.AutoGenerateFullName(); } catch (Exception e) { employee.messages.Add(MessageModel.CreateError(e.Message + ". " + e.StackTrace)); } rs.Add(employee); }); return(Ok(new ResponseModel(rs))); }
public async Task UpdateEmployeeFromCell(string header, ICell cell, Func <dynamic, Task <List <Employee> > > getEmp, Func <dynamic, Task <List <Department> > > getDept) { if (cell == null && cell.CellType == CellType.Blank) { return; } header = header.ToLower(); if (header == "code") { var code = cell.StringCellValue; var emp = await getEmp(new { Code = code }); if (emp.Count > 0) { messages.Add(MessageModel.CreateWarning("EMPLOYEE_CODE_EXISTED", header)); } this.code = code; } else if (header == "firstname") { person.firstname = cell.StringCellValue; } else if (header == "lastname") { person.lastname = cell.StringCellValue; } else if (header == "email") { person.email = cell.StringCellValue; } else if (header == "birthday") { person.birthday = cell.DateCellValue; } else if (header == "id-number") { person.identityNumber = cell.StringCellValue; } else if (header == "department") { var dept = await getDept(new { Code = cell.StringCellValue }); if (dept.Count > 0) { var curDept = dept.First(); this.dept = new DepartmentModel(curDept); } else { messages.Add(MessageModel.CreateError("INVALID DEPARMENT", header)); } } }
public async Task UpdateDepartmentFromCell(string header, ICell cell, Func <string, Task <ICollection <Department> > > getDept) { if (cell == null || cell.CellType == CellType.Blank) { return; } if (header == "code") { var curDept = await getDept(cell.StringCellValue); if (curDept != null) { messages.Add(MessageModel.CreateWarning("DEPARTMENT_CODE_EXISTED", header)); } code = cell.StringCellValue; } else if (header == "name") { name = cell.StringCellValue; } else if (header == "parent") { var parentValue = cell.StringCellValue; if (String.IsNullOrEmpty(parentValue)) { return; } var curParent = await getDept(parentValue); if (curParent.Count > 0) { SetParent(curParent.First()); } else { messages.Add(MessageModel.CreateError("INVALID DEPARMENT", header)); } } }
public async Task <IActionResult> UploadEmployeeExcel(EmployeeCollectionModel model) { var entities = model.employees.Select(u => u.ToEmployee()); var rs = new List <EmployeeErrorableModel>(); foreach (var item in entities) { try { await _coreRep.UpdateOrAddEmployeeByCode(item, await getCurrentUser()); rs.Add(new EmployeeErrorableModel(item)); } catch (Exception e) { var irs = new EmployeeErrorableModel(item); irs.messages.Add(MessageModel.CreateError(e.Message + "" + (e.InnerException == null?"":e.InnerException.Message) + " " + e.StackTrace)); rs.Add(irs); } } return(Ok(new ResponseModel(rs))); }