-
Notifications
You must be signed in to change notification settings - Fork 31
/
TodoController.cs
92 lines (87 loc) · 2.55 KB
/
TodoController.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using NServiceBus;
using Infrastructure.Responses;
using Infrastructure.Extensions;
namespace Example.Controllers
{
[ApiController]
[Route("[controller]/[action]")]
public class TodoController : ControllerBase
{
private readonly ILogger<TodoController> _logger;
private readonly IMessageSession _session;
public TodoController(ILogger<TodoController> logger, IMessageSession session)
{
_logger = logger;
_session = session;
}
[HttpGet]
public Task<Paged<Todo.Models.TodoResponse>> All()
{
return _session.Request<Todo.Queries.AllTodos, Todo.Models.TodoResponse>(new Todo.Queries.AllTodos
{
});
}
[HttpGet]
public Task<Paged<Todo.Models.TodoResponse>> Active()
{
return _session.Request<Todo.Queries.ActiveTodos, Todo.Models.TodoResponse>(new Todo.Queries.ActiveTodos
{
});
}
[HttpGet]
public Task<Paged<Todo.Models.TodoResponse>> Complete()
{
return _session.Request<Todo.Queries.CompleteTodos, Todo.Models.TodoResponse>(new Todo.Queries.CompleteTodos
{
});
}
[HttpPost]
public Task Add(DTOs.Todo model)
{
return _session.CommandToDomain(new Todo.Commands.Add
{
TodoId = model.TodoId,
Message = model.Message
});
}
[HttpPost]
public Task Edit(DTOs.Todo model)
{
return _session.CommandToDomain(new Todo.Commands.Edit
{
TodoId = model.TodoId,
Message = model.Message
});
}
[HttpDelete]
public Task Remove(DTOs.Todo model)
{
return _session.CommandToDomain(new Todo.Commands.Remove
{
TodoId = model.TodoId,
});
}
[HttpPost]
public Task Complete(DTOs.Todo model)
{
return _session.CommandToDomain(new Todo.Commands.MarkComplete
{
TodoId = model.TodoId,
});
}
[HttpPost]
public Task Active(DTOs.Todo model)
{
return _session.CommandToDomain(new Todo.Commands.MarkActive
{
TodoId = model.TodoId,
});
}
}
}