Delinquents mudel
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace TallinnaRakenduslikKolllež.Models
{
public enum Violation
{
Kaklus,
Narkootikumid,
Suitsetamine,
Hilinemine,
Mustanahaline
}
public class Delinquent
{
[Key]
public int DelinquentID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Violation? CurrentViolation { get; set; }
[Display(Name = "Kas on Õpetaja")]
public bool OnOpetaja { get; set; }
[Display(Name = "Kirjeldus")]
public string Description { get; set; }
[Display(Name = "Olukord")]
public string Olukord { get; set; }
}
}
View
Index View- kuvab tähtsamad andmed ja funktsioonide nupud.
@model IEnumerable<TallinnaRakenduslikKolllež.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.DelinquentID)</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.DelinquentID)
</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.DelinquentID" class="btn btn-primary">Muuda</a>
<a asp-action="Details" asp-route-id="@delinquent.DelinquentID" class="btn btn-primary">Vaata</a>
<a asp-action="Delete" asp-route-id="@delinquent.DelinquentID" class="btn btn-danger">Kustuta</a>
</td>
</tr>
}
</tbody>
</table>
Create View – vaade laseb luua uued õpetajad
@model TallinnaRakenduslikKolllež.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>
<label asp-for="CurrentViolation" class="control-label"></label>
<select asp-for="CurrentViolation" class="form-control" asp-items="ViewBag.CurrentViolation">
<option value="" class="form-control">-- Vali kuritegu--</option>
</select>
<span asp-validation-for="CurrentViolation" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="OnOpetaja" class="form-check-label"></label>
<input asp-for="OnOpetaja" type="checkbox" class="form-check-input" />
<span asp-validation-for="OnOpetaja" class="btn-check"></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>
Edit view- kuvab kõik andmed ja saad neid konfigureerida.
@model TallinnaRakenduslikKolllež.Models.Delinquent
@{
ViewData["Title"] = "Muuda Kurjategija";
}
<h3>Kas soovid muuta kurjategijat - @(Html.DisplayFor(model => model.FirstName)) @(Html.DisplayFor(model => model.LastName))</h3>
<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="DelinquentID" 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>
<label asp-for="CurrentViolation" class="control-label"></label>
<select asp-for="CurrentViolation" class="form-control" asp-items="ViewBag.CurrentViolation">
<option value="" class="form-control">-- Vali kuritegu--</option>
</select>
<span asp-validation-for="CurrentViolation" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="OnOpetaja" class="form-check-label"></label>
<input asp-for="OnOpetaja" type="checkbox" class="form-check-input" />
<span asp-validation-for="OnOpetaja" class="btn-check"></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-danger" />
</div>
</form>
</div>
</div>
<div>
<a asp-action="Index">Mine tagasi loendisse</a>
</div>
Delete View- kuvab andmed ja delete nupu
@model TallinnaRakenduslikKolllež.Models.Delinquent
@{
ViewData["Title"] = "Details";
}
<h3>Kas soovid kustutada kurjategija @(Html.DisplayFor(model => model.FirstName)) @(Html.DisplayFor(model => model.LastName))</h3>
<div>
<h4>Kurjategija</h4>
<hr />
<hr />
<dl class="row">
<dt class="col-sm-2"> @Html.DisplayNameFor(Model => Model.DelinquentID) </dt>
<dd class="col-sm-10"> @Html.DisplayFor(Model => Model.DelinquentID)</dd>
</dl>
<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>
<form asp-action="Delete">
<input type="hidden" asp-for="DelinquentID" />
<input type="submit" value="Kustuta" class="btn btn-danger" /> <a asp-action="Index">Tühista</a>
</form>
</div>
Details View – kuvab kõik andmed’
@model TallinnaRakenduslikKolllež.Models.Delinquent
@{
ViewData["Title"] = "Details";
}
<h1>Details</h1>
<h4>Kurjategijad</h4>
<hr />
<dl class="row">
<dt class="col-sm-2"> @Html.DisplayNameFor(Model => Model.DelinquentID) </dt>
<dd class="col-sm-10"> @Html.DisplayFor(Model => Model.DelinquentID)</dd>
</dl>
<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>
<a asp-action="Index">Mine tagasi loendisse</a>
</div>
Controller
Index- laeb asünkroonselt kõik osakonnad andmebaasist ) ja kuvab need listis.
Create- GET kuvab tühja vormi, kuhu saab sisestada uue kurjategija andmed populeerib dropdownlisti Violation väärtustega mudelist. POST meetod võtab vastu vormist saadetud andmed, kontrollib nende kehtivust ja kui kõik on korrektne, lisab uue kurjategija andmebaasi ning suunab kasutaja tagasi indexisse.
Details – GET otsib konkreetse kurjategija ID järgi ja kuvab kõik andmed. Kui ID’d või isikut ei leita, tagastatakse NotFound vastus.
Delete- GET meetod leiab õigusrikkuja ID põhjal ja kuvab kinnitusvaate. POST meetod (DeleteConfirmed) leiab andmerea FindAsync abil, eemaldab selle andmebaasist ja salvestab muudatused, ning suunab kasutaja tagasi index vaatsesse.
Edit- GET kuvab täidetud vormi kurjategija andmetega, milles saab muuta kurjategija andmed, populeerib dropdownlisti Violation väärtustega mudelist. POST meetod (EditConfirmed) uuendab andmebaasis olemasolevat kirjet uute andmetega, kui need on kehtivad ja suunab kasutaja tagasi indexi.
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.EntityFrameworkCore;
using TallinnaRakenduslikKolllež.Data;
using TallinnaRakenduslikKolllež.Models;
namespace TallinnaRakenduslikKolllež.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()
{
ViewBag.CurrentViolation = new SelectList(Enum.GetValues(typeof(Violation))
.Cast<Violation>()
.Select(v => new SelectListItem
{
Text = v.ToString(),
Value = v.ToString()
}), "Value", "Text");
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("DelinquentID,FirstName,LastName,Violation,CurrentViolation,OnOpetaja,Description,Olukord")] Delinquent delinquent)
{
if (ModelState.IsValid)
{
_context.Delinquents.Add(delinquent);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
ViewBag.CurrentViolation = new SelectList(Enum.GetValues(typeof(Violation))
.Cast<Violation>()
.Select(v => new SelectListItem
{
Text = v.ToString(),
Value = v.ToString()
}), "Value", "Text");
return View(delinquent);
}
[HttpGet]
public async Task<IActionResult> Details(int? id)
{
if (id == null)
{
return NotFound();
}
var delinquent = await _context.Delinquents.FirstOrDefaultAsync(m => m.DelinquentID == id);
if (delinquent == null)
{
return NotFound();
}
return View(delinquent);
}
[HttpGet]
public async Task<IActionResult> Delete(int? id)
{
if (id == null)
{
return NotFound();
}
var delinquent = await _context.Delinquents.FirstOrDefaultAsync(a => a.DelinquentID == 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");
}
[HttpGet]
public async Task<IActionResult> Edit(int? id)
{
if (id == null)
{
return NotFound();
}
var delinquent = await _context.Delinquents.FirstOrDefaultAsync(a => a.DelinquentID == id);
if (delinquent == null)
{
return NotFound();
}
ViewBag.CurrentViolation = new SelectList(Enum.GetValues(typeof(Violation))
.Cast<Violation>()
.Select(v => new SelectListItem
{
Text = v.ToString(),
Value = v.ToString()
}), "Value", "Text");
return View(delinquent);
}
[HttpPost, ActionName("EditConfirmed")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> EditConfirmed([Bind("DelinquentID,FirstName,LastName,CurrentViolation,OnOpetaja,Description,Olukord")] Delinquent delinquent)
{
if (ModelState.IsValid)
{
_context.Delinquents.Update(delinquent);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
// return RedirectToAction(nameof(Index))
}
return View(delinquent);
}
}
}