From 71bafe70dbb2941dc26d31b840c87e697d1d12ff Mon Sep 17 00:00:00 2001 From: Michal Bohdanowicz Date: Sun, 10 Jan 2021 21:10:25 +0100 Subject: [PATCH 1/2] fix --- src/InternshipSystem.Api/Controllers/ReportController.cs | 7 +++++++ src/InternshipSystem.Repository/DatabaseFiller.cs | 1 + 2 files changed, 8 insertions(+) create mode 100644 src/InternshipSystem.Api/Controllers/ReportController.cs diff --git a/src/InternshipSystem.Api/Controllers/ReportController.cs b/src/InternshipSystem.Api/Controllers/ReportController.cs new file mode 100644 index 0000000..4176834 --- /dev/null +++ b/src/InternshipSystem.Api/Controllers/ReportController.cs @@ -0,0 +1,7 @@ +namespace InternshipSystem.Api.Controllers +{ + public class ReportController + { + + } +} \ No newline at end of file diff --git a/src/InternshipSystem.Repository/DatabaseFiller.cs b/src/InternshipSystem.Repository/DatabaseFiller.cs index 3936d4f..f79e3b6 100644 --- a/src/InternshipSystem.Repository/DatabaseFiller.cs +++ b/src/InternshipSystem.Repository/DatabaseFiller.cs @@ -347,6 +347,7 @@ namespace InternshipSystem.Repository } } }, + Report = Report.Create() }, new Internship { -- 2.45.2 From 82378e1fd6abd4eb78e00292764954f3e1597381 Mon Sep 17 00:00:00 2001 From: Michal Bohdanowicz Date: Sun, 10 Jan 2021 21:12:08 +0100 Subject: [PATCH 2/2] fix --- .../Controllers/ReportController.cs | 56 ++++++++++++++++++- .../Controllers/ReportFieldsController.cs | 1 + src/InternshipSystem.Core/Entity/Report.cs | 6 ++ 3 files changed, 61 insertions(+), 2 deletions(-) diff --git a/src/InternshipSystem.Api/Controllers/ReportController.cs b/src/InternshipSystem.Api/Controllers/ReportController.cs index 4176834..0427641 100644 --- a/src/InternshipSystem.Api/Controllers/ReportController.cs +++ b/src/InternshipSystem.Api/Controllers/ReportController.cs @@ -1,7 +1,59 @@ -namespace InternshipSystem.Api.Controllers +using System.Threading; +using System.Threading.Tasks; +using InternshipSystem.Api.Security; +using InternshipSystem.Repository; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace InternshipSystem.Api.Controllers { - public class ReportController + [Route("internship/report")] + public class ReportController : ControllerBase { + private readonly InternshipDbContext _context; + + public ReportController(InternshipDbContext context) + { + _context = context; + } + [HttpPost] + [Authorize(Policy = Policies.RegisteredOnly)] + public async Task PostReport([FromBody] JObject reportValue, [FromServices] User user, CancellationToken ct) + { + var edition = await _context.Editions + .FindAsync(user.EditionId); + + var internship = await _context.Entry(edition) + .Collection(e => e.Internships) + .Query() + .Include(i => i.Report) + .SingleAsync(i => i.Student.Id == user.PersonNumber, ct); + + internship.Report.UpdateReport(reportValue.ToString(Formatting.None)); + + await _context.SaveChangesAsync(ct); + + return Ok(); + } + + [HttpGet] + [Authorize(Policy = Policies.RegisteredOnly)] + public async Task GetReport([FromServices] User user, CancellationToken ct) + { + var edition = await _context.Editions + .FindAsync(user.EditionId); + + var internship = await _context.Entry(edition) + .Collection(e => e.Internships) + .Query() + .Include(i => i.Report) + .SingleAsync(i => i.Student.Id == user.PersonNumber, ct); + + return Ok(JsonConvert.DeserializeObject(internship.Report.Value)); + } } } \ No newline at end of file diff --git a/src/InternshipSystem.Api/Controllers/ReportFieldsController.cs b/src/InternshipSystem.Api/Controllers/ReportFieldsController.cs index 45a7a37..16e7c7b 100644 --- a/src/InternshipSystem.Api/Controllers/ReportFieldsController.cs +++ b/src/InternshipSystem.Api/Controllers/ReportFieldsController.cs @@ -79,6 +79,7 @@ namespace InternshipSystem.Api.Controllers public class FieldCreateRequest { + public long? Id { get; set; } public string Label { get; set; } public string LabelEng { get; set; } public string Description { get; set; } diff --git a/src/InternshipSystem.Core/Entity/Report.cs b/src/InternshipSystem.Core/Entity/Report.cs index 5515c28..b3b4245 100644 --- a/src/InternshipSystem.Core/Entity/Report.cs +++ b/src/InternshipSystem.Core/Entity/Report.cs @@ -12,5 +12,11 @@ namespace InternshipSystem.Core { return new Report(); } + + public void UpdateReport(string reportValue) + { + Value = reportValue; + State = DocumentState.Submitted; + } } } \ No newline at end of file -- 2.45.2