Kurjategijad

Delinquent model: Andmed

using System.ComponentModel.DataAnnotations;

namespace TallinnaRakenduslikKolledz.Models
{
    public class Student
    {
        [Key]
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public DateTime EnrollmentDate { get; set; }
        public ICollection<Enrollment>? Enrollments { get; set; }
        
        public string? Address { get; set; }
        public string? Group { get; set; }
        public string? Email { get; set; }
    }
}

Delinquent View kaustas on 5 vaadet: Index, Create, Delete, Details, Edit.

Delinquent Index on pea vaade kui lähed “kurjategijad” lehele

@model IEnumerable<TallinnaRakenduslikKolledz.Models.Delinquent>

@{
	ViewData["Title"] = "Kurjategija";
}

<h2>Kurjategijad</h2>
<p>
	<a asp-action="Create">Tee uus Kurjategija</a>
</p>

<table class="table">

	<thead>
		<tr>
			<th> @Html.DisplayNameFor(model => model.Id)</th>
			<th> @Html.DisplayNameFor(model => model.FirstName)</th>
			<th> @Html.DisplayNameFor(model => model.LastName)</th>
			<th> @Html.DisplayNameFor(model => model.CurrentViolation)</th>
			<th> @Html.DisplayNameFor(model => model.OnOpetaja)</th>
			<th> @Html.DisplayNameFor(model => model.Description)</th>
			<th> @Html.DisplayNameFor(model => model.Olukord)</th>
			<th>Tööriistad</th>
		</tr>
	</thead>

	<tbody>
		@foreach (var delinquent in Model)
		{
			
			<tr>
				<td>
					@Html.DisplayFor(modelItem => delinquent.Id)
				</td>
				<td>
					@Html.DisplayFor(modelItem => delinquent.FirstName)
				</td>
				<td>
					@Html.DisplayFor(modelItem => delinquent.LastName)
				</td>
				<td>
					@Html.DisplayFor(modelItem => delinquent.CurrentViolation)
				</td>
				<td>
					@Html.DisplayFor(modelItem => delinquent.OnOpetaja)
				</td>
				<td>
					@Html.DisplayFor(modelItem => delinquent.Description)
				</td>
				<td>
					@Html.DisplayFor(modelItem => delinquent.Olukord)
				</td>
				<td>
					<a asp-action="Edit" asp-route-id="@delinquent.Id">Muuda</a>
					<a asp-action="Details" asp-route-id="@delinquent.Id">Vaata</a>
					<a asp-action="Delete" asp-route-id="@delinquent.Id">Kustuta</a>
				</td>
			</tr>
		}
	</tbody>
</table>

Delinquent Create vaade laseb kurjategijaid lisada Indexi.

@model TallinnaRakenduslikKolledz.Models.Delinquent

@{
	ViewData["Title"] = "Loo uus Kurjategija";
}

<h1>Loo uus Kurjategija</h1>
<hr />
<div class="row">
	<div class="col-md-4">
		<form asp-action="Create">
			<div asp-validation-summary="ModelOnly" class="=text-danger"></div>
			<div class="form-group">
				<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 class="form-group">
				<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 class="form-group">
				<label asp-for="CurrentViolation" class="control-label"></label>
				<input asp-for="CurrentViolation" class="form-control" />
				<span asp-validation-for="CurrentViolation" class="text-danger"></span>
			</div>
			<div class="form-group">
				<label asp-for="OnOpetaja" class="control-label"></label>
				<input asp-for="OnOpetaja" class="form-control" />
				<span asp-validation-for="OnOpetaja" class="text-danger"></span>
			</div>
			<div class="form-group">
				<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="Olukord" class="control-label"></label>
				<input asp-for="Olukord" class="form-control" />
				<span asp-validation-for="Olukord" class="text-danger"></span>
			</div>
			<div class="form-group">
				<input type="submit" value="Sisesta" class="btn btn-primary" />
			</div>

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

Delinquent Delete vaade laseb kurjategijaid kustutada.

