diff --git a/Website/Controllers/BlogController.cs b/Website/Controllers/BlogController.cs new file mode 100644 index 0000000..95d9464 --- /dev/null +++ b/Website/Controllers/BlogController.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Website.Data; +using Website.ViewModels; + +namespace Website.Controllers +{ + public class BlogController : Controller + { + private readonly BlogRepository _repo; + + public BlogController(BlogRepository repo) + { + _repo = repo; + } + + public IActionResult Index() + { + return View(); + } + + public async Task View(int id) + { + var post = await _repo.GetPost(id); + return View(post); + } + } +} diff --git a/Website/Controllers/HomeController.cs b/Website/Controllers/HomeController.cs index 75bcf01..4b7c9cc 100644 --- a/Website/Controllers/HomeController.cs +++ b/Website/Controllers/HomeController.cs @@ -4,7 +4,7 @@ using System.Diagnostics; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; -using Website.Models; +using Website.ViewModels; namespace Website.Controllers { diff --git a/Website/Data/BlogRepository.cs b/Website/Data/BlogRepository.cs new file mode 100644 index 0000000..814a12e --- /dev/null +++ b/Website/Data/BlogRepository.cs @@ -0,0 +1,14 @@ +using System.Threading.Tasks; +using Website.Models; + +namespace Website.Data +{ + public class BlogRepository + { + private readonly DatabaseProvider _dbProvider; + + public BlogRepository(DatabaseProvider dbProvider) => _dbProvider = dbProvider; + + public Task GetPost(int id) => Task.Run(() => new BlogPost{Id=id}); + } +} \ No newline at end of file diff --git a/Website/Data/DatabaseProvider.cs b/Website/Data/DatabaseProvider.cs new file mode 100644 index 0000000..a56a495 --- /dev/null +++ b/Website/Data/DatabaseProvider.cs @@ -0,0 +1,17 @@ +using System.Data; +using System.Data.SqlClient; +using Microsoft.Extensions.Configuration; + +namespace Website.Data +{ + public class DatabaseProvider + { + private readonly string _connectionString; + + public DatabaseProvider(IConfiguration config) => _connectionString = config["connectionString"]; + + public DatabaseProvider(string connectionString) => _connectionString = connectionString; + + public IDbConnection NewConnection() => new SqlConnection(_connectionString); + } +} \ No newline at end of file diff --git a/Website/Models/BlogPost.cs b/Website/Models/BlogPost.cs new file mode 100644 index 0000000..12d3ab3 --- /dev/null +++ b/Website/Models/BlogPost.cs @@ -0,0 +1,7 @@ +namespace Website.Models +{ + public class BlogPost + { + public int Id { get; internal set; } + } +} \ No newline at end of file diff --git a/Website/Startup.cs b/Website/Startup.cs index e76f12d..ca2dba7 100644 --- a/Website/Startup.cs +++ b/Website/Startup.cs @@ -9,6 +9,7 @@ using Microsoft.AspNetCore.HttpsPolicy; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Website.Data; namespace Website { @@ -31,10 +32,16 @@ namespace Website options.MinimumSameSitePolicy = SameSiteMode.None; }); + services.AddSingleton(Configuration); + RegisterRepositories(services); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); } + private void RegisterRepositories(IServiceCollection services) => + services.AddSingleton() + .AddSingleton(); + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { diff --git a/Website/Models/ErrorViewModel.cs b/Website/ViewModels/ErrorViewModel.cs similarity index 80% rename from Website/Models/ErrorViewModel.cs rename to Website/ViewModels/ErrorViewModel.cs index 49d05db..14c7257 100644 --- a/Website/Models/ErrorViewModel.cs +++ b/Website/ViewModels/ErrorViewModel.cs @@ -1,6 +1,6 @@ using System; -namespace Website.Models +namespace Website.ViewModels { public class ErrorViewModel { diff --git a/Website/Views/Blog/View.cshtml b/Website/Views/Blog/View.cshtml new file mode 100644 index 0000000..a75b596 --- /dev/null +++ b/Website/Views/Blog/View.cshtml @@ -0,0 +1,8 @@ +@using Website.Models; +@model BlogPost; + +@{ + ViewData["Title"] = "Blog"; +} + +@Model.Id \ No newline at end of file diff --git a/Website/Views/_ViewImports.cshtml b/Website/Views/_ViewImports.cshtml index 108f1ce..f7aa6d5 100644 --- a/Website/Views/_ViewImports.cshtml +++ b/Website/Views/_ViewImports.cshtml @@ -1,3 +1,3 @@ @using Website -@using Website.Models +@using Website.ViewModels @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/Website/Website.csproj b/Website/Website.csproj index 908d072..3f3202f 100644 --- a/Website/Website.csproj +++ b/Website/Website.csproj @@ -7,8 +7,11 @@ + + +