Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
 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());
     }
 }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        /// <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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        /// <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);
        }
Esempio n. 8
0
        /// <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);
        }
Esempio n. 9
0
        /// <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);
        }
Esempio n. 10
0
        /// <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);
        }