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