示例#1
0
        public async Task OnGetAsync()
        {
            Org = await _context.Orgs
                  .Include(o => o.Mods)
                  .ThenInclude(m => m.Latest)
                  .ThenInclude(v => v.VersionNumber)
                  .Include(o => o.Members)
                  .ThenInclude(m => m.User)
                  .ThenInclude(u => u.ShadowOrg)
                  .FirstOrDefaultAsync(o => o.Slug == OrgSlug);

            ViewData["BreadcrumbNode"] = new RazorPageBreadcrumbNode("/Users/Details", Org.DisplayName)
            {
                RouteValues = new { UserSlug = OrgSlug }
            };
        }
示例#2
0
        public async Task OnGetAsync()
        {
            if (string.IsNullOrWhiteSpace(Target))
            {
                ViewData["BreadcrumbNode"] = new RazorPageBreadcrumbNode("/Mods", "Mods");
            }
            else
            {
                var targetDisplayName = await _context.Targets
                                        .Where(t => t.Slug == Target)
                                        .Include(t => t.Latest)
                                        .Select(t => t.Latest.DisplayName)
                                        .SingleAsync();

                var targetsNode = new RazorPageBreadcrumbNode("/Targets/Index", "Targets")
                {
                    OverwriteTitleOnExactMatch = true
                };

                var targetNode = new RazorPageBreadcrumbNode($"/Targets/Details", targetDisplayName)
                {
                    OverwriteTitleOnExactMatch = true,
                    Parent      = targetsNode,
                    RouteValues = new { targetSlug = Target }
                };

                var modsNode = new RazorPageBreadcrumbNode("/Mods", "Mods")
                {
                    OverwriteTitleOnExactMatch = true,
                    Parent = targetNode
                };

                ViewData["BreadcrumbNode"] = modsNode;
            }

            Mods = await GetFilteredMods();
        }
示例#3
0
        public async Task <IActionResult> OnGetAsync()
        {
            IQueryable <ModVersion> query = _context.ModVersions
                                            .Include(v => v.Mod).ThenInclude(m => m.Owner)
                                            .Include(v => v.VersionNumber)
                                            .Include(v => v.ModDependencies)
                                            .ThenInclude(d => d.Dependency).ThenInclude(m => m.Owner)
                                            .Include(v => v.ModDependencies)
                                            .ThenInclude(d => d.Dependency).ThenInclude(m => m.Latest)
                                            .Include(v => v.ModDependencies)
                                            .ThenInclude(d => d.MinVersion).ThenInclude(v => v.VersionNumber)
                                            .Include(v => v.ModDependencies)
                                            .ThenInclude(d => d.MaxVersion).ThenInclude(v => v.VersionNumber)
                                            .Where(v => v.Mod.Owner.Slug == OwnerSlug && v.Mod.Slug == ModSlug)
                                            .OrderByVersion();

            if (!string.IsNullOrEmpty(VersionNumber))
            {
                query = query.FindExactVersion(VersionNumber);
            }

            ModVersion = await query.FirstOrDefaultAsync();

            if (string.IsNullOrEmpty(VersionNumber))
            {
                _logger.LogDebug(
                    $"No version specified, picking {ModVersion.VersionNumber} from {string.Join(", ", query.Select(v => v.VersionNumber))}");
            }

            if (ModVersion == null)
            {
                _logger.LogInformation($"No modversion found for {OwnerSlug}/{ModSlug}@{VersionNumber}");
                return(NotFound());
            }

            var canViewUnpublished = (await _authorizationService.AuthorizeAsync(User, ModVersion.Mod, Operation.Read))
                                     .Succeeded;

            if (ModVersion.IsActive == false && !canViewUnpublished)
            {
                return(NotFound());
            }

            CreateAtString = ModVersion.CreatedAt.ToString("o");

            Dependents = new DependencyList()
            {
                Dependencies = await _context.ModDependencies
                               .Include(d => d.Dependent)
                               .ThenInclude(v => v.Mod)
                               .ThenInclude(m => m.Owner)
                               .Include(d => d.Dependent)
                               .ThenInclude(v => v.VersionNumber)
                               .Include(d => d.Dependency)
                               .Where(d => d.DependencyId == ModVersion.Id)
                               .ToListAsync(),
                ShowDependent  = true,
                ShowDependency = false
            };

            Dependencies = new DependencyList()
            {
                Dependencies  = ModVersion.Dependencies,
                ShowDependent = false
            };

            var versionNumbers = await _context.ModVersions
                                 .Where(v => v.ModId == ModVersion.ModId)
                                 .Include(v => v.VersionNumber)
                                 .OrderByVersion()
                                 .Select(v => ModVersionToDropdownListItem(v)).ToListAsync();

            ViewData["ModVersions"] = versionNumbers;

            ModVersionIndex = versionNumbers.FindIndex(n => n.VersionNumber.StartsWith(ModVersion.VersionNumber));

            var ownerNode = new RazorPageBreadcrumbNode("/Users/Details", ModVersion.Mod.Owner.DisplayName)
            {
                OverwriteTitleOnExactMatch = true,
                RouteValues = new { userSlug = ModVersion.Mod.Owner.Slug }
            };

            var modNode = new RazorPageBreadcrumbNode("/Mods/Details", ModVersion.DisplayName)
            {
                OverwriteTitleOnExactMatch = true,
                Parent = ownerNode
            };

            ViewData["BreadcrumbNode"] = modNode;
            ViewData["Title"]          = ModVersion.DisplayName;

            return(Page());
        }