profileShare

rasmusjy / splitapp-backend-clean-onion

Read-only snapshot

No repository description.

main default branch 429 files Expires Sep 13, 2026, 9:06 AM
SplitPresetsController.cs 3,289 bytes
1 using App.BLL.DTO;
2 using App.BLL.Services.Admin;
3 using App.Domain;
4 using Microsoft.AspNetCore.Authorization;
5 using Microsoft.AspNetCore.Mvc;
6 using Microsoft.Extensions.Localization;
7 using WebApp.Areas.Admin.Models;
8
9 namespace WebApp.Areas.Admin.Controllers;
10
11 [Area("Admin")]
12 [Authorize(Roles = "admin")]
13 public class SplitPresetsController : Controller
14 {
15 private readonly ISplitPresetAdminService _service;
16 private readonly IStringLocalizer<App.Resources.Views.Shared> _l;
17
18 public SplitPresetsController(ISplitPresetAdminService service,
19 IStringLocalizer<App.Resources.Views.Shared> l)
20 {
21 _service = service;
22 _l = l;
23 }
24
25 public async Task<IActionResult> Index(string? search)
26 {
27 var presets = await _service.GetAllAsync(search);
28
29 var vm = new AdminSplitPresetIndexViewModel
30 {
31 Title = _l["Split presets"].Value,
32 Items = presets.OrderByDescending(s => s.Id).ToList(),
33 CurrentSearch = search
34 };
35 return View(vm);
36 }
37
38 public async Task<IActionResult> Details(Guid? id)
39 {
40 if (id == null)
41 {
42 return NotFound();
43 }
44
45 var splitPreset = await _service.GetByIdAsync(id.Value);
46 if (splitPreset == null)
47 {
48 return NotFound();
49 }
50
51 return View(new AdminDetailsViewModel<SplitPresetBllDto>
52 {
53 Title = _l["Split preset details"].Value,
54 Item = splitPreset
55 });
56 }
57
58 public async Task<IActionResult> Create()
59 {
60 return View(new AdminSplitPresetFormViewModel
61 {
62 Title = _l["New split preset"].Value,
63 TripList = new Microsoft.AspNetCore.Mvc.Rendering.SelectList(await _service.GetTripsAsync(), "Id", "Name"),
64 UserList = new Microsoft.AspNetCore.Mvc.Rendering.SelectList(await _service.GetUsersAsync(), "Id", "Email")
65 });
66 }
67
68 [HttpPost]
69 [ValidateAntiForgeryToken]
70 public async Task<IActionResult> Create(AdminSplitPresetFormViewModel vm)
71 {
72 if (ModelState.IsValid)
73 {
74 await _service.CreateAsync(vm.SplitPreset);
75 return RedirectToAction(nameof(Index));
76 }
77
78 vm.Title = _l["New split preset"].Value;
79 vm.TripList = new Microsoft.AspNetCore.Mvc.Rendering.SelectList(await _service.GetTripsAsync(), "Id", "Name", vm.SplitPreset.TripId);
80 vm.UserList = new Microsoft.AspNetCore.Mvc.Rendering.SelectList(await _service.GetUsersAsync(), "Id", "Email", vm.SplitPreset.CreatedById);
81 return View(vm);
82 }
83
84 public async Task<IActionResult> Delete(Guid? id)
85 {
86 if (id == null)
87 {
88 return NotFound();
89 }
90
91 var splitPreset = await _service.GetByIdAsync(id.Value);
92 if (splitPreset == null)
93 {
94 return NotFound();
95 }
96
97 return View(new AdminDeleteViewModel<SplitPresetBllDto>
98 {
99 Title = _l["Delete split preset"].Value,
100 Item = splitPreset
101 });
102 }
103
104 [HttpPost, ActionName("Delete")]
105 [ValidateAntiForgeryToken]
106 public async Task<IActionResult> DeleteConfirmed(Guid id)
107 {
108 await _service.DeleteAsync(id);
109 return RedirectToAction(nameof(Index));
110 }
111 }
112