Programmeerimine

Kooli projekt “TallinnaRakenduslikKolledž”.

Projekti eesmärgiks on luua kooli veebileht ja õppida kasutada C# Net MVC.

Veebilehe haldaja saab lisada andmebaasi erinevaid õpilasi, õpetajaid, osakondi, kursuseid jnt. Samuti on võimalus muuta obejekti andmeid, vajadusel kustutada objekti ja niisama vaadata objekti andmeid.

Projektis on olemas view-d, läbi nende näeb nii haldaja kui ka kasutaja veebilehte.

Index view Course kaustas:

@model IEnumerable<TallinnaRakenduslikKolledz.Models.Course>
@{
	ViewData["Title"] = "Kursused";
}
<h2>Kursused</h2>
<p>
	<a asp-action="Create">Tee uus kursus</a>
</p>

<table class="table">

	<thead>
		<tr>
			<th> @Html.DisplayNameFor(model => model.CourseId)</th>
			<th> @Html.DisplayNameFor(model => model.Title)</th>
			<th> @Html.DisplayNameFor(model => model.Credits)</th>
			<th> @Html.DisplayNameFor(model => model.Department.Name)</th>
			<th>Tööriistad</th>
			@*<th> @Html.DisplayNameFor(model => model.Department.Administrator.FullName)</th>*@
		</tr>
	</thead>

	<tbody>
		@foreach (var course in Model)
		{
			<tr>
				<td>
					@Html.DisplayFor(modelItem => course.CourseId)
				</td>
				<td>
					@Html.DisplayFor(modelItem => course.Title)
				</td>
				<td>
					@Html.DisplayFor(modelItem => course.Credits)
				</td>
				<td>
					@Html.DisplayFor(modelItem => course.Department.Name)
				</td>
			
				@*
					<td>
					@Html.DisplayFor(modelItem => course.Department.Administrator.FullName)
				</td>
				*@
				<td>
					<a asp-action="Delete" asp-route-id="@course.CourseId" class="btn btn-danger">Kustuta</a>
					<a asp-action="Details" asp-route-id="@course.CourseId" class="btn btn-primary">Vaata</a>
					<a asp-action="Edit" asp-route-id="@course.CourseId" class="btn btn-primary">Muuda</a>
				</td>
			</tr>
			
		}		
	</tbody>

</table>



Course index view näitab andmeid mis on lisatud Coursile(Nimi, ID jnt). Samuti on seal näha kõike nuppe(Create, delete, edit ja details) kõike nuppe peale Create nuppu on näha ainult siis kui on lisatud kursus.

Create/Edit view Course kaustas:

@model TallinnaRakenduslikKolledz.Models.Course
@{
	ViewData["Title"] = "uus kursus";
}

