public List <EmployeeListDTO> EmployeeList(string searchKey = null) { Employee[] employees = null; var today = DateTime.UtcNow; var statusApprovedID = _vacationStatuses.GetByType(VacationStatusTypeEnum.Approved.ToString()).VacationStatusTypeID; var vacations = _vacations.Get(x => x.VacationStatusTypeID.Equals(statusApprovedID)); var result = new List <EmployeeListDTO>(); if (searchKey != null) { bool whereLinq(Employee emp) => (string.Format($"{emp.Name} {emp.Surname}").ToLower().Contains(searchKey.ToLower()) || emp.PhoneNumber.ToLower().Contains(searchKey.ToLower()) || emp.WorkEmail.ToLower().Contains(searchKey.ToLower())) && emp.Status; employees = _employees.Get(whereLinq); } else { employees = _employees.Get(x => x.Status); } foreach (var employee in employees) { if (employee.EmployeesTeam.Count == 0) { var temp = Mapper.Map <Employee, EmployeeForListDTO>(employee); temp.CurrentVacationID = vacations.FirstOrDefault(x => x.EmployeeID.Equals(temp.EmployeeID) && x.DateOfBegin.Date <= today && x.DateOfEnd.Date >= today)?.VacationID; result.Add(new EmployeeListDTO { EmployeeDto = temp, TeamDto = new TeamDTO { TeamID = "Empty", TeamLeadID = "Empty", TeamName = "Empty" } }); } else { foreach (var team in employee.EmployeesTeam) { var temp = Mapper.Map <Employee, EmployeeForListDTO>(employee); temp.CurrentVacationID = vacations.FirstOrDefault(x => x.EmployeeID.Equals(temp.EmployeeID) && x.DateOfBegin.Date <= today && x.DateOfEnd.Date >= today)?.VacationID; result.Add(new EmployeeListDTO { EmployeeDto = temp, TeamDto = new TeamDTO { TeamID = team.TeamID, TeamLeadID = team.TeamLeadID, TeamName = team.TeamName } }); } } } return(result.OrderBy(x => FunctionHelper.EmployeeSortFunc(x.TeamDto.TeamName)).ToList()); }
public List <VacationDTO> GetVacations() { var vacations = _vacationRepository.Get(); var vacationsDTO = new List <VacationDTO>(); foreach (var vacation in vacations) { vacationsDTO.Add(Mapper.Map <Vacation, VacationDTO>(vacation)); } return(vacationsDTO); }
public RequestDTO[] GetRequestsForAdmin(string searchKey = null) { var vacationStatusTypes = _vacationStatusTypes.Get(); var users = _users.Get(); bool whereLinq(Employee emp) => (emp.AspNetUser.AspNetRoles.Any(role => role.Name.Equals(RoleEnum.Administrator.ToString())) || (emp.EmployeesTeam.Count.Equals(1) && emp.EmployeesTeam.First().TeamLeadID.Equals(ReviewerID)) || emp.EmployeesTeam.Count.Equals(0)) && emp.Status.Equals(true); var employees = _employees.Get(whereLinq); if (employees != null) { var requestsList = _vacations.Get().Join(employees, vac => vac.EmployeeID, emp => emp.EmployeeID, (vac, emp) => new RequestDTO { EmployeeID = emp.EmployeeID, VacationID = vac.VacationID, Name = string.Format($"{emp.Name} {emp.Surname}"), TeamName = emp.EmployeesTeam.Count.Equals(0) ? Empty : emp.EmployeesTeam.First().TeamName, Duration = vac.Duration, VacationDates = string.Format($"{vac.DateOfBegin.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)}-{vac.DateOfEnd.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)}"), EmployeesBalance = emp.VacationBalance, Created = vac.Created, Status = vacationStatusTypes.FirstOrDefault(type => type.VacationStatusTypeID.Equals(vac.VacationStatusTypeID)).VacationStatusName, }).OrderBy(req => FunctionHelper.VacationSortFunc(req.Status)).ThenBy(req => req.Created).ToArray(); if (searchKey != null) { requestsList = requestsList.Where(x => x.Name.ToLower().Contains(searchKey.ToLower()) || x.TeamName.ToLower().Contains(searchKey.ToLower())).ToArray(); } return(requestsList); } return(new RequestDTO[0]); }
public IActionResult Index(VacationAccrualViewModel vm) { if (_signInManager.IsSignedIn(User)) { string userId = _userManager.GetUserId(User); if (_userRepository.Exists(userId)) { UserDataModel userData = _userRepository.Get(userId); vm.StartDate = DecodeStartDateEvenWW(userData.Start_Date_Even_Ww); vm.Accrual = userData.Accrual; vm.MaxBalance = userData.Max_Balance; vm.Period = userData.Period + 1; // to account for the previous period extra row vm.DaysOff = userData.Take_Days_Off % 1 == 0 ? Convert.ToInt32(userData.Take_Days_Off).ToString() : userData.Take_Days_Off.ToString(); vm.PeriodList = _vacationRepository.Get( userId, DateTime.Parse(vm.StartDate).AddDays(-14), vm.Period ); if (vm.PeriodList.Count < vm.Period) { string startDate = DateTime.Parse(vm.StartDate).AddDays(14 * (vm.PeriodList.Count - 1)).ToString(); decimal balance = Convert.ToDecimal(vm.PeriodList.Last().Balance); decimal daysOff = Convert.ToDecimal(vm.DaysOff); vm.AppendPeriodList(vm.PeriodList, startDate, vm.MaxBalance, vm.Period - vm.PeriodList.Count, vm.Accrual, balance, daysOff, true); } return(View(vm)); } TempData["FirstTimeLogin"] = true; return(RedirectToAction("Preferences")); } return(View(vm)); }
public async Task <Unit> Handle(AcceptVacationCommand request, CancellationToken cancellationToken) { var vacation = await VacationRepository.Get(request.Id); if (vacation == null) { throw new ArgumentOutOfRangeException("Vacation does not exist."); } vacation.Accept(); await VacationRepository.Update(vacation); await Mediator.Publish(new VacationAcceptedEvent { Id = vacation.Id }); return(await Unit.Task); }
public ProfileVacationDTO[] GetUserVacationsData(string id) { var employee = _employees.GetById(id); var vacationStatuses = _vacationStatusTypes.Get(); var vacationTypes = _vacationTypes.Get(); var vacations = _vacations.Get(x => x.EmployeeID.Equals(employee.EmployeeID)).Select(x => new ProfileVacationDTO { VacationType = vacationTypes.FirstOrDefault(y => y.VacationTypeID.Equals(x.VacationTypeID)).VacationTypeName, Comment = x.Comment, DateOfBegin = x.DateOfBegin, DateOfEnd = x.DateOfEnd, Duration = x.Duration, Status = vacationStatuses.FirstOrDefault(y => y.VacationStatusTypeID.Equals(x.VacationStatusTypeID)).VacationStatusName, Created = x.Created }).OrderBy(x => FunctionHelper.VacationSortFunc(x.Status)).ThenBy(x => x.Created).ToArray(); return(vacations); }