From a508f9f4a88c4a9cd32562350cb75fa1117c82fa Mon Sep 17 00:00:00 2001 From: mborzyszkowski Date: Sat, 12 Sep 2020 14:17:57 +0200 Subject: [PATCH] static pages --- .../Controllers/AdminController.cs | 14 ++++- .../Controllers/StaticPagesController.cs | 56 +++++++++++++++++++ .../Entity/StaticPage.cs | 10 ++++ .../DatabaseFiller.cs | 26 +++++++++ .../InternshipDbContext.cs | 2 +- 5 files changed, 105 insertions(+), 3 deletions(-) create mode 100644 src/InternshipSystem.Api/Controllers/StaticPagesController.cs create mode 100644 src/InternshipSystem.Core/Entity/StaticPage.cs diff --git a/src/InternshipSystem.Api/Controllers/AdminController.cs b/src/InternshipSystem.Api/Controllers/AdminController.cs index 6a153f8..ce73595 100644 --- a/src/InternshipSystem.Api/Controllers/AdminController.cs +++ b/src/InternshipSystem.Api/Controllers/AdminController.cs @@ -17,9 +17,11 @@ namespace InternshipSystem.Api.Controllers [HttpPost("fill")] - public async Task Fill() { + public async Task Fill() + { await FillerService.FillCompanies(); await FillerService.FillEditions(); + await FillerService.FillStaticPages(); return Ok(); } @@ -31,9 +33,17 @@ namespace InternshipSystem.Api.Controllers } [HttpPost("fill/editions")] - public async Task FillEditionsAsync() { + public async Task FillEditionsAsync() + { await FillerService.FillEditions(); return Ok(); } + + [HttpPost("fill/staticPages")] + public async Task FillStaticPagesAsync() + { + await FillerService.FillStaticPages(); + return Ok(); + } } } \ No newline at end of file diff --git a/src/InternshipSystem.Api/Controllers/StaticPagesController.cs b/src/InternshipSystem.Api/Controllers/StaticPagesController.cs new file mode 100644 index 0000000..e819202 --- /dev/null +++ b/src/InternshipSystem.Api/Controllers/StaticPagesController.cs @@ -0,0 +1,56 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using InternshipSystem.Core; +using InternshipSystem.Repository; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; + +namespace InternshipSystem.Api.Controllers +{ + [ApiController] + [Route("staticPage")] + public class StaticPagesController : ControllerBase + { + public StaticPagesController(InternshipDbContext context) + { + Context = context; + } + private InternshipDbContext Context { get; } + + /// + /// Get all static pages + /// + /// List of static pages with titles and content + [HttpGet] + [ProducesResponseType(StatusCodes.Status200OK)] + public async Task>> GetStaticPages(CancellationToken cancellationToken) => + await Context.StaticPages + .ToListAsync(cancellationToken); + + /// + /// Get static page + /// + /// Name of page + /// Static page title and content + [HttpGet("{accessName}")] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status404NotFound)] + public async Task> GetStaticPage(string accessName, CancellationToken cancellationToken) + { + var page = + await Context.StaticPages + .Where(p => p.AccessName.Trim().ToLower().Equals(accessName.Trim().ToLower())) + .FirstOrDefaultAsync(cancellationToken); + + if (page == null) + { + return NotFound(); + } + + return Ok(page); + } + } +} \ No newline at end of file diff --git a/src/InternshipSystem.Core/Entity/StaticPage.cs b/src/InternshipSystem.Core/Entity/StaticPage.cs new file mode 100644 index 0000000..9cb91e9 --- /dev/null +++ b/src/InternshipSystem.Core/Entity/StaticPage.cs @@ -0,0 +1,10 @@ +namespace InternshipSystem.Core +{ + public class StaticPage + { + public long? Id { get; set; } + public string AccessName { get; set; } + public string Title { get; set; } + public string Content { get; set; } + } +} \ No newline at end of file diff --git a/src/InternshipSystem.Repository/DatabaseFiller.cs b/src/InternshipSystem.Repository/DatabaseFiller.cs index c3f135a..2d35976 100644 --- a/src/InternshipSystem.Repository/DatabaseFiller.cs +++ b/src/InternshipSystem.Repository/DatabaseFiller.cs @@ -253,6 +253,32 @@ namespace InternshipSystem.Repository await Context.SaveChangesAsync(); } + public async Task FillStaticPages() + { + var staticPages = new List + { + new StaticPage + { + AccessName = "regulations", + Title = "Regulamin Praktyk", + Content = + "

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Bestiarum vero nullum iudicium puto. Quare ad ea primum, si videtur; Duo Reges: constructio interrete. Eam tum adesse, cum dolor omnis absit; Sed ad bona praeterita redeamus. Facillimum id quidem est, inquam. Apud ceteros autem philosophos, qui quaesivit aliquid, tacet;

" + + "

Quorum altera prosunt, nocent altera. Eam stabilem appellas. Sed nimis multa. Quo plebiscito decreta a senatu est consuli quaestio Cn. Sin laboramus, quis est, qui alienae modum statuat industriae? Quod quidem nobis non saepe contingit. Si autem id non concedatur, non continuo vita beata tollitur. " + + "Illum mallem levares, quo optimum atque humanissimum virum, Cn. Id est enim, de quo quaerimus.

Ille vero, si insipiens-quo certe, quoniam tyrannus -, numquam beatus; Sin dicit obscurari quaedam nec apparere, quia valde parva sint, nos quoque concedimus; Et quod est munus, quod opus sapientiae? Ab hoc autem quaedam non melius quam veteres, quaedam omnino relicta.

" + + "Prosto spod bazy ;D" + }, + new StaticPage + { + AccessName = "info", + Title = "Informacje", + Content = + "

Nowe zmiany:

" + } + }; + await Context.StaticPages.AddRangeAsync(staticPages); + await Context.SaveChangesAsync(); + } + // new InternshipType // { // Type = "FreeInternship", diff --git a/src/InternshipSystem.Repository/InternshipDbContext.cs b/src/InternshipSystem.Repository/InternshipDbContext.cs index cd73ffb..f95f1f5 100644 --- a/src/InternshipSystem.Repository/InternshipDbContext.cs +++ b/src/InternshipSystem.Repository/InternshipDbContext.cs @@ -9,7 +9,7 @@ namespace InternshipSystem.Repository { public DbSet Companies { get; set; } public DbSet Editions { get; set; } - + public DbSet StaticPages { get; set; } public DbSet Students { get; set; } public InternshipDbContext(DbContextOptions options)