From 4020b1464a2e1ff342ef5fa8b1c623d44ab91b89 Mon Sep 17 00:00:00 2001 From: Tobi Date: Thu, 20 Jun 2019 19:59:21 +0200 Subject: [PATCH] =?UTF-8?q?:construction:=20Models=20f=C3=BCr=20Aufnahmean?= =?UTF-8?q?trag=20und=20Rooms?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EVABackend/Controllers/EVAController.cs | 134 +++++++++++++++++++-- .../EVABackend/EVABackend/Models/Aufnahmeantrag.cs | 42 +++++++ .../EVABackend/EVABackend/Models/CreateRooms.cs | 13 ++ 3 files changed, 182 insertions(+), 7 deletions(-) create mode 100644 Backend/EVABackend/EVABackend/Models/Aufnahmeantrag.cs create mode 100644 Backend/EVABackend/EVABackend/Models/CreateRooms.cs diff --git a/Backend/EVABackend/EVABackend/Controllers/EVAController.cs b/Backend/EVABackend/EVABackend/Controllers/EVAController.cs index 9c70e96..8f2be76 100644 --- a/Backend/EVABackend/EVABackend/Controllers/EVAController.cs +++ b/Backend/EVABackend/EVABackend/Controllers/EVAController.cs @@ -1,5 +1,7 @@ using EVABackend.Areas.Identity.Data; using EVABackend.Models; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; @@ -27,6 +29,7 @@ namespace EVABackend.Controllers [HttpGet] [Route("login")] + [AllowAnonymous] public ActionResult Login() { return Ok(new { status = "Nicht unterstützt" }); @@ -34,22 +37,39 @@ namespace EVABackend.Controllers [HttpGet] [Route("create_dummy_data")] + [Authorize] public async Task CreateDummyData() { - var user = new EVABackendUser + if (_userManager.FindByNameAsync("Test") == null) { - UserName = "Test", - Email = "info@test.de" - }; - if ((await _userManager.CreateAsync(user, "123Abc!&")).Succeeded) - return Ok(); + var user = new EVABackendUser + { + UserName = "Test", + Email = "info@test.de" + }; + + await _userManager.CreateAsync(user, "123Abc!&"); + } + + var roleNames = new string[] { "Schueler", "Verwaltung", "Admin" }; - return StatusCode(500); + foreach (var roleName in roleNames) + { + if (!(await _roleManager.RoleExistsAsync(roleName))) + { + await _roleManager.CreateAsync(new IdentityRole(roleName)); + } + } + + await _userManager.AddToRolesAsync((await _userManager.FindByNameAsync("Test")), roleNames); + + return Ok(); } [HttpPost] [Route("login")] + [AllowAnonymous] public async Task Login([FromForm] string username, [FromForm] string password) { var result = await _signInManager.PasswordSignInAsync(username, password, false, false); @@ -61,6 +81,77 @@ namespace EVABackend.Controllers return Unauthorized(); } + [HttpPost] + [Route("logout")] + [Authorize] + public async Task Logout() + { + await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme); + + return Ok(); + } + + [HttpPost] + [Route("aufnahmeantrag")] + [AllowAnonymous] + public async Task Aufnahmeantrag(Aufnahmeantrag model) + { + var schueler = new Schueler + { + Name = model.Name, + Vorname = model.Vonname, + IstErmaessigt = model.IstErmaessigt, + Ort = model.Ort, + Bankname = model.Bankname, + BLZ = model.BLZ, + Geburtsdatum = model.Geburtsdatum, + Geburtsort = model.Geburtsort, + Telefon = model.Telefon, + EMail = model.EMail, + PLZ = model.PLZ, + KontoNr = model.KontoNr, + Strasse = model.StrasseHNR + }; + + await _context.Schueler.AddAsync(schueler); + await _context.SaveChangesAsync(); + + var instrumente = _context.Instrumente.Where(i => model.Instrumente.Contains(i.Id)).ToList(); + + var kurs = new Kurs + { + Bestaetigt = false, + Name = model.Name, + Kuendigungsfrist = 2, + UnterrichtsTyp = model.Typ, + Laufzeit = 6 + }; + + await _context.Kurse.AddAsync(kurs); + await _context.SaveChangesAsync(); + + kurs.Instrumente = instrumente.Select(i => new KursInstrument { InstrumentId = i.Id, KursId = kurs.Id }).ToList(); + + await _context.KursSchueler.AddAsync(new KursSchueler { KursId = kurs.Id, SchuelerId = schueler.Id }); + await _context.SaveChangesAsync(); + + var antrag = new Antrag + { + UnterrichtTyp = model.Typ, + Schueler = schueler, + KursId = kurs.Id + }; + + await _context.Antraege.AddAsync(antrag); + await _context.SaveChangesAsync(); + + antrag.Instrumente = instrumente.Select(i => new AntragInstrument { AntragId = antrag.Id, InstrumentId = i.Id }).ToList(); + + await _context.SaveChangesAsync(); + + return Ok(); + } + [HttpGet] [Route("instruments")] [Authorize] @@ -70,5 +161,34 @@ namespace EVABackend.Controllers return Ok(instruments.ToArray()); } + + [HttpGet] + [Route("rooms")] + [Authorize(Roles = "Verwaltung")] + public ActionResult Rooms() + { + var rooms = _context.Raeume.ToList(); + + var model = rooms.Select(r => new + { + RaumID = r.Id, + RaumName= r.Name, + Instrumente = r.Instrumente.Select(i => new + { + InstrumentID = i.InstrumentId, + InstrumentName = i.Instrument.Name + }) + }); + + return Ok(model.ToArray()); + } + + [HttpPut] + [Route("create_rooms")] + [Authorize(Roles = "Verwaltung")] + public async Task CreateRooms(CreateRooms model) + { + + } } } diff --git a/Backend/EVABackend/EVABackend/Models/Aufnahmeantrag.cs b/Backend/EVABackend/EVABackend/Models/Aufnahmeantrag.cs new file mode 100644 index 0000000..837ccf5 --- /dev/null +++ b/Backend/EVABackend/EVABackend/Models/Aufnahmeantrag.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace EVABackend.Models +{ + public class Aufnahmeantrag + { + [Required] + public string Name { get; set; } + [Required] + public string Vonname { get; set; } + public bool IstErmaessigt { get; set; } + public DateTime Geburtsdatum { get; set; } + [Required] + public string Geburtsort { get; set; } + [Range(1, 100000)] + public int PLZ { get; set; } + [Required] + public string Ort { get; set; } + [Required] + public string StrasseHNR { get; set; } + [Required] + public string Bankname { get; set; } + [Required] + public string BLZ { get; set; } + [Required] + public string KontoNr { get; set; } + [Required] + public UnterrichtTyp Typ { get; set; } + [Required] + public List Instrumente { get; set; } + [Required] + public string Laufzeit { get; set; } + [Required] + public string KursId { get; set; } + [Required] + public string Telefon { get; set; } + [Required] + public string EMail { get; set; } + } +} diff --git a/Backend/EVABackend/EVABackend/Models/CreateRooms.cs b/Backend/EVABackend/EVABackend/Models/CreateRooms.cs new file mode 100644 index 0000000..ab0e00c --- /dev/null +++ b/Backend/EVABackend/EVABackend/Models/CreateRooms.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace EVABackend.Models +{ + public class CreateRooms + { + [Required] + public string Name { get; set; } + [Required] + public List InstrumentIDs { get; set; } + } +}