public void CreateStatusReport(Models.Register register, bool latestSavedDataReport = false) { if (latestSavedDataReport) { var mareanoRegistryId = Guid.Parse(GlobalVariables.MareanoRegistryId); var currentReport = _dbContext.StatusReports.Where(s => s.Register.systemId == mareanoRegistryId && s.LatestSavedDataReport).FirstOrDefault(); if (currentReport != null) { _dbContext.Database.ExecuteSqlCommand("DELETE FROM RegisterItemStatusReports Where StatusReport_Id ='" + currentReport.Id + "'; DELETE FROM StatusReports WHERE Id = '" + currentReport.Id + "'"); } } var statusReport = new StatusReport(latestSavedDataReport); statusReport.Register = register; foreach (var item in register.items) { if (item is Dataset dataset) { var datasetStatuses = new DatasetStatusHistory(dataset); statusReport.StatusRegisterItems.Add(datasetStatuses); } } foreach (var item in register.RegisterItems) { if (item is InspireDataset inspireDataset) { var inspireDatasetStatuses = new InspireDatasetStatusReport(inspireDataset); statusReport.StatusRegisterItems.Add(inspireDatasetStatuses); } if (item is InspireDataService inspireDataService) { var inspireDataserviceStatuses = new InspireDataserviceStatusReport(inspireDataService); statusReport.StatusRegisterItems.Add(inspireDataserviceStatuses); } if (item is GeodatalovDataset geodatalovDataset) { var geodatalovDatasetStatuses = new GeodatalovDatasetStatusReport(geodatalovDataset); statusReport.StatusRegisterItems.Add(geodatalovDatasetStatuses); } if (item is MareanoDataset mareanoDataset) { var mareanoDatasetStatuses = new MareanoDatasetStatusReport(mareanoDataset); statusReport.StatusRegisterItems.Add(mareanoDatasetStatuses); } } _dbContext.StatusReports.Add(statusReport); _dbContext.SaveChanges(); }
public void CreateStatusReport(Models.Register register) { var statusReport = new StatusReport(); statusReport.Register = register; foreach (var item in register.items) { if (item is Dataset dataset) { var datasetStatuses = new DatasetStatusHistory(dataset); statusReport.StatusRegisterItems.Add(datasetStatuses); } } foreach (var item in register.RegisterItems) { if (item is InspireDataset inspireDataset) { var inspireDatasetStatuses = new InspireDatasetStatusReport(inspireDataset); statusReport.StatusRegisterItems.Add(inspireDatasetStatuses); } if (item is InspireDataService inspireDataService) { var inspireDataserviceStatuses = new InspireDataserviceStatusReport(inspireDataService); statusReport.StatusRegisterItems.Add(inspireDataserviceStatuses); } if (item is GeodatalovDataset geodatalovDataset) { var geodatalovDatasetStatuses = new GeodatalovDatasetStatusReport(geodatalovDataset); statusReport.StatusRegisterItems.Add(geodatalovDatasetStatuses); } } _dbContext.StatusReports.Add(statusReport); _dbContext.SaveChanges(); }