public SettingRegRespObj AddBulkStaffMemo(RegBulkStaffMemoObj regObj) { var response = new SettingRegRespObj { Status = new APIResponseStatus { IsSuccessful = false, Message = new APIResponseMessage() } }; try { if (regObj?.StaffMemoItem == null || !regObj.StaffMemoItem.Any()) { response.Status.Message.FriendlyMessage = "Empty Request Item! Please try again later"; response.Status.Message.TechnicalMessage = "Registration Object is empty / invalid"; return(response); } foreach (var reqitem in regObj.StaffMemoItem) { if (!EntityValidatorHelper.Validate(reqitem, out var valItemResults)) { var errorDetail = new StringBuilder(); if (!valItemResults.IsNullOrEmpty()) { errorDetail.AppendLine("Following error occurred:"); valItemResults.ForEachx(m => errorDetail.AppendLine(m.ErrorMessage)); } else { errorDetail.AppendLine( "Validation error occurred! Please check all supplied parameters and try again"); } response.Status.Message.FriendlyMessage = errorDetail.ToString(); response.Status.Message.TechnicalMessage = errorDetail.ToString(); response.Status.IsSuccessful = false; return(response); } } if (!HelperMethods.IsUserValid(regObj.AdminUserId, regObj.SysPathCode, HelperMethods.getStaffRoles(), ref response.Status.Message)) { return(response); } var staffMemoList = new List <StaffMemo>(); var workflowList = new List <WorkflowSetup>(); var results = staffMemoList.GroupBy(e => e.StaffMemoId, (key, g) => new { StaffMemoId = key, StaffMemoItems = g.ToList() }).ToList(); if (!results.Any()) { response.Status.Message.FriendlyMessage = "Invalid Expense Item list"; response.Status.Message.TechnicalMessage = "Invalid Expense Item list"; response.Status.IsSuccessful = false; return(response); } foreach (var reqItem in results) { if (reqItem.StaffMemoItems.Count > 1) { response.Status.Message.FriendlyMessage = $"Duplicate Staff Memo Item {getStaffMemo(reqItem.StaffMemoItems[0].StaffId).MemoType.ToString()}"; response.Status.Message.TechnicalMessage = $"Duplicate Staff Memo Item {getStaffMemo(reqItem.StaffMemoItems[0].StaffId).MemoType.ToString()}"; response.Status.IsSuccessful = false; return(response); } staffMemoList.Add(new StaffMemo { StaffId = reqItem.StaffMemoItems[0].StaffId, Title = reqItem.StaffMemoItems[0].Title, MemoType = reqItem.StaffMemoItems[0].MemoType, MemoDetail = reqItem.StaffMemoItems[0].MemoDetail, IsReplied = false, RegisterBy = regObj.AdminUserId, ApprovedBy = 0, Status = ApprovalStatus.Approved, TimeStampRegister = DateMap.CurrentTimeStamp() }); workFlowSourceId = staffMemoList[0].StaffMemoId; workflowList.Add(new WorkflowSetup { Description = reqItem.StaffMemoItems[0].Title, InitiatorId = regObj.AdminUserId, InitiatorType = WorkflowInitiatorType.HR, Item = WorkflowItem.Staff_Memo, WorkflowOrderId = regObj.StaffMemoItem[0].WorkflowOrderId, WorkflowSourceId = workFlowSourceId, LastTimeStampModified = DateMap.CurrentTimeStamp(), StaffId = reqItem.StaffMemoItems[0].StaffId, TimeStampInitiated = DateMap.CurrentTimeStamp(), Status = WorkflowStatus.Initiated }); } using (var db = _uoWork.BeginTransaction()) { try { var added = _staffMemoRepository.AddRange(staffMemoList); _uoWork.SaveChanges(); if (added == null || !added.Any()) { db.Rollback(); response.Status.Message.FriendlyMessage = "Error Occurred! Unable to complete your request. Please try again later"; response.Status.Message.TechnicalMessage = "Unable to save to database"; return(response); } var retVal = _workflowSetupRepository.AddRange(workflowList); _uoWork.SaveChanges(); if (retVal == null || !retVal.Any()) { db.Rollback(); response.Status.Message.FriendlyMessage = "Error Occurred! Unable to complete your request. Please try again later"; response.Status.Message.TechnicalMessage = "Unable to save to database"; return(response); } response.Status.IsSuccessful = true; workflowList[0].WorkflowSourceId = staffMemoList[0].StaffMemoId; db.Commit(); } catch (DbEntityValidationException ex) { ErrorManager.LogApplicationError(ex.StackTrace, ex.Source, ex.Message); response.Status.Message.FriendlyMessage = "Error Occurred! Please try again later"; response.Status.Message.TechnicalMessage = "Error: " + ex.GetBaseException().Message; response.Status.IsSuccessful = false; return(response); } catch (Exception ex) { ErrorManager.LogApplicationError(ex.StackTrace, ex.Source, ex.Message); response.Status.Message.FriendlyMessage = "Error Occurred! Please try again later"; response.Status.Message.TechnicalMessage = "Error: " + ex.GetBaseException().Message; response.Status.IsSuccessful = false; return(response); } return(response); } } catch (DbEntityValidationException ex) { ErrorManager.LogApplicationError(ex.StackTrace, ex.Source, ex.Message); response.Status.Message.FriendlyMessage = "Error Occurred! Please try again later"; response.Status.Message.TechnicalMessage = "Error: " + ex.GetBaseException().Message; response.Status.IsSuccessful = false; return(response); } catch (Exception ex) { ErrorManager.LogApplicationError(ex.StackTrace, ex.Source, ex.Message); response.Status.Message.FriendlyMessage = "Error Occurred! Please try again later"; response.Status.Message.TechnicalMessage = "Error: " + ex.GetBaseException().Message; response.Status.IsSuccessful = false; return(response); } }
public static SettingRegRespObj AddBulkStaffMemo(RegBulkStaffMemoObj regObj) { return(new StaffRepository().AddBulkStaffMemo(regObj)); }