Exemple #1
0
 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);
        }