public async Task <GroupDto> Handle(GetGroupQuery getGroupQuery, CancellationToken cancellationToken)
        {
            _authorizationService.AuthorizeGroupAccessOrThrow(_httpContextAccessor.HttpContext, getGroupQuery.Id);
            var group = await _groupRepository.GetGroupByIdAsync(getGroupQuery.Id);

            var mappedGroup = _mapper.Map <GroupDO, GroupDto>(group);

            return(mappedGroup);
        }
Example #2
0
        public async Task <MeetingDto> Handle(GetMeetingQuery getMeetingQuery, CancellationToken cancellationToken)
        {
            var meeting = await _meetingRepository.GetMeetingByIdAsync(getMeetingQuery.Id);

            _authorizationService.AuthorizeGroupAccessOrThrow(_httpContextAccessor.HttpContext, meeting.GroupID);
            var mappedMeeting = _mapper.Map <MeetingDO, MeetingDto>(meeting);

            return(mappedMeeting);
        }
        public async Task <string> Handle(UpdateMeetingCommand request, CancellationToken cancellationToken)
        {
            var meeting = await _meetingRepository.GetMeetingByIdAsync(request.ID);

            _authorizationService.AuthorizeGroupAccessOrThrow(_httpContextAccessor.HttpContext, meeting.GroupID);
            var changes = _mapper.Map <MeetingDO>(request);
            var updated = _mapper.Map(meeting, changes);
            await _meetingRepository.UpdateMeetingAsync(updated);

            return(request.ID);
        }
Example #4
0
        public async Task <string> Handle(DeleteMeetingCommand request, CancellationToken cancellationToken)
        {
            var meeting = await _meetingRepository.GetMeetingByIdAsync(request.Id);

            _authorizationService.AuthorizeGroupAccessOrThrow(_httpContextAccessor.HttpContext, meeting.GroupID);
            await _meetingRepository.DeleteMeetingAsync(request.Id);

            await UpdateGroupAsync(meeting);

            return(request.Id);
        }
        public async Task <DateTime> Handle(GetDateRecomendationQuery request, CancellationToken cancellationToken)
        {
            var meeting = await _meetingRepository.GetMeetingByIdAsync(request.MeetingID);

            _authorizationService.AuthorizeGroupAccessOrThrow(_httpContextAccessor.HttpContext, meeting.GroupID);
            if (meeting is null)
            {
                throw new NotFoundException();
            }
            var users = await _userRepository.GetUsersByGroupIdAsync(meeting.GroupID);

            return(_datePickerService.PickDate(GetDates(users)));
        }
Example #6
0
        public async Task <string> Handle(UpdateGroupCommand request, CancellationToken cancellationToken)
        {
            _authorizationService.AuthorizeGroupAccessOrThrow(_httpContextAccessor.HttpContext, request.ID);
            var group = await _groupRepository.GetGroupByIdAsync(request.ID);

            var changes = _mapper.Map <GroupDO>(request);
            var updated = _mapper.Map(changes, group);
            await _groupRepository.UpdateGroupAsync(updated);

            await UpdateUsersAsync(request.ID, request.MemberIDs, group.MemberIDs);

            return(request.ID);
        }
Example #7
0
        public async Task <string> Handle(DeleteGroupCommand request, CancellationToken cancellationToken)
        {
            _authorizationService.AuthorizeGroupAccessOrThrow(_httpContextAccessor.HttpContext, request.Id);
            var group = await _groupRepository.GetGroupByIdAsync(request.Id);

            await DeleteMeetingsAsync(group.MeetingIDs);

            await _groupRepository.DeleteGroupAsync(request.Id);

            await UpdateUsersAsync(request.Id);

            return(request.Id);
        }
        public async Task <string> Handle(CreateMeetingCommand request, CancellationToken cancellationToken)
        {
            _authorizationService.AuthorizeGroupAccessOrThrow(_httpContextAccessor.HttpContext, request.GroupID);
            var meeting = _mapper.Map <MeetingDO>(request);
            var user    = _httpContextAccessor.HttpContext.Items["Account"] as UserDO;

            meeting.OrganiserID = user.ID;
            await _recomendationService.GetRecomendations(meeting);

            await _meetingRepository.AddMeetingAsync(meeting);

            await UpdateGroupAsync(meeting);

            return(meeting.ID);
        }
        public async Task <IEnumerable <MealDto> > Handle(GetMealRecomendationQuery request, CancellationToken cancellationToken)
        {
            var meeting = await _meetingRepository.GetMeetingByIdAsync(request.MeetingID);

            _authorizationService.AuthorizeGroupAccessOrThrow(_httpContextAccessor.HttpContext, meeting.GroupID);
            if (meeting is null)
            {
                throw new NotFoundException();
            }
            var users = await _userRepository.GetUsersByGroupIdAsync(meeting.GroupID);

            var preferences = users.Select(x => x.MealPreference).ToList();
            var meals       = await _foodRecomendationService.GetMealRecomendations(preferences);

            return(meals.Select(x => _mapper.Map <MealDto>(x)).ToList());
        }
        public async Task <IEnumerable <MovieDto> > Handle(GetMovieRecomendationQuery request, CancellationToken cancellationToken)
        {
            var meeting = await _meetingRepository.GetMeetingByIdAsync(request.MeetingID);

            _authorizationService.AuthorizeGroupAccessOrThrow(_httpContextAccessor.HttpContext, meeting.GroupID);
            if (meeting is null)
            {
                throw new NotFoundException();
            }
            var movies = await _movieRecomendationService.GetMovieRecomendations(await GetPreferencesAsync(meeting.GroupID));

            await AddMoviesToRepositoryAsync(movies);
            await UpdateMeetingAsync(meeting, movies);

            return(movies.Select(x => _mapper.Map <MovieDto>(x)).ToList());
        }