Example #1
0
        public IActionResult CreateFavoriteAsync(string userId, [FromBody] FavoriteForCreationDto jobFavorite)
        {
            if (jobFavorite == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            // mapeo el objeto DTO de entrada "jobFavorite" a la entidad "Entities.FavoriteEntity"
            // para utilizar la entidad para el almacenamiento de la información en DB
            var finalFavorite = _mapper.Map <FavoriteEntity>(jobFavorite);

            finalFavorite.UserId = userId;

            _favoriteRepository.CreateFavoriteAsync(finalFavorite);

            // mapeo la entidad que se guardó en la DB (FavoriteEntity) como el objeto DTO de respuesta (FavoriteDto)
            var createdFavoriteToReturn = _mapper.Map <FavoriteDto>(finalFavorite);

            // regresa un Created (201), el objeto recién creado y la llave "Location" en
            // el header indicando donde se puede obtener el recurso recién creado
            return(CreatedAtRoute(
                       nameof(GetFavoriteAsync),                             // referencia al "Name" del método "GetFavoriteAsync" para obtener la url
                       new { userId = userId, jobId = finalFavorite.JobId }, // clase anónima con las instancias de la url
                       createdFavoriteToReturn));                            // objeto recién creado
        }
        public IActionResult AddFavoriteForUser(Guid userId, [FromBody] FavoriteForCreationDto favorite)
        {
            try
            {
                if (!_userRepository.UserExists(userId))
                {
                    return(NotFound(new { message = $"User {userId} does not exist" }));
                }

                var favoriteEntity = _mapper.Map <Favorite>(favorite);

                _favoriteRepository.AddFavoriteForUser(userId, favoriteEntity);

                if (!_favoriteRepository.Save())
                {
                    throw new AppException($"Adding a favorite for user {userId} failed on save.");
                }

                var favoriteToReturn = _mapper.Map <FavoriteDto>(favoriteEntity);

                return(CreatedAtRoute("GetFavoriteForUser", new { userId = userId, id = favoriteToReturn.Id }, favoriteToReturn));
            }
            catch (AppException ex)
            {
                return(BadRequest(new { message = ex.Message }));
            }
        }
Example #3
0
        public ActionResult <ProductForHomeDto> LikeProduct(FavoriteForCreationDto favoriteDto)
        {
            var client  = clientService.GetClientById(favoriteDto.ClientId);
            var product = productService.GetProductById(favoriteDto.ProductId);

            if (client == null || product == null)
            {
                return(NotFound());
            }

            var favorite = favoritesService.AddProductToFavorites(new Favorites {
                ProductId = favoriteDto.ProductId, ClientId = favoriteDto.ClientId
            });

            return(CreatedAtRoute("GetProduct", new { productId = product.Id }, favorite));
        }
Example #4
0
        public ActionResult <ProductForHomeDto> DislikeProduct(FavoriteForCreationDto favoriteDto)
        {
            var client  = clientService.GetClientById(favoriteDto.ClientId);
            var product = productService.GetProductById(favoriteDto.ProductId);

            if (client == null || product == null)
            {
                return(NotFound());
            }

            var favorite = favoritesService.RemoveProductFromFavorites(new Favorites {
                ProductId = favoriteDto.ProductId, ClientId = favoriteDto.ClientId
            });

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

            return(Ok(favorite));
        }