public bool AccessRegisterItem(Models.RegisterItem registerItem) { if (IsAdmin()) { return(true); } if (AccessRegister(registerItem.register)) { if (registerItem is Document document) { return(IsItemOwner(document.documentowner.name, UserName()) && VersionIsEditable(registerItem.statusId)); } if (registerItem is Dataset dataset) { if (dataset.IsMunicipalDataset()) { return(IsItemOwner(dataset.datasetowner.name, UserName()) || IsDokAdmin()); } } else { return(IsItemOwner(registerItem.submitter.name, UserName()) || IsRegisterOwner(registerItem.register.owner.name, UserName())); } } return(false); }
public Guid NewVersioningGroup(Models.RegisterItem registerItem) { Models.Version versjoneringsGruppe = new Models.Version(); versjoneringsGruppe.systemId = Guid.NewGuid(); versjoneringsGruppe.currentVersion = registerItem.systemId; versjoneringsGruppe.containedItemClass = registerItem.register.containedItemClass; versjoneringsGruppe.lastVersionNumber = registerItem.versionNumber; _dbContext.Entry(versjoneringsGruppe).State = EntityState.Modified; _dbContext.Versions.Add(versjoneringsGruppe); _dbContext.SaveChanges(); return(versjoneringsGruppe.systemId); }
public VersionsItem Versions(string registername, string parantRegister, string itemname) { // Finn versjonsgruppen Models.Version versjonsGruppe = new Models.Version(); if (parantRegister != null) { var queryResultsRegisteritem = from ri in _dbContext.RegisterItems where ri.register.seoname == registername && ri.register.parentRegister.seoname == parantRegister && ri.seoname == itemname select ri.versioning; versjonsGruppe = queryResultsRegisteritem.FirstOrDefault(); } else { var queryResultsRegisteritem = from ri in _dbContext.RegisterItems where ri.register.seoname == registername && ri.register.parentRegister == null && ri.seoname == itemname select ri.versioning; versjonsGruppe = queryResultsRegisteritem.FirstOrDefault(); } Guid?versjonsGruppeId = versjonsGruppe.systemId; Guid currentVersionId = versjonsGruppe.currentVersion; List <Models.RegisterItem> suggestionsItems = new List <Models.RegisterItem>(); List <Models.RegisterItem> historicalItems = new List <Models.RegisterItem>(); // finne Gjeldende versjon i versjonsgruppen var queryResults = from ri in _dbContext.RegisterItems where ri.systemId == currentVersionId select ri; Models.RegisterItem currentVersion = queryResults.FirstOrDefault(); // Finne alle versjoner som står som forslag queryResults = from ri in _dbContext.RegisterItems where ri.register.seoname == registername && ri.versioningId == versjonsGruppeId && (ri.status.value == "Submitted" //|| ri.status.value == "Proposal" //|| ri.status.value == "InProgress" || ri.status.value == "Draft") //|| ri.status.value == "Accepted" //|| ri.status.value == "Experimental" //|| ri.status.value == "Candidate" select ri; foreach (Models.RegisterItem item in queryResults.ToList()) { if ((item.statusId != "Submitted") || HtmlHelperExtensions.AccessRegisterItem(item)) { suggestionsItems.Add(item); } } //finne alle historiske versjoner var queryResultsHistorical = from ri in _dbContext.RegisterItems where ri.register.seoname == registername && ri.versioningId == currentVersion.versioningId && (ri.status.value == "Superseded" || ri.status.value == "Retired") //ri.status.value == "Deprecated" select ri; if (queryResultsHistorical.Any()) { foreach (Models.RegisterItem item in queryResultsHistorical.ToList()) { historicalItems.Add(item); } } return(new VersionsItem { currentVersion = currentVersion, historical = historicalItems, suggestions = suggestionsItems }); }