Example #1
0
 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
            });
        }