Skip to content

Commit c8b1eb3

Browse files
author
Leonid
committed
Report update method
1 parent 1b56b38 commit c8b1eb3

File tree

1 file changed

+94
-17
lines changed

1 file changed

+94
-17
lines changed

eFormAPI/eFormAPI.Web/Services/EformReportsService.cs

Lines changed: 94 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)