public async Task <ActionResult <TodoItem> > PostTodoItem(TodoItem_RequestInsert todoItem_insert) { string evento = "POST"; //crear y llenar el objeto que recibe el EF TodoItem todoItem = new TodoItem(); todoItem.Name = todoItem_insert.Name; todoItem.Detalle = todoItem_insert.Detalle; try { _context.TodoItem.Add(todoItem); //logger.LogDebug("Creado el id : " + todoItem.Id.ToString()); await _context.SaveChangesAsync(); //crea el objeto en base de datos TraceEF(evento, "Creado el item : " + todoItem.Id.ToString()); //guarda la acción en BD con el objeto creado } catch (Exception ex) { TraceEF(evento, ex.Message, 1); throw; } //devuelve el objeto creado return(CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem)); }
public async Task <IActionResult> PutTodoItem(int id, TodoItem_RequestInsert _todoItemrequest) { string evento = $"PUT/{id}"; //busca el objeto según el ID desde la BD y le asigna los valores que se envían al endpoint a través de obj _todoItemrequest var todoItem = await _context.TodoItem.FindAsync(id); //condicion para asignar valores el objeto debe ser distino de NULL if (todoItem != null) { todoItem.Name = _todoItemrequest.Name; todoItem.Detalle = _todoItemrequest.Detalle; } else { logger.LogWarning($"El ID : {id} no existe"); TraceEF(evento, $"El ID : {id} no existe"); return(NotFound()); } try { if (id != todoItem.Id) { logger.LogWarning("BadRequest"); TraceEF(evento, "BadRequest"); return(BadRequest()); } _context.Entry(todoItem).State = EntityState.Modified; logger.LogWarning("EntityState ID Modificado"); TraceEF(evento, $"EntityState ID Modificado : {id}"); try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException dbex) { if (!TodoItemExists(id)) { logger.LogWarning($"No se puede encontrar el ID : {id}"); TraceEF(evento, dbex.Message, 1); return(NotFound()); } else { throw; } } return(NoContent()); } catch (Exception ex) { TraceEF(evento, ex.Message, 1); throw; } }