profileShare

rasmusjy / splitapp-backend-microservices

Read-only snapshot

No repository description.

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