Skip to content

Commit 1b56b38

Browse files
author
Leonid
committed
Update reports
1 parent 7767cb2 commit 1b56b38

File tree

4 files changed

+107
-34
lines changed

4 files changed

+107
-34
lines changed

eFormAPI/eFormAPI.Web/Infrastructure/Database/Entities/EformReport.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ public class EformReport : BaseEntity
1414
public bool IsDateVisible { get; set; }
1515
public bool IsWorkerNameVisible { get; set; }
1616

17-
public virtual ICollection<EformReportElement> ReportElements { get; set; }
17+
public virtual ICollection<EformReportElement> ReportElements { get; set; } = new List<EformReportElement>();
1818
}
1919
}

eFormAPI/eFormAPI.Web/Infrastructure/Database/Entities/EformReportDataItem.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@ public class EformReportDataItem : BaseEntity
1818
public int? ParentId { get; set; }
1919
public virtual EformReportDataItem Parent { get; set; }
2020

21-
public virtual ICollection<EformReportDataItem> NestedDataItems { get; set; }
21+
public virtual ICollection<EformReportDataItem> NestedDataItems { get; set; } = new List<EformReportDataItem>();
2222
}
2323
}

eFormAPI/eFormAPI.Web/Infrastructure/Database/Entities/EformReportElement.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public class EformReportElement : BaseEntity
1717
public int? ParentId { get; set; }
1818
public virtual EformReportElement Parent { get; set; }
1919

20-
public virtual ICollection<EformReportElement> NestedElements { get; set; }
21-
public virtual ICollection<EformReportDataItem> DataItems { get; set; }
20+
public virtual ICollection<EformReportElement> NestedElements { get; set; } = new List<EformReportElement>();
21+
public virtual ICollection<EformReportDataItem> DataItems { get; set; } = new List<EformReportDataItem>();
2222
}
2323
}

eFormAPI/eFormAPI.Web/Services/EformReportsService.cs

Lines changed: 103 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public EformReportsService(
3535
_logger = logger;
3636
}
3737

