Skip to content

Commit 2609fad

Browse files
authored
Use ProjectInfo in exporter (#2411)
1 parent a6d13c2 commit 2609fad

File tree

6 files changed

+32
-29
lines changed

6 files changed

+32
-29
lines changed

src/JoinRpg.Portal/Controllers/CharacterListController.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ private async Task<ActionResult> MasterCharacterList(int projectId, Func<Charact
7272
return View("Index", list);
7373
}
7474

75-
return Export(list, exportType.Value);
75+
return Export(list, exportType.Value, projectInfo);
7676
}
7777

7878
public CharacterListController(
@@ -126,7 +126,7 @@ public async Task<ActionResult> ByGroup(int projectId, int characterGroupId, str
126126
return View("ByGroup", list);
127127
}
128128

129-
return Export(list, exportType.Value);
129+
return Export(list, exportType.Value, projectInfo);
130130
}
131131

132132
[HttpGet]
@@ -151,12 +151,12 @@ public Task<ActionResult> Vacant(int projectid, string export)
151151
public Task<ActionResult> WithPlayers(int projectid, string export)
152152
=> MasterCharacterList(projectid, (character, projectInfo) => character.ApprovedClaim != null && character.IsActive, export, "Занятые персонажи");
153153

154-
private FileContentResult Export(CharacterListViewModel list, ExportType exportType)
154+
private FileContentResult Export(CharacterListViewModel list, ExportType exportType, ProjectInfo projectInfo)
155155
{
156156
var generator = ExportDataService.GetGenerator(
157157
exportType,
158158
list.Items,
159-
new CharacterListItemViewModelExporter(list.Fields, UriService));
159+
new CharacterListItemViewModelExporter(projectInfo, UriService));
160160

161161
return GeneratorResultHelper.Result(list.ProjectName + ": " + list.Title, generator);
162162
}

src/JoinRpg.Portal/Controllers/ClaimListController.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ private async Task<ActionResult> ___ShowMasterClaimList(int projectId, string ex
7575

7676
return
7777
ExportWithCustomFrontend(view.Items, title, exportType.Value,
78-
new ClaimListItemViewModelExporter(project, UriService), project.ProjectName);
78+
new ClaimListItemViewModelExporter(UriService, projectInfo), project.ProjectName);
7979
}
8080
}
8181

@@ -135,7 +135,7 @@ private async Task<ActionResult> ShowMasterClaimListForGroup(CharacterGroup char
135135
var view = new ClaimListForExportViewModel(CurrentUserId, claims, projectInfo);
136136
return
137137
ExportWithCustomFrontend(view.Items, title, exportType.Value,
138-
new ClaimListItemViewModelExporter(characterGroup.Project, UriService),
138+
new ClaimListItemViewModelExporter(UriService, projectInfo),
139139
characterGroup.Project.ProjectName);
140140
}
141141
}

src/JoinRpg.WebPortal.Models/Exporters/CharacterListExporterBase.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
1-
using JoinRpg.DataModel;
1+
using JoinRpg.PrimitiveTypes.ProjectMetadata;
22
using JoinRpg.Services.Interfaces;
33
using JoinRpg.Web.Models.Characters;
44

55
namespace JoinRpg.Web.Models.Exporters;
66

