Delinquents Controller, Model ja View

Controller

The SchoolContext _context tells the Controller and View what the database looks like and all the information in it. Index lets us view all the Delinquents information in general using the ToListAsync() method which puts all the books into a table. Create first gives us the Create view and then once the information is given, it checks that the model is correct and if so, adds it to the database and takes you back to the Index. It also uses SaveChangesAsync to save the information Delete deletes the given selection after checking that it exists. It first uses FirstorDefaultAsync which returns the first element of the sequence asynchronously. And uses the Lambda method to briefly show the anonymous method. And then saves it to the database after deleting the selected object. Details lets us view more detailed information about the given object. It also uses the FirstorDefaultAsync and Lambda methods. Edit lets us modify the given object. It uses the FirstorDefaultAsync and Lambda methods. It also has a post method which then saves everything that was changed.

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.EntityFrameworkCore;
using TallinnaRakenduslikKolledzKaur.Data;
using TallinnaRakenduslikKolledzKaur.Models;

namespace TallinnaRakenduslikKolledzKaur.Controllers
{
    public class DelinquentsController : Controller
    {
        private readonly SchoolContext _context;
        public DelinquentsController(SchoolContext context)
        {
            _context = context;
        }
        public async Task<IActionResult> Index()
        {
            return View(await _context.Delinquents.ToListAsync());
        }
        
        [HttpGet]
        public IActionResult Create()
        {
            return View();
        }
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Create(Delinquent delinquent)
        {
            if (ModelState.IsValid)
            {
                _context.Delinquents.Add(delinquent);
                await _context.SaveChangesAsync();
            }

            return RedirectToAction("Index");
        }
        [HttpGet]
        public async Task<IActionResult> Details(int? Id)
        {
            if (Id == null)
            {
                return NotFound();
            }
            var delinquent = await _context.Delinquents.FirstOrDefaultAsync(d => d.BreakerId == Id);
            if (delinquent == null)
            {
                return NotFound();
            }
            return View(delinquent);
        }

        [HttpGet]
        public async Task<IActionResult> Edit(int? Id)
        {
            if (Id == null)
            {
                return NotFound();
            }
            var delinquent = await _context.Delinquents.FirstOrDefaultAsync(d => d.BreakerId == Id);
            if (delinquent == null)
            {
                return NotFound();
            }
            _context.Delinquents.Update(delinquent);
            return View(delinquent);
        }
        [HttpPost, ActionName("Edit")]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> EditConfirmed([Bind("BreakerId,FirstName,LastName,Violations,Description,Position")] Delinquent delinquent)
        {
            _context.Delinquents.Update(delinquent);
            await _context.SaveChangesAsync();
            return RedirectToAction("Index");
        }

