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;
            }
        }