public Result CancelEVacationRequest(int EVacationRequestID, EVacationRequestStatusEnum CancelledBy, string CancellationReason = "") { try { Result result; EVacationsRequestsBLL EVacationRequestObj = new EVacationsRequestsBLL().GetEVacationsRequestsByEVacationRequestID(EVacationRequestID); #region Validation if Authorized person approved or rejected, no chance to cancel vacation after decision from Authorized person if (EVacationRequestObj.EVacationRequestStatus?.EVacationRequestStatusID != (int)EVacationRequestStatusEnum.Pending) { result = new Result(); result.Entity = this; result.EnumMember = VacationsValidationEnum.RejectedBecauseOfEVacationRequestStatusNotPending.ToString(); return(result); } #endregion #region Changing status of eservice request EVacationsRequests EVacationRequest = new EVacationsRequests() { EVacationRequestID = EVacationRequestID, EVacationRequestStatusID = (int)CancelledBy, CancellationReasonByHR = CancellationReason, LastUpdatedDate = DateTime.Now, LastUpdatedBy = CancelledBy == EVacationRequestStatusEnum.CancelledByHR ? this.LoginIdentity.EmployeeCodeID : EVacationRequestObj.EmployeeCareerHistory.EmployeeCode.EmployeeCodeID }; result = new Result(); new EVacationsRequestsDAL().UpdateStatus(EVacationRequest); result.Entity = this; result.EnumMember = VacationsValidationEnum.Done.ToString(); #endregion #region If cancellation by HR, Sending sms to employee to notify him if (CancelledBy == EVacationRequestStatusEnum.CancelledByHR || CancelledBy == EVacationRequestStatusEnum.CancelledBySystem) { SMSBLL sMSBLL = new SMSBLL(); sMSBLL.SendSMS(new SMSLogsBLL() { BusinssSubCategory = BusinessSubCategoriesEnum.AuthorizedPersonDecisionForEVacationRequest, DetailID = EVacationRequestObj.EVacationRequestID, MobileNo = EVacationRequestObj.EmployeeCareerHistory.EmployeeCode.Employee.EmployeeMobileNo, Message = string.Format(Globalization.SMSEVacationRequestCancelledByHrText), CreatedBy = EVacationRequestObj.ApprovedBy, }); } #endregion return(result); } catch (Exception ex) { throw ex; } }
public Result MakeDecisionOfEVacationRequest(EVacationsRequestsBLL EVacationRequestObj, EVacationRequestStatusEnum EVacationRequestStatus) { try { Result result = null; EVacationRequestObj.ApprovedBy = new EmployeesCodesBLL().GetByEmployeeCodeNo(EVacationRequestObj.ApprovedBy.EmployeeCodeNo); EVacationsRequestsBLL EVacationsRequestsData = new EVacationsRequestsBLL().GetEVacationsRequestsByEVacationRequestID(EVacationRequestObj.EVacationRequestID); #region Validate there is a decision of this e vacation request or not if (EVacationsRequestsData.EVacationRequestStatus.EVacationRequestStatusID != (int)EVacationRequestStatusEnum.Pending) { result = new Result(); result.Entity = EVacationsRequestsData; result.EnumMember = VacationsValidationEnum.RejectedBecauseOfEVacationRequestStatusNotPending.ToString(); return(result); } #endregion #region Validate the approver person is authorized to employee manager or not EmployeesCodesBLL ActualAuthorizedPerson = new EServicesAuthorizationsBLL().GetOrganizationAuthorizedPerson(EVacationsRequestsData.ActualEmployeeOrganization.OrganizationID, EServicesTypesEnum.Vacation).AuthorizedPerson; if (ActualAuthorizedPerson.EmployeeCodeNo != EVacationRequestObj.ApprovedBy.EmployeeCodeNo) { result = new Result(); result.EnumMember = VacationsValidationEnum.RejectedBeacuseOfApproverIsNotAuthorizedPerson.ToString(); result.Entity = ActualAuthorizedPerson; return(result); } #endregion string SMSMessage = string.Empty; // in case of approval, send the vacation data to vacations module to be added, after that change the status in e vacation requests module if (EVacationRequestStatus == EVacationRequestStatusEnum.Approved) { #region Send vacation to vacations module BaseVacationsBLL Vacation = new BaseVacationsBLL() { IsApprovedFromManager = true, EVacationsRequest = EVacationsRequestsData, EmployeeCareerHistory = EVacationsRequestsData.EmployeeCareerHistory, VacationType = VacationsTypesEnum.Normal, VacationStartDate = EVacationsRequestsData.VacationStartDate, VacationEndDate = EVacationsRequestsData.VacationEndDate, Notes = EVacationsRequestsData.CreatorNotes, ApprovedBy = EVacationRequestObj.ApprovedBy, LoginIdentity = EVacationsRequestsData.CreatedBy, CreatedDate = DateTime.Now, IsCanceled = false, }; result = Vacation.Add(); #endregion #region Update IsApproved in vacations module result = Vacation.Approve(); #endregion if (result.EnumMember == VacationsValidationEnum.Done.ToString()) { result = ApproveEVacationRequest(EVacationRequestObj, EVacationRequestStatus); } SMSMessage = string.Format(Globalization.SMSEVacationRequestApprovedText, EVacationsRequestsData.VacationType.VacationTypeName, EVacationsRequestsData.VacationStartDate, EVacationsRequestsData.VacationPeriod); } else // in case of refuse, change the status in e vacation requests module only { result = ApproveEVacationRequest(EVacationRequestObj, EVacationRequestStatus); SMSMessage = Globalization.SMSEVacationRequestRefusedText; } #region Sending sms to employee to notify him the authorized person decision SMSBLL sMSBLL = new SMSBLL(); sMSBLL.SendSMS(new SMSLogsBLL() { BusinssSubCategory = BusinessSubCategoriesEnum.AuthorizedPersonDecisionForEVacationRequest, DetailID = EVacationsRequestsData.EVacationRequestID, MobileNo = EVacationsRequestsData.EmployeeCareerHistory?.EmployeeCode?.Employee?.EmployeeMobileNo, Message = SMSMessage, CreatedBy = EVacationRequestObj.ApprovedBy, }); #endregion return(result); } catch (Exception ex) { throw ex; } }
private List <EVacationsRequestsBLL> GetEVacationsRequestsBasedOnStatus(string EmployeeCodeNo, EVacationRequestStatusEnum EVacationRequestStatus) { return(GetEVacationsRequestsByEmployeeCodeNo(EmployeeCodeNo).Where(x => x.EVacationRequestStatus.EVacationRequestStatusID == (int)EVacationRequestStatus).ToList()); }
/// <summary> /// Update data in EVacation Requests table , then Send the vacation details to Vacations module to be added /// </summary> /// <returns></returns> private Result ApproveEVacationRequest(EVacationsRequestsBLL EVacationRequestObj, EVacationRequestStatusEnum EVacationRequestStatus) { try { Result result; EVacationsRequests EVacationRequest = new EVacationsRequests() { EVacationRequestID = EVacationRequestID, EVacationRequestStatusID = (int)EVacationRequestStatus, ApprovalDateTime = DateTime.Now, ApproverNotes = EVacationRequestObj.ApproverNotes, ApprovedBy = EVacationRequestObj.ApprovedBy.EmployeeCodeID, LastUpdatedDate = DateTime.Now, LastUpdatedBy = EVacationRequestObj.ApprovedBy.EmployeeCodeID }; result = new Result(); new EVacationsRequestsDAL().Update(EVacationRequest); result.Entity = this; result.EnumMember = VacationsValidationEnum.Done.ToString(); return(result); } catch (Exception ex) { throw ex; } }