Skip to content

Commit f3ae3b2

Browse files
author
Morten Turn Pedersen
authored
Merge pull request #99 from nstack-io/develop
Deploy to production
2 parents 58dddb5 + 310c894 commit f3ae3b2

File tree

73 files changed

+1600
-1792
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+1600
-1792
lines changed

.github/workflows/dotnet-core.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
- name: Setup .NET Core
1717
uses: actions/setup-dotnet@v1
1818
with:
19-
dotnet-version: '3.1.x'
19+
dotnet-version: '6.0.x'
2020

2121
- name: Clean
2222
run: dotnet clean NStack/NStack.sln --configuration Release && dotnet nuget locals all --clear
@@ -39,7 +39,7 @@ jobs:
3939
- name: Setup .NET Core
4040
uses: actions/setup-dotnet@v1
4141
with:
42-
dotnet-version: '3.1.x'
42+
dotnet-version: '6.0.x'
4343

4444
- name: Install dependencies
4545
run: dotnet restore DemoNStack/DemoNStack.sln

.github/workflows/publish-demo-site.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
- name: Setup .NET Core
1818
uses: actions/setup-dotnet@v1
1919
with:
20-
dotnet-version: '3.1.x'
20+
dotnet-version: '6.0.x'
2121

2222
- name: Clean
2323
run: dotnet clean DemoNStack/DemoNStack/DemoNStack.csproj --configuration Release && dotnet nuget locals all --clear

.github/workflows/publish-nuget.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
- name: Setup .NET Core
1818
uses: actions/setup-dotnet@v1
1919
with:
20-
dotnet-version: '3.1.x'
20+
dotnet-version: '6.0.x'
2121

2222
- name: Clean
2323
run: dotnet clean NStack/NStack.sln --configuration Release && dotnet nuget locals all --clear
Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,21 @@
1-
using System.Diagnostics;
2-
using System.Threading.Tasks;
3-
using Microsoft.AspNetCore.Mvc;
4-
using DemoNStack.Models;
5-
using NStack.SDK.Services;
6-
using NStack.SDK.Models;
1+
namespace DemoNStack.Controllers;
72

8-
namespace DemoNStack.Controllers
3+
public class HomeController : NStackController
94
{
10-
public class HomeController : NStackController
5+
public HomeController(INStackAppService nStackAppService) : base(nStackAppService)
116
{
12-
public HomeController(INStackAppService nStackAppService) : base(nStackAppService)
13-
{
14-
}
7+
}
158

16-
public async Task<IActionResult> Index()
17-
{
18-
DataMetaWrapper<Translation> res = await GetTranslations();
9+
public async Task<IActionResult> Index()
10+
{
11+
DataMetaWrapper<Translation> res = await GetTranslations();
1912

20-
return View(res.Data.Default);
21-
}
13+
return View(res.Data.Default);
14+
}
2215

23-
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
24-
public IActionResult Error()
25-
{
26-
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
27-
}
16+
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
17+
public IActionResult Error()
18+
{
19+
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
2820
}
2921
}
Lines changed: 19 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,30 @@
1-
using DemoNStack.Extensions;
2-
using DemoNStack.Models;
3-
using Microsoft.AspNetCore.Http;
4-
using Microsoft.AspNetCore.Mvc;
5-
using NStack.SDK.Models;
6-
using NStack.SDK.Services;
7-
using System;
8-
using System.Threading.Tasks;
1+
namespace DemoNStack.Controllers;
92

10-
namespace DemoNStack.Controllers
3+
public abstract class NStackController : Controller
114
{
12-
public abstract class NStackController : Controller
5+
protected INStackAppService NStackAppService { get; }
6+
7+
protected NStackController(INStackAppService nStackAppService)
138
{
14-
protected INStackAppService NStackAppService { get; }
9+
NStackAppService = nStackAppService ?? throw new ArgumentNullException(nameof(nStackAppService));
10+
}
1511

16-
protected NStackController(INStackAppService nStackAppService)
17-
{
18-
NStackAppService = nStackAppService ?? throw new ArgumentNullException(nameof(nStackAppService));
19-
}
12+
protected async Task<DataMetaWrapper<Translation>> GetTranslations()
13+
{
14+
return await NStackAppService.GetResourceAsync<Translation>(Request.GetCurrentLanguage(), NStackPlatform.Web, "1.3.1");
15+
}
2016

21-
protected async Task<DataMetaWrapper<Translation>> GetTranslations()
22-
{
23-
return await NStackAppService.GetResourceAsync<Translation>(Request.GetCurrentLanguage(), NStackPlatform.Web, "1.3.1");
24-
}
17+
protected Guid GetUserId()
18+
{
19+
var userIdString = HttpContext.Session.GetString("UserId");
2520

26-
protected Guid GetUserId()
21+
if (!Guid.TryParse(userIdString, out Guid userId))
2722
{
28-
var userIdString = HttpContext.Session.GetString("UserId");
23+
userId = Guid.NewGuid();
2924

30-
if (!Guid.TryParse(userIdString, out Guid userId))
31-
{
32-
userId = Guid.NewGuid();
33-
34-
HttpContext.Session.SetString("UserId", userId.ToString());
35-
}
36-
37-
return userId;
25+
HttpContext.Session.SetString("UserId", userId.ToString());
3826
}
27+
28+
return userId;
3929
}
4030
}
Lines changed: 43 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,59 @@
1-
using DemoNStack.Extensions;
2-
using DemoNStack.Models;
3-
using DemoNStack.Models.ViewModels;
4-
using Microsoft.AspNetCore.Mvc;
5-
using Microsoft.Extensions.Caching.Memory;
6-
using NStack.SDK.Models;
7-
using NStack.SDK.Services;
8-
using System;
9-
using System.Threading.Tasks;
1+
namespace DemoNStack.Controllers;
102

