public async Task <IHttpActionResult> Import() { ResponseDataDTO <staff> response = new ResponseDataDTO <staff>(); var exitsData = ""; try { var path = Path.GetTempPath(); if (!Request.Content.IsMimeMultipartContent("form-data")) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.UnsupportedMediaType)); } MultipartFormDataStreamProvider streamProvider = new MultipartFormDataStreamProvider(path); await Request.Content.ReadAsMultipartAsync(streamProvider); // save file string fileName = ""; if (streamProvider.FileData.Count > 0) { foreach (MultipartFileData fileData in streamProvider.FileData) { fileName = fileData.Headers.ContentDisposition.FileName; //fileName = fileName.Replace(@"",""); string fileFormat = Utilis.GetFileFormat(fileName); if (fileFormat.Equals("xlsx") || fileFormat.Equals("xls")) { fileName = FileExtension.SaveFileOnDisk(fileData); } else { throw new Exception("File excel import không hợp lệ!"); } } } var list = new List <staff>(); var dataset = ExcelImport.ImportExcelXLS(fileName, true); DataTable table = (DataTable)dataset.Tables[0]; if (table != null && table.Rows.Count > 0) { if (table.Columns.Count != 13) { exitsData = "File excel import không hợp lệ!"; response.Code = HttpCode.INTERNAL_SERVER_ERROR; response.Message = exitsData; response.Data = null; return(Ok(response)); } else { #region ["Check null"] foreach (DataRow dr in table.Rows) { if (dr.IsNull("sta_fullname")) { response.Code = HttpCode.INTERNAL_SERVER_ERROR; response.Message = "Họ và tên không được để trống"; response.Data = null; return(Ok(response)); } if (dr.IsNull("sta_username")) { response.Code = HttpCode.INTERNAL_SERVER_ERROR; response.Message = "Tên đăng nhập không được để trống"; response.Data = null; return(Ok(response)); } if (dr.IsNull("sta_password")) { response.Code = HttpCode.INTERNAL_SERVER_ERROR; response.Message = "Mật khẩu không được để trống"; response.Data = null; return(Ok(response)); } if (dr.IsNull("sta_mobile")) { response.Code = HttpCode.INTERNAL_SERVER_ERROR; response.Message = "Số điện thoại không được để trống"; response.Data = null; return(Ok(response)); } if (dr.IsNull("sta_status")) { response.Code = HttpCode.INTERNAL_SERVER_ERROR; response.Message = "Trạng thái không được để trống"; response.Data = null; return(Ok(response)); } if (dr.IsNull("department_id")) { response.Code = HttpCode.INTERNAL_SERVER_ERROR; response.Message = "Phòng ban không được để trống"; response.Data = null; return(Ok(response)); } if (dr.IsNull("position_id")) { response.Code = HttpCode.INTERNAL_SERVER_ERROR; response.Message = "Chức vụ không được để trống"; response.Data = null; return(Ok(response)); } } #endregion #region ["Check duplicate"] for (var i = 0; i < table.Rows.Count; i++) { var usernameCur = table.Rows[i]["sta_username"].ToString().Trim(); var emailCur = table.Rows[i]["sta_email"].ToString().Trim(); for (var j = 0; j < table.Rows.Count; j++) { if (i != j) { var _usernameCur = table.Rows[j]["sta_username"].ToString().Trim(); var _emailCur = table.Rows[j]["sta_email"].ToString().Trim(); if (usernameCur.Equals(_usernameCur)) { exitsData = "Username '" + usernameCur + "' bị lặp trong file excel!"; response.Code = HttpCode.INTERNAL_SERVER_ERROR; response.Message = exitsData; response.Data = null; return(Ok(response)); } if (emailCur.Equals(_emailCur)) { exitsData = "Email '" + emailCur + "' bị lặp trong file excel!"; response.Code = HttpCode.INTERNAL_SERVER_ERROR; response.Message = exitsData; response.Data = null; return(Ok(response)); } } } } #endregion #region ["Check logic"] foreach (DataRow dr in table.Rows) { if (!check_department(Convert.ToInt32(dr["department_id"]))) { exitsData = "Khong co ma phong ban trong csdl!"; response.Code = HttpCode.NOT_FOUND; response.Message = exitsData; response.Data = null; return(Ok(response)); } if (!check_position(Convert.ToInt32(dr["position_id"]))) { exitsData = "Khong co ma bo phan trong csdl!"; response.Code = HttpCode.NOT_FOUND; response.Message = exitsData; response.Data = null; return(Ok(response)); } if (!check_grouprole(Convert.ToInt32(dr["group_role_id"]))) { exitsData = "Khong co ma nhom quyen trong csdl!"; response.Code = HttpCode.NOT_FOUND; response.Message = exitsData; response.Data = null; return(Ok(response)); } } #endregion } list = DataTableCmUtils.ToListof <staff>(table); // Gọi hàm save data foreach (staff i in list) { _staffservice.Create(i); } exitsData = "Đã nhập dữ liệu excel thành công!"; response.Code = HttpCode.OK; response.Message = exitsData; response.Data = null; return(Ok(response)); } else { exitsData = "File excel import không có dữ liệu!"; response.Code = HttpCode.INTERNAL_SERVER_ERROR; response.Message = exitsData; response.Data = null; return(Ok(response)); } } catch (Exception ex) { response.Code = HttpCode.INTERNAL_SERVER_ERROR; response.Message = ex.Message;; response.Data = null; Console.WriteLine(ex.ToString()); return(Ok(response)); } }