@@ -71,6 +71,7 @@ private static List<EformReportElementsModel> GetReportElementsList(BaseDbContex
7171 dbContext . EformReportElements . Add ( eformReportElement ) ;
7272 dbContext . SaveChanges ( ) ;
7373 }
74+
7475 parent . NestedElements . Add ( eformReportElement ) ;
7576 }
7677
@@ -147,9 +148,11 @@ private static List<EformReportDataItemModel> GetReportDataItemList(BaseDbContex
147148 {
148149 eformReportDataItem . ParentId = parentDataItem . ParentId ;
149150 }
151+
150152 dbContext . EformReportDataItems . Add ( eformReportDataItem ) ;
151153 dbContext . SaveChanges ( ) ;
152154 }
155+
153156 parentItems . Add ( eformReportDataItem ) ;
154157 }
155158
@@ -376,28 +379,65 @@ public async Task<OperationResult> UpdateEformReport(EformReportFullModel reques
376379 {
377380 using ( var transaction = await _dbContext . Database . BeginTransactionAsync ( ) )
378381 {
379- var eformReport = _dbContext . EformReports
380- . FirstOrDefault ( x => x . Id == requestModel . EformReport . Id ) ;
381-
382- if ( eformReport == null )
382+ try
383383 {
384- return new OperationResult ( false ,
385- _localizationService . GetString ( "" ) ) ;
386- }
384+ var eformReport = _dbContext . EformReports
385+ . FirstOrDefault ( x => x . Id == requestModel . EformReport . Id ) ;
387386
388- eformReport . Description = requestModel . EformReport . Description ;
389- if ( ! string . IsNullOrEmpty ( requestModel . EformReport . HeaderImage ) )
390- {
391- eformReport . HeaderImage = Encoding . UTF8 . GetBytes ( requestModel . EformReport . HeaderImage ) ;
392- }
387+ if ( eformReport == null )
388+ {
389+ return new OperationResult ( false ,
390+ _localizationService . GetString ( "" ) ) ;
391+ }
392+
393+ eformReport . Description = requestModel . EformReport . Description ;
394+ if ( ! string . IsNullOrEmpty ( requestModel . EformReport . HeaderImage ) )
395+ {
396+ eformReport . HeaderImage = Encoding . UTF8 . GetBytes ( requestModel . EformReport . HeaderImage ) ;
397+ }
393398
394- eformReport . HeaderVisibility = requestModel . EformReport . HeaderVisibility ;
395- eformReport . IsDateVisible = requestModel . EformReport . IsDateVisible ;
396- eformReport . IsWorkerNameVisible = requestModel . EformReport . IsWorkerNameVisible ;
397- // eformReport.ReportElements
399+ eformReport . HeaderVisibility = requestModel . EformReport . HeaderVisibility ;
400+ eformReport . IsDateVisible = requestModel . EformReport . IsDateVisible ;
401+ eformReport . IsWorkerNameVisible = requestModel . EformReport . IsWorkerNameVisible ;
398402
403+ _dbContext . EformReports . Update ( eformReport ) ;
404+ await _dbContext . SaveChangesAsync ( ) ;
405+
406+ var elementList = requestModel . EformMainElement ? . ElementList ;
407+ if ( elementList == null )
408+ {
409+ return new OperationResult ( false ,
410+ _localizationService . GetString ( "" ) ) ;
411+ }
412+
413+ var dataItems = ParseElements ( elementList ) ;
414+ if ( dataItems . Any ( ) )
415+ {
416+ var dataItemsIds = dataItems . Select ( x => x . Id ) . ToArray ( ) ;
417+ var eformDataItems = _dbContext . EformReportDataItems
418+ . Where ( x => dataItemsIds . Contains ( x . Id ) ) ;
419+
420+ foreach ( var eformDataItem in eformDataItems )
421+ {
422+ var dataItem = dataItems . FirstOrDefault ( x => x . Id == eformDataItem . Id ) ;
423+ if ( dataItem != null )
424+ {
425+ eformDataItem . Position = dataItem . Position ;
426+ eformDataItem . Visibility = dataItem . Visibility ;
427+ _dbContext . EformReportDataItems . Update ( eformDataItem ) ;
428+ }
429+ }
430+
431+ await _dbContext . SaveChangesAsync ( ) ;
432+ }
399433
400- transaction . Commit ( ) ;
434+ transaction . Commit ( ) ;
435+ }
436+ catch ( Exception )
437+ {
438+ transaction . Rollback ( ) ;
439+ throw ;
440+ }
401441 }
402442
403443 return new OperationResult ( true ) ;
@@ -409,5 +449,42 @@ public async Task<OperationResult> UpdateEformReport(EformReportFullModel reques
409449 _localizationService . GetString ( "" ) ) ;
410450 }
411451 }
452+
453+ public List < EformReportDataItemModel > ParseDataItems ( List < EformReportDataItemModel > dataItemModels )
454+ {
455+ var list = new List < EformReportDataItemModel > ( ) ;
456+ for ( var i = 0 ; i < dataItemModels . Count ; i ++ )
457+ {
458+ var dataItem = dataItemModels [ i ] ;
459+ dataItem . Position = i ;
460+ list . Add ( dataItem ) ;
461+ if ( dataItem . DataItemList . Any ( ) )
462+ {
463+ list . AddRange ( ParseDataItems ( dataItem . DataItemList ) ) ;
464+ }
465+ }
466+
467+ return list ;
468+ }
469+
470+ public List < EformReportDataItemModel > ParseElements ( List < EformReportElementsModel > elementsModels )
471+ {
472+ var list = new List < EformReportDataItemModel > ( ) ;
473+
474+ foreach ( var elementsModel in elementsModels )
475+ {
476+ if ( elementsModel . DataItemList . Any ( ) )
477+ {
478+ list . AddRange ( ParseDataItems ( elementsModel . DataItemList ) ) ;
479+ }
480+
481+ if ( elementsModel . ElementList . Any ( ) )
482+ {
483+ list . AddRange ( ParseElements ( elementsModel . ElementList ) ) ;
484+ }
485+ }
486+
487+ return list ;
488+ }
412489 }
413490}
0 commit comments