public ActionResult <int> Post([FromBody] Artist artist) { if (string.IsNullOrEmpty(artist.Name)) { return(BadRequest("Nombre no especificado")); } _context.Artists.Add(artist); _context.SaveChanges(); return(Ok(artist.ArtistId)); }
public async Task <JsonResult> SaveAjax(Track newTrack) { // Validar el modelo if (!ModelState.IsValid) { return(new JsonResult(new { success = false })); } try { // Variable para alamacenar el ID solicitado var tempTrackId = newTrack.TrackId; // Si el trackId del param newTrack es 0 if (newTrack.TrackId == 0) { // Insertar un nuevo track await _chinookContext.Tracks.AddAsync(newTrack); } else if (newTrack.TrackId > 0) { // Actualizar un track existente // Trata de obtener la entidad de BD var currentTrack = await _chinookContext.Tracks.FindAsync(newTrack.TrackId); if (currentTrack == null) { throw new Exception("No se encontro el track que se queria editar"); } // Setear solo los campos que queremos actualizar currentTrack.Name = newTrack.Name; currentTrack.GenreId = newTrack.GenreId; currentTrack.AlbumId = newTrack.AlbumId; currentTrack.MediaTypeId = newTrack.MediaTypeId; currentTrack.UnitPrice = newTrack.UnitPrice; } // Guardar los cambios var saveResult = _chinookContext.SaveChanges(); if (saveResult <= 0) { throw new Exception("Ningun registro fue afectado"); } // Notificar el registro al trackshub if (tempTrackId == 0) { // Solo notificar cuando se registra una nueva entidad await _hubConnection.StartAsync(); await _hubConnection.InvokeAsync("NotificarRegistro", newTrack.TrackId, newTrack.Name); } // Devolver la respuesta satisfactoria return(new JsonResult(new { success = true })); } catch (Exception ex) { // loggear el error throw; } }