@model TallinnaRakenduslikKolledz.Models.Delinquent
@{
	ViewData["Title"] = "Kustuta Kurjategija";
}
<h1>Kustuta Kurjategija</h1>
<h3>Kas soovid kustudada Kurjategija</h3>
<div>
	<h4>@Html.DisplayFor(Model => Model.FirstName)</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.CurrentViolation)</dt>
		<dt class="col-sm-2">@Html.DisplayFor(Model => Model.CurrentViolation)</dt>
	</dl>
	<dl class="row">
		<dt class="col-sm-2">@Html.DisplayNameFor(Model => Model.OnOpetaja)</dt>
		<dt class="col-sm-2">@Html.DisplayFor(Model => Model.OnOpetaja)</dt>
	</dl>
	<dl class="row">
		<dt class="col-sm-2">@Html.DisplayNameFor(Model => Model.Description)</dt>
		<dt class="col-sm-2">@Html.DisplayFor(Model => Model.Description)</dt>
	</dl>
	<dl class="row">
		<dt class="col-sm-2">@Html.DisplayNameFor(Model => Model.Olukord)</dt>
		<dt class="col-sm-2">@Html.DisplayFor(Model => Model.Olukord)</dt>
	</dl>




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

Delinquent Details vaade laseb kurjategijate admeid vaatada.

@model TallinnaRakenduslikKolledz.Models.Delinquent

@{
	ViewData["Title"] = "Kurjategija vaade";
}

<h1>kurjategija vaade</h1>

<div>
	<h4>Kurjategija @Model.FirstName @Model.LastName</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.CurrentViolation)</dt>
		<dd class="col-sm-10">@Html.DisplayFor(model => model.CurrentViolation)</dd>
	</dl>
	<dl class="row">
		<dt class="col-sm-2">@Html.DisplayNameFor(model => model.OnOpetaja)</dt>
		<dd class="col-sm-10">@Html.DisplayFor(model => model.OnOpetaja)</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.Olukord)</dt>
		<dd class="col-sm-10">@Html.DisplayFor(model => model.Olukord)</dd>
	</dl>


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

Delinquent Edit vaade laseb kurjategijate andmeid muuta.

@model TallinnaRakenduslikKolledz.Models.Delinquent

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

<h1>Muuda Kurjategija</h1>
<hr />
<div class="row">
	<div class="col-md-4">
		<form asp-action="EditConfirmed">
			<div asp-validation-summary="ModelOnly" class="=text-danger"></div>
			<input asp-for="Id" type="hidden" />
			<div class="form-group">
				<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 class="form-group">
				<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 class="form-group">
				<label asp-for="CurrentViolation" class="control-label"></label>
				<input asp-for="CurrentViolation" class="form-control" />
				<span asp-validation-for="CurrentViolation" class="text-danger"></span>
			</div>
			<div class="form-group">
				<label asp-for="OnOpetaja" class="control-label"></label>
				<input asp-for="OnOpetaja" class="form-control" />
				<span asp-validation-for="OnOpetaja" class="text-danger"></span>
			</div>
			<div class="form-group">
				<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="Olukord" class="control-label"></label>
				<input asp-for="Olukord" class="form-control" />
				<span asp-validation-for="Olukord" class="text-danger"></span>
			</div>
			<div class="form-group">
				<input type="submit" value="Sisesta" class="btn btn-primary" />
			</div>

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

Controllers:

Seda kasutatakse, et kuvada kurjategijate nimekirja, lisada uusi kurjategijaid, muuda olemasolevaid kurjategijaid, näitada kurjategijate detaile ja kustutada kurjategijaid

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

namespace TallinnaRakenduslikKolledz.Controllers
{
    public class DelinquentsController : Controller
    {
        private readonly SchoolContext _context;

