From 881a42b709402518e5bd73b79c17c205398faa4f Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Fri, 23 Feb 2024 14:42:30 +0100 Subject: [PATCH] Initial commit --- .../DTOs/SignInDto.cs | 6 ++ .../EnvelopeGenerator.Application.csproj | 9 +++ EnvelopeGenerator.Domain/Entities/Envelope.cs | 80 +++++++++++++++++++ .../EnvelopeGenerator.Domain.csproj | 9 +++ .../EnvelopeGenerator.Infrastructure.csproj | 9 +++ .../Repositories/EnvelopeRepository.cs | 9 +++ .../Controllers/BaseController.cs | 5 +- .../Controllers/DocumentController.cs | 2 +- .../Controllers/EnvelopeController.cs | 2 +- .../Controllers/HomeController.cs | 54 +++++-------- .../EnvelopeGenerator.Web.csproj | 1 + EnvelopeGenerator.Web/Program.cs | 3 - .../Views/Home/DebugEnvelopes.cshtml | 5 +- EnvelopeGenerator.Web/wwwroot/img/coffee.svg | 4 + EnvelopeGenerator.sln | 18 +++++ 15 files changed, 171 insertions(+), 45 deletions(-) create mode 100644 EnvelopeGenerator.Application/DTOs/SignInDto.cs create mode 100644 EnvelopeGenerator.Application/EnvelopeGenerator.Application.csproj create mode 100644 EnvelopeGenerator.Domain/Entities/Envelope.cs create mode 100644 EnvelopeGenerator.Domain/EnvelopeGenerator.Domain.csproj create mode 100644 EnvelopeGenerator.Infrastructure/EnvelopeGenerator.Infrastructure.csproj create mode 100644 EnvelopeGenerator.Infrastructure/Repositories/EnvelopeRepository.cs create mode 100644 EnvelopeGenerator.Web/wwwroot/img/coffee.svg diff --git a/EnvelopeGenerator.Application/DTOs/SignInDto.cs b/EnvelopeGenerator.Application/DTOs/SignInDto.cs new file mode 100644 index 00000000..d1b946cb --- /dev/null +++ b/EnvelopeGenerator.Application/DTOs/SignInDto.cs @@ -0,0 +1,6 @@ +namespace EnvelopeGenerator.Application.DTOs +{ + public record SignInDto( + string Password + ); +} diff --git a/EnvelopeGenerator.Application/EnvelopeGenerator.Application.csproj b/EnvelopeGenerator.Application/EnvelopeGenerator.Application.csproj new file mode 100644 index 00000000..cfadb03d --- /dev/null +++ b/EnvelopeGenerator.Application/EnvelopeGenerator.Application.csproj @@ -0,0 +1,9 @@ + + + + net7.0 + enable + enable + + + diff --git a/EnvelopeGenerator.Domain/Entities/Envelope.cs b/EnvelopeGenerator.Domain/Entities/Envelope.cs new file mode 100644 index 00000000..6ee34953 --- /dev/null +++ b/EnvelopeGenerator.Domain/Entities/Envelope.cs @@ -0,0 +1,80 @@ +using System; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace EnvelopeGenerator.Domain.Entities +{ + [Table("TBSIG_DOCUMENT_RECEIVER_ELEMENT", Schema = "dbo")] + public class Envelope + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + [Column("GUID")] + public int Guid { get; set; } + + [Column("DOCUMENT_ID")] + [Required] + public int DocumentId { get; set; } + + [Column("RECEIVER_ID")] + [Required] + public int ReceiverId { get; set; } + + [Column("ELEMENT_TYPE")] + [Required] + [DefaultValue(0)] // This requires using System.ComponentModel + public int ElementType { get; set; } + + [Column("POSITION_X")] + [Required] + [DefaultValue(0f)] + public float PositionX { get; set; } + + [Column("POSITION_Y")] + [Required] + [DefaultValue(0f)] + public float PositionY { get; set; } + + [Column("WIDTH")] + [Required] + [DefaultValue(0f)] + public float Width { get; set; } + + [Column("HEIGHT")] + [Required] + [DefaultValue(0f)] + public float Height { get; set; } + + [Column("PAGE")] + [Required] + [DefaultValue(1)] + public int Page { get; set; } + + [Column("REQUIRED")] + [Required] + [DefaultValue(false)] + public bool Required { get; set; } + + [Column("TOOLTIP")] + public string Tooltip { get; set; } + + [Column("READ_ONLY")] + [Required] + [DefaultValue(false)] + public bool ReadOnly { get; set; } + + [Column("ANNOTATION_INDEX")] + [Required] + [DefaultValue(0)] + public int AnnotationIndex { get; set; } + + [Column("ADDED_WHEN")] + [Required] + [DatabaseGenerated(DatabaseGeneratedOption.Computed)] // Assuming getdate() is meant for default value on insert + public DateTime AddedWhen { get; set; } + + [Column("CHANGED_WHEN")] + public DateTime? ChangedWhen { get; set; } + } +} \ No newline at end of file diff --git a/EnvelopeGenerator.Domain/EnvelopeGenerator.Domain.csproj b/EnvelopeGenerator.Domain/EnvelopeGenerator.Domain.csproj new file mode 100644 index 00000000..cfadb03d --- /dev/null +++ b/EnvelopeGenerator.Domain/EnvelopeGenerator.Domain.csproj @@ -0,0 +1,9 @@ + + + + net7.0 + enable + enable + + + diff --git a/EnvelopeGenerator.Infrastructure/EnvelopeGenerator.Infrastructure.csproj b/EnvelopeGenerator.Infrastructure/EnvelopeGenerator.Infrastructure.csproj new file mode 100644 index 00000000..cfadb03d --- /dev/null +++ b/EnvelopeGenerator.Infrastructure/EnvelopeGenerator.Infrastructure.csproj @@ -0,0 +1,9 @@ + + + + net7.0 + enable + enable + + + diff --git a/EnvelopeGenerator.Infrastructure/Repositories/EnvelopeRepository.cs b/EnvelopeGenerator.Infrastructure/Repositories/EnvelopeRepository.cs new file mode 100644 index 00000000..db367b5d --- /dev/null +++ b/EnvelopeGenerator.Infrastructure/Repositories/EnvelopeRepository.cs @@ -0,0 +1,9 @@ +using DigitalData.Common.CleanArchitecture.Infrastructure; +using EnvelopeGenerator.Domain.Entities; + +namespace EnvelopeGenerator.Infrastructure.Repositories +{ + public class EnvelopeRepository + { + } +} diff --git a/EnvelopeGenerator.Web/Controllers/BaseController.cs b/EnvelopeGenerator.Web/Controllers/BaseController.cs index 5a88e0c0..608cae8c 100644 --- a/EnvelopeGenerator.Web/Controllers/BaseController.cs +++ b/EnvelopeGenerator.Web/Controllers/BaseController.cs @@ -8,13 +8,16 @@ namespace EnvelopeGenerator.Web.Controllers { public class BaseController : Controller { + protected readonly IConfiguration _configuration; + internal DatabaseService database; internal LogConfig logConfig; internal State state; public Logger logger; - public BaseController(DatabaseService database, LoggingService logging) + public BaseController(DatabaseService database, LoggingService logging, IConfiguration configuration) { + _configuration = configuration; this.database = database; this.logConfig = logging.LogConfig; this.logger = logging.LogConfig.GetLogger(); diff --git a/EnvelopeGenerator.Web/Controllers/DocumentController.cs b/EnvelopeGenerator.Web/Controllers/DocumentController.cs index 98f7b17e..a89ee538 100644 --- a/EnvelopeGenerator.Web/Controllers/DocumentController.cs +++ b/EnvelopeGenerator.Web/Controllers/DocumentController.cs @@ -10,7 +10,7 @@ namespace EnvelopeGenerator.Web.Controllers private readonly EnvelopeService envelopeService; private readonly ActionService? actionService; - public DocumentController(DatabaseService database, LoggingService logging, EnvelopeService envelope) : base(database, logging) + public DocumentController(DatabaseService database, LoggingService logging, EnvelopeService envelope, IConfiguration configuration) : base(database, logging, configuration) { envelopeService = envelope; actionService = database.Services?.actionService; diff --git a/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs b/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs index 5c945e5f..267199ac 100644 --- a/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs +++ b/EnvelopeGenerator.Web/Controllers/EnvelopeController.cs @@ -9,7 +9,7 @@ namespace EnvelopeGenerator.Web.Controllers private readonly EnvelopeService envelopeService; private readonly ActionService actionService; - public EnvelopeController(DatabaseService database, LoggingService logging, EnvelopeService envelope) : base(database, logging) + public EnvelopeController(DatabaseService database, LoggingService logging, EnvelopeService envelope, IConfiguration configuration) : base(database, logging, configuration) { envelopeService = envelope; actionService = database.Services?.actionService; diff --git a/EnvelopeGenerator.Web/Controllers/HomeController.cs b/EnvelopeGenerator.Web/Controllers/HomeController.cs index ed1da50e..cfbb6e6b 100644 --- a/EnvelopeGenerator.Web/Controllers/HomeController.cs +++ b/EnvelopeGenerator.Web/Controllers/HomeController.cs @@ -1,4 +1,5 @@ -using EnvelopeGenerator.Common; +using EnvelopeGenerator.Application.DTOs; +using EnvelopeGenerator.Common; using EnvelopeGenerator.Web.Models; using EnvelopeGenerator.Web.Services; using Microsoft.AspNetCore.Mvc; @@ -11,7 +12,7 @@ namespace EnvelopeGenerator.Web.Controllers { private readonly EnvelopeService _envelopeService; - public HomeController(DatabaseService databaseService, LoggingService loggingService, EnvelopeService envelopeService): base(databaseService, loggingService) + public HomeController(DatabaseService databaseService, LoggingService loggingService, EnvelopeService envelopeService, IConfiguration configuration): base(databaseService, loggingService, configuration) { _envelopeService = envelopeService; } @@ -25,34 +26,23 @@ namespace EnvelopeGenerator.Web.Controllers [HttpPost] [Route("/")] - public IActionResult DebugEnvelopes() + public IActionResult DebugEnvelopes([FromForm]SignInDto signInDto) { try { - StringValues passwordFromForm = HttpContext.Request.Form["password"]; - string passwordFromConfig = database.GetAppSetting("Config:AdminPassword"); + string? adminPassword = _configuration["Config:AdminPassword"]; - if (passwordFromConfig == null) + if (adminPassword == null) { ViewData["error"] = "No admin password configured!"; return View("Index"); } - - if (passwordFromForm.Count != 1) - { - ViewData["error"] = "No admin password configured!"; - return View("Index"); - } - - string password = passwordFromForm[0]; - - if (password == null) + else if (signInDto.Password is null) { ViewData["error"] = "No password supplied!"; return View("Index"); } - - if (password != passwordFromConfig) + else if (signInDto.Password != adminPassword) { ViewData["error"] = "Wrong Password!"; return View("Index"); @@ -97,56 +87,51 @@ namespace EnvelopeGenerator.Web.Controllers } [HttpPost] - [Route("/EnvelopeKey/{EnvelopeReceiverId}/Locked")] - public IActionResult ShowEnvelopePost() + [Route("/EnvelopeKey/{envelopeReceiverId}/Locked")] + public IActionResult ShowEnvelopePost([FromRoute] string envelopeReceiverId) { - string envelopeKey = (string)HttpContext.Request.RouteValues["EnvelopeReceiverId"]; - StringValues accessCodeFromForm = HttpContext.Request.Form["access_code"]; if (accessCodeFromForm.Count == 0) { - return Redirect($"/EnvelopeKey/{envelopeKey}/Locked"); + return Redirect($"/EnvelopeKey/{envelopeReceiverId}/Locked"); } if (accessCodeFromForm.Count > 1) { - return Redirect($"/EnvelopeKey/{envelopeKey}/Locked"); + return Redirect($"/EnvelopeKey/{envelopeReceiverId}/Locked"); } - EnvelopeResponse response = _envelopeService.LoadEnvelope(envelopeKey); + EnvelopeResponse response = _envelopeService.LoadEnvelope(envelopeReceiverId); string accessCode = response.Receiver.AccessCode; if (string.IsNullOrEmpty(accessCodeFromForm[0])) { - return Redirect($"/EnvelopeKey/{envelopeKey}/Locked"); + return Redirect($"/EnvelopeKey/{envelopeReceiverId}/Locked"); } if (accessCode.Equals(accessCodeFromForm[0], StringComparison.Ordinal)) { bool actionResult = database.Services.actionService.EnterCorrectAccessCode(response.Envelope, response.Receiver); - ViewData["EnvelopeKey"] = envelopeKey; + ViewData["EnvelopeKey"] = envelopeReceiverId; return View("ShowEnvelope"); } else { bool actionResult = database.Services.actionService.EnterIncorrectAccessCode(response.Envelope, response.Receiver); - return Redirect($"/EnvelopeKey/{envelopeKey}/Locked"); + return Redirect($"/EnvelopeKey/{envelopeReceiverId}/Locked"); } } [HttpGet] - [Route("/EnvelopeKey/{EnvelopeReceiverId}/Locked")] - public IActionResult EnvelopeLocked() + [Route("/EnvelopeKey/{envelopeReceiverId}/Locked")] + public IActionResult EnvelopeLocked([FromRoute] string envelopeReceiverId) { - ViewData["EnvelopeKey"] = HttpContext.Request.RouteValues["EnvelopeReceiverId"]; - + ViewData["EnvelopeKey"] = envelopeReceiverId; return View(); } - - [HttpGet] [Route("/EnvelopeKey/{EnvelopeReceiverId}/Success")] public IActionResult EnvelopeSigned() @@ -156,7 +141,6 @@ namespace EnvelopeGenerator.Web.Controllers return View(); } - [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { diff --git a/EnvelopeGenerator.Web/EnvelopeGenerator.Web.csproj b/EnvelopeGenerator.Web/EnvelopeGenerator.Web.csproj index e0250ce0..fb11ee5b 100644 --- a/EnvelopeGenerator.Web/EnvelopeGenerator.Web.csproj +++ b/EnvelopeGenerator.Web/EnvelopeGenerator.Web.csproj @@ -18,6 +18,7 @@ + diff --git a/EnvelopeGenerator.Web/Program.cs b/EnvelopeGenerator.Web/Program.cs index d9e87321..87a7c733 100644 --- a/EnvelopeGenerator.Web/Program.cs +++ b/EnvelopeGenerator.Web/Program.cs @@ -1,7 +1,4 @@ -using DigitalData.Modules.Logging; -using EnvelopeGenerator.Common; using EnvelopeGenerator.Web.Services; -using Quartz; namespace EnvelopeGenerator.Web { diff --git a/EnvelopeGenerator.Web/Views/Home/DebugEnvelopes.cshtml b/EnvelopeGenerator.Web/Views/Home/DebugEnvelopes.cshtml index 4a34b90a..8320c700 100644 --- a/EnvelopeGenerator.Web/Views/Home/DebugEnvelopes.cshtml +++ b/EnvelopeGenerator.Web/Views/Home/DebugEnvelopes.cshtml @@ -28,7 +28,6 @@ Show envelopes @foreach (Envelope envelope in @group) { -
- } @@ -44,5 +42,4 @@ } - - + \ No newline at end of file diff --git a/EnvelopeGenerator.Web/wwwroot/img/coffee.svg b/EnvelopeGenerator.Web/wwwroot/img/coffee.svg new file mode 100644 index 00000000..61cb94eb --- /dev/null +++ b/EnvelopeGenerator.Web/wwwroot/img/coffee.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/EnvelopeGenerator.sln b/EnvelopeGenerator.sln index 28071dbb..c5650a4b 100644 --- a/EnvelopeGenerator.sln +++ b/EnvelopeGenerator.sln @@ -13,6 +13,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EnvelopeGenerator.Web", "En EndProject Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EnvelopeGenerator.Service", "EnvelopeGenerator.Service\EnvelopeGenerator.Service.vbproj", "{83ED2617-B398-4859-8F59-B38F8807E83E}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.Domain", "EnvelopeGenerator.Domain\EnvelopeGenerator.Domain.csproj", "{A9E30AAC-A755-44E9-8707-1EC41A9075D4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.Application", "EnvelopeGenerator.Application\EnvelopeGenerator.Application.csproj", "{6C95C338-83A8-43D5-85DD-10A50F7E15D5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.Infrastructure", "EnvelopeGenerator.Infrastructure\EnvelopeGenerator.Infrastructure.csproj", "{1B5D99A2-F00D-4CED-A4F1-1FE03C423EF6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -39,6 +45,18 @@ Global {83ED2617-B398-4859-8F59-B38F8807E83E}.Debug|Any CPU.Build.0 = Debug|Any CPU {83ED2617-B398-4859-8F59-B38F8807E83E}.Release|Any CPU.ActiveCfg = Release|Any CPU {83ED2617-B398-4859-8F59-B38F8807E83E}.Release|Any CPU.Build.0 = Release|Any CPU + {A9E30AAC-A755-44E9-8707-1EC41A9075D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A9E30AAC-A755-44E9-8707-1EC41A9075D4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A9E30AAC-A755-44E9-8707-1EC41A9075D4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A9E30AAC-A755-44E9-8707-1EC41A9075D4}.Release|Any CPU.Build.0 = Release|Any CPU + {6C95C338-83A8-43D5-85DD-10A50F7E15D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6C95C338-83A8-43D5-85DD-10A50F7E15D5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6C95C338-83A8-43D5-85DD-10A50F7E15D5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6C95C338-83A8-43D5-85DD-10A50F7E15D5}.Release|Any CPU.Build.0 = Release|Any CPU + {1B5D99A2-F00D-4CED-A4F1-1FE03C423EF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1B5D99A2-F00D-4CED-A4F1-1FE03C423EF6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1B5D99A2-F00D-4CED-A4F1-1FE03C423EF6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1B5D99A2-F00D-4CED-A4F1-1FE03C423EF6}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE