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());
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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]);
        }
Exemplo n.º 4
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));
        }
Exemplo n.º 5
0
        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);
        }