profileShare

rasmusjy / splitapp-backend-modular-monolith

Read-only snapshot

No repository description.

main default branch 418 files Expires Sep 13, 2026, 9:06 AM
SplitPresetBllDtoFactory.cs 2,216 bytes
1 using SplitApp.Modules.Expenses.Domain.Entities;
2 using SplitApp.Modules.Trips.Domain.Entities;
3 using SplitApp.WebApp.Application.DTO;
4
5 namespace SplitApp.WebApp.Application.Mappers;
6
7 public static class SplitPresetBllDtoFactory
8 {
9 public static SplitPresetBllDto Create(SplitPreset entity, bool includeMembers = false) => new()
10 {
11 Id = entity.Id,
12 CreatedAt = entity.CreatedAt,
13 UpdatedAt = entity.UpdatedAt,
14 TripId = entity.TripId,
15 // entity.Trip is `object?` (Expenses module avoids direct ref to Trip type) — cast back here.
16 Trip = entity.Trip is Trip trip ? TripBllDtoFactory.Create(trip) : null,
17 Name = entity.Name,
18 SplitMethod = entity.SplitMethod,
19 CreatedById = entity.CreatedById,
20 CreatedBy = AppUserBllDtoFactory.Create(entity.CreatedBy),
21 Members = includeMembers && entity.Members != null
22 ? entity.Members.Select(SplitPresetMemberBllDtoFactory.Create).ToList()
23 : null
24 };
25
26 public static List<SplitPresetBllDto> CreateList(IEnumerable<SplitPreset> entities, bool includeMembers = false)
27 => entities.Select(p => Create(p, includeMembers)).ToList();
28
29 public static SplitPreset ToEntity(SplitPresetBllDto dto) => new()
30 {
31 Id = dto.Id,
32 TripId = dto.TripId,
33 Name = dto.Name,
34 SplitMethod = dto.SplitMethod,
35 CreatedById = dto.CreatedById
36 };
37 }
38
39 public static class SplitPresetMemberBllDtoFactory
40 {
41 public static SplitPresetMemberBllDto Create(SplitPresetMember entity) => new()
42 {
43 Id = entity.Id,
44 CreatedAt = entity.CreatedAt,
45 UpdatedAt = entity.UpdatedAt,
46 SplitPresetId = entity.SplitPresetId,
47 UserId = entity.UserId,
48 UserFullName = entity.User != null ? $"{entity.User.FirstName} {entity.User.LastName}".Trim() : null,
49 ShareWeight = entity.ShareWeight,
50 Percentage = entity.Percentage
51 };
52
53 public static SplitPresetMember ToEntity(SplitPresetMemberBllDto dto) => new()
54 {
55 Id = dto.Id,
56 SplitPresetId = dto.SplitPresetId,
57 UserId = dto.UserId,
58 ShareWeight = dto.ShareWeight,
59 Percentage = dto.Percentage
60 };
61 }
62