Ejemplo n.º 1
0
        public JsonResult GetEmpLeaveDays(string empNo)
        {
            try
            {
                var leaveDaysDetails = _staffServices.GetEmpLeaveDays(empNo);
                if (!leaveDaysDetails.Success)
                {
                    return(Json(leaveDaysDetails));
                }

                var emp = _context.HrpEmployee.FirstOrDefault(e => e.EmpNo.ToLower().Equals(empNo.ToLower()));
                if (emp == null)
                {
                    return(null);
                }

                if (emp.Gender.ToLower().Equals("male"))
                {
                    leaveDaysDetails.Data.RemoveAll(x => x.LeaveType.ToLower().Equals("maternity leave"));
                }

                var list    = leaveDaysDetails.Data.GroupBy(x => x.LeaveType).Select(grp => grp.First()).ToList();
                var listSum = new List <LeaveDaysSum>();
                foreach (var lv in list)
                {
                    var sum = leaveDaysDetails.Data.Where(x => x.LeaveType.Equals(lv.LeaveType)).Sum(s => s.LeaveDays) ?? 0;
                    var l   = new LeaveDaysSum
                    {
                        Code       = lv.Code,
                        LeaveDays  = sum,
                        LeaveGroup = lv.LeaveGroup,
                        LeaveType  = lv.LeaveType
                    };
                    listSum.Add(l);
                }


                if (leaveDaysDetails.Data.Count > 0)
                {
                    return(Json(new ReturnData <List <LeaveDaysSum> >
                    {
                        Success = true,
                        Message = "Leave days found",
                        Data = listSum,
                        TotalItems = listSum.Count
                    }));
                }
                return(Json(new ReturnData <List <LeaveDaysSum> >
                {
                    Success = false,
                    Message = "No Leave days found",
                }));
            }
            catch (Exception e)
            {
                return(Json(new ReturnData <List <LeaveDaysSum> >
                {
                    Success = false,
                    Message = "Error getting Leave days",
                    Error = new Error(e)
                }));
            }
        }
Ejemplo n.º 2
0
        public ReturnData <List <LeaveDaysSum> > GetEmpLeaveDaysCredit(string empNo)
        {
            try
            {
                var leaveCrdts = new List <LeaveDaysSum>();
                var leaveGroup = _unitOfWork.HrpEmployee.GetFirstOrDefault(e => e.EmpNo.ToLower().Equals(empNo.ToLower())).LeaveGroup ?? "";

                var currentLeavePeriod = _unitOfWork.HrpLeavePeriod.GetAll().OrderByDescending(y => y.EndDate)
                                         .FirstOrDefault(l => l.StartDate.Year == DateTime.UtcNow.Year)?.Names ??
                                         DateTime.UtcNow.Year.ToString();

                var entitledLeaves = _unitOfWork.HrpLeaveEntit.GetAll().Join(_unitOfWork.HrpLeaveType.GetAll(), le => le.LeaveType.ToUpper(),
                                                                             lt => lt.Names.ToUpper(), (le, lt) => new
                {
                    le.EmpNo,
                    le.LeaveType,
                    lt.Code,
                    lt.Emergency,
                    Closed = Convert.ToBoolean(lt.Closed),
                    le.LeavePeriod
                })
                                     .Where(l => !l.Closed && l.EmpNo.ToUpper().Equals(empNo.ToUpper()) && l.LeavePeriod == currentLeavePeriod).ToList();
                var distinctEntitledLvs = entitledLeaves.GroupBy(d => d.LeaveType)
                                          .Select(g => g.First()).ToList();
                if (!distinctEntitledLvs.Any())
                {
                    return new ReturnData <List <LeaveDaysSum> >
                           {
                               Success = false,
                               Data    = leaveCrdts,
                               Message = "No entitled leaves found"
                           }
                }
                ;
                foreach (var lve in distinctEntitledLvs)
                {
                    var entitledLeave = GetUserLeavesEntitled(lve.EmpNo, lve.LeaveType);

                    var takenLeave = GetUserLeavesTaken(lve.EmpNo, lve.LeaveType);

                    var leaveDaySum = new LeaveDaysSum
                    {
                        LeaveType  = lve.LeaveType,
                        LeaveDays  = entitledLeave - takenLeave,
                        Code       = lve.Code,
                        Emergency  = lve.Emergency,
                        LeaveGroup = leaveGroup
                    };
                    leaveCrdts.Add(leaveDaySum);
                }

                return(new ReturnData <List <LeaveDaysSum> >
                {
                    Success = true,
                    Data = leaveCrdts,
                    Message = "Entitled leaves found"
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return(new ReturnData <List <LeaveDaysSum> >
                {
                    Success = false,
                    Message = "Sorry, An error occured"
                });
            }
        }