CheddarCrisp
·
2024-02-12
TodoService.cs
1public record TodoDTO(int? Order, string? Title, bool? Completed, string Url);
2
3public class TodoService {
4 private string baseUrl;
5 private TodoRepo repo;
6 public TodoService(string baseUrl, TodoRepo repo) {
7 this.baseUrl = baseUrl;
8 this.repo = repo;
9 }
10
11 public IEnumerable<TodoDTO> All() {
12 return repo.All().Select(MapTodo);
13 }
14
15 public TodoDTO Find(Guid id) {
16 return MapTodo(
17 repo.Find(id)
18 );
19 }
20
21 public TodoDTO Add(TodoDTO todo) {
22 return MapTodo(
23 repo.Add(new(
24 Guid.NewGuid(),
25 todo.Order ?? 0,
26 todo.Title ?? "default",
27 todo.Completed ?? false
28 ))
29 );
30 }
31
32 public void Clear() {
33 repo.Clear();
34 }
35
36 public TodoDTO Update(Guid id, TodoDTO todo) {
37 return MapTodo(
38 repo.Update(id, todo.Title, todo.Order, todo.Completed)
39 );
40 }
41
42 public void Delete(Guid id) {
43 repo.Delete(id);
44 }
45
46 private TodoDTO MapTodo(Todo todo) {
47 return new(
48 todo.Order,
49 todo.Title,
50 todo.Completed,
51 $"{baseUrl}/{todo.Id}"
52 );
53 }
54}