Add base project
This commit is contained in:
@@ -17,7 +17,7 @@ public class TodosController : ControllerBase
|
||||
|
||||
[HttpPost]
|
||||
public async Task<ActionResult<Core.Entities.Todo>> CreateTodo([FromBody] CreateTodoRequest request) =>
|
||||
Ok(await _todoRepository.CreateTodoAsync(request.Title));
|
||||
Ok(await _todoRepository.CreateTodoAsync(request.Title, String.Empty));
|
||||
|
||||
[HttpGet]
|
||||
public async Task<ActionResult<IEnumerable<Core.Entities.Todo>>> GetTodos() =>
|
||||
|
@@ -11,5 +11,8 @@ public record TodoResponse
|
||||
public string Title { get; init; }
|
||||
|
||||
[JsonPropertyName("status")]
|
||||
public bool Status { get; init; }
|
||||
public bool Status { get; init; }
|
||||
|
||||
[JsonPropertyName("project")]
|
||||
public string Project { get; set; }
|
||||
}
|
@@ -14,14 +14,14 @@ namespace Todo.Api.Hubs
|
||||
_todoRepository = todoRepository;
|
||||
}
|
||||
|
||||
public async Task CreateTodo(string todoTitle)
|
||||
public async Task CreateTodo(string todoTitle, string projectName)
|
||||
{
|
||||
var _ = await _todoRepository.CreateTodoAsync(todoTitle);
|
||||
var _ = await _todoRepository.CreateTodoAsync(todoTitle, projectName);
|
||||
|
||||
var todos = await _todoRepository.GetNotDoneTodos();
|
||||
var serializedTodos =
|
||||
JsonSerializer.Serialize(todos
|
||||
.Select(t => new TodoResponse { Id = t.Id, Title = t.Title })
|
||||
.Select(t => new TodoResponse { Id = t.Id, Title = t.Title, Project = t.Project })
|
||||
.ToList());
|
||||
|
||||
await Clients.Caller.SendAsync("getInboxTodos", serializedTodos);
|
||||
@@ -34,7 +34,8 @@ namespace Todo.Api.Hubs
|
||||
var todos = await _todoRepository.GetNotDoneTodos();
|
||||
var serializedTodos =
|
||||
JsonSerializer.Serialize(todos
|
||||
.Select(t => new TodoResponse { Id = t.Id, Title = t.Title, Status = t.Status })
|
||||
.Select(t => new TodoResponse
|
||||
{ Id = t.Id, Title = t.Title, Status = t.Status, Project = t.Project })
|
||||
.ToList());
|
||||
|
||||
await Clients.Caller.SendAsync("getInboxTodos", serializedTodos);
|
||||
@@ -44,7 +45,7 @@ namespace Todo.Api.Hubs
|
||||
{
|
||||
var todos = await _todoRepository.GetTodosAsync();
|
||||
var serializedTodos = JsonSerializer.Serialize(todos
|
||||
.Select(t => new TodoResponse { Id = t.Id, Title = t.Title, Status = t.Status })
|
||||
.Select(t => new TodoResponse { Id = t.Id, Title = t.Title, Status = t.Status, Project = t.Project })
|
||||
.ToList());
|
||||
|
||||
await Clients.Caller.SendAsync("todos", serializedTodos);
|
||||
@@ -55,7 +56,7 @@ namespace Todo.Api.Hubs
|
||||
{
|
||||
var todos = await _todoRepository.GetNotDoneTodos();
|
||||
var serializedTodos = JsonSerializer.Serialize(todos
|
||||
.Select(t => new TodoResponse { Id = t.Id, Title = t.Title, Status = t.Status })
|
||||
.Select(t => new TodoResponse { Id = t.Id, Title = t.Title, Status = t.Status, Project = t.Project })
|
||||
.ToList());
|
||||
|
||||
await Clients.Caller.SendAsync("getInboxTodos", serializedTodos);
|
||||
|
@@ -5,4 +5,5 @@ public record Todo
|
||||
public string Id { get; init; }
|
||||
public string Title { get; init; }
|
||||
public bool Status { get; init; }
|
||||
public string Project { get; init; }
|
||||
}
|
@@ -2,7 +2,7 @@ namespace Todo.Core.Interfaces.Persistence;
|
||||
|
||||
public interface ITodoRepository
|
||||
{
|
||||
Task<Entities.Todo> CreateTodoAsync(string title);
|
||||
Task<Entities.Todo> CreateTodoAsync(string title, string projectName);
|
||||
Task<IEnumerable<Entities.Todo>> GetTodosAsync();
|
||||
Task UpdateTodoStatus(string todoId, bool todoStatus);
|
||||
Task<IEnumerable<Entities.Todo>> GetNotDoneTodos();
|
||||
|
@@ -11,4 +11,5 @@ public record MongoTodo
|
||||
|
||||
[BsonRequired] public string Title { get; init; }
|
||||
[BsonRequired] public bool Status { get; set; }
|
||||
public string ProjectName { get; set; } = String.Empty;
|
||||
}
|
@@ -15,11 +15,12 @@ public class TodoRepository : ITodoRepository
|
||||
_todosCollection = database.GetCollection<MongoTodo>("todos");
|
||||
}
|
||||
|
||||
public async Task<Core.Entities.Todo> CreateTodoAsync(string title)
|
||||
public async Task<Core.Entities.Todo> CreateTodoAsync(string title, string projectName)
|
||||
{
|
||||
var todo = new MongoTodo() { Title = title };
|
||||
var todo = new MongoTodo() { Title = title, ProjectName = projectName };
|
||||
await _todosCollection.InsertOneAsync(todo);
|
||||
return new Core.Entities.Todo() { Id = todo.Id, Title = todo.Title, Status = false};
|
||||
return new Core.Entities.Todo()
|
||||
{ Id = todo.Id, Title = todo.Title, Status = false, Project = todo.ProjectName };
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Core.Entities.Todo>> GetTodosAsync()
|
||||
@@ -28,14 +29,14 @@ public class TodoRepository : ITodoRepository
|
||||
return todos
|
||||
.ToEnumerable()
|
||||
.Select(t =>
|
||||
new Core.Entities.Todo() { Id = t.Id, Title = t.Title, Status = t.Status});
|
||||
new Core.Entities.Todo() { Id = t.Id, Title = t.Title, Status = t.Status, Project = t.ProjectName });
|
||||
}
|
||||
|
||||
public async Task UpdateTodoStatus(string todoId, bool todoStatus)
|
||||
{
|
||||
await _todosCollection
|
||||
.UpdateOneAsync(t => t.Id == todoId,
|
||||
Builders<MongoTodo>.Update.Set(t => t.Status, todoStatus));
|
||||
Builders<MongoTodo>.Update.Set(t => t.Status, todoStatus));
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Core.Entities.Todo>> GetNotDoneTodos()
|
||||
|
Reference in New Issue
Block a user