11-
namespace DemoNStack.Controllers
3+
public class TermsController : NStackController
124
{
13-
public class TermsController : NStackController
14-
{
15-
private INStackTermsService TermsService { get; }
16-
private IMemoryCache Cache { get; }
17-
18-
public TermsController(INStackAppService appService, IMemoryCache cache, INStackTermsService termsService) : base(appService)
19-
{
20-
Cache = cache ?? throw new ArgumentNullException(nameof(cache));
21-
TermsService = termsService ?? throw new ArgumentNullException(nameof(termsService));
22-
}
5+
private INStackTermsService TermsService { get; }
6+
private IMemoryCache Cache { get; }
237

24-
public async Task<IActionResult> Index()
25-
{
26-
Guid userId = GetUserId();
27-
28-
TermsWithContent newestTerms = await GetNewestTerms(userId, Request.GetCurrentLanguage());
8+
public TermsController(INStackAppService appService, IMemoryCache cache, INStackTermsService termsService) : base(appService)
9+
{
10+
Cache = cache ?? throw new ArgumentNullException(nameof(cache));
11+
TermsService = termsService ?? throw new ArgumentNullException(nameof(termsService));
12+
}
2913

30-
DataMetaWrapper<Translation> translations = await GetTranslations();
14+
public async Task<IActionResult> Index()
15+
{
16+
Guid userId = GetUserId();
3117

32-
var viewModel = new TermsViewModel
33-
{
34-
Content = newestTerms.Content.Data,
35-
HasApproved = newestTerms.HasViewed,
36-
Headline = translations.Data.Terms.Headline,
37-
ApproveButton = translations.Data.Terms.Approve,
38-
HasApprovedString = translations.Data.Terms.HasApproved
39-
};
18+
TermsWithContent newestTerms = await GetNewestTerms(userId, Request.GetCurrentLanguage());
4019

41-
return View(viewModel);
42-
}
20+
DataMetaWrapper<Translation> translations = await GetTranslations();
4321

44-
[HttpPost]
45-
[ValidateAntiForgeryToken]
46-
public async Task<IActionResult> AcceptTerms()
22+
var viewModel = new TermsViewModel
4723
{
48-
Guid userId = GetUserId();
49-
string language = Request.GetCurrentLanguage();
24+
Content = newestTerms.Content.Data,
25+
HasApproved = newestTerms.HasViewed,
26+
Headline = translations.Data.Terms.Headline,
27+
ApproveButton = translations.Data.Terms.Approve,
28+
HasApprovedString = translations.Data.Terms.HasApproved
29+
};
30+
31+
return View(viewModel);
32+
}
5033

51-
TermsWithContent newestTerms = await GetNewestTerms(userId, language);
34+
[HttpPost]
35+
[ValidateAntiForgeryToken]
36+
public async Task<IActionResult> AcceptTerms()
37+
{
38+
Guid userId = GetUserId();
39+
string language = Request.GetCurrentLanguage();
5240

53-
await TermsService.MarkReadAsync(newestTerms.Id, userId.ToString(), language);
41+
TermsWithContent newestTerms = await GetNewestTerms(userId, language);
5442

55-
//Clear cache so we get the updated boolean that the user has read the terms
56-
Cache.Remove($"terms-{language}-{userId}");
43+
await TermsService.MarkReadAsync(newestTerms.Id, userId.ToString(), language);
5744

58-
return RedirectToAction("index", new { lang = language });
59-
}
45+
//Clear cache so we get the updated boolean that the user has read the terms
46+
Cache.Remove($"terms-{language}-{userId}");
6047

61-
protected async Task<TermsWithContent> GetNewestTerms(Guid userId, string language)
62-
{
63-
return (await Cache.GetOrCreateAsync($"terms-{language}-{userId}", async e => {
64-
e.AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(60);
48+
return RedirectToAction("index", new { lang = language });
49+
}
50+
51+
protected async Task<TermsWithContent> GetNewestTerms(Guid userId, string language)
52+
{
53+
return (await Cache.GetOrCreateAsync($"terms-{language}-{userId}", async e => {
54+
e.AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(60);
6555

66-
return await TermsService.GetNewestTermsAsync("terms", userId.ToString(), language);
67-
})).Data;
68-
}
56+
return await TermsService.GetNewestTermsAsync("terms", userId.ToString(), language);
57+
})).Data;
6958
}
7059
}
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
<Project Sdk="Microsoft.NET.Sdk.Web">
1+
<Project Sdk="Microsoft.NET.Sdk.Web">
22

