public async Task <bool> AddUpdateWorkflowLevelStaffAsync(cor_workflowlevelstaff model) { if (model.WorkflowLevelStaffId > 0) { var item = await _dataContext.cor_workflowlevelstaff.FindAsync(model.WorkflowLevelStaffId); _dataContext.Entry(item).CurrentValues.SetValues(model); } else { await _dataContext.cor_workflowlevelstaff.AddAsync(model); } return(await _dataContext.SaveChangesAsync() > 0); }
public async Task <WorkflowlevelStaffRegRespObj> Handle(AddUpdateWorkflowLevelStaffCommand request, CancellationToken cancellationToken) { try { var currentUserId = _httpContextAccessor.HttpContext.User?.FindFirst(x => x.Type == "userId").Value; var user = await _userManger.FindByIdAsync(currentUserId); var WKFlevelStaff = new cor_workflowlevelstaff { StaffId = request.StaffId, Active = request.Active, CreatedBy = request.CreatedBy, CreatedOn = DateTime.Now, Deleted = false, WorkflowLevelId = request.WorkflowLevelId, UpdatedBy = user.UserName, UpdatedOn = request.UpdatedOn, WorkflowGroupId = request.WorkflowGroupId, WorkflowLevelStaffId = request.WorkflowLevelStaffId, }; if (request.WorkflowLevelStaffId > 0) { WKFlevelStaff.WorkflowLevelStaffId = request.WorkflowLevelStaffId; WKFlevelStaff.UpdatedOn = DateTime.Now; } await _repo.AddUpdateWorkflowLevelStaffAsync(WKFlevelStaff); var actionTaken = request.WorkflowGroupId > 0 ? "updated" : "added"; return(new WorkflowlevelStaffRegRespObj { WorkflowLevelStaffId = WKFlevelStaff.WorkflowLevelStaffId, Status = new APIResponseStatus { IsSuccessful = true, Message = new APIResponseMessage { FriendlyMessage = $"Successfully {actionTaken}", } } }); } catch (Exception ex) { #region Log error to file var errorCode = ErrorID.Generate(4); _logger.Error($"ErrorID : AddUpdateWorkflowLevelStaffCommandHandler{errorCode} Ex : {ex?.Message ?? ex?.InnerException?.Message} ErrorStack : {ex?.StackTrace}"); return(new WorkflowlevelStaffRegRespObj { Status = new APIResponseStatus { IsSuccessful = false, Message = new APIResponseMessage { FriendlyMessage = "Error occured!! Unable to process item", MessageId = errorCode, TechnicalMessage = $"ErrorID : AddUpdateWorkflowLevelStaffCommandHandler{errorCode} Ex : {ex?.Message ?? ex?.InnerException?.Message} ErrorStack : {ex?.StackTrace}" } } }); #endregion } }
public async Task <FileUploadRespObj> Handle(UploadWorkflowStaffCommand request, CancellationToken cancellationToken) { var apiResponse = new FileUploadRespObj { Status = new APIResponseStatus { IsSuccessful = false, Message = new APIResponseMessage() } }; try { var files = _httpContextAccessor.HttpContext.Request.Form.Files; var byteList = new List <byte[]>(); foreach (var fileBit in files) { if (fileBit.Length > 0) { using (var ms = new MemoryStream()) { await fileBit.CopyToAsync(ms); byteList.Add(ms.ToArray()); } } } var uploadedRecord = new List <WorkflowlevelStaffObj>(); ExcelPackage.LicenseContext = LicenseContext.NonCommercial; if (byteList.Count() > 0) { foreach (var byteItem in byteList) { using (MemoryStream stream = new MemoryStream(byteItem)) using (ExcelPackage excelPackage = new ExcelPackage(stream)) { //Use first sheet by default ExcelWorksheet workSheet = excelPackage.Workbook.Worksheets[0]; int totalRows = workSheet.Dimension.Rows; int totalColumns = workSheet.Dimension.Columns; if (totalColumns != 5) { apiResponse.Status.Message.FriendlyMessage = $"Three (5) Column Expected"; return(apiResponse); } //First row is considered as the header for (int i = 2; i <= totalRows; i++) { var lkp = new WorkflowlevelStaffObj { ExcelLineNumber = i, WorkflowGroupName = workSheet.Cells[i, 1]?.Value != null ? workSheet.Cells[i, 1]?.Value.ToString() : string.Empty, WorkflowLevelName = workSheet.Cells[i, 2]?.Value != null ? workSheet.Cells[i, 2]?.Value.ToString() : string.Empty, StaffName = workSheet.Cells[i, 3]?.Value != null ? workSheet.Cells[i, 3]?.Value.ToString() : string.Empty, AccessLevel = workSheet.Cells[i, 4]?.Value != null ? workSheet.Cells[i, 4]?.Value.ToString() : string.Empty, StaffCode = workSheet.Cells[i, 5]?.Value != null ? workSheet.Cells[i, 5]?.Value.ToString() : string.Empty, }; uploadedRecord.Add(lkp); } } } } var _DomainList = await _repo.GetAllWorkflowLevelStaffAsync(); var _StaffList = await _admin.GetAllStaffAsync(); var _Group = await _repo.GetAllWorkflowGroupAsync(); var _Level = await _repo.GetAllWorkflowLevelAsync(); var _CompStructure = await _comprepository.GetAllCompanyStructureDefinitionAsync(); if (uploadedRecord.Count > 0) { foreach (var row in uploadedRecord) { if (string.IsNullOrEmpty(row.StaffCode)) { apiResponse.Status.Message.FriendlyMessage = $"Staff Code can not be empty detected on line {row.ExcelLineNumber}"; return(apiResponse); } if (string.IsNullOrEmpty(row.WorkflowGroupName)) { apiResponse.Status.Message.FriendlyMessage = $"Workflow group Name can not be empty detected on line {row.ExcelLineNumber}"; return(apiResponse); } else { var group = _Group.FirstOrDefault(a => a.WorkflowGroupName.Trim().ToLower() == row.WorkflowGroupName.Trim().ToLower()); if (group == null) { apiResponse.Status.Message.FriendlyMessage = $"Unidentified Workflow group detected on line {row.ExcelLineNumber}"; return(apiResponse); } row.WorkflowGroupId = group.WorkflowGroupId; } if (string.IsNullOrEmpty(row.WorkflowLevelName)) { apiResponse.Status.Message.FriendlyMessage = $"Workflow Level Name can not be empty detected on line {row.ExcelLineNumber}"; return(apiResponse); } else { var level = _Level.FirstOrDefault(a => a.WorkflowLevelName.Trim().ToLower() == row.WorkflowLevelName.Trim().ToLower()); if (level == null) { apiResponse.Status.Message.FriendlyMessage = $"Unidentified Workflow Level detected on line {row.ExcelLineNumber}"; return(apiResponse); } row.WorkflowLevelId = level.WorkflowLevelId; } if (string.IsNullOrEmpty(row.StaffName)) { apiResponse.Status.Message.FriendlyMessage = $"Staff Name can not be empty detected on line {row.ExcelLineNumber}"; return(apiResponse); } else { var firstname = row.StaffName.Split(" ")[0]; var lastname = row.StaffName.Split(" ")[1]; var level = _StaffList.FirstOrDefault(a => a.FirstName.Trim().ToLower() == firstname.Trim().ToLower() && a.LastName.Trim().ToLower() == lastname.Trim().ToLower() && a.StaffCode.Trim().ToLower() == row.StaffCode.Trim().ToLower()); if (level == null) { apiResponse.Status.Message.FriendlyMessage = $"Unidentified Staff Detected on line {row.ExcelLineNumber}"; return(apiResponse); } row.StaffId = level.StaffId; row.StaffCode = row.StaffCode; } var currentItem = _DomainList.FirstOrDefault(s => s.WorkflowLevelId == row.WorkflowLevelId && s.Deleted == false && s.StaffId == row.StaffId && s.WorkflowGroupId == row.WorkflowGroupId); if (currentItem != null) { currentItem.WorkflowGroupId = row.WorkflowGroupId; currentItem.WorkflowLevelId = row.WorkflowLevelId; currentItem.StaffId = row.StaffId; await _repo.AddUpdateWorkflowLevelStaffAsync(currentItem); } else { var newItem = new cor_workflowlevelstaff(); newItem.WorkflowGroupId = row.WorkflowGroupId; newItem.WorkflowLevelId = row.WorkflowLevelId; newItem.StaffId = row.StaffId; await _repo.AddUpdateWorkflowLevelStaffAsync(newItem); } } } apiResponse.Status.IsSuccessful = true; apiResponse.Status.Message.FriendlyMessage = "Successful"; return(apiResponse); } catch (Exception ex) { apiResponse.Status.Message.FriendlyMessage = ex?.Message; return(apiResponse); } }
public async Task <bool> UploadWorkflowLevelStaffAsync(byte[] record, string createdBy) { try { if (record == null) { return(false); } List <WorkflowlevelStaffObj> uploadedRecord = new List <WorkflowlevelStaffObj>(); using (MemoryStream stream = new MemoryStream(record)) using (ExcelPackage excelPackage = new ExcelPackage(stream)) { //Use first sheet by default ExcelWorksheet workSheet = excelPackage.Workbook.Worksheets[1]; int totalRows = workSheet.Dimension.Rows; //First row is considered as the header for (int i = 2; i <= totalRows; i++) { uploadedRecord.Add(new WorkflowlevelStaffObj { WorkflowLevelName = workSheet.Cells[i, 1].Value.ToString(), WorkflowGroupName = workSheet.Cells[i, 2].Value.ToString(), StaffCode = workSheet.Cells[i, 3].Value.ToString(), }); } } if (uploadedRecord.Count > 0) { foreach (var entity in uploadedRecord) { var workflowGroup = _dataContext.cor_workflowgroup.Where(x => x.WorkflowGroupName == entity.WorkflowGroupName).FirstOrDefault(); var workflowLevel = _dataContext.cor_workflowlevel.Where(x => x.WorkflowLevelName == entity.WorkflowLevelName).FirstOrDefault(); var staff = _dataContext.cor_staff.Where(x => x.StaffCode == entity.StaffCode).FirstOrDefault(); if (workflowGroup == null) { throw new Exception("Please upload a valid workflowGroup name"); } if (workflowLevel == null) { throw new Exception("Please upload a valid workflowLevel name"); } if (staff == null) { throw new Exception("Please upload a valid staffcode"); } var accountTypeExist = _dataContext.cor_workflowlevelstaff.Find(entity.WorkflowLevelStaffId); if (accountTypeExist != null) { accountTypeExist.WorkflowLevelStaffId = entity.WorkflowLevelStaffId; accountTypeExist.WorkflowLevelId = workflowLevel.WorkflowLevelId; accountTypeExist.WorkflowGroupId = workflowGroup.WorkflowGroupId; accountTypeExist.StaffId = staff.StaffId; accountTypeExist.Active = true; accountTypeExist.Deleted = false; accountTypeExist.UpdatedBy = entity.CreatedBy; accountTypeExist.UpdatedOn = DateTime.Now; } else { var accountType = new cor_workflowlevelstaff { WorkflowLevelStaffId = entity.WorkflowLevelStaffId, WorkflowLevelId = workflowLevel.WorkflowLevelId, WorkflowGroupId = workflowGroup.WorkflowGroupId, StaffId = staff.StaffId, Active = true, Deleted = false, CreatedBy = entity.CreatedBy, CreatedOn = DateTime.Now, }; _dataContext.cor_workflowlevelstaff.Add(accountType); } } } var response = await _dataContext.SaveChangesAsync() > 0; return(response); } catch (Exception ex) { throw new Exception(ex.Message); } }