@if (ViewBag.SelectAction == "Create")
{

	<h1>Tee uus kursus</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="Title" class="control-label"></label>
					<input asp-for="Title" class="form-label" />
					<span asp-validation-for="Title" class="text-danger"></span>
				</div>
				<div>
					<label asp-for="Credits" class="control-label"></label>
					<input asp-for="Credits" class="form-label" />
					<span asp-validation-for="Credits" class="text-danger"></span>
				</div>
				<div>
					<label asp-for="Department" class="control-label"></label>
					<select asp-for="DepartmentID" class="form-control" asp-items="ViewBag.DepartmentID">
						<option value="" class="form-control">--Vali osakond--</option>
					</select>
					<span asp-validation-for="DepartmentID" 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-danger">Tühista</a>
				</div>
			</form>
		</div>
	</div>
}
else
{
	<h1>Muuda osakonda</h1>
	<div class="row">
		<div class="col-md-4">
			<form asp-action="Edit">
				<div asp-validation-summary="ModelOnly" class="text-danger"></div>
				<input type="hidden" asp-for="CourseId"/>

				<div class="form-group">
					<label asp-for="Title" class="control-label"></label>
					<input asp-for="Title" class="form-control" />
					<span asp-validation-for="Title" class="text-danger"></span>
				</div>

				<div class="form-group">
					<label asp-for="Credits" class="control-label"></label>
					<input asp-for="Credits" class="form-control" />
					<span asp-validation-for="Credits" class="text-danger"></span>
				</div>

				<div>
					<label asp-for="Department" class="control-label"></label>
					<select asp-for="DepartmentID" class="form-control" asp-items="ViewBag.DepartmentID">
						<option value="" class="form-control">--Vali osakond--</option>
					</select>
					<span asp-validation-for="DepartmentID" class="text-danger"></span>
				</div>

				<div class="form-group">
					<input type="submit" value="Muuda" class="btn btn-primary" />
				</div>


			</form>

		</div>


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


Selles view-s on samal ajal nii create view kui ka edit view. Töötab see viewbag-i abil, mis seadetakse controlleris. Kui indexis vajutad “Tee uus osakond” nuppu controller seadistab viewbagi väärtuse Create-ks. See vaade kontrollib kas viewbagi väärtus on Create, kui on tõene siis avaneb vaade kus saab kursust lisada. Kui, aga vajutad “Muuda” nuppu siis controller seadistab viewbagi väärtuseks Edit, see ei saa olla tõene seega avaneb teine view ehk muuda view, kus saab muuta olemas olevat osakonda.

Delete/Details view Course kaustas:

@model TallinnaRakenduslikKolledz.Models.Course
@{
	ViewData["Title"] = "kustuta Kursus";
}
<h2>@Html.DisplayFor(modelItem => Model.Title)</h2>

<p>
	<h3>Kustuta/Vaata kursust:</h3>
</p>
<div>
	<hr />
	<dl class="row">
		<dt class="col-sm-2">@Html.DisplayNameFor(model => model.DepartmentID)</dt>
		<dt class="col-sm-2">@Html.DisplayFor(model => model.DepartmentID)</dt>
		<dt class="col-sm-2">@Html.DisplayNameFor(model => model.Credits)</dt>
		<dt class="col-sm-2">@Html.DisplayFor(model => model.Credits)</dt>
		<dt class="col-sm-2">@Html.DisplayNameFor(model => model.Department)</dt>
		<dt class="col-sm-2">@Html.DisplayFor(model => model.Department)</dt>
		
	</dl>
	<form asp-action="Delete">
		<input type="hidden" asp-for="DepartmentID" />
		<a asp-action="index">Tühista</a>
		@if (ViewBag.SelectAction == "DeleteDetails")
		{
			<input type="submit" value="Kustuta" class="btn btn-danger" />
		}

	</form>
</div>

Selles view-s on samal ajal nii Delete view kui ka Details view. Delete ja Details on peaaegu sama view, ainuke asi mis erineb on see, et Delete views on nupp “Kustuta”. Töötab see viewbag-i abil, mis seadetakse controlleris. Kui indexis vajutad “Kustuta” nuppu controller seadistab viewbagi väärtuse DeleteDetails-ks. See vaade kontrollib kas viewbagi väärtus on DeleteDetails, kui on tõene siis vaadele lisandub nupp “Kustuta” ja saab olemas olevat kursust kustutada. Kui, aga vajutad “Vaata” nuppu siis controller seadistab viewbagi väärtuseks Details, see ei saa olla tõene seega avaneb teine view ehk Vaata view ja ainuke erinevus on, et seal ei ole “Kustuta” nuppu.

Index view Delinqunets kaustas:

@model IEnumerable<TallinnaRakenduslikKolledz.Models.Delinquent>
@{
	ViewData["Title"] = "Kuritegijad";
}

<h2>Kuritegijad</h2>
<p>
	<a asp-action="Create">Lisa uus kuritegija</a>
</p>

<table class="table">

	<thead>
		<tr>
			<th> @Html.DisplayNameFor(model => model.LastName)</th>
			<th> @Html.DisplayNameFor(model => model.FirstName)</th>
			<th> @Html.DisplayNameFor(model => model.Violation)</th>
            <th> @Html.DisplayNameFor(model => model.DelinquentType)</th>
			<th> @Html.DisplayNameFor(model => model.Description)</th>
			<th>Tööriistad🛠️</th>
			
		</tr>
	</thead>
    <tbody>
        @foreach (var delinquent in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => delinquent.LastName)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => delinquent.FirstName)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => delinquent.Violation)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => delinquent.DelinquentType )
                </td>
                <td>
                    @Html.DisplayFor(modelItem => delinquent.Description)
                </td>
                <td>
                    <a asp-action="Edit" asp-route-id="@delinquent.DelincuentID">Muuda</a>
                    <a asp-action="Details" asp-route-id="@delinquent.DelincuentID">Vaata</a>
                    <a asp-action="Delete" asp-route-id="@delinquent.DelincuentID">Kustuta</a>
                </td>
            </tr>
        }
    </tbody>
</table>

Delinquents index näitab admebaasis olevaid kuritegijaid. Samuti näitab nuppe: Create, Delete, Details ja Edit. Edit, Delete ja Details nuppe on näha siis kui andmebaasis on olemas kuritegija. Create nuppu on näha alati.

Create view Delinquents kaustas:

@model TallinnaRakenduslikKolledz.Models.Delinquent

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