33
<PropertyGroup>
4-
<TargetFramework>netcoreapp3.1</TargetFramework>
4+
<TargetFramework>net6.0</TargetFramework>
5+
<Nullable>enable</Nullable>
6+
<ImplicitUsings>enable</ImplicitUsings>
57
</PropertyGroup>
68

79
<ItemGroup>
8-
<PackageReference Include="NStack.SDK" Version="1.3.1" />
10+
<PackageReference Include="Monstarlab.NStack.SDK" Version="1.5.1" />
911
</ItemGroup>
1012

1113
</Project>
Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
1-
using Microsoft.AspNetCore.Http;
1+
namespace DemoNStack.Extensions;
22

3-
namespace DemoNStack.Extensions
3+
public static class HttpRequestExtensions
44
{
5-
public static class HttpRequestExtensions
6-
{
7-
private const string DefaultLanguage = "en-GB";
5+
private const string DefaultLanguage = "en-GB";
86

9-
public static string GetCurrentLanguage(this HttpRequest request) => request.Query.ContainsKey("lang") ? (string)request.Query["lang"] : DefaultLanguage;
7+
public static string GetCurrentLanguage(this HttpRequest request) => request.Query.ContainsKey("lang") ? (string)request.Query["lang"] : DefaultLanguage;
108

11-
public static string GetLanguageDirection(this HttpRequest request) => request.GetCurrentLanguage().StartsWith("ar-QA") ? "rtl" : "ltr";
12-
}
9+
public static string GetLanguageDirection(this HttpRequest request) => request.GetCurrentLanguage().StartsWith("ar-QA") ? "rtl" : "ltr";
1310
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
global using DemoNStack.Extensions;
2+
global using DemoNStack.Models;
3+
global using DemoNStack.Models.ViewModels;
4+
global using Microsoft.AspNetCore.Mvc;
5+
global using Microsoft.Extensions.Caching.Memory;
6+
global using NStack.SDK.Extensions;
7+
global using NStack.SDK.Models;
8+
global using NStack.SDK.Repositories;
9+
global using NStack.SDK.Repositories.Implementation;
10+
global using NStack.SDK.Services;
11+
global using NStack.SDK.Services.Implementation;
12+
global using System.Diagnostics;
Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
1-
using NStack.SDK.Extensions;
2-
using NStack.SDK.Models;
1+
namespace DemoNStack.Models;
32

4-
namespace DemoNStack.Models
3+
public class DefaultSection : ResourceInnerItem
54
{
6-
public class DefaultSection : ResourceInnerItem
7-
{
8-
public DefaultSection() : base() { }
9-
public DefaultSection(ResourceInnerItem item) : base(item) { }
5+
public DefaultSection() : base() { }
6+
public DefaultSection(ResourceInnerItem item) : base(item) { }
107

11-
public string BoolValue => this[nameof(BoolValue).FirstCharToLower()];
12-
public string BoolValueFalse => this[nameof(BoolValueFalse).FirstCharToLower()];
13-
public string Html => this[nameof(Html).FirstCharToLower()];
14-
public string Language => this[nameof(Language).FirstCharToLower()];
15-
public string Text => this[nameof(Text).FirstCharToLower()];
16-
public string FirstHeadline => this[nameof(FirstHeadline).FirstCharToLower()];
17-
public string SecondHeadline => this[nameof(SecondHeadline).FirstCharToLower()];
18-
}
8+
public string BoolValue => this[nameof(BoolValue).FirstCharToLower()];
9+
public string BoolValueFalse => this[nameof(BoolValueFalse).FirstCharToLower()];
10+
public string Html => this[nameof(Html).FirstCharToLower()];
11+
public string Language => this[nameof(Language).FirstCharToLower()];
12+
public string Text => this[nameof(Text).FirstCharToLower()];
13+
public string FirstHeadline => this[nameof(FirstHeadline).FirstCharToLower()];
14+
public string SecondHeadline => this[nameof(SecondHeadline).FirstCharToLower()];
1915
}

0 commit comments

Comments
 (0)