public IHttpActionResult LeaveRequestResult(LeaveRequestStatusResultAC leaveRequestStatusResult) { if (leaveRequestStatusResult == null) { return(NotFound()); } try { if (ModelState.IsValid) { leaveRequestStatusResult.TeamLeaderId = User.Identity.GetUserId(); if (_userManager.IsInRole(leaveRequestStatusResult.TeamLeaderId, "Admin")) { var body = _leaveStatusRepository.InsertLeaveStatusByAdmin(leaveRequestStatusResult); _leaveRequestRepository.Save(); _emailUtil.ApproveAndReject(_employeeRepository.GetEmployeeById(leaveRequestStatusResult.TeamLeaderId).Email, body, _employeeRepository.GetEmployeeById(_leaveRequestRepository.GetLeaveRequestById(leaveRequestStatusResult.LeaveRequestId).EmployeeId).Email); } else { var body = _leaveStatusRepository.InsertLeaveStatus(leaveRequestStatusResult); _leaveRequestRepository.Save(); _emailUtil.ApproveAndReject(_employeeRepository.GetEmployeeById(leaveRequestStatusResult.TeamLeaderId).Email, body, _employeeRepository.GetEmployeeById(_leaveRequestRepository.GetLeaveRequestById(leaveRequestStatusResult.LeaveRequestId).EmployeeId).Email); } } return(Ok(leaveRequestStatusResult)); } catch (Exception) { return(BadRequest()); } }
/// <summary> /// Method to approved ,rejected, pending, escalted the status of a leaveRequest /// </summary> /// <param name="status"></param> /// <param name="leaveRequestId"></param> /// <param name="teamLeaderId"></param> public string InsertLeaveStatus(LeaveRequestStatusResultAC leaveRequestStatusResult) { leaveRequestStatusResult.AllowedDays = Convert.ToDouble(leaveRequestStatusResult.Days); var leaveStatusList = _leaveStatusDataRepository.FirstOrDefault(x => x.LeaveRequestId == leaveRequestStatusResult.LeaveRequestId && x.TeamLeaderId == leaveRequestStatusResult.TeamLeaderId); if (leaveStatusList.Condition == LMS.DomainModel.Models.Condition.Pending || leaveStatusList.Condition == LMS.DomainModel.Models.Condition.Escalated) { if (leaveRequestStatusResult.Condition == Condition.Escalated) { leaveRequestStatusResult.TeamLeaderId = _employeeDataRepository.FirstOrDefault(x => x.Email == "*****@*****.**").Id; } leaveStatusList.AllowedDays = leaveRequestStatusResult.AllowedDays; leaveStatusList.StatusReason = leaveRequestStatusResult.ResultReason; leaveStatusList.Condition = leaveRequestStatusResult.Condition; leaveStatusList.ApprovedDate = DateTime.Now; leaveStatusList.TeamLeaderId = leaveRequestStatusResult.TeamLeaderId; _leaveStatusDataRepository.Update(leaveStatusList); _leaveStatusDataRepository.Save(); } var leaveStatus = _leaveStatusDataRepository.Any(x => x.LeaveRequestId == leaveRequestStatusResult.LeaveRequestId && x.Condition == Condition.Rejected); if (leaveStatus == true) { var leaveRequestList = _leaveRequestDataRepository.FirstOrDefault(x => x.Id == leaveRequestStatusResult.LeaveRequestId); leaveRequestList.Condition = LMS.DomainModel.Models.Condition.Rejected; _leaveRequestDataRepository.Update(leaveRequestList); _leaveRequestDataRepository.Save(); } var leaveStatusResultList = _leaveStatusDataRepository.Fetch(x => x.LeaveRequestId == leaveRequestStatusResult.LeaveRequestId); var requestList = _leaveRequestDataRepository.FirstOrDefault(x => x.Id == leaveRequestStatusResult.LeaveRequestId); var leaveStatusCheck = leaveStatusResultList.All(x => x.LeaveRequestId == leaveRequestStatusResult.LeaveRequestId && x.Condition == LMS.DomainModel.Models.Condition.Approved); if (leaveStatusCheck == true) { var statusList = _leaveStatusDataRepository.Fetch(x => x.LeaveRequestId == leaveRequestStatusResult.LeaveRequestId); double allowed = (requestList.EndDate.Value.Day - requestList.StartDate.Day) + 1; foreach (var item in statusList) { if (allowed > item.AllowedDays) { allowed = item.AllowedDays; } } var leaveRequestList = _leaveRequestDataRepository.FirstOrDefault(x => x.Id == leaveRequestStatusResult.LeaveRequestId); leaveRequestList.Condition = LMS.DomainModel.Models.Condition.Approved; var dd = leaveRequestList.StartDate.Day + allowed; leaveRequestList.EndDate = leaveRequestList.StartDate.AddDays(allowed); _leaveRequestDataRepository.Update(leaveRequestList); _leaveRequestDataRepository.Save(); } var employee = _employeeDataRepository.GetById(requestList.EmployeeId); ApproveAndReject test = new ApproveAndReject(); test.Session = new Dictionary <string, object> { { "Name", employee.Name }, { "Designation", employee.Designation.ToString() }, { "SiteUrl", employee.Name }, { "SiteLogo", employee.Designation.ToString() }, { "ContactNumber", requestList.Number }, { "Type", requestList.Type.ToString() }, { "Unit", requestList.Unit.ToString() }, { "StartDate", requestList.StartDate.ToString("dd,MM,yyyy") }, { "EndDate", requestList.EndDate.Value.ToString("dd,MM,yyyy") }, { "CreatedOn", requestList.CreatedOn.ToString("dd,MM,yyyy") }, { "Status", leaveRequestStatusResult.Condition.ToString() }, }; test.Initialize(); var body = test.TransformText(); return(body); }