        [HttpGet]
        public async Task<IActionResult> Delete(int? Id)
        {
            if (Id == null)
            {
                return NotFound();
            }
            var delinquent = await _context.Delinquents.FirstOrDefaultAsync(d => d.BreakerId == Id);
            if (delinquent == null)
            {
                return NotFound();
            }
            return View(delinquent);
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Delete(Delinquent delinquent)
        {
            if (await _context.Delinquents.AnyAsync(d => d.BreakerId == delinquent.BreakerId))
            {
                _context.Delinquents.Remove(delinquent);
                await _context.SaveChangesAsync();
            }
            return RedirectToAction("Index");
        }
    }
}

Mudel

using System.ComponentModel.DataAnnotations;

namespace TallinnaRakenduslikKolledzKaur.Models
{
    public enum Violations
    {
        Vandalism, IPhoneUser, Smoking, Bullying, AI_User
    }
    public enum Positions
    {
        Student,Instructor
    }
    public class Delinquent
    {
        [Key]
        public int BreakerId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public Violations Violations { get; set; }
        public string? Description { get; set; }
        public Positions Position {  get; set; }


    }
}

View

Create

@model TallinnaRakenduslikKolledzKaur.Models.Delinquent
@{
	ViewData["Title"] = "Uus Delinquent";
}
<h1>Tee uus delinquent</h1>
<h4>Sisesta info:</h4>
<hr />
<div class="row">
	<div class="col-md-4">
		<form asp-action="Create">
			<div asp-validation-summary="ModelOnly" class="text-danger"></div>
			<!--<div>
				<label asp-for="CourseId" class="control-label"></label>
				<input asp-for="CourseId" class="form-control" />
				<span asp-validation-for="CourseId" class="text-danger"></span>
			</div> -->
			<div>
				<label asp-for="FirstName" class="control-label"></label>
				<input asp-for="FirstName" class="form-control" />
				<span asp-validation-for="FirstName" class="text-danger"></span>
			</div>
			<div>
				<label asp-for="LastName" class="control-label"></label>
				<input asp-for="LastName" class="form-control" />
				<span asp-validation-for="LastName" class="text-danger"></span>
			</div>
			<div>
				<label asp-for="Description" class="control-label"></label>
				<input asp-for="Description" class="form-control" />
				<span asp-validation-for="Description" class="text-danger"></span>
			</div>
			<div class="form-group">
				<label asp-for="Position" class="control-label"></label>
				<select asp-for="Position" class="control-label">
					<option value="">-- Select Position --</option>
					<option value="Student">Student</option>
					<option value="Instructor">Instructor</option>
				</select>
				<span asp-validation-for="Position" class="text-danger"></span>
			</div>
			<div class="form-group">
				<label asp-for="Violations" class="control-label"></label>
				<select asp-for="Violations" class="control-label">
					<option value="">-- Select Violation --</option>
					<option value="AI_User">AI User</option>
					<option value="Bullying">Bully</option>
					<option value="Smoking">Smoker</option>
					<option value="IPhoneUser">IPhone User</option>
					<option value="Vandalism">Vandalism</option>
				</select>
				<span asp-validation-for="Violations" class="text-danger"></span>
			</div>
			<div class="form-group">
				<input type="submit" value="Tee uus" class="btn btn-primary" /> | <a asp-action="Index" class="btn btn-outline-primary">Tühista</a>
			</div>
		</form>
	</div>
</div>

Delete

@model TallinnaRakenduslikKolledzKaur.Models.Delinquent

@{
	ViewData["Title"] = "Kustuta Delinquent";
}

<h1>Kustuta Delinquent</h1>
<h3>
	Kas oled kindel et tahad kustudada @Html.DisplayFor(Model => Model.FirstName)
</h3>
<div>
	<h4>Delinquent</h4>
	<hr />
	<dt class="col-sm-2">@Html.DisplayNameFor(Model => Model.LastName)</dt>
	<dt class="col-sm-2">@Html.DisplayFor(Model => Model.LastName)</dt>
	<dt class="col-sm-2">@Html.DisplayNameFor(Model => Model.FirstName)</dt>
	<dt class="col-sm-2">@Html.DisplayFor(Model => Model.FirstName)</dt>
	<dt class="col-sm-2">@Html.DisplayNameFor(Model => Model.Violations)</dt>
	<dt class="col-sm-2">@Html.DisplayFor(Model => Model.Violations)</dt>
	<dt class="col-sm-2">@Html.DisplayNameFor(Model => Model.Description)</dt>
	<dt class="col-sm-2">@Html.DisplayFor(Model => Model.Description)</dt>
	<dt class="col-sm-2">@Html.DisplayNameFor(Model => Model.Position)</dt>
	<dt class="col-sm-2">@Html.DisplayFor(Model => Model.Position)</dt>

	<form asp-action="Delete">
		<input type="hidden" asp-for="BreakerId" />
		<input type="submit" value="Kustuta Delinquent" class="btn btn-danger" /> | <a asp-action="Index">Tühista</a>
	</form>
</div>

Details

@model TallinnaRakenduslikKolledzKaur.Models.Delinquent

@{
	ViewData["Title"] = "Viewing delinquents";
}

<div>
	<h4>Delinquent</h4>
	<hr />
	<dl class="row">
		<dt class="col-sm-2">@Html.DisplayNameFor(Model => Model.FirstName)</dt>
		<dd class="col-sm-10">@Html.DisplayFor(Model => Model.FirstName)</dd>
	</dl>
	<dl class="row">
		<dt class="col-sm-2">@Html.DisplayNameFor(Model => Model.LastName)</dt>
		<dd class="col-sm-10">@Html.DisplayFor(Model => Model.LastName)</dd>
	</dl>
	<dl class="row">
		<dt class="col-sm-2">@Html.DisplayNameFor(Model => Model.Violations)</dt>
		<dd class="col-sm-10">@Html.DisplayFor(Model => Model.Violations)</dd>
	</dl>
	<dl class="row">
		<dt class="col-sm-2">@Html.DisplayNameFor(Model => Model.Description)</dt>
		<dd class="col-sm-10">@Html.DisplayFor(Model => Model.Description)</dd>
	</dl>
	<dl class="row">
		<dt class="col-sm-2">@Html.DisplayNameFor(Model => Model.Position)</dt>
		<dd class="col-sm-10">@Html.DisplayFor(Model => Model.Position)</dd>
	</dl>
</div>


<form asp-action="Tagasi">
	<input type="hidden" asp-for="BreakerId" />
	<a asp-action="Index">Tagasi</a>
</form>

Edit

@model TallinnaRakenduslikKolledzKaur.Models.Delinquent

@{
	ViewData["Title"] = "Muuda Delinquent";
}

<h1>Muuda Delinquent</h1>
<hr />
<div class="row">
	<div class="col-md-4">
		<form asp-action="Edit">
			<input type="hidden" asp-for="@Model.BreakerId" />
			<div asp-validation-summary="ModelOnly" class="text-danger"></div>