        public DelinquentsController(SchoolContext context)
        {
            _context = context;
        }
        [HttpGet]
        public async Task<IActionResult> Index()
        {
            return View(await _context.Delinquents.ToListAsync());
        }
        [HttpGet]
        public IActionResult Create()
        {
            return View();
        }
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Create([Bind("Id,FirstName,LastName,CurrentViolation,OnOpetaja,Description,Olukord")] Delinquent delinquent)
        {
            if (ModelState.IsValid)
            {
                _context.Delinquents.Add(delinquent);
                await _context.SaveChangesAsync();
                return RedirectToAction("Index");
            }
            return View(delinquent);
        }
        [HttpGet]
        public async Task<IActionResult> Details(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }
            var delinquent = await _context.Delinquents.FirstOrDefaultAsync(c => c.Id == 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.FindAsync(Id);
            if (delinquent == null)
            {
                return NotFound();
            }
            return View(delinquent);
        }
        [HttpPost, ActionName("EditConfirmed")]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> EditConfirmed(int Id,[Bind("Id,FirstName,LastName,CurrentViolation,OnOpetaja,Description,Olukord")] Delinquent delinquent)
        {
            if (Id != delinquent.Id)
            {
                return NotFound();
            }
            if (ModelState.IsValid)
            {
                _context.Delinquents.Update(delinquent);
                await _context.SaveChangesAsync();
                return RedirectToAction("Index");
                // return RedirectToAction(nameof(Index))
            }
            return View(delinquent);
        }
        [HttpGet]
        public async Task<IActionResult> Delete(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }
            var delinquent = await _context.Delinquents.FirstOrDefaultAsync(m => m.Id == id);
            if (delinquent == null)
            {
                return NotFound();
            }
            return View(delinquent);
        }

        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> DeleteConfirmed(int id)
        {
            var delinquent = await _context.Delinquents.FindAsync(id);
            _context.Delinquents.Remove(delinquent);
            await _context.SaveChangesAsync();
            return RedirectToAction("Index");
        }
    } 
}

Andmebaasi kontekst

        private readonly SchoolContext _context;
        public DelinquentsController(SchoolContext context)
        {
            _context = context;
        }

SchoolContext on Entity Frameworki DbContext

Dependency Injectioni tehakse sellele autamaatselt

_context.Delinquents tähendab delinquents tabeli

Index

        [HttpGet]
        public async Task<IActionResult> Index()
        {
            return View(await _context.Delinquents.ToListAsync());
        }

Get päring loeb kõik kurjategijad andmebaasist ja saadab need vaatese

Create Get

        [HttpGet]
        public IActionResult Create()
        {
            return View();
        }

Kuvab tühja vormi uue kurjategija lisamiseks

Create Post

        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Create([Bind("Id,FirstName,LastName,CurrentViolation,OnOpetaja,Description,Olukord")] Delinquent delinquent)
        {
            if (ModelState.IsValid)
            {
                _context.Delinquents.Add(delinquent);
                await _context.SaveChangesAsync();
                return RedirectToAction("Index");
            }
            return View(delinquent);
        }

Meetod uue kurjategija andmete turvaliselt salvetamiseks, see kontrollib kas sisetatud andmed on korrektsed, kui on lisatakse andmed asünkroonselt andmebaasi ning suunadakse kasutaja peavaatese(index’i)

Edit Get

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

Meetod kus kontrollitakse kas kurjategija id on olemas kui on saadetakse vaatesse

Edit Post

        [HttpPost, ActionName("EditConfirmed")]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> EditConfirmed(int Id,[Bind("Id,FirstName,LastName,CurrentViolation,OnOpetaja,Description,Olukord")] Delinquent delinquent)
        {
            if (Id != delinquent.Id)
            {
                return NotFound();
            }
            if (ModelState.IsValid)
            {
                _context.Delinquents.Update(delinquent);
                await _context.SaveChangesAsync();
                return RedirectToAction("Index");
                // return RedirectToAction(nameof(Index))
            }
            return View(delinquent);
        }

Meetod kus kontrollitakse kas turvaparameetrid ja delinquent id kattuvad, valideeridakse sisestatud andmed ja salvestatakse asünkroonselt andmebaasi ning suunadakse kurjategijate nimekirja

Details Get

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

Meetod kus kuvatakse ühe kurjategija andmeid

Delete Get

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

Meetod kus kuvatakse Delete vaadet

Delete Post

        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> DeleteConfirmed(int id)
        {
            var delinquent = await _context.Delinquents.FindAsync(id);
            _context.Delinquents.Remove(delinquent);
            await _context.SaveChangesAsync();
            return RedirectToAction("Index");
        }

Meetod kus leitakse kurjategija ja eemaldatakse andmebaasist id järgi,siis salvetatakse muudatused ja suunatakse tagasi kurjategija nimekirja