77
public abstract class CharacterListExporterBase : CustomExporter<CharacterListItemViewModel>
88
{
9-
protected CharacterListExporterBase(IReadOnlyCollection<ProjectField> fields,
9+
protected CharacterListExporterBase(ProjectInfo projectInfo,
1010
IUriService uriService)
11-
: base(uriService) => Fields = fields;
11+
: base(uriService)
12+
{
13+
ProjectInfo = projectInfo;
14+
}
1215

13-
protected IReadOnlyCollection<ProjectField> Fields { get; }
16+
protected ProjectInfo ProjectInfo { get; }
1417

1518
protected IEnumerable<ITableColumn> BasicColumns()
1619
{

src/JoinRpg.WebPortal.Models/Exporters/CharacterListItemViewModelExporter.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
using JoinRpg.DataModel;
1+
using JoinRpg.PrimitiveTypes.ProjectMetadata;
22
using JoinRpg.Services.Interfaces;
33

44
namespace JoinRpg.Web.Models.Exporters;
55

66
public class CharacterListItemViewModelExporter : CharacterListExporterBase
77
{
88

9-
public CharacterListItemViewModelExporter(IReadOnlyCollection<ProjectField> fields, IUriService uriService) :
10-
base(fields, uriService)
9+
public CharacterListItemViewModelExporter(ProjectInfo projectInfo, IUriService uriService) :
10+
base(projectInfo, uriService)
1111
{
1212
}
1313

@@ -18,10 +18,9 @@ public override IEnumerable<ITableColumn> ParseColumns()
1818
yield return tableColumn;
1919
}
2020

21-
foreach (var projectField in Fields)
21+
foreach (var projectField in ProjectInfo.SortedFields.Where(f => f.CanHaveValue))
2222
{
23-
yield return
24-
FieldColumn(projectField, x => x.Fields);
23+
yield return FieldColumn(projectField, x => x.Fields);
2524
}
2625

2726

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
1-
using JoinRpg.DataModel;
2-
using JoinRpg.Domain;
1+
using JoinRpg.PrimitiveTypes.ProjectMetadata;
32
using JoinRpg.Services.Interfaces;
43
using JoinRpg.Web.Models.ClaimList;
54

65
namespace JoinRpg.Web.Models.Exporters;
76

87
public class ClaimListItemViewModelExporter : CustomExporter<ClaimListItemForExportViewModel>
98
{
10-
public ClaimListItemViewModelExporter(Project project, IUriService uriService) : base(
11-
uriService) => Project = project;
9+
private readonly ProjectInfo projectInfo;
1210

13-
private Project Project { get; }
11+
public ClaimListItemViewModelExporter(IUriService uriService, ProjectInfo projectInfo) : base(uriService)
12+
{
13+
this.projectInfo = projectInfo;
14+
}
1415

1516
public override IEnumerable<ITableColumn> ParseColumns()
1617
{
@@ -23,11 +24,11 @@ public override IEnumerable<ITableColumn> ParseColumns()
2324
yield return IntColumn(x => x.TotalFee);
2425
yield return IntColumn(x => x.FeeDue);
2526
yield return IntColumn(x => x.FeePaid);
26-
if (Project.Details.PreferentialFeeEnabled)
27+
if (projectInfo.ProjectFinanceSettings.PreferentialFeeEnabled)
2728
{
2829
yield return BoolColumn(x => x.PreferentialFeeUser);
2930
}
30-
if (Project.Details.EnableAccommodation)
31+
if (projectInfo.AccomodationEnabled)
3132
{
3233
yield return StringColumn(x => x.AccomodationType);
3334
yield return StringColumn(x => x.RoomName);
@@ -40,10 +41,9 @@ public override IEnumerable<ITableColumn> ParseColumns()
4041
yield return c;
4142
}
4243

43-
foreach (var projectField in Project.GetOrderedFields().Where(f => f.CanHaveValue()))
44+
foreach (var projectField in projectInfo.SortedFields.Where(f => f.CanHaveValue))
4445
{
45-
yield return
46-
FieldColumn(projectField, x => x.Fields);
46+
yield return FieldColumn(projectField, x => x.Fields);
4747
}
4848
}
4949
}

src/JoinRpg.WebPortal.Models/Exporters/CustomExporter.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using JoinRpg.Domain;
66
using JoinRpg.Helpers;
77
using JoinRpg.PrimitiveTypes;
8+
using JoinRpg.PrimitiveTypes.ProjectMetadata;
89
using JoinRpg.Services.Interfaces;
910

1011
namespace JoinRpg.Web.Models.Exporters;
@@ -165,12 +166,12 @@ protected static ITableColumn ComplexElementMemberColumn<T1, T2, TOut>(Expressio
165166
}
166167

167168
[Pure]
168-
protected ITableColumn FieldColumn(ProjectField projectField, Func<TRow, IReadOnlyCollection<FieldWithValue>> fieldsFunc) => FieldColumn(projectField, fieldsFunc, projectField.FieldName);
169+
protected ITableColumn FieldColumn(ProjectFieldInfo projectField, Func<TRow, IReadOnlyCollection<FieldWithValue>> fieldsFunc) => FieldColumn(projectField, fieldsFunc, projectField.Name);
169170

170171
[Pure]
171-
protected static ITableColumn FieldColumn(ProjectField projectField, Func<TRow, IReadOnlyCollection<FieldWithValue>> fieldsFunc, string name)
172+
protected static ITableColumn FieldColumn(ProjectFieldInfo projectField, Func<TRow, IReadOnlyCollection<FieldWithValue>> fieldsFunc, string name)
172173
{
173174
return new TableColumn<string>(name,
174-
x => fieldsFunc(x).SingleOrDefault(f => f.Field.ProjectFieldId == projectField.ProjectFieldId)?.DisplayString);
175+
x => fieldsFunc(x).SingleOrDefault(f => f.Field.ProjectFieldId == projectField.Id.ProjectFieldId)?.DisplayString);
175176
}
176177
}

0 commit comments

Comments
 (0)