Startpunkten
This commit is contained in:
27
Views/Login/CreateAdmin.cshtml
Normal file
27
Views/Login/CreateAdmin.cshtml
Normal file
@@ -0,0 +1,27 @@
|
||||
@model Admin
|
||||
@{
|
||||
ViewData["Title"] = "Lägg till administratör";
|
||||
}
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
<div class="container">
|
||||
|
||||
<form action="/Login/CreateAdmin" method="post">
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.Username" class="control-label"></label>
|
||||
<input type="text" class="form-control" asp-for="Username" tabindex="1" placeholder="Username">
|
||||
<span asp-validation-for="Username" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.Password" class="control-label"></label>
|
||||
<input type="password" class="form-control" asp-for="Password" tabindex="2" placeholder="Password">
|
||||
<span asp-validation-for="Password" class="text-danger"></span>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Skapa admin</button>
|
||||
</form>
|
||||
<p>@ViewBag.error</p>
|
||||
</div>
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
|
||||
30
Views/Login/EditAdmin.cshtml
Normal file
30
Views/Login/EditAdmin.cshtml
Normal file
@@ -0,0 +1,30 @@
|
||||
@model Admin
|
||||
@{
|
||||
ViewData["Title"] = "Editera administratör";
|
||||
}
|
||||
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
<div class="container">
|
||||
<form action="/Login/EditAdmin" method="post">
|
||||
<input type="hidden" asp-for="AdminId" value="@Model.AdminId" />
|
||||
<div class="form-group">
|
||||
<label asp-for="Username" class="control-label"></label>
|
||||
<input type="text" class="form-control" asp-for="Username" tabindex="1">
|
||||
<span asp-validation-for="Username" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.Password" class="control-label"></label>
|
||||
<input type="password" class="form-control" asp-for="Password" tabindex="2">
|
||||
<span asp-validation-for="Password" class="text-danger"></span>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary mb-5">Editera admin</button>
|
||||
</form>
|
||||
<p>@ViewBag.error</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
|
||||
29
Views/Login/Index.cshtml
Normal file
29
Views/Login/Index.cshtml
Normal file
@@ -0,0 +1,29 @@
|
||||
@model Admin
|
||||
@{
|
||||
ViewData["Title"] = "Logga in";
|
||||
}
|
||||
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
<div class="container mb-5">
|
||||
<div class="myLoginForm card p-4">
|
||||
<form action="~/Login/CheckLogin" method="post">
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.Username" class="control-label"></label>
|
||||
<input type="text" class="form-control" asp-for="Username" tabindex="1" placeholder="Username">
|
||||
<span asp-validation-for="Username" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.Password" class="control-label"></label>
|
||||
<input type="password" class="form-control" asp-for="Password" tabindex="2" placeholder="Password">
|
||||
<span asp-validation-for="Password" class="text-danger"></span>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Logga in</button>
|
||||
</form>
|
||||
|
||||
<p class="text-danger mt-3">@TempData["msg"]</p>
|
||||
<p class="text-primary mt-3" ">@TempData["hint"]</p>
|
||||
</div>
|
||||
</div>
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
55
Views/Login/ShowAdmins.cshtml
Normal file
55
Views/Login/ShowAdmins.cshtml
Normal file
@@ -0,0 +1,55 @@
|
||||
@model List<Admin>
|
||||
@{
|
||||
ViewData["Title"] = "Här finns alla administratörer";
|
||||
}
|
||||
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
<p class="lead text-center">Det är bra om alla i receptionen är registrerade som administratör.</p>
|
||||
|
||||
@if (TempData.ContainsKey("Meddelande")) {
|
||||
<div class="alert alert-danger alert-dismissible">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
<strong>Skapades inte!</strong> @TempData["Meddelande"]
|
||||
</div>
|
||||
}
|
||||
else @if (TempData.ContainsKey("TooFewAdmins")) {
|
||||
<div class="alert alert-danger alert-dismissible">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
<strong>Togs inte bort!</strong> @TempData["TooFewAdmins"]
|
||||
</div>
|
||||
}
|
||||
|
||||
<a asp-action="CreateAdmin" asp-controller="Login" class="btn btn-success mb-3">Skapa ny administratör</a>
|
||||
|
||||
<div class="container mb-5">
|
||||
@if (Model.Count() >= 1) {
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Administratör</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var admin in Model) {
|
||||
<tr>
|
||||
<td>@admin.Username</td>
|
||||
<td>
|
||||
<a asp-action="DeleteAdmin" asp-controller="Login" asp-route-Id="@admin.AdminId">Ta bort</a> |
|
||||
<a asp-action="EditAdmin" asp-controller="Login" asp-route-Id="@admin.AdminId">Editera</a>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
}
|
||||
</div>
|
||||
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
|
||||
|
||||
|
||||
38
Views/Person/Create.cshtml
Normal file
38
Views/Person/Create.cshtml
Normal file
@@ -0,0 +1,38 @@
|
||||
@model Person
|
||||
|
||||
@{
|
||||
ViewData["Title"] = "Lägg till ny medlem";
|
||||
}
|
||||
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
|
||||
<div class="container mb-5">
|
||||
<form action="Create" method="post" enctype="multipart/form-data">
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.PersonNamn" class="control-label"></label>
|
||||
<input type="text" class="form-control" asp-for="PersonNamn" tabindex="1" placeholder="Ditt namn">
|
||||
<span asp-validation-for="PersonNamn" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.Epost" class="control-label"></label>
|
||||
<input type="text" class="form-control" asp-for="Epost" tabindex="2" placeholder="ditt.namn@adress.com">
|
||||
<span asp-validation-for="Epost" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.Alder" class="control-label"></label>
|
||||
<input type="number" class="form-control" asp-for="Alder" tabindex="3" placeholder="Ange din ålder">
|
||||
<span asp-validation-for="Alder" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.Visningsbild" class="control-label"></label>
|
||||
<input type="file" class="form-control" asp-for="Visningsbild" tabindex="4">
|
||||
<span asp-validation-for="Visningsbild" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary mt-3">@ViewData["Title"]</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
36
Views/Person/Edit.cshtml
Normal file
36
Views/Person/Edit.cshtml
Normal file
@@ -0,0 +1,36 @@
|
||||
@model Person
|
||||
@{
|
||||
ViewData["Title"] = "Editera en person";
|
||||
}
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
|
||||
<div class="container">
|
||||
<form action="Edit" method="post" enctype="multipart/form-data">
|
||||
<input type="hidden" asp-for="PersonId" value="@Model.PersonId" />
|
||||
<div class="form-group">
|
||||
<label>Namn</label>
|
||||
<input type="text" class="form-control" asp-for="PersonNamn" tabindex="1">
|
||||
<span asp-validation-for="PersonNamn" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Epost" class="control-label"></label>
|
||||
<input type="text" class="form-control" asp-for="Epost" tabindex="2" placeholder="ditt.namn@adress.com">
|
||||
<span asp-validation-for="Epost" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Alder" class="control-label"></label>
|
||||
<input type="number" class="form-control" asp-for="Alder" tabindex="3" placeholder="Ange din ålder">
|
||||
<span asp-validation-for="Alder" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.Visningsbild" class="control-label"></label>
|
||||
<input type="file" class="form-control" asp-for="Visningsbild" tabindex="4">
|
||||
<span asp-validation-for="Visningsbild" class="text-danger"></span>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Spara ändringar</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
77
Views/Person/Index.cshtml
Normal file
77
Views/Person/Index.cshtml
Normal file
@@ -0,0 +1,77 @@
|
||||
@model List<Person>
|
||||
@{
|
||||
ViewData["Title"] = "Mina medlemmar";
|
||||
}
|
||||
@if (TempData.ContainsKey("MeddelandeSuccess")) {
|
||||
<div class="alert alert-success alert-dismissible">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
<strong>Allt klart!</strong> @TempData["MeddelandeSuccess"]
|
||||
</div>
|
||||
}
|
||||
else if (TempData.ContainsKey("MeddelandeFail")) {
|
||||
<div class="alert alert-danger alert-dismissible">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
<strong>Något gick fel.</strong> @TempData["MeddelandeFail"]
|
||||
</div>
|
||||
}
|
||||
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<a href="/Person/Create" class="btn btn-success mb-5">Skapa ny medlem</a>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<form asp-action="Search" method="post">
|
||||
<div class="form-group">
|
||||
<label class="control-label">
|
||||
<input name="search" id="search" class="form-control" tabindex="1" placeholder="Namn eller E-post" />
|
||||
</label>
|
||||
<input type="submit" value="Sök" class="btn btn-primary" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container mb-5">
|
||||
@if (Model.Count() >= 0) {
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>@Html.ActionLink("Id", "Index", null, new { sortOrder = "PersonId" })</th>
|
||||
<th>@Html.ActionLink("Namn", "Index", null, new { sortOrder = "PersonNamn" })</th>
|
||||
<th>@Html.ActionLink("E-post", "Index", null, new { sortOrder = "Epost" })</th>
|
||||
<th>@Html.ActionLink("Ålder", "Index", null, new { sortOrder = "Alder" })</th>
|
||||
<th>@Html.ActionLink("Registrerad", "Index", null, new { sortOrder = "StartDatum" })</th>
|
||||
<th>Visningsbild</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var person in Model) {
|
||||
<tr>
|
||||
<td>@person.PersonId</td>
|
||||
<td>@person.PersonNamn</td>
|
||||
<td>@person.Epost</td>
|
||||
<td>@person.Alder</td>
|
||||
<td>@person.StartDatum</td>
|
||||
<td><img src="~/images/userphoto/@person.Visningsbild" alt="@person.PersonNamn" class="visningsbild" /></td>
|
||||
<td>
|
||||
<a asp-action="Delete" asp-controller="Person" asp-route-Id="@person.PersonId">Ta bort</a> |
|
||||
<a asp-action="Edit" asp-controller="Person" asp-route-Id="@person.PersonId">Editera</a>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
|
||||
65
Views/Person/Search.cshtml
Normal file
65
Views/Person/Search.cshtml
Normal file
@@ -0,0 +1,65 @@
|
||||
@model List<Person>
|
||||
@{
|
||||
ViewData["Title"] = "Sökresultat";
|
||||
}
|
||||
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<a href="/Person/Create" class="btn btn-success mb-5">Skapa ny medlem</a>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<form asp-action="Search" method="post">
|
||||
<div class="form-group">
|
||||
<label class="control-label">
|
||||
<input name="search" id="search" class="form-control" tabindex="1" placeholder="Namn eller E-post" />
|
||||
</label>
|
||||
<input type="submit" value="Sök" class="btn btn-primary" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container mb-5">
|
||||
@if (Model.Count() >= 0) {
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Id</th>
|
||||
<th>Namn</th>
|
||||
<th>Epost</th>
|
||||
<th>Alder</th>
|
||||
<th>Registrerad</th>
|
||||
<th>Visningsbild</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var person in Model) {
|
||||
<tr>
|
||||
<td>@person.PersonId</td>
|
||||
<td>@person.PersonNamn</td>
|
||||
<td>@person.Epost</td>
|
||||
<td>@person.Alder</td>
|
||||
<td>@person.StartDatum</td>
|
||||
<td><img src="~/images/userphoto/@person.Visningsbild" alt="@person.PersonNamn" class="visningsbild" /></td>
|
||||
<td>
|
||||
<a asp-action="Delete" asp-controller="Person" asp-route-Id="@person.PersonId">Ta bort</a> |
|
||||
<a asp-action="Edit" asp-controller="Person" asp-route-Id="@person.PersonId">Editera</a>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
|
||||
28
Views/PersonSport/Deroll.cshtml
Normal file
28
Views/PersonSport/Deroll.cshtml
Normal file
@@ -0,0 +1,28 @@
|
||||
@model List<Person>
|
||||
@{
|
||||
ViewData["Title"] = "Steg 1: Välj person";
|
||||
}
|
||||
|
||||
|
||||
<div class="container mb-5">
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
<form asp-action="DerollSport" method="post">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="input-group mb-3">
|
||||
<select name="PersonId" class="custom-select" tabindex="1">
|
||||
<option selected>Välj medlem</option>
|
||||
@foreach (var person in Model) {
|
||||
<option value="@person.PersonId">@person.PersonNamn</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary mt-3">Vidare till nästa steg</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
30
Views/PersonSport/DerollSport.cshtml
Normal file
30
Views/PersonSport/DerollSport.cshtml
Normal file
@@ -0,0 +1,30 @@
|
||||
@model List<Person>
|
||||
@{
|
||||
ViewData["Title"] = "...och vilken sport ska denne sluta med?";
|
||||
}
|
||||
|
||||
<div class="container mb-5">
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
|
||||
<form asp-action="DerollDone" method="post">
|
||||
<input type="hidden" name="PersonId" value="@ViewBag.PersonId" />
|
||||
<div class="col">
|
||||
<div class="input-group mb-3">
|
||||
<select name="SportId" class="custom-select" tabindex="1">
|
||||
<option selected>Välj sport</option>
|
||||
@foreach (var sport in ViewBag.SportForValdPerson) {
|
||||
<option value="@sport.SportId">@sport.SportNamn</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary mt-3">Avregistrera från aktivitet</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
|
||||
|
||||
|
||||
40
Views/PersonSport/Enroll.cshtml
Normal file
40
Views/PersonSport/Enroll.cshtml
Normal file
@@ -0,0 +1,40 @@
|
||||
@model IEnumerable<Person>
|
||||
@{
|
||||
ViewData["Title"] = "Registrera medlem i aktivitet";
|
||||
}
|
||||
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
|
||||
<div class="container mb-5">
|
||||
<h4 class="mt-4 mb-4">Vem ska börja träna vad?</h4>
|
||||
|
||||
<form asp-action="Enroll" method="post">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="input-group mb-3">
|
||||
<select name="Namn" class="custom-select" tabindex="1">
|
||||
<option selected>Välj medlem</option>
|
||||
@foreach (var namn in ViewBag.personer) {
|
||||
<option value="@namn.PersonId">@namn.PersonNamn</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="input-group mb-3">
|
||||
<select name="Sport" class="custom-select" tabindex="2">
|
||||
<option selected>Välj sport</option>
|
||||
@foreach (var sport in ViewBag.sporter) {
|
||||
<option value="@sport.SportId">@sport.SportNamn</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary mt-3">@ViewData["Title"]</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
57
Views/PersonSport/Index.cshtml
Normal file
57
Views/PersonSport/Index.cshtml
Normal file
@@ -0,0 +1,57 @@
|
||||
@{
|
||||
ViewData["Title"] = "Klicka på en sport för att se vilka som utövar den";
|
||||
}
|
||||
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
|
||||
@if (TempData.ContainsKey("MeddelandeSuccess")) {
|
||||
<div class="alert alert-success alert-dismissible">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
<strong>Allt klart!</strong> @TempData["MeddelandeSuccess"]
|
||||
</div>
|
||||
}
|
||||
else if (TempData.ContainsKey("MeddelandeFail")) {
|
||||
<div class="alert alert-danger alert-dismissible">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
<strong>Något gick fel.</strong> @TempData["MeddelandeFail"]
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="container mb-5">
|
||||
<div class="text-center mb-3">
|
||||
@foreach (var sp in ViewBag.AllaSporter) {
|
||||
<span class="btn btn-light text-black-50">
|
||||
@Html.ActionLink((string)sp.SportNamn, "Index", new { sportens_id = sp.SportId })
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
<h2 class="text-center">@ViewBag.SportNamn</h2>
|
||||
@if (ViewBag.PersonerIValdSport != null && ViewBag.PersonerIValdSport.Count >= 1) {
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr class="d-flex">
|
||||
<th class="col-2">Person-Id</th>
|
||||
<th class="col-6">Personens namn</th>
|
||||
<th class="col-4">Startade</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var item in ViewBag.PersonerIValdSport) {
|
||||
<tr class="d-flex">
|
||||
<td class="col-2">@item.PersonId</td>
|
||||
<td class="col-6">@item.PersonNamn</td>
|
||||
<td class="col-4">@item.StartDatum</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
}
|
||||
else {
|
||||
<p class="lead text-center mt-5 mb-5">Det finns ingen som utövar det där...</p>
|
||||
}
|
||||
</div>
|
||||
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
25
Views/Shared/Error.cshtml
Normal file
25
Views/Shared/Error.cshtml
Normal file
@@ -0,0 +1,25 @@
|
||||
@model ErrorViewModel
|
||||
@{
|
||||
ViewData["Title"] = "Error";
|
||||
}
|
||||
|
||||
<h1 class="text-danger">Error.</h1>
|
||||
<h2 class="text-danger">An error occurred while processing your request.</h2>
|
||||
|
||||
@if (Model.ShowRequestId)
|
||||
{
|
||||
<p>
|
||||
<strong>Request ID:</strong> <code>@Model.RequestId</code>
|
||||
</p>
|
||||
}
|
||||
|
||||
<h3>Development Mode</h3>
|
||||
<p>
|
||||
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
|
||||
</p>
|
||||
<p>
|
||||
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
|
||||
It can result in displaying sensitive information from exceptions to end users.
|
||||
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
|
||||
and restarting the app.
|
||||
</p>
|
||||
28
Views/Shared/_Footer.cshtml
Normal file
28
Views/Shared/_Footer.cshtml
Normal file
@@ -0,0 +1,28 @@
|
||||
<div class="row myFooter pt-5 pb-5">
|
||||
<div class="col-sm">
|
||||
<h5>© 2021 - SportPalatset</h5>
|
||||
<p class="m-0">Storgatan 1</p>
|
||||
<p class="m-0">432 10 Staden</p>
|
||||
<p class="m-0">Tel. 0123-10 20 30</p>
|
||||
<p class="m-0">Fax. 0123-30 40 50</p>
|
||||
<p class="m-0"><a href="mailto:info@sportpalatset.se">info@sportpalatset.se</a></p>
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
<h5>Länkar</h5>
|
||||
<a href="/Person/Create" class="mb-1">Bli medlem</a><br />
|
||||
<a href="/Sport/Utbud" class="mb-1">Utbudet</a><br />
|
||||
<a href="/Start/Priser" class="mb-1">Priser</a><br />
|
||||
<a href="/Start/Kurser" class="mb-1">Kurser</a><br />
|
||||
<a href="/Start/Receptionen" class="mb-1">Receptionen</a><br />
|
||||
<a href="/Start/Oppettider" class="mb-1">Öppettider</a><br />
|
||||
</div>
|
||||
<div class="col-sm social">
|
||||
<h5>Sociala medier</h5>
|
||||
<p class="m-1 mb-4">Hitta oss i våra kanaler! Vi lägger ut nya bilder hela tiden.</p>
|
||||
<i class="fab fa-facebook-square"></i>
|
||||
<i class="fab fa-twitter-square"></i>
|
||||
<i class="fab fa-instagram-square"></i>
|
||||
<i class="fab fa-tiktok"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
67
Views/Shared/_Layout.cshtml
Normal file
67
Views/Shared/_Layout.cshtml
Normal file
@@ -0,0 +1,67 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- Observera att detta är en skoluppgift och inte något -->
|
||||
<!-- som används på riktigt. -->
|
||||
<!-- Sidan är skapad för en kurs på Umeå Universitet av -->
|
||||
<!-- Christian Ohlsson 2021-10-10 -->
|
||||
<!-- -------------------------------------------------------- -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<!-- Lite meta-element för visning på vanliga webben -->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="keywords" content="sport, palatset, sportpalatset, staden, yoga, karate, bandy" />
|
||||
<meta name="description" content="Här kan du träna på många olika sporter och delta i kurser." />
|
||||
@if (ViewBag.metaAbstract != null) {
|
||||
<meta name="abstract" content="@ViewBag.metaAbstract" />
|
||||
}
|
||||
@if (ViewBag.metaImage != null) {
|
||||
<meta name="image" content="@ViewBag.metaImage" />
|
||||
}
|
||||
<meta name="referrer" content="no-referrer">
|
||||
|
||||
<!-- Lite meta-element enligt Social Graph -->
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="SportPalatset - Din träningsanläggning i Staden" />
|
||||
<meta property="og:description" content="Här kan du träna på många olika sporter och delta i kurser." />
|
||||
<meta property="og:url" content="https://sportpalatset.se/" />
|
||||
<meta property="og:site_name" content="SportPalatset" />
|
||||
<meta property="og:image" content="https://sportpalatset.se/images/Logo.png" />
|
||||
|
||||
<!-- Lite meta-element för Twitterläsare -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:creator" content="SportPalatset" />
|
||||
<meta name="twitter:image" content="https://sportpalatset.se/images/Logo.png" />
|
||||
<meta name="twitter:site" content="SportPalatset" />
|
||||
|
||||
<title>@ViewData["Title"] - PersonSport</title>
|
||||
<link rel='stylesheet' href='https://fonts.googleapis.com/css2?family=Raleway:wght@300&family=Oswald&display=swap'>
|
||||
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.css" />
|
||||
<link rel="stylesheet" href="~/css/site.css" />
|
||||
<link rel="stylesheet" href="~/css/crille.css" />
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-0">
|
||||
<partial name="_Menu" />
|
||||
</nav>
|
||||
</header>
|
||||
<div class="container">
|
||||
<main role="main" class="pb-3">
|
||||
@RenderBody()
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<footer class="border-top">
|
||||
<div class="container-fluid bg-dark">
|
||||
<div class="container">
|
||||
<partial name="_Footer" />
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script src="~/lib/jquery/dist/jquery.min.js"></script>
|
||||
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="~/js/site.js" asp-append-version="true"></script>
|
||||
@await RenderSectionAsync("Scripts", required: false)
|
||||
</body>
|
||||
</html>
|
||||
54
Views/Shared/_Menu.cshtml
Normal file
54
Views/Shared/_Menu.cshtml
Normal file
@@ -0,0 +1,54 @@
|
||||
<div class="container">
|
||||
<a class="navbar-brand" asp-area="" asp-controller="Start" asp-action="Index">
|
||||
<img src="/images/Logo.png" height="80" alt="Logo" class="minLogotyp mr-1">
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
|
||||
aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
|
||||
<ul class="navbar-nav flex-grow-1">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-dark btn btn-light mr-2" asp-area="" asp-controller="Sport" asp-action="Utbud">Utbud</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-dark btn btn-light mr-2" asp-area="" asp-controller="Start" asp-action="Priser">Priser</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-dark btn btn-light mr-2" asp-area="" asp-controller="Start" asp-action="Kurser">Kurser</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-dark btn btn-light mr-2" asp-area="" asp-controller="Start" asp-action="Receptionen">Receptionen</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-dark btn btn-light mr-2" asp-area="" asp-controller="Start" asp-action="Oppettider">Öppettider</a>
|
||||
</li>
|
||||
</ul>
|
||||
@if (Context.User.Identity.IsAuthenticated) {
|
||||
<div class="dropdown show">
|
||||
<a class="btn bg-info dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
Hantera
|
||||
</a>
|
||||
|
||||
<div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
|
||||
<a class="dropdown-item" asp-area="" asp-controller="Person" asp-action="Index">Medlemmar</a>
|
||||
<a class="dropdown-item" asp-area="" asp-controller="Sport" asp-action="Index">Sporter</a>
|
||||
<a class="dropdown-item" asp-area="" asp-controller="PersonSport" asp-action="Enroll">Registrera träning</a>
|
||||
<a class="dropdown-item" asp-area="" asp-controller="PersonSport" asp-action="Deroll">Sluta träning</a>
|
||||
<a class="dropdown-item" asp-area="" asp-controller="PersonSport" asp-action="Index">Vem utövar vad</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" asp-area="" asp-controller="Login" asp-action="ShowAdmins">Administratörer</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" asp-area="" asp-controller="Login" asp-action="Logout">Logga ut</a>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
else {
|
||||
<ul class="navbar-nav mr-0">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-dark btn btn-light" asp-area="" asp-controller="Login" asp-action="Index">Login</a>
|
||||
</li>
|
||||
</ul>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
2
Views/Shared/_ValidationScriptsPartial.cshtml
Normal file
2
Views/Shared/_ValidationScriptsPartial.cshtml
Normal file
@@ -0,0 +1,2 @@
|
||||
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
|
||||
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
|
||||
44
Views/Sport/Create.cshtml
Normal file
44
Views/Sport/Create.cshtml
Normal file
@@ -0,0 +1,44 @@
|
||||
@model Sport
|
||||
|
||||
@{
|
||||
ViewData["Title"] = "Lägg till sport";
|
||||
}
|
||||
|
||||
<div class="container mb-5">
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
|
||||
<form action="Create" method="post" enctype="multipart/form-data">
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.SportNamn" class="control-label"></label>
|
||||
<input type="text" class="form-control" asp-for="SportNamn" tabindex="1" placeholder="Sportens namn">
|
||||
<span asp-validation-for="SportNamn" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.Ingress" class="control-label"></label>
|
||||
<input type="text" class="form-control" asp-for="Ingress" tabindex="2" placeholder="Ingresstext">
|
||||
<span asp-validation-for="Ingress" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.DetaljText" class="control-label"></label>
|
||||
<textarea class="form-control" asp-for="DetaljText" tabindex="3" placeholder="Detaljerad text"></textarea>
|
||||
<span asp-validation-for="DetaljText" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.Traningstider" class="control-label"></label>
|
||||
<input type="text" class="form-control" asp-for="Traningstider" tabindex="4" placeholder="Träningstider">
|
||||
<span asp-validation-for="Traningstider" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.Bakgrundsbild" class="control-label"></label>
|
||||
<input type="file" class="form-control" asp-for="Bakgrundsbild" tabindex="5">
|
||||
<span asp-validation-for="Bakgrundsbild" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary">Lägg till</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
|
||||
27
Views/Sport/Details.cshtml
Normal file
27
Views/Sport/Details.cshtml
Normal file
@@ -0,0 +1,27 @@
|
||||
@model Sport
|
||||
@{
|
||||
ViewData["Title"] = "Mina Sporter";
|
||||
}
|
||||
|
||||
<div class="container mt-2 mb-5">
|
||||
<img src="~/images/sport/@Model.Bakgrundsbild" alt="@Model.SportNamn" class="img-fluid maxad mb-5" />
|
||||
<h2>@Model.SportNamn</h2>
|
||||
<p class="lead font-weight-bold">@Model.Ingress</p>
|
||||
<p>@Model.DetaljText</p>
|
||||
|
||||
<h2>Träningstider</h2>
|
||||
<p>@Model.Traningstider</p>
|
||||
|
||||
|
||||
@if (Context.User.Identity.IsAuthenticated) {
|
||||
<a href="/Sport" class="btn btn-success mt-3">Tillbaka till sporterna</a>
|
||||
}
|
||||
else {
|
||||
<a href="/Sport/Utbud" class="btn btn-success mt-3">Tillbaka till utbudet</a>
|
||||
}
|
||||
|
||||
</div>
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
40
Views/Sport/Edit.cshtml
Normal file
40
Views/Sport/Edit.cshtml
Normal file
@@ -0,0 +1,40 @@
|
||||
@model Sport
|
||||
@{
|
||||
ViewData["Title"] = "Editera en Sport";
|
||||
}
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
|
||||
<form action="Edit" method="post" enctype="multipart/form-data">
|
||||
<input type="hidden" asp-for="SportId" value="@Model.SportId" />
|
||||
<div class="form-group">
|
||||
<label>SportNamn</label>
|
||||
<input type="text" class="form-control" asp-for="SportNamn" tabindex="1">
|
||||
<span asp-validation-for="SportNamn" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Ingress" class="control-label"></label>
|
||||
<input type="text" class="form-control" asp-for="Ingress" value="@Model.Ingress">
|
||||
<span asp-validation-for="Ingress" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="DetaljText" class="control-label"></label>
|
||||
<textarea class="form-control" asp-for="DetaljText" tabindex="2">@Model.DetaljText</textarea>
|
||||
<span asp-validation-for="DetaljText" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Traningstider" class="control-label"></label>
|
||||
<input type="text" class="form-control" asp-for="Traningstider" tabindex="3">
|
||||
<span asp-validation-for="Traningstider" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.Bakgrundsbild" class="control-label"></label>
|
||||
<input type="file" class="form-control" asp-for="Bakgrundsbild" tabindex="4">
|
||||
<span asp-validation-for="Bakgrundsbild" class="text-danger"></span>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Spara ändringar</button>
|
||||
</form>
|
||||
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
58
Views/Sport/Index.cshtml
Normal file
58
Views/Sport/Index.cshtml
Normal file
@@ -0,0 +1,58 @@
|
||||
@model List<Sport>
|
||||
@{
|
||||
ViewData["Title"] = "Detta finns på SportPalatset";
|
||||
}
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
|
||||
<a href="/Sport/Create" class="btn btn-success mb-5">Skapa ny Sport</a>
|
||||
|
||||
@if (TempData.ContainsKey("MeddelandeSuccess")) {
|
||||
<div class="alert alert-success alert-dismissible">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
<strong>Allt klart!</strong> @TempData["MeddelandeSuccess"]
|
||||
</div>
|
||||
}
|
||||
else if (TempData.ContainsKey("MeddelandeFail")) {
|
||||
<div class="alert alert-danger alert-dismissible">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
<strong>Något gick fel.</strong> @TempData["MeddelandeFail"]
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="container">
|
||||
@if (Model.Count() >= 1) {
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Id</th>
|
||||
<th>SportNamn</th>
|
||||
<th>Traningstider</th>
|
||||
<th>Bild</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var sport in Model) {
|
||||
<tr>
|
||||
<td>@sport.SportId</td>
|
||||
<td>@sport.SportNamn</td>
|
||||
<td>@sport.Traningstider</td>
|
||||
<td><img src="~/images/sport/@sport.Bakgrundsbild" alt="@sport.SportNamn" class="visningsbild" /></td>
|
||||
<td>
|
||||
<a asp-action="Delete" asp-controller="Sport" asp-route-Id="@sport.SportId">Ta bort</a> |
|
||||
<a asp-action="Edit" asp-controller="Sport" asp-route-Id="@sport.SportId">Editera</a> |
|
||||
<a asp-action="Details" asp-controller="Sport" asp-route-Id="@sport.SportId">Detaljer</a>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
28
Views/Sport/Utbud.cshtml
Normal file
28
Views/Sport/Utbud.cshtml
Normal file
@@ -0,0 +1,28 @@
|
||||
@model List<Sport>
|
||||
@{
|
||||
ViewData["Title"] = "Detta finns på SportPalatset";
|
||||
}
|
||||
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
<p class="lead text-center font-weight-bold mt-1 mb-4">Hos oss hittar du allt för din träning. Det spelar ingen roll om du är elitsatsande eller motionär.</p>
|
||||
<div class="container">
|
||||
@foreach (var sport in Model) {
|
||||
<a href="/Sport/Details/@sport.SportId">
|
||||
<div class="col-sm mt-3">
|
||||
<div class="card bg-dark text-white">
|
||||
<img class="card-img" src="~/images/sport/@sport.Bakgrundsbild" alt="@sport.SportNamn">
|
||||
<div class="card-img-overlay myCard">
|
||||
<h3 class="card-title">@sport.SportNamn</h3>
|
||||
<p class="card-text mt-5">@sport.Ingress</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
|
||||
<p class="lead mt-5 mb-5 text-center font-weight-bold">Kom du ända hit utan att hitta något? Scrolla tillbaka så hittar du något kul för dig!</p>
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
53
Views/Start/Index.cshtml
Normal file
53
Views/Start/Index.cshtml
Normal file
@@ -0,0 +1,53 @@
|
||||
@{
|
||||
ViewData["Title"] = "Välkommen till SportPalatset";
|
||||
}
|
||||
|
||||
@if (TempData.ContainsKey("MeddelandeSuccess")) {
|
||||
<div class="alert alert-success alert-dismissible">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
<strong>Allt klart!</strong> @TempData["MeddelandeSuccess"]
|
||||
</div>
|
||||
}
|
||||
else if (TempData.ContainsKey("MeddelandeFail")) {
|
||||
<div class="alert alert-danger alert-dismissible">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
<strong>Något gick fel.</strong> @TempData["MeddelandeFail"]
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="container mb-5">
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
<p class="lead text-center">
|
||||
Vi har många olika sporthallar som ger dig precis den träning som du letar efter.
|
||||
Kom in till oss och låt ditt nya liv börja!
|
||||
</p>
|
||||
|
||||
<img src="~/images/arenan.jpg" alt="Arenan" class="maxad" />
|
||||
<a href="/Person/Create" class="registrera mb-5">Registrera gratis medlemskap</a>
|
||||
|
||||
<h4 class="mt-4">Vad är SportPalatset?</h4>
|
||||
<p class="lead font-weight-bold">
|
||||
Kul att du frågar! Jag ska berätta!
|
||||
</p>
|
||||
<p>
|
||||
SportPalatset är en kommunal träningsanläggning här i Staden. Vi erbjuder träning
|
||||
och friskvård till kommunens alla invånare; unga i kropp eller sinne!
|
||||
Vår kunniga personal hjälper dig gärna på vägen för att du skall nå precis
|
||||
så långt som du vill. Hos oss finns inga måsten, bara kul träning!
|
||||
</p>
|
||||
|
||||
<h4 class="mt-5">Vad kan jag träna hos er?</h4>
|
||||
<p>
|
||||
Vi har flera olika sporter och kurser som du kan vara med på. Registrera dig för ett
|
||||
gratis medlemsskap här ovanför så får du tillgång till vårt månadsbrev som kommer ut varje månad.
|
||||
Där får du tips om allt som händer hos oss och ibland med lite djupdykning på olika
|
||||
träningsformer. Vi kallar det för "Månadens fokusträning".
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
|
||||
|
||||
80
Views/Start/Kurser.cshtml
Normal file
80
Views/Start/Kurser.cshtml
Normal file
@@ -0,0 +1,80 @@
|
||||
@{
|
||||
ViewData["Title"] = "Häng med på våra kurser";
|
||||
}
|
||||
|
||||
<div class="container mb-5">
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
<p class="lead text-center font-weight-bold">Inte sugen på att börja träna något nytt, men vill gärna testa på? Vi har kursen för dig!</p>
|
||||
|
||||
<img src="~/images/kurser.jpg" alt="Arenan" class="maxad" />
|
||||
|
||||
<p class="lead text-center mt-5 mb-3">
|
||||
Våra kurser är fasta paket där du under några enstaka gånger i mindre grupper tränar för att lära dig mer.
|
||||
Efter en avslutad kurs kommer du att kunna stå på dina egna ben!
|
||||
</p>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm mt-3">
|
||||
<div class="card bg-dark text-white">
|
||||
<img class="card-img" src="/images/kampsport.jpg">
|
||||
<div class="card-img-overlay myKursCard">
|
||||
<h3 class="card-title text-uppercase">Kampsport</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm mt-3">
|
||||
<div class="card bg-dark text-white">
|
||||
<img class="card-img" src="/images/crossfit.jpg">
|
||||
<div class="card-img-overlay myKursCard">
|
||||
<h3 class="card-title text-uppercase">Crossfit</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm mt-3">
|
||||
<div class="card bg-dark text-white">
|
||||
<img class="card-img" src="/images/kids.jpg">
|
||||
<div class="card-img-overlay myKursCard">
|
||||
<h3 class="card-title text-uppercase">Funky Kidz</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm mt-3">
|
||||
<div class="card bg-dark text-white">
|
||||
<img class="card-img" src="/images/vardagsstark.jpg">
|
||||
<div class="card-img-overlay myKursCard">
|
||||
<h3 class="card-title text-uppercase">Vardagsstark</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm mt-3">
|
||||
<div class="card bg-dark text-white">
|
||||
<img class="card-img" src="/images/yoga.jpg">
|
||||
<div class="card-img-overlay myKursCard">
|
||||
<h3 class="card-title text-uppercase">Yoga</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm mt-3">
|
||||
<div class="card bg-dark text-white">
|
||||
<img class="card-img" src="/images/vikt.jpg">
|
||||
<div class="card-img-overlay myKursCard">
|
||||
<h3 class="card-title text-uppercase">Viktminskning</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="lead text-center mt-5 mb-3 font-weight-bold">
|
||||
Blev du sugen på att testa på något? Hör av dig till receptionen för starttiden för kursen du gillade.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
|
||||
141
Views/Start/Oppettider.cshtml
Normal file
141
Views/Start/Oppettider.cshtml
Normal file
@@ -0,0 +1,141 @@
|
||||
@{
|
||||
ViewData["Title"] = "Öppettider";
|
||||
}
|
||||
|
||||
<div class="container">
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
|
||||
<p class="lead text-center font-weight-bold">Om du har ett gymkort är det alltid öppet för dig. Andra öppettider kan du se nedan.</p>
|
||||
|
||||
<img src="~/images/oppettider.jpg" alt="Öppettider" class="maxad" />
|
||||
|
||||
|
||||
<h2 class="mt-5">Information om Coronaviruset</h2>
|
||||
<p class="lead">
|
||||
Vi följer Folkhälsomyndighetens rekommendationer och arbetar för att du ska kunna fortsätta att träna och
|
||||
bada i en frisk miljö. Det gör vi bland annat genom att öka städfrekvensen, anpassa våra aktiviteter samt informera
|
||||
dig som besöker oss om hur du kan hjälpa till att minska risken för smittspridning.
|
||||
</p>
|
||||
<p class="m-0"><i class="fas fa-check-square"></i>Följ skyltad hänvisning.</p>
|
||||
<p class="m-0"><i class="fas fa-check-square"></i>Håll avstånd till andra personer</p>
|
||||
<p class="m-0"><i class="fas fa-check-square"></i>Var extra noga med handhygien.</p>
|
||||
<p class="m-0"><i class="fas fa-check-square"></i>Torka av gymutrustning efter användning.</p>
|
||||
|
||||
<h3 class="mt-5">Öppettider för SportPalatset</h3>
|
||||
<p class="lead">
|
||||
Läs nedan för de olika sektionernas öppettider.
|
||||
Observera att på <span class="text-danger">röda dagar</span> gäller speciella öppettider.
|
||||
För dig med gymkort är det dock alltid öppet som vanligt.
|
||||
</p>
|
||||
|
||||
<h3>Kampsporthallen</h3>
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Veckodag</th>
|
||||
<th>Öppettider</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Måndag</td>
|
||||
<td>07.00 - 22.00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Tisdag</td>
|
||||
<td>09.00 - 21.00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Onsdag</td>
|
||||
<td>07.00 - 22.00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Torsdag</td>
|
||||
<td>09.00 - 21.00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Fredag</td>
|
||||
<td>07.00 - 22.00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Lördag</td>
|
||||
<td>10.00 - 20.00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Söndag</td>
|
||||
<td>10.00 - 20.00</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>Yogasalen</h3>
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Veckodag</th>
|
||||
<th>Öppettider</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Måndag till Fredag</td>
|
||||
<td>16.00 - 22.00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Lördag till Söndag</td>
|
||||
<td>06.00 - 19.00</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>Stora hallen</h3>
|
||||
<p>Stora hallen har endast öppet för bokade tider. Hör av dig till receptionen om du vill boka Stora hallen.</p>
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Veckodag</th>
|
||||
<th>Öppettider</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Måndag</td>
|
||||
<td>09.00 - 20.00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Tisdag</td>
|
||||
<td>09.00 - 20.00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Onsdag</td>
|
||||
<td>09.00 - 20.00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Torsdag</td>
|
||||
<td>09.00 - 20.00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Fredag</td>
|
||||
<td>09.00 - 23.00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Lördag</td>
|
||||
<td>07.00 - 23.00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Söndag</td>
|
||||
<td>07.00 - 20.00</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p class="lead text-center mt-5 mb-5 font-weight-bold">
|
||||
För andra sporthallars öppettider: Kontakta receptionen.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
|
||||
|
||||
159
Views/Start/Priser.cshtml
Normal file
159
Views/Start/Priser.cshtml
Normal file
@@ -0,0 +1,159 @@
|
||||
@{
|
||||
ViewData["Title"] = "Priser för kort och träningar";
|
||||
}
|
||||
<div class="container">
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
<p class="lead text-center font-weight-bold">Vi vet att det bara är på SportPalatset som du hittar en träning för just dig och din plånbok.</p>
|
||||
|
||||
<img src="~/images/priser.jpg" alt="Arenan" class="maxad" />
|
||||
|
||||
<p class="lead text-center mt-3">Vi har mycket bra priser som kommer att få dig att vilja komma lite oftare.</p>
|
||||
<p class="lead text-center">
|
||||
Vi ger dig de senaste och bästa träningsmöjligheterna, utbudet är näst intill obegränsat.
|
||||
Om du har funderingar eller vill boka tid för rådgivning kan du kontakta oss alla dagar i veckan 0123-10 20 30.
|
||||
</p>
|
||||
|
||||
<h3 class="mt-5">Träningskort för gym</h3>
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Korttyp</th>
|
||||
<th>Månadskostnad</th>
|
||||
<th>Årskort</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<b>Maxade kortet</b><br />
|
||||
Gruppträning, styrketräning, konditionsträning. Wellness Online. Träna på alla klubbar. Kundkonto med 1000 kr i kredit (Gäller endast autogiro).
|
||||
</td>
|
||||
<td>449kr/mån</td>
|
||||
<td>5199kr</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<b>Guldkortet</b><br />
|
||||
Styrketräning, konditionsträning. Träna på alla klubbar inom en region. Kundkonto med 1000 kr i kredit. (Gäller endast autogiro).
|
||||
</td>
|
||||
<td>399kr/mån</td>
|
||||
<td>4699kr</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<b>Silverkortet</b><br />
|
||||
Styrketräning, konditionsträning. Träna på vald Family Fitness-klubb. Gästträna för 20 kr på annan valfri SportPalatset-klubb. Kundkonto med 1000 kr i kredit. (Gäller endast autogiro).
|
||||
</td>
|
||||
<td>349kr/mån</td>
|
||||
<td>4199kr</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<b>Dagskortet</b><br />
|
||||
Tillgång till all träning vi erbjuder under en dag på valfri SportPalatset-klubb.
|
||||
</td>
|
||||
<td></td>
|
||||
<td>119kr</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<h3 class="mt-5">Kampsportskort</h3>
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Medlemskap</th>
|
||||
<th>Årskostnad</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<b>Fighting Guld</b><br />
|
||||
Kortet ger dig tillträde på alla träningar i alla kampsporter på SportPalatset. Medlemsskapet är personligt.
|
||||
</td>
|
||||
<td>800kr/år</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<b>Fighting Student</b><br />
|
||||
Kortet ger dig tillträde på alla träningar i alla kampsporter på SportPalatset. Medlemsskapet är personligt. Priset gäller vid uppvisande av giltigt Mecenat-kort.
|
||||
</td>
|
||||
<td>550kr/år</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<b>Fighting Pensionär</b><br />
|
||||
Kortet ger dig tillträde på alla träningar i alla kampsporter på SportPalatset. Medlemsskapet är personligt och kräver att du visar legitimation och har fyllt 65år.
|
||||
</td>
|
||||
<td>550kr/år</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
<h3 class="mt-5">Seniorkort Zumba</h3>
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Medlemsskap</th>
|
||||
<th>Pris</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<b>Zumba för old-timers</b><br />
|
||||
Träna exotisk dans med Zumba-inslag för dig över 65. Alla pass anpassas vi att alla kan vara med oavsett vilken nivå du startar från.
|
||||
</td>
|
||||
<td>1499kr/år</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
<h3 class="mt-5">Innebandykortet</h3>
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Medlemsskap</th>
|
||||
<th>Pris</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<b>Kullerbyttan</b><br />
|
||||
Kortet som ger dig mellan 2år och 7år tillgång till alla träningar i vår innebandyhall. Naturligtvis finns tränare på plats.
|
||||
</td>
|
||||
<td>699kr/år</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<b>Ungdomsmedlemskap</b><br />
|
||||
Kortet som ger dig mellan 8år och 14år tillgång till alla träningar i vår innebandyhall. Mobilladdare och WiFi finns, så detta blir som hemma för dig.
|
||||
</td>
|
||||
<td>1099kr/år</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<b>Going for Pro</b><br />
|
||||
Detta är innebandy-kortet för dig som vill satsa lite extra på din innebandy. I detta kort har vi inga mobilladdare och håller WiFi avstängt för att ge dig en så koncentrerad form av innebandyträning som möjligt.
|
||||
</td>
|
||||
<td>1499kr/år</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<p class=" text-center lead mt-5 mb-5 font-weight-bold">För andra priser kontakta din tränare eller receptionen</p>
|
||||
</div>
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
|
||||
|
||||
53
Views/Start/Receptionen.cshtml
Normal file
53
Views/Start/Receptionen.cshtml
Normal file
@@ -0,0 +1,53 @@
|
||||
@model MailViewModel
|
||||
|
||||
@{
|
||||
ViewData["Title"] = "Receptionen";
|
||||
}
|
||||
|
||||
<div class="container mb-5">
|
||||
<h2 class="text-center mt-3 mb-4">@ViewData["Title"]</h2>
|
||||
|
||||
<p class="lead text-center font-weight-bold">Vad kan vi hjälpa till med? Receptionen på SportPalatset är bemannad alla dagar 6.30-23.00</p>
|
||||
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<img src="~/images/map.jpg" alt="Hitta hit" />
|
||||
</div>
|
||||
<div class="col">
|
||||
<h4 class="text-dark">Du hittar oss här</h4>
|
||||
<p class="m-1">Storgatan 1</p>
|
||||
<p class="m-1">432 10 Staden</p>
|
||||
<p class="m-1">Tel. 0123-10 20 30</p>
|
||||
<p class="m-1">Fax. 0123-30 40 50</p>
|
||||
<p class="m-1">info@sportpalatset.se</p>
|
||||
|
||||
<form action="SendMail" method="post">
|
||||
<fieldset class="form-group mt-4">
|
||||
<legend class="mt-3 font-weight-bold">Maila till oss</legend>
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.Epost" class="control-label"></label>
|
||||
<input type="text" class="form-control" asp-for="Epost" tabindex="1" placeholder="Din e-postadress">
|
||||
<span asp-validation-for="Epost" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.Subject" class="control-label"></label>
|
||||
<input type="text" class="form-control" asp-for="Subject" tabindex="2" placeholder="Ärende">
|
||||
<span asp-validation-for="Subject" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="@Model.Message" class="control-label"></label>
|
||||
<textarea name="Message" class="form-control" asp-for="Message" tabindex="3" placeholder="Meddelande"></textarea>
|
||||
<span asp-validation-for="Message" class="text-danger"></span>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Skicka mail</button>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
3
Views/_ViewImports.cshtml
Normal file
3
Views/_ViewImports.cshtml
Normal file
@@ -0,0 +1,3 @@
|
||||
@using PersonSport
|
||||
@using PersonSport.Models
|
||||
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
||||
3
Views/_ViewStart.cshtml
Normal file
3
Views/_ViewStart.cshtml
Normal file
@@ -0,0 +1,3 @@
|
||||
@{
|
||||
Layout = "_Layout";
|
||||
}
|
||||
Reference in New Issue
Block a user