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) })); } }
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" }); } }