Skip to content

Commit 7767cb2

Browse files
author
Leonid
committed
Updates
1 parent 462a37c commit 7767cb2

File tree

5 files changed

+220
-52
lines changed

5 files changed

+220
-52
lines changed

eFormAPI/eFormAPI.Web/Abstractions/Eforms/IEformReportsService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ namespace eFormAPI.Web.Abstractions.Eforms
77
public interface IEformReportsService
88
{
99
Task<OperationDataResult<EformReportFullModel>> GetEformReport(int templateId);
10-
Task<OperationResult> UpdateEformReport(EformReportModel requestModel);
10+
Task<OperationResult> UpdateEformReport(EformReportFullModel requestModel);
1111
}
1212
}

eFormAPI/eFormAPI.Web/Controllers/Eforms/EformReportsController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public async Task<OperationDataResult<EformReportFullModel>> GetEformReport(int
2727

2828
[HttpPut]
2929
[Route("api/templates/report")]
30-
public async Task<OperationResult> UpdateEformReport([FromBody] EformReportModel eformReportModel)
30+
public async Task<OperationResult> UpdateEformReport([FromBody] EformReportFullModel eformReportModel)
3131
{
3232
return await _eformReportsService.UpdateEformReport(eformReportModel);
3333
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace eFormAPI.Web.Infrastructure.Models.Reports
2+
{
3+
public class EformKeyValuePairModel
4+
{
5+
public string Key { get; set; }
6+
public string Value { get; set; }
7+
public bool Selected { get; set; }
8+
public string DisplayOrder { get; set; }
9+
}
10+
}

eFormAPI/eFormAPI.Web/Infrastructure/Models/Reports/EformReportDataItemModel.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ public class EformReportDataItemModel
1313
public int Position { get; set; }
1414
public bool Visibility { get; set; }
1515

16+
public List<EformKeyValuePairModel> KeyValuePairList { get; set; }
17+
= new List<EformKeyValuePairModel>();
18+
1619
public List<EformReportDataItemModel> DataItemList =
1720
new List<EformReportDataItemModel>();
1821
}

eFormAPI/eFormAPI.Web/Services/EformReportsService.cs

Lines changed: 205 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -35,57 +35,174 @@ public EformReportsService(
3535
_logger = logger;
3636
}
3737

38-
private static List<EformReportElementsModel> GetReportElementsList(EformReportElement parent)
38+
private static List<EformReportElementsModel> GetReportElementsList(
39+
EformReportElement parent,
40+
List<object> elementList)
3941
{
42+
if (elementList == null)
43+
{
44+
elementList = new List<object>();
45+
}
46+
47+
var elements = new List<Element>();
48+
var dataElements = new List<DataElement>();
49+
var groupElements = new List<GroupElement>();
50+
51+
var item = elementList.FirstOrDefault();
52+
if (item != null)
53+
{
54+
var itemType = item.GetType();
55+
foreach (var element in elementList)
56+
{
57+
elements.Add((Element) element);
58+
}
59+
60+
if (itemType == typeof(DataElement))
61+
{
62+
foreach (var element in elementList)
63+
{
64+
dataElements.Add((DataElement) element);
65+
}
66+
}
67+
68+
if (itemType == typeof(GroupElement))
69+
{
70+
foreach (var element in elementList)
71+
{
72+
groupElements.Add((GroupElement) element);
73+
}
74+
}
75+
}
76+
4077
return parent.NestedElements
4178
.Where(c => c.ParentId == parent.Id)
4279
.Select(x => new EformReportElementsModel()
4380
{
4481
Id = x.Id,
4582
ElementId = x.ElementId,
46-
Label = x.ElementId.ToString(),
47-
ElementList = GetReportElementsList(x),
48-
DataItemList = GetReportDataItemListFromElement(x),
83+
Label = elements.Where(y => y.Id == x.ElementId)
84+
.Select(y => y.Label)
85+
.FirstOrDefault(),
86+
ElementList = GetReportElementsList(x,
87+
(List<object>) groupElements.Where(y => y.Id == x.ElementId)
88+
.Select(y => (object) y.ElementList)
89+
.FirstOrDefault()),
90+
DataItemList = GetReportDataItemList(x, null,
91+
(List<object>) dataElements.Where(y => y.Id == x.ElementId)
92+
.Select(y => (object) y.DataItemList)
93+
.FirstOrDefault()),
4994
}).ToList();
5095
}
5196

52-
private static List<EformReportDataItemModel> GetReportDataItemList(EformReportDataItem parent)
97+
private static List<EformReportDataItemModel> GetReportDataItemList(
98+
EformReportElement parentElement, EformReportDataItem parentDataItem,
99+
List<object> dataItemsList)
53100
{
54-
var list = parent.NestedDataItems
55-
.Where(c => c.ParentId == parent.Id)
56-
.OrderBy(c => c.Position)
57-
.Select(x => new EformReportDataItemModel()
58-
{
59-
Id = x.Id,
60-
DataItemId = x.DataItemId,
61-
FieldType = "Checkbox",
62-
Label = x.DataItemId.ToString(),
63-
Position = x.Position,
64-
Visibility = x.Visibility,
65-
DataItemList = GetReportDataItemList(x),
66-
}).ToList();
101+
var parentItems = new List<EformReportDataItem>();
67102

68-
return list;
69-
}
103+
if (parentElement != null)
104+
{
105+
parentItems.AddRange(parentElement.DataItems);
106+
}
70107

108+
if (parentDataItem != null)
109+
{
110+
parentItems.AddRange(parentDataItem.NestedDataItems);
111+
}
71112

72-
private static List<EformReportDataItemModel> GetReportDataItemListFromElement(EformReportElement parent)
73-
{
74-
var list = parent.DataItems
75-
.Where(c => c.ParentId == parent.Id)
76-
.OrderBy(c => c.Position)
77-
.Select(x => new EformReportDataItemModel()
113+
var result = new List<EformReportDataItemModel>();
114+
foreach (var dataItem in parentItems.OrderBy(c => c.Position))
115+
{
116+
var model = new EformReportDataItemModel
78117
{
79-
Id = x.Id,
80-
Label = x.DataItemId.ToString(),
81-
FieldType = "Checkbox",
82-
DataItemId = x.DataItemId,
83-
Position = x.Position,
84-
Visibility = x.Visibility,
85-
DataItemList = GetReportDataItemList(x)
86-
}).ToList();
118+
Id = dataItem.Id,
119+
DataItemId = dataItem.DataItemId,
120+
Position = dataItem.Position,
121+
Visibility = dataItem.Visibility,
122+
};
123+
foreach (var dataItemObject in dataItemsList)
124+
{
125+
var type = dataItemObject.GetType();
126+
if (type == typeof(FieldContainer))
127+
{
128+
var item = (FieldContainer) dataItemObject;
129+
if (item.Id == dataItem.DataItemId)
130+
{
131+
model.FieldType = type.ToString().Remove(0, 10);
132+
model.Label = item.Label;
133+
model.DataItemList = GetReportDataItemList(null, dataItem,
134+
item.DataItemList.Select(x => (object) x).ToList());
135+
}
136+
}
137+
138+
if (type == typeof(MultiSelect))
139+
{
140+
var item = (MultiSelect) dataItemObject;
141+
if (item.Id == dataItem.DataItemId)
142+
{
143+
model.FieldType = type.ToString().Remove(0, 10);
144+
model.Label = item.Label;
145+
foreach (var keyValuePair in item.KeyValuePairList)
146+
{
147+
model.KeyValuePairList.Add(new EformKeyValuePairModel()
148+
{
149+
Key = keyValuePair.Key,
150+
Value = keyValuePair.Value,
151+
DisplayOrder = keyValuePair.DisplayOrder,
152+
Selected = keyValuePair.Selected,
153+
});
154+
}
155+
}
156+
}
157+
if (type == typeof(SingleSelect))
158+
{
159+
var item = (SingleSelect) dataItemObject;
160+
if (item.Id == dataItem.DataItemId)
161+
{
162+
model.FieldType = type.ToString().Remove(0, 10);
163+
model.Label = item.Label;
164+
foreach (var keyValuePair in item.KeyValuePairList)
165+
{
166+
model.KeyValuePairList.Add(new EformKeyValuePairModel()
167+
{
168+
Key = keyValuePair.Key,
169+
Value = keyValuePair.Value,
170+
DisplayOrder = keyValuePair.DisplayOrder,
171+
Selected = keyValuePair.Selected,
172+
});
173+
}
174+
}
175+
}
87176

88-
return list;
177+
// Common fields
178+
if (type == typeof(Audio)
179+
|| type == typeof(Comment)
180+
|| type == typeof(Date)
181+
|| type == typeof(EntitySearch)
182+
|| type == typeof(EntitySelect)
183+
|| type == typeof(None)
184+
|| type == typeof(Number)
185+
|| type == typeof(NumberStepper)
186+
|| type == typeof(Picture)
187+
|| type == typeof(ShowPdf)
188+
|| type == typeof(SaveButton)
189+
|| type == typeof(Signature)
190+
|| type == typeof(Text)
191+
|| type == typeof(Timer)
192+
|| type == typeof(CheckBox))
193+
{
194+
var item = (DataItem) dataItemObject;
195+
if (item.Id == dataItem.DataItemId)
196+
{
197+
model.FieldType = type.ToString().Remove(0, 10);
198+
model.Label = item.Label;
199+
}
200+
}
201+
}
202+
result.Add(model);
203+
}
204+
205+
return result;
89206
}
90207

