@@ -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