			<div>
				<label asp-for="FirstName" class="control-label"></label>
				<input asp-for="FirstName" class="form-control" />
				<span asp-validation-for="FirstName" class="text-danger"></span>
			</div>
			<div>
				<label asp-for="LastName" class="control-label"></label>
				<input asp-for="LastName" class="form-control" />
				<span asp-validation-for="LastName" class="text-danger"></span>
			</div>
			<div>
				<label asp-for="Description" class="control-label"></label>
				<input asp-for="Description" class="form-control" />
				<span asp-validation-for="Description" class="text-danger"></span>
			</div>
			<div class="form-group">
				<label asp-for="Position" class="control-label"></label>
				<select asp-for="Position" class="control-label">
					<option value="">-- Select Position --</option>
					<option value="Student">Student</option>
					<option value="Instructor">Instructor</option>
				</select>
				<span asp-validation-for="Position" class="text-danger"></span>
			</div>
			<div class="form-group">
				<label asp-for="Violations" class="control-label"></label>
				<select asp-for="Violations" class="control-label">
					<option value="">-- Select Violation --</option>
					<option value="AI_User">AI User</option>
					<option value="Bullying">Bully</option>
					<option value="Smoking">Smoker</option>
					<option value="IPhoneUser">IPhone User</option>
					<option value="Vandalism">Vandalism</option>
				</select>
				<span asp-validation-for="Violations" class="text-danger"></span>
			</div>
			<div class="form-group">
				<input type="submit" asp-route-id="@Model.BreakerId" value="Edit" class="btn btn-primary" />
			</div>
		</form>
	</div>
</div>

<div>
	<a asp-action="Index">Mine tagasi loendisse</a>
</div>

Index

@model IEnumerable<TallinnaRakenduslikKolledzKaur.Models.Delinquent>
@{
	ViewData["Title"] = "Delinquents";
}
<h1>Delinquents Loend:</h1>
<p>
	<a asp-action="Create">Sisesta Delinquent</a>
</p>
<table class="table">
	<thead>
		<tr>
			<th>
				@Html.DisplayNameFor(Model => Model.BreakerId)
			</th>
			<th>
				@Html.DisplayNameFor(Model => Model.LastName)
			</th>
			<th>
				@Html.DisplayNameFor(Model => Model.FirstName)
			</th>
			<th>
				@Html.DisplayNameFor(Model => Model.Violations)
			</th>
			<th>
				@Html.DisplayNameFor(Model => Model.Description)
			</th>
			<th>
				@Html.DisplayNameFor(Model => Model.Position)
			</th>
			<th>Tööriistad</th>
		</tr>
	</thead>
	<tbody>
		@foreach (var delinquent in Model)
		{
			<tr>
				<td>
					@Html.DisplayFor(modelItem => delinquent.BreakerId)
				</td>
				<td>
					@Html.DisplayFor(modelItem => delinquent.LastName)
				</td>
				<td>
					@Html.DisplayFor(modelItem => delinquent.FirstName)
				</td>
				<td>
					@Html.DisplayFor(modelItem => delinquent.Violations)
				</td>
				<td>
					@Html.DisplayFor(modelItem => delinquent.Description)
				</td>
				<td>
					@Html.DisplayFor(modelItem => delinquent.Position)
				</td>
				<td>
					<a asp-action="Edit" asp-route-id="@delinquent.BreakerId">Muuda</a>
					<a asp-action="Details" asp-route-id="@delinquent.BreakerId">Vaata</a>
					<a asp-action="Delete" asp-route-id="@delinquent.BreakerId">Kustuta</a>
				</td>
			</tr>
		}
	</tbody>
</table>