38-
private static List<EformReportElementsModel> GetReportElementsList(
38+
private static List<EformReportElementsModel> GetReportElementsList(BaseDbContext dbContext,
3939
EformReportElement parent,
4040
List<object> elementList)
4141
{
@@ -57,6 +57,23 @@ private static List<EformReportElementsModel> GetReportElementsList(
5757
elements.Add((Element) element);
5858
}
5959

60+
foreach (var element in elements)
61+
{
62+
var eformReportElement = parent.NestedElements.FirstOrDefault(x => x.ElementId == element.Id);
63+
if (eformReportElement == null)
64+
{
65+
eformReportElement = new EformReportElement()
66+
{
67+
EformReportId = parent.EformReportId,
68+
ElementId = element.Id,
69+
ParentId = parent.Id,
70+
};
71+
dbContext.EformReportElements.Add(eformReportElement);
72+
dbContext.SaveChanges();
73+
}
74+
parent.NestedElements.Add(eformReportElement);
75+
}
76+
6077
if (itemType == typeof(DataElement))
6178
{
6279
foreach (var element in elementList)
@@ -83,18 +100,18 @@ private static List<EformReportElementsModel> GetReportElementsList(
83100
Label = elements.Where(y => y.Id == x.ElementId)
84101
.Select(y => y.Label)
85102
.FirstOrDefault(),
86-
ElementList = GetReportElementsList(x,
103+
ElementList = GetReportElementsList(dbContext, x,
87104
(List<object>) groupElements.Where(y => y.Id == x.ElementId)
88105
.Select(y => (object) y.ElementList)
89106
.FirstOrDefault()),
90-
DataItemList = GetReportDataItemList(x, null,
107+
DataItemList = GetReportDataItemList(dbContext, x, null,
91108
(List<object>) dataElements.Where(y => y.Id == x.ElementId)
92109
.Select(y => (object) y.DataItemList)
93110
.FirstOrDefault()),
94111
}).ToList();
95112
}
96113

97-
private static List<EformReportDataItemModel> GetReportDataItemList(
114+
private static List<EformReportDataItemModel> GetReportDataItemList(BaseDbContext dbContext,
98115
EformReportElement parentElement, EformReportDataItem parentDataItem,
99116
List<object> dataItemsList)
100117
{
@@ -110,6 +127,32 @@ private static List<EformReportDataItemModel> GetReportDataItemList(
110127
parentItems.AddRange(parentDataItem.NestedDataItems);
111128
}
112129

130+
foreach (var dataItemObject in dataItemsList)
131+
{
132+
var item = (DataItem) dataItemObject;
133+
var eformReportDataItem = parentItems.FirstOrDefault(x => x.DataItemId == item.Id);
134+
if (eformReportDataItem == null)
135+
{
136+
eformReportDataItem = new EformReportDataItem()
137+
{
138+
DataItemId = item.Id,
139+
Visibility = true,
140+
};
141+
if (parentElement != null)
142+
{
143+
eformReportDataItem.EformReportElementId = parentElement.Id;
144+
}
145+
146+
if (parentDataItem != null)
147+
{
148+
eformReportDataItem.ParentId = parentDataItem.ParentId;
149+
}
150+
dbContext.EformReportDataItems.Add(eformReportDataItem);
151+
dbContext.SaveChanges();
152+
}
153+
parentItems.Add(eformReportDataItem);
154+
}
155+
113156
var result = new List<EformReportDataItemModel>();
114157
foreach (var dataItem in parentItems.OrderBy(c => c.Position))
115158
{
@@ -130,7 +173,7 @@ private static List<EformReportDataItemModel> GetReportDataItemList(
130173
{
131174
model.FieldType = type.ToString().Remove(0, 10);
132175
model.Label = item.Label;
133-
model.DataItemList = GetReportDataItemList(null, dataItem,
176+
model.DataItemList = GetReportDataItemList(dbContext, null, dataItem,
134177
item.DataItemList.Select(x => (object) x).ToList());
135178
}
136179
}
@@ -154,6 +197,7 @@ private static List<EformReportDataItemModel> GetReportDataItemList(
154197
}
155198
}
156199
}
200+
157201
if (type == typeof(SingleSelect))
158202
{
159203
var item = (SingleSelect) dataItemObject;
@@ -199,6 +243,7 @@ private static List<EformReportDataItemModel> GetReportDataItemList(
199243
}
200244
}
201245
}
246+
202247
result.Add(model);
203248
}
204249

@@ -220,20 +265,27 @@ public async Task<OperationDataResult<EformReportFullModel>> GetEformReport(int
220265

221266
var eformReport = await _dbContext.EformReports
222267
.Where(x => x.TemplateId == templateId)
223-
.Select(x => new EformReportModel()
268+
.Select(x => new EformReport()
224269
{
225270
Id = x.Id,
226271
TemplateId = x.TemplateId,
227272
Description = x.Description,
228-
HeaderImage = x.HeaderImage == null ? string.Empty : Encoding.UTF8.GetString(x.HeaderImage),
273+
// HeaderImage = x.HeaderImage == null ? string.Empty : Encoding.UTF8.GetString(x.HeaderImage),
229274
HeaderVisibility = x.HeaderVisibility,
230275
IsDateVisible = x.IsDateVisible,
231276
IsWorkerNameVisible = x.IsWorkerNameVisible,
232277
}).FirstOrDefaultAsync();
233278

234279
if (eformReport == null)
235280
{
236-
return new OperationDataResult<EformReportFullModel>(true, result);
281+
eformReport = new EformReport
282+
{
283+
TemplateId = template.Id,
284+
IsDateVisible = true,
285+
IsWorkerNameVisible = true,
286+
};
287+
_dbContext.EformReports.Add(eformReport);
288+
await _dbContext.SaveChangesAsync();
237289
}
238290

239291
var reportElements = await _dbContext.EformReportElements
@@ -251,32 +303,42 @@ public async Task<OperationDataResult<EformReportFullModel>> GetEformReport(int
251303
{
252304
var reportElement = reportElements
253305
.FirstOrDefault(p => p.ElementId == templateElement.Id);
254-
if (reportElement != null)
306+
307+
if (reportElement == null)
255308
{
256-
var element = new EformReportElementsModel()
309+
reportElement = new EformReportElement()
257310
{
258-
Id = reportElement.Id,
259-
ElementId = reportElement.ElementId,
260-
Label = reportElement.ElementId.ToString(),
311+
EformReportId = eformReport.Id,
312+
ElementId = templateElement.Id,
261313
};
262-
if (templateElement.GetType() == typeof(DataElement))
263-
{
264-
var item = (DataElement) templateElement;
265-
var dataItemList = GetReportDataItemList(reportElement, null,
266-
item.DataItemList.Select(x => (object) x).ToList());
267-
element.DataItemList = dataItemList;
268-
}
314+
_dbContext.EformReportElements.Add(reportElement);
315+
await _dbContext.SaveChangesAsync();
316+
}
269317

270-
if (templateElement.GetType() == typeof(GroupElement))
271-
{
272-
var item = (GroupElement) templateElement;
273-
var elementList = GetReportElementsList(reportElement,
274-
item.ElementList.Select(x => (object) x).ToList());
275-
element.ElementList = elementList;
276-
}
277318

278-
reportElementsOrdered.Add(element);
319+
var element = new EformReportElementsModel()
320+
{
321+
Id = reportElement.Id,
322+
ElementId = reportElement.ElementId,
323+
Label = templateElement.Label,
324+
};
325+
if (templateElement.GetType() == typeof(DataElement))
326+
{
327+
var item = (DataElement) templateElement;
328+
var dataItemList = GetReportDataItemList(_dbContext, reportElement, null,
329+
item.DataItemList.Select(x => (object) x).ToList());
330+
element.DataItemList = dataItemList;
331+
}
332+
333+
if (templateElement.GetType() == typeof(GroupElement))
334+
{
335+
var item = (GroupElement) templateElement;
336+
var elementList = GetReportElementsList(_dbContext, reportElement,
337+
item.ElementList.Select(x => (object) x).ToList());
338+
element.ElementList = elementList;
279339
}
340+
341+
reportElementsOrdered.Add(element);
280342
}
281343

282344
result.EformMainElement = new EformMainElement()
@@ -285,8 +347,19 @@ public async Task<OperationDataResult<EformReportFullModel>> GetEformReport(int
285347
Label = template.Label,
286348
ElementList = reportElementsOrdered
287349
};
288-
289-
result.EformReport = eformReport;
350+
var eformReportModel = new EformReportModel()
351+
{
352+
Id = eformReport.Id,
353+
TemplateId = eformReport.TemplateId,
354+
Description = eformReport.Description,
355+
HeaderImage = eformReport.HeaderImage == null
356+
? string.Empty
357+
: Encoding.UTF8.GetString(eformReport.HeaderImage),
358+
HeaderVisibility = eformReport.HeaderVisibility,
359+
IsDateVisible = eformReport.IsDateVisible,
360+
IsWorkerNameVisible = eformReport.IsWorkerNameVisible,
361+
};
362+
result.EformReport = eformReportModel;
290363
return new OperationDataResult<EformReportFullModel>(true, result);
291364
}
292365
catch (Exception e)

0 commit comments

Comments
 (0)