profileShare

rasmusjy / splitapp-backend-clean-onion

Read-only snapshot

No repository description.

main default branch 429 files Expires Sep 13, 2026, 9:06 AM
SettlementPlanAdminService.cs 2,436 bytes
1 using App.BLL.DTO;
2 using App.BLL.Mappers;
3 using App.Domain.Contracts;
4
5 namespace App.BLL.Services.Admin;
6
7 public class SettlementPlanAdminService : ISettlementPlanAdminService
8 {
9 private readonly IAppUnitOfWork _uow;
10
11 public SettlementPlanAdminService(IAppUnitOfWork uow)
12 {
13 _uow = uow;
14 }
15
16 public async Task<List<SettlementPlanBllDto>> GetAllAsync(Guid? tripId)
17 {
18 var plans = (await _uow.SettlementPlans.GetAllAsync()).ToList();
19 if (tripId.HasValue)
20 plans = plans.Where(s => s.TripId == tripId.Value).ToList();
21 return SettlementBllDtoFactory.CreateList(plans.OrderByDescending(s => s.Id));
22 }
23
24 public async Task<SettlementPlanBllDto?> GetByIdAsync(Guid id)
25 {
26 var entity = await _uow.SettlementPlans.GetByIdAsync(id);
27 return entity == null ? null : SettlementBllDtoFactory.Create(entity);
28 }
29
30 public async Task CreateAsync(SettlementPlanBllDto entity)
31 {
32 var domainEntity = SettlementBllDtoFactory.ToEntity(entity);
33 domainEntity.Id = Guid.NewGuid();
34 _uow.SettlementPlans.Add(domainEntity);
35 await _uow.SaveChangesAsync();
36 }
37
38 public async Task UpdateAsync(SettlementPlanBllDto entity)
39 {
40 var existing = await _uow.SettlementPlans.GetByIdAsync(entity.Id);
41 if (existing == null) return;
42 existing.TripId = entity.TripId;
43 existing.CreatedByUserId = entity.CreatedByUserId;
44 existing.TotalAmount = entity.TotalAmount;
45 existing.Status = entity.Status;
46 existing.CompletedAt = entity.CompletedAt;
47 _uow.SettlementPlans.Update(existing);
48 await _uow.SaveChangesAsync();
49 }
50
51 public async Task DeleteAsync(Guid id)
52 {
53 await _uow.SettlementPlans.RemoveAsync(id);
54 await _uow.SaveChangesAsync();
55 }
56
57 public Task<bool> ExistsAsync(Guid id) => _uow.SettlementPlans.ExistsAsync(id);
58
59 public async Task<List<TripBllDto>> GetTripsAsync()
60 {
61 var trips = await _uow.Trips.GetAllAsync();
62 return TripBllDtoFactory.CreateList(trips.OrderBy(t => t.Name));
63 }
64
65 public async Task<List<AppUserBllDto>> GetUsersAsync()
66 {
67 var users = await _uow.Users.GetAllAsync();
68 return users.Select(u => new AppUserBllDto
69 {
70 Id = u.Id,
71 FirstName = u.FirstName,
72 LastName = u.LastName,
73 Email = u.Email
74 }).ToList();
75 }
76 }
77