91208
public async Task<OperationDataResult<EformReportFullModel>> GetEformReport(int templateId)
@@ -129,19 +246,38 @@ public async Task<OperationDataResult<EformReportFullModel>> GetEformReport(int
129246
.ToListAsync();
130247

131248

132-
var reportElementsOrdered = reportElements
133-
.Where(p => p.Parent == null)
134-
.OrderBy(p => p.Id)
135-
.Select(p => new EformReportElementsModel()
249+
var reportElementsOrdered = new List<EformReportElementsModel>();
250+
foreach (var templateElement in template.ElementList)
251+
{
252+
var reportElement = reportElements
253+
.FirstOrDefault(p => p.ElementId == templateElement.Id);
254+
if (reportElement != null)
255+
{
256+
var element = new EformReportElementsModel()
136257
{
137-
Id = p.Id,
138-
ElementId = p.ElementId,
139-
Label = p.ElementId.ToString(),
140-
ElementList = GetReportElementsList(p),
141-
DataItemList = GetReportDataItemListFromElement(p),
258+
Id = reportElement.Id,
259+
ElementId = reportElement.ElementId,
260+
Label = reportElement.ElementId.ToString(),
261+
};
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+
}
269+
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;
142276
}
143-
).ToList();
144277

278+
reportElementsOrdered.Add(element);
279+
}
280+
}
145281

