Separate ViewModels into separate library, convert Model library into .NET Standard library

This commit is contained in:
BuildFeed Bot 2018-04-28 09:11:07 +01:00
parent e7939dea1d
commit d0880113f6
No known key found for this signature in database
GPG Key ID: 3757685ADD91E0A1
33 changed files with 259 additions and 287 deletions

View File

@ -11,7 +11,6 @@
namespace BuildFeed.Model namespace BuildFeed.Model
{ {
[DataObject]
[BsonIgnoreExtraElements] [BsonIgnoreExtraElements]
public class Build : BuildDetails public class Build : BuildDetails
{ {
@ -155,27 +154,27 @@ private void GenerateLabUrl()
private void GenerateFamily() private void GenerateFamily()
{ {
// start with lab-based overrides // start with lab-based overrides
if (Lab?.StartsWith("rs4", StringComparison.InvariantCultureIgnoreCase) ?? false) if (Lab?.StartsWith("rs4", StringComparison.OrdinalIgnoreCase) ?? false)
{ {
Family = ProjectFamily.Redstone4; Family = ProjectFamily.Redstone4;
} }
else if (Lab?.StartsWith("rs3", StringComparison.InvariantCultureIgnoreCase) ?? false) else if (Lab?.StartsWith("rs3", StringComparison.OrdinalIgnoreCase) ?? false)
{ {
Family = ProjectFamily.Redstone3; Family = ProjectFamily.Redstone3;
} }
else if (Lab?.StartsWith("feature2", StringComparison.InvariantCultureIgnoreCase) ?? false) else if (Lab?.StartsWith("feature2", StringComparison.OrdinalIgnoreCase) ?? false)
{ {
Family = ProjectFamily.Feature2; Family = ProjectFamily.Feature2;
} }
else if (Lab?.StartsWith("rs2", StringComparison.InvariantCultureIgnoreCase) ?? false) else if (Lab?.StartsWith("rs2", StringComparison.OrdinalIgnoreCase) ?? false)
{ {
Family = ProjectFamily.Redstone2; Family = ProjectFamily.Redstone2;
} }
else if (Lab?.StartsWith("rs1", StringComparison.InvariantCultureIgnoreCase) ?? false) else if (Lab?.StartsWith("rs1", StringComparison.OrdinalIgnoreCase) ?? false)
{ {
Family = ProjectFamily.Redstone; Family = ProjectFamily.Redstone;
} }
else if (Lab?.StartsWith("th2", StringComparison.InvariantCultureIgnoreCase) ?? false) else if (Lab?.StartsWith("th2", StringComparison.OrdinalIgnoreCase) ?? false)
{ {
Family = ProjectFamily.Threshold2; Family = ProjectFamily.Threshold2;
} }

View File

@ -1,6 +1,5 @@
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
using BuildFeed.Local; using BuildFeed.Local;
using MongoDB.Bson.Serialization.Attributes; using MongoDB.Bson.Serialization.Attributes;
@ -42,7 +41,7 @@ public class BuildDetails
public TypeOfSource SourceType { get; set; } public TypeOfSource SourceType { get; set; }
[Display(ResourceType = typeof(VariantTerms), Name = nameof(VariantTerms.Model_SourceDetails))] [Display(ResourceType = typeof(VariantTerms), Name = nameof(VariantTerms.Model_SourceDetails))]
[AllowHtml] //[AllowHtml]
public string SourceDetails { get; set; } public string SourceDetails { get; set; }
[Display(ResourceType = typeof(VariantTerms), Name = nameof(VariantTerms.Model_LeakDate))] [Display(ResourceType = typeof(VariantTerms), Name = nameof(VariantTerms.Model_LeakDate))]

View File

@ -1,118 +1,19 @@
<?xml version="1.0" encoding="utf-8"?> <Project Sdk="Microsoft.NET.Sdk">
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup> <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <TargetFramework>netstandard2.0</TargetFramework>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{7E2B4F61-1C11-4471-AF80-5480E94C0664}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>BuildFeed.Model</RootNamespace>
<AssemblyName>BuildFeed.Model</AssemblyName>
<TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="AutoMapper"> <PackageReference Include="AutoMapper" Version="6.2.2" />
<Version>6.2.2</Version> <PackageReference Include="HtmlAgilityPack" Version="1.8.1" />
</PackageReference> <PackageReference Include="MongoDB.Driver" Version="2.6.0" />
<PackageReference Include="HtmlAgilityPack"> <PackageReference Include="System.ComponentModel.Annotations" Version="4.4.1" />
<Version>1.8.1</Version> <PackageReference Include="System.Configuration.ConfigurationManager" Version="4.4.1" />
</PackageReference>
<PackageReference Include="Microsoft.AspNet.Mvc">
<Version>5.2.4</Version>
</PackageReference>
<PackageReference Include="Microsoft.AspNet.Razor">
<Version>3.2.4</Version>
</PackageReference>
<PackageReference Include="Microsoft.AspNet.WebPages">
<Version>3.2.4</Version>
</PackageReference>
<PackageReference Include="MongoDB.Driver">
<Version>2.6.0</Version>
</PackageReference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Reference Include="System" /> <ProjectReference Include="..\BuildFeed.Local\BuildFeed.Local.csproj" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Web" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Compile Include="Api\ApiBuild.cs" />
<Compile Include="Api\FamilyOverview.cs" />
<Compile Include="Api\NewBuild.cs" />
<Compile Include="Api\SearchResult.cs" />
<Compile Include="BuildDetails.cs" />
<Compile Include="BuildRepository-Group.cs" />
<Compile Include="BuildRepository-Lab.cs" />
<Compile Include="BuildRepository-Family.cs" />
<Compile Include="BuildRepository-Source.cs" />
<Compile Include="BuildRepository-Version.cs" />
<Compile Include="BuildRepository-Year.cs" />
<Compile Include="BuildRepository.cs" />
<Compile Include="BuildGroup.cs" />
<Compile Include="Build.cs" />
<Compile Include="BuildVersion.cs" />
<Compile Include="ItemHistory.cs" />
<Compile Include="ItemHistoryType.cs" />
<Compile Include="MetaItem.cs" />
<Compile Include="ModelMappings.cs" />
<Compile Include="MongoConfig.cs" />
<Compile Include="ProjectFamily.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TypeOfSource.cs" />
<Compile Include="View\AddBulk.cs" />
<Compile Include="View\ChangePassword.cs" />
<Compile Include="View\FrontBuildGroup.cs" />
<Compile Include="View\FrontPage.cs" />
<Compile Include="View\LoginUser.cs" />
<Compile Include="View\RegistrationUser.cs" />
<Compile Include="View\SitemapData.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\BuildFeed.Local\BuildFeed.Local.csproj">
<Project>{9ebd4db1-1d37-456b-ad90-357aa89dd1b7}</Project>
<Name>BuildFeed.Local</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project> </Project>

View File

@ -4,7 +4,6 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Web.Mvc;
using MongoDB.Bson; using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes; using MongoDB.Bson.Serialization.Attributes;
using MongoDB.Driver; using MongoDB.Driver;
@ -12,7 +11,6 @@
namespace BuildFeed.Model namespace BuildFeed.Model
{ {
[DataObject]
public class MetaItemModel public class MetaItemModel
{ {
[Key] [Key]
@ -24,7 +22,7 @@ public class MetaItemModel
public string MetaDescription { get; set; } public string MetaDescription { get; set; }
[DisplayName("Page Content")] [DisplayName("Page Content")]
[AllowHtml] //[AllowHtml]
public string PageContent { get; set; } public string PageContent { get; set; }
} }
@ -55,24 +53,21 @@ public MetaItem()
_bModel = new BuildRepository(); _bModel = new BuildRepository();
} }
[DataObjectMethod(DataObjectMethodType.Select, false)]
public async Task<IEnumerable<MetaItemModel>> Select() public async Task<IEnumerable<MetaItemModel>> Select()
=> await _metaCollection.Find(new BsonDocument()).ToListAsync(); => await _metaCollection.Find(new BsonDocument()).ToListAsync();
[DataObjectMethod(DataObjectMethodType.Select, true)]
public async Task<IEnumerable<MetaItemModel>> SelectByType(MetaType type) public async Task<IEnumerable<MetaItemModel>> SelectByType(MetaType type)
{ {
return await _metaCollection.Find(f => f.Id.Type == type).ToListAsync(); return await _metaCollection.Find(f => f.Id.Type == type).ToListAsync();
} }
[DataObjectMethod(DataObjectMethodType.Select, false)]
public async Task<MetaItemModel> SelectById(MetaItemKey id) public async Task<MetaItemModel> SelectById(MetaItemKey id)
{ {
return await _metaCollection.Find(f => f.Id.Type == id.Type && f.Id.Value == id.Value) return await _metaCollection.Find(f => f.Id.Type == id.Type && f.Id.Value == id.Value)
.SingleOrDefaultAsync(); .SingleOrDefaultAsync();
} }
[DataObjectMethod(DataObjectMethodType.Select, false)]
public async Task<IEnumerable<string>> SelectUnusedLabs() public async Task<IEnumerable<string>> SelectUnusedLabs()
{ {
var labs = await _bModel.SelectAllLabs(); var labs = await _bModel.SelectAllLabs();
@ -84,7 +79,6 @@ where usedLabs.All(ul => ul.Id.Value != l)
select l; select l;
} }
[DataObjectMethod(DataObjectMethodType.Select, false)]
public async Task<IEnumerable<string>> SelectUnusedVersions() public async Task<IEnumerable<string>> SelectUnusedVersions()
{ {
var versions = await _bModel.SelectAllVersions(); var versions = await _bModel.SelectAllVersions();
@ -96,7 +90,6 @@ where usedVersions.All(ul => ul.Id.Value != v.ToString())
select v.ToString(); select v.ToString();
} }
[DataObjectMethod(DataObjectMethodType.Select, false)]
public async Task<IEnumerable<string>> SelectUnusedYears() public async Task<IEnumerable<string>> SelectUnusedYears()
{ {
var years = await _bModel.SelectAllYears(); var years = await _bModel.SelectAllYears();
@ -108,7 +101,6 @@ where usedYears.All(ul => ul.Id.Value != y.ToString())
select y.ToString(); select y.ToString();
} }
[DataObjectMethod(DataObjectMethodType.Select, false)]
public async Task<IEnumerable<string>> SelectUnusedFamilies() public async Task<IEnumerable<string>> SelectUnusedFamilies()
{ {
var families = await _bModel.SelectAllFamilies(); var families = await _bModel.SelectAllFamilies();
@ -120,25 +112,21 @@ where usedFamilies.All(ul => ul.Id.Value != y.ToString())
select y.ToString(); select y.ToString();
} }
[DataObjectMethod(DataObjectMethodType.Insert, true)]
public async Task Insert(MetaItemModel item) public async Task Insert(MetaItemModel item)
{ {
await _metaCollection.InsertOneAsync(item); await _metaCollection.InsertOneAsync(item);
} }
[DataObjectMethod(DataObjectMethodType.Update, true)]
public async Task Update(MetaItemModel item) public async Task Update(MetaItemModel item)
{ {
await _metaCollection.ReplaceOneAsync(f => f.Id.Type == item.Id.Type && f.Id.Value == item.Id.Value, item); await _metaCollection.ReplaceOneAsync(f => f.Id.Type == item.Id.Type && f.Id.Value == item.Id.Value, item);
} }
[DataObjectMethod(DataObjectMethodType.Insert, false)]
public async Task InsertAll(IEnumerable<MetaItemModel> items) public async Task InsertAll(IEnumerable<MetaItemModel> items)
{ {
await _metaCollection.InsertManyAsync(items); await _metaCollection.InsertManyAsync(items);
} }
[DataObjectMethod(DataObjectMethodType.Delete, true)]
public async Task DeleteById(MetaItemKey id) public async Task DeleteById(MetaItemKey id)
{ {
await _metaCollection.DeleteOneAsync(f => f.Id.Type == id.Type && f.Id.Value == id.Value); await _metaCollection.DeleteOneAsync(f => f.Id.Type == id.Type && f.Id.Value == id.Value);

View File

@ -1,38 +0,0 @@
using System;
using System.Collections.Generic;
using System.Web.Routing;
namespace BuildFeed.Model.View
{
public class SitemapData
{
public Dictionary<string, SitemapPagedAction[]> Actions { get; set; }
public SitemapDataBuildGroup[] Builds { get; set; }
public string[] Labs { get; set; }
}
public class SitemapDataBuildGroup
{
public SitemapDataBuild[] Builds { get; set; }
public BuildGroup Id { get; set; }
}
public class SitemapDataBuild
{
public Guid Id { get; set; }
public string Name { get; set; }
}
public class SitemapPagedAction
{
public string Action => UrlParams["action"].ToString();
public string Name { get; set; }
public int Pages { get; set; }
public string UniqueId => UrlParams.GetHashCode().ToString("X8").ToLower();
public RouteValueDictionary UrlParams { get; set; }
}
}

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.1"/>
</startup>
</configuration>

View File

@ -1,4 +1,4 @@
namespace BuildFeed.Model.View namespace BuildFeed.ViewModel
{ {
public class BulkAddition public class BulkAddition
{ {

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{F70F4167-DB65-4DDB-94ED-1B9419D520A3}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>BuildFeed.ViewModel</RootNamespace>
<AssemblyName>BuildFeed.ViewModel</AssemblyName>
<TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="AddBulk.cs" />
<Compile Include="ChangePassword.cs" />
<Compile Include="FrontBuildGroup.cs" />
<Compile Include="FrontPage.cs" />
<Compile Include="FrontPageBuild.cs" />
<Compile Include="LoginUser.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="RegistrationUser.cs" />
<Compile Include="SitemapData.cs" />
<Compile Include="SitemapDataBuild.cs" />
<Compile Include="SitemapDataBuildGroup.cs" />
<Compile Include="SitemapPagedAction.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\BuildFeed.Local\BuildFeed.Local.csproj">
<Project>{9ebd4db1-1d37-456b-ad90-357aa89dd1b7}</Project>
<Name>BuildFeed.Local</Name>
</ProjectReference>
<ProjectReference Include="..\BuildFeed.Model\BuildFeed.Model.csproj">
<Project>{294e58eb-a6c6-4cad-b9f8-b70fc004037f}</Project>
<Name>BuildFeed.Model</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -1,7 +1,7 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using BuildFeed.Local; using BuildFeed.Local;
namespace BuildFeed.Model.View namespace BuildFeed.ViewModel
{ {
public class ChangePassword public class ChangePassword
{ {

View File

@ -1,6 +1,7 @@
using System; using System;
using BuildFeed.Model;
namespace BuildFeed.Model.View namespace BuildFeed.ViewModel
{ {
public class FrontBuildGroup public class FrontBuildGroup
{ {

View File

@ -0,0 +1,11 @@
namespace BuildFeed.ViewModel
{
public class FrontPage
{
public FrontPageBuild CurrentCanary { get; set; }
public FrontPageBuild CurrentInsider { get; set; }
public FrontPageBuild CurrentRelease { get; set; }
public FrontPageBuild CurrentXbox { get; set; }
public FrontPageBuild CurrentAnalog { get; set; }
}
}

View File

@ -1,23 +1,12 @@
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using BuildFeed.Local; using BuildFeed.Local;
using MongoDB.Bson.Serialization.Attributes;
namespace BuildFeed.Model.View namespace BuildFeed.ViewModel
{ {
public class FrontPage
{
public FrontPageBuild CurrentCanary { get; set; }
public FrontPageBuild CurrentInsider { get; set; }
public FrontPageBuild CurrentRelease { get; set; }
public FrontPageBuild CurrentXbox { get; set; }
public FrontPageBuild CurrentAnalog { get; set; }
}
public class FrontPageBuild public class FrontPageBuild
{ {
[Key] [Key]
[BsonId]
public Guid Id { get; set; } public Guid Id { get; set; }
[Required] [Required]

View File

@ -1,7 +1,7 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using BuildFeed.Local; using BuildFeed.Local;
namespace BuildFeed.Model.View namespace BuildFeed.ViewModel
{ {
public class LoginUser public class LoginUser
{ {

View File

@ -1,28 +1,26 @@
using System.Reflection; using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("BuildFeed.ViewModel")]
[assembly: AssemblyTitle("BuildFeed.Model")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")] [assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("BuildFeed.Model")] [assembly: AssemblyProduct("BuildFeed.ViewModel")]
[assembly: AssemblyCopyright("Copyright © 2013 - 2018, The BuildFeed Team")] [assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible // Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from // to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type. // COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)] [assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM // The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("f70f4167-db65-4ddb-94ed-1b9419d520a3")]
[assembly: Guid("7e2b4f61-1c11-4471-af80-5480e94c0664")]
// Version information for an assembly consists of the following four values: // Version information for an assembly consists of the following four values:
// //
@ -34,6 +32,5 @@
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -1,7 +1,7 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using BuildFeed.Local; using BuildFeed.Local;
namespace BuildFeed.Model.View namespace BuildFeed.ViewModel
{ {
public class RegistrationUser public class RegistrationUser
{ {

View File

@ -0,0 +1,12 @@
using System.Collections.Generic;
namespace BuildFeed.ViewModel
{
public class SitemapData
{
public Dictionary<string, SitemapPagedAction[]> Actions { get; set; }
public SitemapDataBuildGroup[] Builds { get; set; }
public string[] Labs { get; set; }
}
}

View File

@ -0,0 +1,10 @@
using System;
namespace BuildFeed.ViewModel
{
public class SitemapDataBuild
{
public Guid Id { get; set; }
public string Name { get; set; }
}
}

View File

@ -0,0 +1,10 @@
using BuildFeed.Model;
namespace BuildFeed.ViewModel
{
public class SitemapDataBuildGroup
{
public SitemapDataBuild[] Builds { get; set; }
public BuildGroup Id { get; set; }
}
}

View File

@ -0,0 +1,16 @@
using System.Collections.Generic;
namespace BuildFeed.ViewModel
{
public class SitemapPagedAction
{
public string Action => UrlParams["action"].ToString();
public string Name { get; set; }
public int Pages { get; set; }
public string UniqueId => UrlParams.GetHashCode().ToString("X8").ToLower();
public Dictionary<string, object> UrlParams { get; set; }
}
}

View File

@ -5,7 +5,6 @@ VisualStudioVersion = 15.0.27130.2010
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildFeed", "BuildFeed\BuildFeed.csproj", "{CDDCF754-ECAA-4A66-ADAA-62957A57A51B}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildFeed", "BuildFeed\BuildFeed.csproj", "{CDDCF754-ECAA-4A66-ADAA-62957A57A51B}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
{7E2B4F61-1C11-4471-AF80-5480E94C0664} = {7E2B4F61-1C11-4471-AF80-5480E94C0664}
{7C67BFB9-1B3B-4676-A58D-10573DA82CFE} = {7C67BFB9-1B3B-4676-A58D-10573DA82CFE} {7C67BFB9-1B3B-4676-A58D-10573DA82CFE} = {7C67BFB9-1B3B-4676-A58D-10573DA82CFE}
EndProjectSection EndProjectSection
EndProject EndProject
@ -17,15 +16,17 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Authentication", "Authentic
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile", "Mobile", "{2B646675-44D1-4722-8A86-8C64876C8FB7}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile", "Mobile", "{2B646675-44D1-4722-8A86-8C64876C8FB7}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildFeed.Model", "BuildFeed.Model\BuildFeed.Model.csproj", "{7E2B4F61-1C11-4471-AF80-5480E94C0664}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{948A2168-A092-4958-A465-427271563061}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{948A2168-A092-4958-A465-427271563061}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
LICENSE.md = LICENSE.md LICENSE.md = LICENSE.md
README.md = README.md README.md = README.md
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildFeed.Local", "BuildFeed.Local\BuildFeed.Local.csproj", "{9EBD4DB1-1D37-456B-AD90-357AA89DD1B7}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BuildFeed.Local", "BuildFeed.Local\BuildFeed.Local.csproj", "{9EBD4DB1-1D37-456B-AD90-357AA89DD1B7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BuildFeed.Model", "BuildFeed.Model\BuildFeed.Model.csproj", "{294E58EB-A6C6-4CAD-B9F8-B70FC004037F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildFeed.ViewModel", "BuildFeed.ViewModel\BuildFeed.ViewModel.csproj", "{F70F4167-DB65-4DDB-94ED-1B9419D520A3}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -95,22 +96,6 @@ Global
{5CAADB66-1FC2-4492-B766-36354687120D}.Release|x86.ActiveCfg = Release|x86 {5CAADB66-1FC2-4492-B766-36354687120D}.Release|x86.ActiveCfg = Release|x86
{5CAADB66-1FC2-4492-B766-36354687120D}.Release|x86.Build.0 = Release|x86 {5CAADB66-1FC2-4492-B766-36354687120D}.Release|x86.Build.0 = Release|x86
{5CAADB66-1FC2-4492-B766-36354687120D}.Release|x86.Deploy.0 = Release|x86 {5CAADB66-1FC2-4492-B766-36354687120D}.Release|x86.Deploy.0 = Release|x86
{7E2B4F61-1C11-4471-AF80-5480E94C0664}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7E2B4F61-1C11-4471-AF80-5480E94C0664}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7E2B4F61-1C11-4471-AF80-5480E94C0664}.Debug|ARM.ActiveCfg = Debug|Any CPU
{7E2B4F61-1C11-4471-AF80-5480E94C0664}.Debug|ARM.Build.0 = Debug|Any CPU
{7E2B4F61-1C11-4471-AF80-5480E94C0664}.Debug|x64.ActiveCfg = Debug|Any CPU
{7E2B4F61-1C11-4471-AF80-5480E94C0664}.Debug|x64.Build.0 = Debug|Any CPU
{7E2B4F61-1C11-4471-AF80-5480E94C0664}.Debug|x86.ActiveCfg = Debug|Any CPU
{7E2B4F61-1C11-4471-AF80-5480E94C0664}.Debug|x86.Build.0 = Debug|Any CPU
{7E2B4F61-1C11-4471-AF80-5480E94C0664}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7E2B4F61-1C11-4471-AF80-5480E94C0664}.Release|Any CPU.Build.0 = Release|Any CPU
{7E2B4F61-1C11-4471-AF80-5480E94C0664}.Release|ARM.ActiveCfg = Release|Any CPU
{7E2B4F61-1C11-4471-AF80-5480E94C0664}.Release|ARM.Build.0 = Release|Any CPU
{7E2B4F61-1C11-4471-AF80-5480E94C0664}.Release|x64.ActiveCfg = Release|Any CPU
{7E2B4F61-1C11-4471-AF80-5480E94C0664}.Release|x64.Build.0 = Release|Any CPU
{7E2B4F61-1C11-4471-AF80-5480E94C0664}.Release|x86.ActiveCfg = Release|Any CPU
{7E2B4F61-1C11-4471-AF80-5480E94C0664}.Release|x86.Build.0 = Release|Any CPU
{9EBD4DB1-1D37-456B-AD90-357AA89DD1B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9EBD4DB1-1D37-456B-AD90-357AA89DD1B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9EBD4DB1-1D37-456B-AD90-357AA89DD1B7}.Debug|Any CPU.Build.0 = Debug|Any CPU {9EBD4DB1-1D37-456B-AD90-357AA89DD1B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9EBD4DB1-1D37-456B-AD90-357AA89DD1B7}.Debug|ARM.ActiveCfg = Debug|Any CPU {9EBD4DB1-1D37-456B-AD90-357AA89DD1B7}.Debug|ARM.ActiveCfg = Debug|Any CPU
@ -127,6 +112,38 @@ Global
{9EBD4DB1-1D37-456B-AD90-357AA89DD1B7}.Release|x64.Build.0 = Release|Any CPU {9EBD4DB1-1D37-456B-AD90-357AA89DD1B7}.Release|x64.Build.0 = Release|Any CPU
{9EBD4DB1-1D37-456B-AD90-357AA89DD1B7}.Release|x86.ActiveCfg = Release|Any CPU {9EBD4DB1-1D37-456B-AD90-357AA89DD1B7}.Release|x86.ActiveCfg = Release|Any CPU
{9EBD4DB1-1D37-456B-AD90-357AA89DD1B7}.Release|x86.Build.0 = Release|Any CPU {9EBD4DB1-1D37-456B-AD90-357AA89DD1B7}.Release|x86.Build.0 = Release|Any CPU
{294E58EB-A6C6-4CAD-B9F8-B70FC004037F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{294E58EB-A6C6-4CAD-B9F8-B70FC004037F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{294E58EB-A6C6-4CAD-B9F8-B70FC004037F}.Debug|ARM.ActiveCfg = Debug|Any CPU
{294E58EB-A6C6-4CAD-B9F8-B70FC004037F}.Debug|ARM.Build.0 = Debug|Any CPU
{294E58EB-A6C6-4CAD-B9F8-B70FC004037F}.Debug|x64.ActiveCfg = Debug|Any CPU
{294E58EB-A6C6-4CAD-B9F8-B70FC004037F}.Debug|x64.Build.0 = Debug|Any CPU
{294E58EB-A6C6-4CAD-B9F8-B70FC004037F}.Debug|x86.ActiveCfg = Debug|Any CPU
{294E58EB-A6C6-4CAD-B9F8-B70FC004037F}.Debug|x86.Build.0 = Debug|Any CPU
{294E58EB-A6C6-4CAD-B9F8-B70FC004037F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{294E58EB-A6C6-4CAD-B9F8-B70FC004037F}.Release|Any CPU.Build.0 = Release|Any CPU
{294E58EB-A6C6-4CAD-B9F8-B70FC004037F}.Release|ARM.ActiveCfg = Release|Any CPU
{294E58EB-A6C6-4CAD-B9F8-B70FC004037F}.Release|ARM.Build.0 = Release|Any CPU
{294E58EB-A6C6-4CAD-B9F8-B70FC004037F}.Release|x64.ActiveCfg = Release|Any CPU
{294E58EB-A6C6-4CAD-B9F8-B70FC004037F}.Release|x64.Build.0 = Release|Any CPU
{294E58EB-A6C6-4CAD-B9F8-B70FC004037F}.Release|x86.ActiveCfg = Release|Any CPU
{294E58EB-A6C6-4CAD-B9F8-B70FC004037F}.Release|x86.Build.0 = Release|Any CPU
{F70F4167-DB65-4DDB-94ED-1B9419D520A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F70F4167-DB65-4DDB-94ED-1B9419D520A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F70F4167-DB65-4DDB-94ED-1B9419D520A3}.Debug|ARM.ActiveCfg = Debug|Any CPU
{F70F4167-DB65-4DDB-94ED-1B9419D520A3}.Debug|ARM.Build.0 = Debug|Any CPU
{F70F4167-DB65-4DDB-94ED-1B9419D520A3}.Debug|x64.ActiveCfg = Debug|Any CPU
{F70F4167-DB65-4DDB-94ED-1B9419D520A3}.Debug|x64.Build.0 = Debug|Any CPU
{F70F4167-DB65-4DDB-94ED-1B9419D520A3}.Debug|x86.ActiveCfg = Debug|Any CPU
{F70F4167-DB65-4DDB-94ED-1B9419D520A3}.Debug|x86.Build.0 = Debug|Any CPU
{F70F4167-DB65-4DDB-94ED-1B9419D520A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F70F4167-DB65-4DDB-94ED-1B9419D520A3}.Release|Any CPU.Build.0 = Release|Any CPU
{F70F4167-DB65-4DDB-94ED-1B9419D520A3}.Release|ARM.ActiveCfg = Release|Any CPU
{F70F4167-DB65-4DDB-94ED-1B9419D520A3}.Release|ARM.Build.0 = Release|Any CPU
{F70F4167-DB65-4DDB-94ED-1B9419D520A3}.Release|x64.ActiveCfg = Release|Any CPU
{F70F4167-DB65-4DDB-94ED-1B9419D520A3}.Release|x64.Build.0 = Release|Any CPU
{F70F4167-DB65-4DDB-94ED-1B9419D520A3}.Release|x86.ActiveCfg = Release|Any CPU
{F70F4167-DB65-4DDB-94ED-1B9419D520A3}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View File

@ -1,4 +1,4 @@
@using BuildFeed.Model.View @using BuildFeed.ViewModel
@helper LatestBuild(string title, FrontPageBuild build) @helper LatestBuild(string title, FrontPageBuild build)
{ {
<h4 class="latest-flex-title">@title</h4> <h4 class="latest-flex-title">@title</h4>

View File

@ -96,6 +96,9 @@
<PackageReference Include="MSBuildGitHash"> <PackageReference Include="MSBuildGitHash">
<Version>0.3.0</Version> <Version>0.3.0</Version>
</PackageReference> </PackageReference>
<PackageReference Include="NETStandard.Library">
<Version>2.0.2</Version>
</PackageReference>
<PackageReference Include="OneSignal.RestAPIv3.Client"> <PackageReference Include="OneSignal.RestAPIv3.Client">
<Version>1.0.3</Version> <Version>1.0.3</Version>
</PackageReference> </PackageReference>
@ -104,6 +107,9 @@
</PackageReference> </PackageReference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Reference Include="netstandard">
<Private>true</Private>
</Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.ComponentModel.Composition" /> <Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
@ -371,9 +377,13 @@
<Name>BuildFeed.Local</Name> <Name>BuildFeed.Local</Name>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\BuildFeed.Model\BuildFeed.Model.csproj"> <ProjectReference Include="..\BuildFeed.Model\BuildFeed.Model.csproj">
<Project>{7e2b4f61-1c11-4471-af80-5480e94c0664}</Project> <Project>{294e58eb-a6c6-4cad-b9f8-b70fc004037f}</Project>
<Name>BuildFeed.Model</Name> <Name>BuildFeed.Model</Name>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\BuildFeed.ViewModel\BuildFeed.ViewModel.csproj">
<Project>{f70f4167-db65-4ddb-94ed-1b9419d520a3}</Project>
<Name>BuildFeed.ViewModel</Name>
</ProjectReference>
</ItemGroup> </ItemGroup>
<PropertyGroup> <PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>

View File

@ -5,7 +5,7 @@
using System.Web.Security; using System.Web.Security;
using BuildFeed.Code; using BuildFeed.Code;
using BuildFeed.Local; using BuildFeed.Local;
using BuildFeed.Model.View; using BuildFeed.ViewModel;
using MongoAuth; using MongoAuth;
namespace BuildFeed.Controllers namespace BuildFeed.Controllers

View File

@ -10,7 +10,7 @@
using BuildFeed.Local; using BuildFeed.Local;
using BuildFeed.Model; using BuildFeed.Model;
using BuildFeed.Model.Api; using BuildFeed.Model.Api;
using BuildFeed.Model.View; using BuildFeed.ViewModel;
using OneSignal.RestAPIv3.Client; using OneSignal.RestAPIv3.Client;
#pragma warning disable SG0016 // Controller method is vulnerable to CSRF - Not relevant for API #pragma warning disable SG0016 // Controller method is vulnerable to CSRF - Not relevant for API

View File

@ -13,7 +13,7 @@
using System.Web.Mvc; using System.Web.Mvc;
using BuildFeed.Code; using BuildFeed.Code;
using BuildFeed.Model; using BuildFeed.Model;
using BuildFeed.Model.View; using BuildFeed.ViewModel;
using OneSignal.RestAPIv3.Client; using OneSignal.RestAPIv3.Client;
namespace BuildFeed.Controllers namespace BuildFeed.Controllers

View File

@ -8,7 +8,7 @@
using BuildFeed.Code; using BuildFeed.Code;
using BuildFeed.Local; using BuildFeed.Local;
using BuildFeed.Model; using BuildFeed.Model;
using BuildFeed.Model.View; using BuildFeed.ViewModel;
namespace BuildFeed.Controllers namespace BuildFeed.Controllers
{ {
@ -42,12 +42,12 @@ public async Task<ActionResult> Sitemap()
{ {
new SitemapPagedAction new SitemapPagedAction
{ {
UrlParams = new RouteValueDictionary(new UrlParams = new Dictionary<string, object>
{ {
controller = "Front", { "controller", "Front" },
action = "Index", { "action", nameof(FrontController.Index) },
page = 1 { "page", 1 }
}), },
Pages = (builds.Count + (FrontController.PAGE_SIZE - 1)) / FrontController.PAGE_SIZE Pages = (builds.Count + (FrontController.PAGE_SIZE - 1)) / FrontController.PAGE_SIZE
} }
} }
@ -64,14 +64,14 @@ into bv
select new SitemapPagedAction select new SitemapPagedAction
{ {
Name = $"{InvariantTerms.ProductName} {bv.Key.Major}.{bv.Key.Minor}", Name = $"{InvariantTerms.ProductName} {bv.Key.Major}.{bv.Key.Minor}",
UrlParams = new RouteValueDictionary(new UrlParams = new Dictionary<string, object>
{ {
controller = "Front", { "controller", "Front" },
action = "ViewVersion", { "action", nameof(FrontController.ViewVersion) },
major = bv.Key.Major, { "major", bv.Key.Major },
minor = bv.Key.Minor, { "minor", bv.Key.Minor },
page = 1 { "page", 1 }
}), },
Pages = (bv.Count() + (FrontController.PAGE_SIZE - 1)) / FrontController.PAGE_SIZE Pages = (bv.Count() + (FrontController.PAGE_SIZE - 1)) / FrontController.PAGE_SIZE
}).ToArray() }).ToArray()
}, },
@ -84,13 +84,13 @@ orderby bv.Key
select new SitemapPagedAction select new SitemapPagedAction
{ {
Name = bv.Key, Name = bv.Key,
UrlParams = new RouteValueDictionary(new UrlParams = new Dictionary<string, object>
{ {
controller = "Front", { "controller", "Front" },
action = "ViewLab", { "action", nameof(FrontController.ViewLab) },
lab = bv.Key, { "lab", bv.Key },
page = 1 { "page", 1 }
}), },
Pages = (bv.Count() + (FrontController.PAGE_SIZE - 1)) / FrontController.PAGE_SIZE Pages = (bv.Count() + (FrontController.PAGE_SIZE - 1)) / FrontController.PAGE_SIZE
}).ToArray() }).ToArray()
}, },
@ -103,13 +103,13 @@ orderby bv.Key descending
select new SitemapPagedAction select new SitemapPagedAction
{ {
Name = bv.Key.ToString(), Name = bv.Key.ToString(),
UrlParams = new RouteValueDictionary(new UrlParams = new Dictionary<string, object>
{ {
controller = "Front", {"controller", "Front"},
action = "ViewYear", {"action", nameof(FrontController.ViewYear)},
year = bv.Key, {"year", bv.Key},
page = 1 {"page", 1}
}), },
Pages = (bv.Count() + (FrontController.PAGE_SIZE - 1)) / FrontController.PAGE_SIZE Pages = (bv.Count() + (FrontController.PAGE_SIZE - 1)) / FrontController.PAGE_SIZE
}).ToArray() }).ToArray()
}, },
@ -121,13 +121,13 @@ orderby bv.Key
select new SitemapPagedAction select new SitemapPagedAction
{ {
Name = MvcExtensions.GetDisplayTextForEnum(bv.Key), Name = MvcExtensions.GetDisplayTextForEnum(bv.Key),
UrlParams = new RouteValueDictionary(new UrlParams = new Dictionary<string, object>
{ {
controller = "Front", { "controller", "Front" },
action = "ViewSource", { "action", nameof(FrontController.ViewSource)},
source = bv.Key, { "source", bv.Key },
page = 1 { "page", 1 }
}), },
Pages = (bv.Count() + (FrontController.PAGE_SIZE - 1)) / FrontController.PAGE_SIZE Pages = (bv.Count() + (FrontController.PAGE_SIZE - 1)) / FrontController.PAGE_SIZE
}).ToArray() }).ToArray()
} }

View File

@ -1,5 +1,5 @@
@using BuildFeed.Controllers @using BuildFeed.Controllers
@using BuildFeed.Model.View @using BuildFeed.ViewModel
@model LoginUser @model LoginUser
@{ @{

View File

@ -1,4 +1,4 @@
@using BuildFeed.Model.View @using BuildFeed.ViewModel
@model ChangePassword @model ChangePassword
@{ @{

View File

@ -1,4 +1,4 @@
@using BuildFeed.Model.View @using BuildFeed.ViewModel
@model RegistrationUser @model RegistrationUser
@{ @{

View File

@ -1,6 +1,6 @@
@using BuildFeed.Controllers @using BuildFeed.Controllers
@using BuildFeed.Model @using BuildFeed.Model
@using BuildFeed.Model.View @using BuildFeed.ViewModel
@model BulkAddition @model BulkAddition
@{ @{

View File

@ -1,6 +1,6 @@
@using BuildFeed.Code @using BuildFeed.Code
@using BuildFeed.Controllers @using BuildFeed.Controllers
@using BuildFeed.Model.View @using BuildFeed.ViewModel
@using Humanizer @using Humanizer
@model IEnumerable<FrontBuildGroup> @model IEnumerable<FrontBuildGroup>
@{ @{

View File

@ -1,7 +1,7 @@
@using BuildFeed.Code @using BuildFeed.Code
@using BuildFeed.Controllers @using BuildFeed.Controllers
@using BuildFeed.Model @using BuildFeed.Model
@using BuildFeed.Model.View @using BuildFeed.ViewModel
@model Dictionary<ProjectFamily, FrontPage> @model Dictionary<ProjectFamily, FrontPage>
@{ @{
ViewBag.Title = string.Format(VariantTerms.Front_HomeH1, InvariantTerms.SiteName); ViewBag.Title = string.Format(VariantTerms.Front_HomeH1, InvariantTerms.SiteName);

View File

@ -1,5 +1,5 @@
@using BuildFeed.Controllers @using BuildFeed.Controllers
@using BuildFeed.Model.View @using BuildFeed.ViewModel
@model SitemapData @model SitemapData
@{ @{
ViewBag.Title = $"{VariantTerms.Common_Sitemap} | {InvariantTerms.SiteName}"; ViewBag.Title = $"{VariantTerms.Common_Sitemap} | {InvariantTerms.SiteName}";
@ -52,7 +52,7 @@
<li>@Html.ActionLink("Page 1", action.Action, action.UrlParams)</li> <li>@Html.ActionLink("Page 1", action.Action, action.UrlParams)</li>
for (int i = 2; i <= action.Pages; i++) for (int i = 2; i <= action.Pages; i++)
{ {
RouteValueDictionary urlParams = action.UrlParams; var urlParams = action.UrlParams;
urlParams["page"] = i; urlParams["page"] = i;
<li>@Html.ActionLink($"Page {i}", action.Action + "Page", urlParams)</li> <li>@Html.ActionLink($"Page {i}", action.Action + "Page", urlParams)</li>
} }
@ -65,7 +65,7 @@
<li>@Html.ActionLink("Page 1", action.Action, action.UrlParams)</li> <li>@Html.ActionLink("Page 1", action.Action, action.UrlParams)</li>
@for (int i = 2; i <= action.Pages; i++) @for (int i = 2; i <= action.Pages; i++)
{ {
RouteValueDictionary urlParams = action.UrlParams; var urlParams = action.UrlParams;
urlParams["page"] = i; urlParams["page"] = i;
<li>@Html.ActionLink($"Page {i}", action.Action + "Page", urlParams)</li> <li>@Html.ActionLink($"Page {i}", action.Action + "Page", urlParams)</li>
} }