public async Task <LeaveMainResponse> GetAllLeaveRecordByEmployee(LeaveRequestByEmployee FilterRequest)
        {
            FilterRequest.Page  = FilterRequest.Page == 0 ? 1 : FilterRequest.Page;
            FilterRequest.Limit = FilterRequest.Limit == 0 ? 10 : FilterRequest.Limit;
            IQueryable <LeaveResponse> data;
            LeaveMainResponse          leaveMainResponse = new LeaveMainResponse();

            data = from l1 in ObjContext.Leave
                   join GC1 in ObjContext.GlobalCodes on l1.LeaveType equals GC1.GlobalCodeId into gcode1
                   from gcd1 in gcode1.DefaultIfEmpty()
                   join GC2 in ObjContext.GlobalCodes on l1.RequestStatus equals GC2.GlobalCodeId into gcode2
                   from gcd2 in gcode2.DefaultIfEmpty()
                   join GC3 in ObjContext.GlobalCodes on l1.Duration equals GC3.GlobalCodeId into gcode3
                   from gcd3 in gcode3.DefaultIfEmpty()
                   join U in ObjContext.Users on l1.EmployeeId equals U.UserId into US1
                   from US in US1.DefaultIfEmpty()
                   orderby FilterRequest.OrderBy
                   where l1.IsDeleted == false && l1.IsActive == true && l1.EmployeeId == FilterRequest.EmployeeId
                   select new LeaveResponse
            {
                EmployeeId        = l1.EmployeeId,
                LeaveType         = gcd1.CodeName,
                Duration          = (gcd3.CodeName == null ? String.Empty : gcd3.CodeName),
                StartDate         = l1.StartDate,
                EndDate           = l1.EndDate,
                NumberOfDays      = l1.NumberOfDays,
                CreatedOn         = l1.CreatedOn,
                LeaveId           = l1.LeaveId,
                Reason            = l1.Reason,
                RequestStatusName = (gcd2.CodeName == null ? String.Empty : gcd2.CodeName),
                PendingLeaves     = l1.PendingLeaves,
                RequestStatus     = l1.RequestStatus,
                Username          = US.UserName,
                Email             = US.Email
            };

            if (FilterRequest.OrderByDescending == true)
            {
                data = data.OrderByDescending(x => x.GetType().GetProperty(FilterRequest.OrderBy).GetValue(x));
            }
            else
            {
                data = data.OrderBy(x => x.GetType().GetProperty(FilterRequest.OrderBy).GetValue(x));
            }
            leaveMainResponse.totalRecords = data.Count();
            if (FilterRequest.AllRecords)
            {
                leaveMainResponse.leaveResponse = await data.ToListAsync();
            }
            else
            {
                leaveMainResponse.leaveResponse = data.Skip((FilterRequest.Page - 1) * FilterRequest.Limit).Take(FilterRequest.Limit).ToList();
            }

            return(leaveMainResponse);
        }
        public async Task <BaseResponse> GetAllLeaveRecordByEmployee(LeaveRequestByEmployee filterRequest)
        {
            try
            {
                var leaveResponse = await _leavesRepository.GetAllLeaveRecordByEmployee(filterRequest);

                if (leaveResponse.totalRecords != 0)
                {
                    _response.Status  = true;
                    _response.Message = Constants.DEFAULT_SUCCESS_MSG;
                    _response.data.leaveMainResponse = leaveResponse;
                }
                else
                {
                    _response.Message = Constants.GLOBAL_CODE_CATEGORY_NOT_EXISTS;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(_response);
        }
        public async Task <ActionResult> GetAllLeaves(LeaveRequestByEmployee filterRequest)
        {
            try
            {
                _response = await _LeavesService.GetAllLeaveRecordByEmployee(filterRequest);

                if (_response.Status == false)
                {
                    _json = JsonConvert.SerializeObject(_response, _serializerSettings);
                    return(BadRequest(_json));
                }

                _json = JsonConvert.SerializeObject(_response, _serializerSettings);
                return(new OkObjectResult(_json));
            }
            catch (Exception ex)
            {
                _response.Message = ex.Message;
                _response.Status  = false;
                _json             = JsonConvert.SerializeObject(_response, _serializerSettings);
                return(BadRequest(_json));
            }
        }