public async Task <IActionResult> UploadEmployees([FromForm] EmployeesFileDto empFile) { await _uow.EmployeeRepository.AddEmployeesFileAsync(empFile); return(Ok("file uploaded")); }
public async Task <List <Employee> > AddEmployeesFileAsync(EmployeesFileDto empData) { // get file var filePath = Path.GetTempFileName(); using (var stream = new FileStream(filePath, FileMode.Create)) { await empData.File.CopyToAsync(stream); } //read Table var npoiHelper = new ExcelBuileder(); var result = npoiHelper.BuildEmployeesTabel(filePath); List <Employee> emps = new List <Employee> (); //check paymentType // string paymentTypeName = result.Rows[0].ItemArray[1].ToString (); var empList = await _context.Employees.Include(x => x.EmployeeBank).ToListAsync(); var dep = _context.Departments.SingleOrDefault(x => x.Name == "1-غير مسجل"); foreach (DataRow row in result.Rows) { bool propertyChanged = false; //get Employee string empNationalId = row.ItemArray[0].ToString(); bool validate = empNationalId.ValidateNtionalId(); if (!validate) { throw new Exception("رقم البطاقه غير صحيح من فضلك تأكد من رقم البطاقه "); } Employee emp = empList .SingleOrDefault(x => x.NationalId == empNationalId); if (emp == null) { var tempEmp = InserEmployeeData(row, dep); _context.Employees.Add(tempEmp); propertyChanged = true; } else { emp = _context.Employees.SingleOrDefault(x => x.Id == emp.Id); if (UpdateEmployeeData(emp, row) != null) { propertyChanged = true; } } if (propertyChanged) { try { await _context.SaveChangesAsync(); } catch (Exception ex) { throw new Exception(ex.InnerException.ToString()); } } } return(emps); }