public async Task <int> CreateTodoItemAsync(CreateOrUpdateTodoItemRequestModel request)
 {
     using (var conn = Connection)
     {
         return((await conn.QueryAsync <int>("TodoItem_Create",
                                             new
         {
             @Title = request.Title,
             @Completed = request.Completed,
             @Description = request.Description
         }, commandType: CommandType.StoredProcedure)
                 ).FirstOrDefault());
     }
 }
        public async Task <bool> UpdateTodoItemAysnc(int TodoItemId, CreateOrUpdateTodoItemRequestModel request)
        {
            using (var conn = Connection)
            {
                var affected = await conn.ExecuteAsync("TodoItem_Update",
                                                       new
                {
                    @Id          = TodoItemId,
                    @Title       = request.Title,
                    @Completed   = request.Completed,
                    @Description = request.Description
                }, commandType : CommandType.StoredProcedure
                                                       );

                var success = affected > 0;

                return(success);
            }
        }
        public async Task <SingleResponseModel <int> > CreateTodoItem(CreateOrUpdateTodoItemRequestModel request)
        {
            var response = new SingleResponseModel <int>();

            try
            {
                if (request == null)
                {
                    response.Status  = ResponseCodes.ValidationError;
                    response.Message = "No request received.";

                    return(response);
                }


                if (string.IsNullOrEmpty(request.Title))
                {
                    response.Status  = ResponseCodes.ValidationError;
                    response.Message = "A todo item title is required";

                    return(response);
                }

                response.Data = await _todoItemProvider.CreateTodoItemAsync(request);

                response.Status  = ResponseCodes.Success;
                response.Message = "Success";

                return(response);
            }
            catch (Exception e)
            {
                response.Status = ResponseCodes.ProcessError;
                var logMessage = response.Message = "Failed to add a todo item.";

                _logger.LogError(e, logMessage + " | Request: {@0}", request);

                return(response);
            }
        }
 public async Task <SingleResponseModel <bool> > UpdateTodoItem(int id, [FromBody] CreateOrUpdateTodoItemRequestModel request)
 {
     return(await _todoItemService.UpdateTodoItem(id, request));
 }
 public async Task <SingleResponseModel <int> > CreateTodoItem([FromBody] CreateOrUpdateTodoItemRequestModel request)
 {
     return(await _todoItemService.CreateTodoItem(request));
 }