<h1>Loo uus Kuritegija</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="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="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="Violation" class="control-label"></label>
				<select asp-for="Violation" class="form-control" asp-items="ViewBag.Violations">
					<option value="" class="form-control">--Vali kuritegevus--</option>
				</select>
				<span asp-validation-for="Violation" class="text-danger"></span>
			</div>

			<div>
				<label asp-for="DelinquentType" class="control-label"></label>
				<select asp-for="DelinquentType" class="form-control" asp-items="ViewBag.DelinquentTypes">
					<option value="" class="form-control">--Vali kuritegija--</option>
				</select>
				<span asp-validation-for="DelinquentType" 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">
				<input type="submit" value="Sisesta" class="btn btn-primary" />
			</div>

		</form>

	</div>


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

Create view-s on näha andme nimetusi ja tühi väljasi kuhu admed sisestada, nt: nimi, perekonnanimi jnt. All on kaks nuppu, üks nupp on “Sisesta” ehk nuppu vajutades sisestatakse kirjutatud andmed andmebaasi ja teine nupp “Mine tagasi loendisse” ehk nuppu vajutates oled tagasi index vaates.

Edit view Delinquents kaustas:

@model TallinnaRakenduslikKolledz.Models.Delinquent

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

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

			<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="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="Violation" class="control-label"></label>
				<select asp-for="Violation" class="form-control" asp-items="ViewBag.Violations">
					<option value="" class="form-control">--Vali kuritegevus--</option>
				</select>
				<span asp-validation-for="Violation" class="text-danger"></span>
			</div>

			<div>
				<label asp-for="DelinquentType" class="control-label"></label>
				<select asp-for="DelinquentType" class="form-control" asp-items="ViewBag.DelinquentTypes">
					<option value="" class="form-control">--Vali kuritegija--</option>
				</select>
				<span asp-validation-for="DelinquentType" 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">
				<input type="submit" value="Muuda" class="btn btn-primary" />
			</div>

		</form>

	</div>


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

Edit view-s on näha kõik sama mis Create view-s, kuid nüüd teksti väljad ei ole tühjad vaid nad on kuritegija andmetega ja neid saab muuta. Kui vajalikud andmed on muudatud tuleb vajutada nuppu “Muuda”, vajutades andmebaasis muudetagse vajalikud andmed. Samuti on nupp “Mine tagasi loendisse”, mille vajutades oled tagasi indexis.

Delete view Delinquents kaustas:

@model TallinnaRakenduslikKolledz.Models.Delinquent
@{
	ViewData["Title"] = "Kustuta kuritegija";
}
<h1>Kustuta kuritegija</h1>
<div>
	<hr />
	<dl class="row">
		<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.Violation)</dt>
		<dt class="col-sm-2">@Html.DisplayFor(model => model.Violation)</dt>
		<dt class="col-sm-2">@Html.DisplayNameFor(model => model.DelinquentType)</dt>
		<dt class="col-sm-2">@Html.DisplayFor(model => model.DelinquentType)</dt>
		<dt class="col-sm-2">@Html.DisplayNameFor(model => model.Description)</dt>
		<dt class="col-sm-2">@Html.DisplayFor(model => model.Description)</dt>
		
	</dl>
	<form asp-action="Delete">
		<input type="hidden" asp-for="DelincuentID" />
		<input type="submit" value="Kustuta" class="btn btn-danger" />|<a asp-action="index">Tühista</a>
	</form>
</div>

Delete view-s on näha kõik lisatud kuritegija andmed. Delete view on kaks nuppu, üks “Kustuta”, mille vajutades kustutakse andmebaasist kuritegija andmed ja teine nupp “Tühista”, mille vajutamisel oled tagasi index view-s.

Details view Delinquents kaustas:

@model TallinnaRakenduslikKolledz.Models.Delinquent

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

<h1>Detailid</h1>
<h3>
	Kuritegija @Model.FirstName @Model.LastName
</h3>
<div>

	<hr />
	<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.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.Violation)</dt>
		<dd class="col-sm-10">@Html.DisplayFor(model => model.Violation)</dd>

	</dl>
	<dl class="row">
		<dt class="col-sm-2">@Html.DisplayNameFor(model => model.DelinquentType)</dt>
		<dd class="col-sm-10">@Html.DisplayFor(model => model.DelinquentType)</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>
	


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

Details view on samasugune nagu Delete view, seal on samuti näha olemas oleva kuritegija andmeid, sest see view ongi andmete vaatamiseks. Details view-s on üks nupp “Mine tagasi loendisse”, mille vajutamisel oled tagasi index view-s.