예제 #1
0
        public async Task <ActionResult <FavouriteTripDto> > LikeAsync([FromBody, Required] FavouriteTripDto favouriteTripDto)
        {
            if (!ModelState.IsValid)
            {
                throw new ArgumentException(nameof(favouriteTripDto));
            }
            //todo mb replace logic to local storage
            var login = HttpContext.User.Identity.Name;

            var userAuth = await _authService.GetActiveUserByLoginAsNoTrackingAsync(login);

            if (userAuth == null || userAuth.IsBanned)
            {
                throw new ValidationException(_stringLocalizer["UserIsDeletedOrBanned"]);
            }

            if (userAuth.ForceRelogin)
            {
                throw new UnauthorizedException(string.Empty);
            }

            favouriteTripDto.UserId = userAuth.UserId;

            return(await _favouriteTripService.LikeAsync(favouriteTripDto));
        }
예제 #2
0
        public async Task <FavouriteTripDto> IsLikedTripAsync(FavouriteTripDto favouriteTripDto)
        {
            if (favouriteTripDto == null)
            {
                throw new ArgumentNullException(nameof(favouriteTripDto));
            }
            if (favouriteTripDto.UserId <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(favouriteTripDto.UserId));
            }
            if (favouriteTripDto.TripId <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(favouriteTripDto.TripId));
            }

            var favouriteTrip = new FavouriteTrip
            {
                UserId = favouriteTripDto.UserId,
                TripId = favouriteTripDto.TripId
            };

            var favouriteTripResponse = await _favouriteTripStorage.IsLikedTripAsync(favouriteTrip);

            if (favouriteTripResponse == null)
            {
                favouriteTripDto.IsFavourite = false;
            }
            else
            {
                favouriteTripDto.IsFavourite = favouriteTripResponse.IsFavourite;
            }

            return(favouriteTripDto);
        }
예제 #3
0
        public async Task <FavouriteTripDto> LikeAsync(FavouriteTripDto favouriteTripDto)
        {
            if (favouriteTripDto == null)
            {
                throw new ArgumentNullException(nameof(favouriteTripDto));
            }

            var favouriteTrip = new FavouriteTrip
            {
                UserId      = favouriteTripDto.UserId,
                TripId      = favouriteTripDto.TripId,
                IsFavourite = favouriteTripDto.IsFavourite
            };

            var result = await _favouriteTripStorage.LikeAsync(favouriteTrip);

            favouriteTripDto.IsFavourite = result;
            return(favouriteTripDto);
        }
예제 #4
0
        public async Task <ActionResult <FavouriteTripDto> > IsLikedTripAsync([FromBody, Required] FavouriteTripDto favouriteTripDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var login = HttpContext.User.Identity.Name;

            var userAuth = await _authService.GetActiveUserByLoginAsNoTrackingAsync(login);

            if (userAuth.ForceRelogin)
            {
                throw new UnauthorizedException(string.Empty);
            }

            favouriteTripDto.UserId = userAuth.UserId;

            return(await _favouriteTripService.IsLikedTripAsync(favouriteTripDto));
        }