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