public async Task <IActionResult> GetAsync()
        {
            var userId = HttpContext.User.GetUserId();

            if (!userId.HasValue)
            {
                return(Unauthorized());
            }

            var vacations = await _repositoryManager
                            .VacationRepository.GetAsync(userId.Value);

            return(Ok(vacations.Select(v => VacationMapper.Map(v))));
        }
        public async Task <IActionResult> CreateAsync([FromBody] InVacationDTO vacationDTO)
        {
            if (await _repositoryManager.VacationRepository
                .ExistAsync(vacationDTO.UserId, vacationDTO.Year))
            {
                return(BadRequest());
            }

            var vacation = VacationMapper.Map(vacationDTO);

            vacation = _repositoryManager.VacationRepository.Create(vacation);

            await _repositoryManager.SaveAsync();

            return(Ok(VacationMapper.Map(vacation)));
        }
        public async Task <IActionResult> UpdateAsync([FromRoute] int id,
                                                      [FromBody] InVacationDTO vacationDTO)
        {
            var vacation = await _repositoryManager
                           .VacationRepository.GetAsync(vacationDTO.UserId, id);

            if (vacation == null)
            {
                return(NotFound());
            }

            vacation.Update(vacationDTO);

            await _repositoryManager.SaveAsync();

            return(Ok(VacationMapper.Map(vacation)));
        }
        public async Task <IActionResult> GetAsync([FromRoute] int id)
        {
            var vacations = await _repositoryManager.VacationRepository.GetAsync(id);

            return(Ok(vacations.Select(v => VacationMapper.Map(v))));
        }