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 })); } }
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)); }
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)); }