Пример #1
0
 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;
            }
        }