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