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
        }