146282
result.EformMainElement = new EformMainElement()
147283
{
@@ -150,7 +286,6 @@ public async Task<OperationDataResult<EformReportFullModel>> GetEformReport(int
150286
ElementList = reportElementsOrdered
151287
};
152288

153-
154289
result.EformReport = eformReport;
155290
return new OperationDataResult<EformReportFullModel>(true, result);
156291
}
@@ -162,22 +297,42 @@ public async Task<OperationDataResult<EformReportFullModel>> GetEformReport(int
162297
}
163298
}
164299

165-
public async Task<OperationResult> UpdateEformReport(EformReportModel requestModel)
300+
public async Task<OperationResult> UpdateEformReport(EformReportFullModel requestModel)
166301
{
167302
try
168303
{
169-
var result = new EformReportFullModel();
170304
using (var transaction = await _dbContext.Database.BeginTransactionAsync())
171305
{
306+
var eformReport = _dbContext.EformReports
307+
.FirstOrDefault(x => x.Id == requestModel.EformReport.Id);
308+
309+
if (eformReport == null)
310+
{
311+
return new OperationResult(false,
312+
_localizationService.GetString(""));
313+
}
314+
315+
eformReport.Description = requestModel.EformReport.Description;
316+
if (!string.IsNullOrEmpty(requestModel.EformReport.HeaderImage))
317+
{
318+
eformReport.HeaderImage = Encoding.UTF8.GetBytes(requestModel.EformReport.HeaderImage);
319+
}
320+
321+
eformReport.HeaderVisibility = requestModel.EformReport.HeaderVisibility;
322+
eformReport.IsDateVisible = requestModel.EformReport.IsDateVisible;
323+
eformReport.IsWorkerNameVisible = requestModel.EformReport.IsWorkerNameVisible;
324+
// eformReport.ReportElements
325+
326+
172327
transaction.Commit();
173328
}
174329

175-
return new OperationDataResult<EformReportFullModel>(true, result);
330+
return new OperationResult(true);
176331
}
177332
catch (Exception e)
178333
{
179334
_logger.LogCritical(e, e.Message);
180-
return new OperationDataResult<EformReportFullModel>(false,
335+
return new OperationResult(false,
181336
_localizationService.GetString(""));
182337
}
183338
}

0 commit comments

Comments
 (0)