/// <summary> /// Repository method to get leaverequest list depend upon employeeId from database using leaverequest table /// </summary> /// <param name="employeeId"></param> /// <returns></returns> public IEnumerable <LeaveRequestAC> GetAllRequestsForReview(string employeeId) { var leaveRequestListAC = new List <LeaveRequestAC>(); var leaveRequestList = _leaveRequestDataRepository.Fetch(x => x.EmployeeId == employeeId); foreach (var leaves in leaveRequestList) { var leaveAC = new LeaveRequestAC { Id = leaves.Id, StartDate = leaves.StartDate, EndDate = leaves.EndDate, Unit = leaves.Unit, Reason = leaves.Reason, Type = leaves.Type, HolidayName = leaves.HolidayName, CompensationDate = leaves.CompensationDate, CompensationStatus = leaves.CompensationStatus, ContactName = leaves.ContactName, EmergencyContact = leaves.ContactNumber, PointOfContact = leaves.PointOfContact, DoctorName = leaves.DoctorName, DoctorContactNumber = leaves.Number, DoctorCertificate = leaves.Certificate, HolidayTypeId = leaves.HolidayTypeId, EmployeeId = leaves.EmployeeId }; leaveRequestListAC.Add(leaveAC); } return(leaveRequestListAC); }
/// <summary> /// Fetches a leave request by its id from table 'LeaveRequest' /// </summary> /// <param name="id"></param> /// <returns>LeaveRequest type entity</returns> public LeaveRequestAC GetLeaveRequestById(int?id) { var leave = _leaveRequestDataRepository.GetById(id); var employee = _employeeRepository.GetById(leave.EmployeeId); LeaveRequestAC leaves = new LeaveRequestAC() { Id = leave.Id, StartDate = leave.StartDate, EndDate = leave.EndDate, Unit = leave.Unit, Reason = leave.Reason, Type = leave.Type, HolidayName = leave.HolidayName, CompensationDate = leave.CompensationDate, CompensationStatus = leave.CompensationStatus, EmergencyContact = leave.ContactNumber, ContactName = leave.ContactName, PointOfContact = leave.PointOfContact, DoctorName = leave.DoctorName, HolidayTypeId = leave.HolidayTypeId, EmployeeId = leave.EmployeeId, CreatedOn = leave.CreatedOn, Condition = leave.Condition, EmployeeName = employee.Name, Email = employee.Email, Designation = employee.Designation, DoctorCertificate = leave.Certificate, DoctorContactNumber = leave.ContactNumber, }; return(leaves); }
public IHttpActionResult CreateLeaveRequest(LeaveRequestAC leaveRequest) { if (leaveRequest.Type == DomainModel.Models.Type.Compensation) { leaveRequest.CompensationDate = leaveRequest.EndDate; leaveRequest.EndDate = leaveRequest.StartDate; leaveRequest.CompensationStatus = Condition.Pending; } leaveRequest.EmployeeId = User.Identity.GetUserId(); if (leaveRequest.EmployeeId == null) { return(NotFound()); } try { if (ModelState.IsValid) { var body = _leaveRequestRepository.ApplyLeaveRequest(leaveRequest); _leaveRequestRepository.Save(); _emailUtil.ApplyLeave(_employeeRepository.GetEmployeeById(leaveRequest.EmployeeId).Email, body, leaveRequest.TeamLeader); } return(Ok(leaveRequest)); } catch (Exception) { return(BadRequest()); } }
/// <summary> /// To get Compensation Leave list of employee /// </summary> /// <returns></returns> public IEnumerable <LeaveRequestAC> CompensationLeaveList(string user) { var roles = _employeeDataRepository.FirstOrDefault(x => x.Id == user).Designation; var team = _teamDataRepository.Fetch(x => x.TeamLeaderId == user); var leaveRequestList = _leaveRequestDataRepository.Fetch(x => x.Type == DomainModel.Models.Type.Compensation); var leaveRequestListAC = new List <LeaveRequestAC>(); foreach (var leaves in leaveRequestList) { var employee = _employeeDataRepository.GetById(leaves.EmployeeId); var leaveAC = new LeaveRequestAC { Id = leaves.Id, StartDate = leaves.StartDate, EndDate = leaves.EndDate, Unit = leaves.Unit, Reason = leaves.Reason, Type = leaves.Type, HolidayName = leaves.HolidayName, CompensationDate = leaves.CompensationDate, CompensationStatus = leaves.CompensationStatus, ContactName = leaves.ContactName, EmergencyContact = leaves.ContactNumber, PointOfContact = leaves.PointOfContact, DoctorName = leaves.DoctorName, DoctorContactNumber = leaves.Number, DoctorCertificate = leaves.Certificate, HolidayTypeId = leaves.HolidayTypeId, EmployeeId = leaves.EmployeeId, Condition = leaves.Condition, EmployeeName = employee.Name, Designation = employee.Designation, //Days = (leaves.EndDate.Value.Day - leaves.StartDate.Day) + 1 Days = Convert.ToInt32(leaves.EndDate.Value.Subtract(leaves.StartDate).TotalDays) + 1 }; if (roles == Designation.Admin) { if (leaveAC.CompensationStatus == DomainModel.Models.Condition.Pending && leaveAC.Designation == Designation.TeamLeader) { leaveRequestListAC.Add(leaveAC); } } else { if (leaveAC.CompensationStatus == DomainModel.Models.Condition.Pending && leaveAC.Designation == Designation.User) { foreach (var item in team) { if (item.EmployeeId == leaveAC.EmployeeId) { leaveRequestListAC.Add(leaveAC); } } } } } return(leaveRequestListAC); }
/// <summary> /// Repository method to get leaverequest list depend upon teamLeaderId and status Approved and rejected /// </summary> /// <param name="teamLeaderId"></param> /// <returns></returns> public IEnumerable <LeaveRequestAC> LeaveRequestUnderTeamLeaderPending(string teamLeaderId) { var team = _teamDataRepository.Fetch(x => x.TeamLeaderId == teamLeaderId); var leaveStatusListAC = new List <LeaveRequestAC>(); List <string> employeeList = new List <string>(); foreach (var item in team) { var leaveRequestList = _leaveRequestDataRepository.Fetch(x => x.EmployeeId == item.EmployeeId && x.Condition == Condition.Pending && x.Type != DomainModel.Models.Type.Sick); foreach (var leave in leaveRequestList) { var leaveStatus = _leaveStatusDataRepository.FirstOrDefault(x => x.EmployeeId == leave.EmployeeId && x.LeaveRequestId == leave.Id && x.TeamLeaderId == item.TeamLeaderId); var employee = _employeeDataRepository.GetById(leave.EmployeeId); var leaveAC = new LeaveRequestAC { Id = leave.Id, StartDate = leave.StartDate, EndDate = leave.EndDate, Unit = leave.Unit, Reason = leave.Reason, Type = leave.Type, HolidayName = leave.HolidayName, CompensationDate = leave.CompensationDate, CompensationStatus = leave.CompensationStatus, ContactName = leave.ContactName, EmergencyContact = leave.ContactNumber, PointOfContact = leave.PointOfContact, DoctorName = leave.DoctorName, DoctorContactNumber = leave.Number, DoctorCertificate = leave.Certificate, HolidayTypeId = leave.HolidayTypeId, EmployeeId = leave.EmployeeId, EmployeeName = employee.Name, Condition = leave.Condition, Designation = employee.Designation, Email = employee.Email, //Days = (leave.EndDate.Value.Day - leave.StartDate.Day) + 1, Days = Convert.ToInt32(leave.EndDate.Value.Subtract(leave.StartDate).TotalDays) + 1, TeamLeaderStatus = leaveStatus.Condition }; if (item.CreatedOn > leave.CreatedOn) { leaveAC.TeamLeaderStatus = Condition.Escalated; } //if (leaveStatus.Condition!=Condition.Pending) //{ // leaveAC.TeamLeaderStatus = Condition.Escalated; //} leaveStatusListAC.Add(leaveAC); } } return(leaveStatusListAC); }
public IEnumerable <LeaveRequestAC> GetAllRequestsPending() { var leaveRequestList = _leaveRequestDataRepository.Fetch(x => x.Condition == DomainModel.Models.Condition.Pending && x.Type != LMS.DomainModel.Models.Type.Sick || x.Condition == Condition.Escalated); var leaveRequestListAC = new List <LeaveRequestAC>(); foreach (var leaves in leaveRequestList) { var leaveStatus = _leaveStatusDataRepository.Fetch(x => x.LeaveRequestId == leaves.Id); var employee = _employeeDataRepository.GetById(leaves.EmployeeId); var leaveAC = new LeaveRequestAC { Id = leaves.Id, StartDate = leaves.StartDate, EndDate = leaves.EndDate, Unit = leaves.Unit, Reason = leaves.Reason, Type = leaves.Type, HolidayName = leaves.HolidayName, CompensationDate = leaves.CompensationDate, CompensationStatus = leaves.CompensationStatus, ContactName = leaves.ContactName, EmergencyContact = leaves.ContactNumber, PointOfContact = leaves.PointOfContact, DoctorName = leaves.DoctorName, DoctorContactNumber = leaves.Number, DoctorCertificate = leaves.Certificate, HolidayTypeId = leaves.HolidayTypeId, EmployeeId = leaves.EmployeeId, Condition = ((DomainModel.Models.Condition)leaves.Condition), //Days = (leaves.EndDate.Value.Day - leaves.StartDate.Day), Days = Convert.ToInt32(leaves.EndDate.Value.Subtract(leaves.StartDate).TotalDays) + 1, EmployeeName = employee.Name, }; List <Condition> conditionList = new List <Condition>(); List <string> teamLeaderList = new List <string>(); List <string> requestReasonList = new List <string>(); foreach (var leave in leaveStatus) { List <string> list = new List <string>(); var employees = _employeeDataRepository.FirstOrDefault(x => x.Id == leave.TeamLeaderId); teamLeaderList.Add(employees.Name); requestReasonList.Add(leave.StatusReason); conditionList.Add(leave.Condition); } leaveAC.TeamLeader = teamLeaderList; leaveAC.ResultReason = requestReasonList; leaveAC.ConditionList = conditionList; leaveRequestListAC.Add(leaveAC); } return(leaveRequestListAC); }
/// <summary> /// To get list of Leave Request depend upon leave type of a particular employee /// </summary> /// <param name="type"></param> /// <param name="employeeId"></param> /// <returns></returns> public IEnumerable <LeaveRequestAC> LeaveRequestByType(LMS.DomainModel.Models.Type type, string employeeId) { var leaveRequestList = _leaveRequestDataRepository.Fetch(x => x.Type == type && x.EmployeeId == employeeId); var leaveRequestListAC = new List <LeaveRequestAC>(); foreach (var leaves in leaveRequestList) { var leaveStatus = _leaveStatusDataRepository.Fetch(x => x.LeaveRequestId == leaves.Id); var employee = _employeeDataRepository.GetById(leaves.EmployeeId); var leaveAC = new LeaveRequestAC { Id = leaves.Id, StartDate = leaves.StartDate, EndDate = leaves.EndDate, Unit = leaves.Unit, Reason = leaves.Reason, Type = leaves.Type, HolidayName = leaves.HolidayName, CompensationDate = leaves.CompensationDate, CompensationStatus = leaves.CompensationStatus, ContactName = leaves.ContactName, EmergencyContact = leaves.ContactNumber, PointOfContact = leaves.PointOfContact, DoctorName = leaves.DoctorName, DoctorContactNumber = leaves.Number, DoctorCertificate = leaves.Certificate, HolidayTypeId = leaves.HolidayTypeId, EmployeeId = leaves.EmployeeId, Condition = ((DomainModel.Models.Condition)leaves.Condition), EmployeeName = employee.Name }; List <Condition> conditionList = new List <Condition>(); List <string> teamLeaderList = new List <string>(); List <string> requestReasonList = new List <string>(); foreach (var leave in leaveStatus) { List <string> list = new List <string>(); var employees = _employeeDataRepository.FirstOrDefault(x => x.Id == leave.TeamLeaderId); teamLeaderList.Add(employees.Name); requestReasonList.Add(leave.StatusReason); conditionList.Add(leave.Condition); } leaveAC.TeamLeader = teamLeaderList; leaveAC.ResultReason = requestReasonList; leaveAC.ConditionList = conditionList; leaveRequestListAC.Add(leaveAC); } return(leaveRequestListAC); }
/// <summary> /// To get list of employee - team wise, who has got approved for leaveRequest. TeamLeader Calendar part /// </summary> /// <param name="projectId"></param> /// <returns></returns> public IEnumerable <LeaveRequestAC> TeamCalendarByProjectName(int?projectId, string teamLeaderId) { var teamList = _teamDataRepository.Fetch(x => x.ProjectId == projectId && x.TeamLeaderId == teamLeaderId); if (teamList.Count() == 0) { throw new Exception(); } var teamListAC = new List <LeaveRequest>(); var teamListResult = new List <LeaveRequestAC>(); foreach (var leaves in teamList) { var requestList = _leaveRequestDataRepository.Fetch(x => x.EmployeeId == leaves.EmployeeId && x.Condition == LMS.DomainModel.Models.Condition.Approved).ToList(); teamListAC.AddRange(requestList); } foreach (var leaves in teamListAC) { var employee = _employeeDataRepository.GetById(leaves.EmployeeId); var team = new LeaveRequestAC() { Id = leaves.Id, StartDate = leaves.StartDate, EndDate = leaves.EndDate, Unit = leaves.Unit, Reason = leaves.Reason, Type = leaves.Type, HolidayName = leaves.HolidayName, CompensationDate = leaves.CompensationDate, CompensationStatus = leaves.CompensationStatus, ContactName = leaves.ContactName, EmergencyContact = leaves.ContactNumber, PointOfContact = leaves.PointOfContact, DoctorName = leaves.DoctorName, DoctorContactNumber = leaves.Number, DoctorCertificate = leaves.Certificate, HolidayTypeId = leaves.HolidayTypeId, EmployeeId = leaves.EmployeeId, EmployeeName = employee.Name }; teamListResult.Add(team); } return(teamListResult); }
/// <summary> /// To get list of sick leave list /// </summary> /// <returns></returns> public IEnumerable <LeaveRequestAC> SickLeaveList() { var leaveRequestList = _leaveRequestDataRepository.Fetch(x => x.Type == DomainModel.Models.Type.Sick); var leaveRequestListAC = new List <LeaveRequestAC>(); foreach (var leaves in leaveRequestList) { var employee = _employeeDataRepository.GetById(leaves.EmployeeId); var leaveAC = new LeaveRequestAC { Id = leaves.Id, StartDate = leaves.StartDate, EndDate = leaves.EndDate, Unit = leaves.Unit, Reason = leaves.Reason, Type = leaves.Type, HolidayName = leaves.HolidayName, CompensationDate = leaves.CompensationDate, CompensationStatus = leaves.CompensationStatus, ContactName = leaves.ContactName, EmergencyContact = leaves.ContactNumber, PointOfContact = leaves.PointOfContact, DoctorName = leaves.DoctorName, DoctorContactNumber = leaves.Number, DoctorCertificate = leaves.Certificate, HolidayTypeId = leaves.HolidayTypeId, EmployeeId = leaves.EmployeeId, Condition = leaves.Condition, EmployeeName = employee.Name }; if (leaveAC.Condition == DomainModel.Models.Condition.HalfRejected || leaveAC.Condition == DomainModel.Models.Condition.Pending) { leaveRequestListAC.Add(leaveAC); } } return(leaveRequestListAC); }
/// <summary> /// Creates a new Leave request and adds to the table 'LeaveRequest' /// </summary> /// <param name="leaveRequest"></param> public string ApplyLeaveRequest(LeaveRequestAC leaveRequest) { LeaveRequest leave = new LeaveRequest() { Id = leaveRequest.Id, StartDate = leaveRequest.StartDate, EndDate = leaveRequest.EndDate, Unit = leaveRequest.Unit, Reason = leaveRequest.Reason, Type = leaveRequest.Type, HolidayName = leaveRequest.HolidayName, CompensationDate = leaveRequest.CompensationDate, CompensationStatus = leaveRequest.CompensationStatus, ContactName = leaveRequest.ContactName, ContactNumber = leaveRequest.EmergencyContact, PointOfContact = leaveRequest.PointOfContact, DoctorName = leaveRequest.DoctorName, Number = leaveRequest.DoctorContactNumber, Certificate = leaveRequest.DoctorCertificate, HolidayTypeId = leaveRequest.HolidayTypeId, EmployeeId = leaveRequest.EmployeeId, CreatedOn = DateTime.Now, Condition = Condition.Pending }; LeaveStatus leaveStatus = new LeaveStatus(); _leaveRequestDataRepository.Insert(leave); _leaveRequestDataRepository.Save(); List <string> teamLeader = new List <string>(); //if (_employeeRepository.FirstOrDefault(x => x.Id == leave.EmployeeId).Designation == Designation.User) //{ var list = _teamDataRepository.Fetch(x => x.EmployeeId == leaveRequest.EmployeeId); if (list.Count() == 0) { leaveStatus.TeamLeaderId = _employeeRepository.FirstOrDefault(x => x.Email == "*****@*****.**").Id; leaveStatus.Condition = Condition.Pending; leaveStatus.CreatedOn = DateTime.Now; leaveStatus.EmployeeId = leaveRequest.EmployeeId; leaveStatus.LeaveRequestId = leave.Id; _leaveStatusDataRepository.Insert(leaveStatus); leaveRequest.EmployeeName = _employeeRepository.GetById(leaveRequest.EmployeeId).Name; leaveRequest.Designation = _employeeRepository.GetById(leaveRequest.EmployeeId).Designation; leaveRequest.CreatedOn = leaveStatus.CreatedOn; } else { foreach (var item in list) { if (_projectRepository.GetById(item.ProjectId).IsProjectArchived == false) { teamLeader.Add(_employeeRepository.GetById(item.TeamLeaderId).Email); leaveStatus.Condition = LMS.DomainModel.Models.Condition.Pending; leaveStatus.CreatedOn = DateTime.Now; leaveStatus.EmployeeId = leaveRequest.EmployeeId; leaveStatus.LeaveRequestId = leave.Id; var employee = _employeeRepository.GetById(leaveRequest.EmployeeId); leaveStatus.TeamLeaderId = item.TeamLeaderId; leaveRequest.EmployeeName = employee.Name; leaveRequest.Designation = employee.Designation; leaveRequest.CreatedOn = leaveStatus.CreatedOn; _leaveStatusDataRepository.Insert(leaveStatus); } } } teamLeader.Add("*****@*****.**"); leaveRequest.TeamLeader = teamLeader; //else //{ // var admin = _employeeRepository.FirstOrDefault(x => x.Email == "*****@*****.**"); // leaveStatus.Condition = Condition.Pending; // leaveStatus.CreatedOn = DateTime.Now; // leaveStatus.EmployeeId = leaveRequest.EmployeeId; // leaveStatus.LeaveRequestId = leave.Id; // leaveStatus.TeamLeaderId = admin.Id; // _leaveStatusDataRepository.Insert(leaveStatus); //} _leaveStatusDataRepository.Save(); _leaveRequestDataRepository.Save(); LeaveApply test = new LeaveApply(); test.Session = new Dictionary <string, object> { { "Name", leaveRequest.EmployeeName }, { "Designation", leaveRequest.Designation.ToString() }, { "SiteUrl", leaveRequest.EmployeeName }, { "SiteLogo", leaveRequest.Designation.ToString() }, { "ContactNumber", leaveRequest.EmergencyContact }, { "Type", leaveRequest.Type.ToString() }, { "Unit", leaveRequest.Unit.ToString() }, { "StartDate", leaveRequest.StartDate.ToString("dd,MM,yyyy") }, { "EndDate", leaveRequest.EndDate.Value.ToString("dd,MM,yyyy") }, { "CreatedOn", leaveRequest.CreatedOn.Value.ToString("dd,MM,yyyy") }, }; test.Initialize(); var body = test.TransformText(); return(body); }