示例#1
0
        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)));
        }
示例#2
0
        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)));
        }
示例#3
0
        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)));
        }
示例#4
0
        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));
                }
            }
        }
示例#6
0
        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)));
        }