public async Task <IActionResult> UpdateEformReport([FromBody] EformReportFullModel eformReportModel) { if (!await _permissionsService.CheckEform(eformReportModel.EformReport.TemplateId, AuthConsts.EformClaims.EformsClaims.UpdateJasperReport)) { return(Forbid()); } return(Ok(await _eformReportsService.UpdateEformReport(eformReportModel))); }
public async Task <OperationResult> UpdateEformReport(EformReportFullModel requestModel) { try { //using (var transaction = await _dbContext.Database.BeginTransactionAsync()) // { //try //{ var eformReport = _dbContext.EformReports .FirstOrDefault(x => x.Id == requestModel.EformReport.Id); if (eformReport == null) { return(new OperationResult(false, _localizationService.GetString("EformReportNotFound"))); } eformReport.Description = requestModel.EformReport.Description; if (!string.IsNullOrEmpty(requestModel.EformReport.HeaderImage)) { eformReport.HeaderImage = Encoding.UTF8.GetBytes(requestModel.EformReport.HeaderImage); } eformReport.HeaderVisibility = requestModel.EformReport.HeaderVisibility; eformReport.IsDateVisible = requestModel.EformReport.IsDateVisible; eformReport.IsWorkerNameVisible = requestModel.EformReport.IsWorkerNameVisible; _dbContext.EformReports.Update(eformReport); await _dbContext.SaveChangesAsync(); var elementList = requestModel.EformMainElement?.ElementList; if (elementList == null) { return(new OperationResult(false, _localizationService.GetString("ElementListNotProvided"))); } var dataItems = ParseElements(elementList); if (dataItems.Any()) { var dataItemsIds = dataItems.Select(x => x.Id).ToArray(); var eformDataItems = await _dbContext.EformReportDataItems .Where(x => dataItemsIds.Contains(x.Id)).ToListAsync(); foreach (var eformDataItem in eformDataItems) { var dataItem = dataItems.FirstOrDefault(x => x.Id == eformDataItem.Id); if (dataItem != null) { eformDataItem.Position = dataItem.Position; eformDataItem.Visibility = dataItem.Visibility; _dbContext.EformReportDataItems.Update(eformDataItem); } } await _dbContext.SaveChangesAsync(); } //transaction.Commit(); //} //catch (Exception) //{ //transaction.Rollback(); // throw; //} //} return(new OperationResult(true, _localizationService.GetString("ReportUpdatedSuccessfully"))); } catch (Exception e) { _logger.LogCritical(e, e.Message); return(new OperationResult(false, _localizationService.GetString("ErrorWhileUpdatingReport"))); } }
public async Task <OperationDataResult <EformReportFullModel> > GetEformReport(int templateId) { try { var result = new EformReportFullModel(); var core = await _coreHelper.GetCore(); await using var dbContext = core.DbContextHelper.GetDbContext(); var localeString = await _userService.GetCurrentUserLocale(); var language = dbContext.Languages.Single(x => x.LanguageCode == localeString); var template = await core.ReadeForm(templateId, language); if (template == null) { return(new OperationDataResult <EformReportFullModel>(false, _localizationService.GetString("TemplateNotFound"))); } var eformReport = await _dbContext.EformReports .FirstOrDefaultAsync(x => x.TemplateId == templateId); if (eformReport == null) { eformReport = new EformReport { TemplateId = template.Id, IsDateVisible = true, IsWorkerNameVisible = true, }; _dbContext.EformReports.Add(eformReport); await _dbContext.SaveChangesAsync(); } var reportElements = await _dbContext.EformReportElements .Include(x => x.DataItems) .ThenInclude(x => x.NestedDataItems) .Include(x => x.NestedElements) .ThenInclude(x => x.DataItems) .ThenInclude(x => x.NestedDataItems) .Where(x => x.EformReportId == eformReport.Id) .ToListAsync(); var reportElementsOrdered = new List <EformReportElementModel>(); foreach (var templateElement in template.ElementList) { var reportElement = reportElements .FirstOrDefault(p => p.ElementId == templateElement.Id); if (reportElement == null) { reportElement = new EformReportElement() { EformReportId = eformReport.Id, ElementId = templateElement.Id, }; _dbContext.EformReportElements.Add(reportElement); await _dbContext.SaveChangesAsync(); reportElement = await _dbContext.EformReportElements .Include(x => x.DataItems) .ThenInclude(x => x.NestedDataItems) .Include(x => x.NestedElements) .ThenInclude(x => x.DataItems) .ThenInclude(x => x.NestedDataItems) .Where(x => x.EformReportId == eformReport.Id && x.ElementId == templateElement.Id) .FirstOrDefaultAsync(); } var element = new EformReportElementModel() { Id = reportElement.Id, ElementId = reportElement.ElementId, Label = templateElement.Label, }; if (templateElement.GetType() == typeof(DataElement)) { var item = (DataElement)templateElement; var dataItemList = GetReportDataItemList(_dbContext, reportElement, null, item.DataItemList.Select(x => (object)x).ToList()); element.DataItemList = dataItemList; } if (templateElement.GetType() == typeof(GroupElement)) { var item = (GroupElement)templateElement; var elementList = GetReportElementsList(_dbContext, reportElement, item.ElementList.Select(x => (object)x).ToList()); element.ElementList = elementList; } reportElementsOrdered.Add(element); } result.EformMainElement = new EformMainElement() { Id = template.Id, Label = template.Label, ElementList = reportElementsOrdered }; var eformReportModel = new EformReportModel() { Id = eformReport.Id, TemplateId = eformReport.TemplateId, Description = eformReport.Description, HeaderImage = eformReport.HeaderImage == null ? string.Empty : Encoding.UTF8.GetString(eformReport.HeaderImage), HeaderVisibility = eformReport.HeaderVisibility, IsDateVisible = eformReport.IsDateVisible, IsWorkerNameVisible = eformReport.IsWorkerNameVisible, }; result.EformReport = eformReportModel; result.EformMainElement = new EformReportHelper().AddPageBreaks(result.EformMainElement); return(new OperationDataResult <EformReportFullModel>(true, result)); } catch (Exception e) { _logger.LogCritical(e, e.Message); return(new OperationDataResult <EformReportFullModel>(false, _localizationService.GetString("ErrorWhileObtainingReportInfo"))); } }