Beispiel #1
0
        [HttpPost("{idPhoto}/establecerPhotoPrincipal")] // Debiera ser un put, pero al estar modificando simplemente un atributo de true a false me parece mas practico asi. (Cons: La API no es tan Restful)
        public async Task <IActionResult> EstablecerPhotoPrincipal(int id, int idPhoto)
        {
            if (id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            var usuario = await repo.GetUsuario(id);

            if (!usuario.FotosPublicas.Any(p => p.id == idPhoto))
            {
                return(Unauthorized());
            }

            var photo = await repo.ObtenerPhoto(idPhoto);

            if (photo.EsPrincipal)
            {
                return(BadRequest("La foto ya es principal."));
            }

            var photoPrincipalActual = await repo.ObtenerFotoPrincipalUsuario(id);

            photoPrincipalActual.EsPrincipal = false;

            photo.EsPrincipal = true;

            if (await repo.GuardarCambios())
            {
                return(NoContent());
            }
            return(BadRequest("No se pudo actualizar el estado de la foto"));
        }