Ejemplo n.º 1
0
        public async Task <IActionResult> Crear(string idUsuario, int idAnuncio, [FromForm] CreacionImagenRequest request)
        {
            try
            {
                var responseUser = await ValidarPropietario(idUsuario);

                if (!responseUser.Success)
                {
                    return(StatusCode(StatusCodes.Status403Forbidden, responseUser.Message));
                }

                var response = await _imagenService.CrearImagenAsync(idAnuncio, request);

                if (!response.Success)
                {
                    return(StatusCode(StatusCodes.Status400BadRequest, response.Message));
                }

                return(Created("", response));
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message));
            }
        }
        private ImagenEntity UploadingToCloudinary(CreacionImagenRequest request)
        {
            var file         = request.Imagen;
            var uploadResult = new ImageUploadResult();

            if (file.Length > 0)
            {
                using (var stream = file.OpenReadStream())
                {
                    var uploadParams = new ImageUploadParams()
                    {
                        File           = new FileDescription(file.Name, stream),
                        Transformation = new Transformation().Width(500).Height(500).Crop("fill").Gravity("face")
                    };
                    uploadResult = _cloudinary.Upload(uploadParams);
                }
            }
            var imagenEntity = _mapper.Map <ImagenEntity>(request);

            imagenEntity.ImagenUrl = uploadResult.Uri.ToString();
            imagenEntity.IdPublico = uploadResult.PublicId;
            return(imagenEntity);
        }
        public async Task <BaseServiceResponse <int> > CrearImagenAsync(int idAnuncio, CreacionImagenRequest request)
        {
            BaseServiceResponse <int> response = new BaseServiceResponse <int>();
            var imagenEntity = UploadingToCloudinary(request);

            if (string.IsNullOrEmpty(imagenEntity.ImagenUrl))
            {
                response.Message = "La imagen no se pudo subir a la nube.";
                return(response);
            }

            imagenEntity.IdAnuncio = idAnuncio;
            var idImagen = await _imagenRepository.CrearImagenAsync(imagenEntity);

            if (idImagen == default)
            {
                response.Message = "La imagen no se pudo registrar.";
                return(response);
            }

            response.Message = "La imagen se registró exitosamente.";
            response.Success = true;
            response.Data    = idImagen;

            return(response);
        }