Files
PersonSport/Controllers/PersonSportController.cs
2026-03-05 15:43:26 +01:00

120 lines
4.2 KiB
C#

using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using PersonSport.Models;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Authorization;
namespace PersonSport.Controllers {
[Authorize]
public class PersonSportController : Controller {
public IActionResult Index(int? sportens_id = 1) {
var db = new IdrottContext();
ViewBag.AllaSporter = db.Sporter.ToList();
ViewBag.sportens_id = sportens_id;
ViewBag.SportNamn = db.Sporter
.Where(a => a.SportId == sportens_id)
.Select(a => a.SportNamn).Single();
ViewBag.PersonerIValdSport = (from pers in db.Personer
where pers.PersonSporter.Any(c => c.SportId == sportens_id)
select pers).ToList();
return View();
}
[HttpGet]
public IActionResult Enroll() {
List<Person> personer = new();
List<Sport> sporter = new();
using (var db = new IdrottContext()) {
personer = db.Personer.ToList();
}
using (var db = new IdrottContext()) {
sporter = db.Sporter.ToList();
}
ViewBag.personer = personer;
ViewBag.sporter = sporter;
return View();
}
[HttpPost]
public IActionResult Enroll(IFormCollection fc) {
try {
int valtNamn = int.Parse(fc["Namn"]);
int valdSport = int.Parse(fc["Sport"]);
using (var db = new IdrottContext()) {
PersonSport.Models.PersonSport ps = new() { PersonId = valtNamn, SportId = valdSport };
db.Add(ps);
db.SaveChanges();
}
TempData["MeddelandeSuccess"] = "Medlemmen är tillagd i sporten.";
return RedirectToAction(nameof(Index));
}
catch (Exception) {
TempData["MeddelandeFail"] = "Kunde inte lägga till medlemmen i sporten.";
return View("/Start/Error");
throw;
}
}
public IActionResult Deroll() {
List<Person> personer = new();
using (var db = new IdrottContext()) {
personer = db.Personer.ToList();
}
return View(personer);
}
[HttpPost]
public IActionResult DerollSport(IFormCollection fc) {
try {
int valdPersonId = int.Parse(fc["PersonId"]);
using (var db = new IdrottContext()) {
ViewBag.SportForValdPerson = (from sport in db.Sporter
where sport.PersonSporter.Any(c => c.PersonId == valdPersonId)
select sport).ToList();
}
ViewBag.PersonId = valdPersonId;
return View();
}
catch (FormatException) {
return RedirectToAction(nameof(Index));
throw;
}
}
[HttpPost]
public IActionResult DerollDone(IFormCollection fc) {
try {
int valtPersonId = int.Parse(fc["PersonId"]);
int valtSportId = int.Parse(fc["SportId"]);
using (var db = new IdrottContext()) {
PersonSport.Models.PersonSport ps = new() { PersonId = valtPersonId, SportId = valtSportId };
db.Remove(ps);
db.SaveChanges();
}
TempData["MeddelandeSuccess"] = "Medlemmen är borttagen från sporten.";
return RedirectToAction(nameof(Index));
}
catch (FormatException) {
TempData["MeddelandeFail"] = "Kunde inte ta bort medlemmen från sporten";
return RedirectToAction(nameof(Index));
}
}
}
}