Modul 10 - Lekcija 1
Implementacija Kompleta Web Aplikacije sa CRUD operacijama, Sigurnosnim filterima i DataAnnotations pravilima
⏱️ Trajanje: ~4 časa | 📚 Nivo: Napredni | 🎯 Kruna Kursa
U okviru ovog modula student implementira "Od-Nule" cjelokupan informacijski web softwer za registraciju davanja, budžeta i uposlenih u okviru sektora regionalnog ministarstva.
Iskoristiće se SVE tehnologije prelazeći od Modelskih baza naprijed kroz logiku Controllera do šminkanja Views izgleda sa Bootstrap komponentama.
U prvoj liniji koda gradimo Modelski sloj i stroge DataAnnotations restrikcije, spajajući EntityFramework Code-First da skroji tabele nad SQL serverom.
public class Zaposleni
{
[Key]
public int UposlenikId { get; set; }
[Required(ErrorMessage = "JMBG format je nužan unutar drzavnog aparata!")]
[StringLength(13, MinimumLength = 13)]
public string JMBG { get; set; }
[Required]
public string ImePrezime { get; set; }
// Spajanje relacija jednih tabela sa drugim
public int MinistarstvoId { get; set; }
public virtual Ministarstvo PripadaMinistarstvu { get; set; }
}
Kreiramo Logiku - Sve što komunicira sa Bazom podataka da izvuče, ili ubaci izmjene (CRUD).
[Authorize(Roles = "Službenik, Ministar")]
public class UposlenikController : Controller
{
private ApplicationDbContext db = new ApplicationDbContext();
// 1. C: CREATE
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult PrijemRadnika(UposlenikNoviViewModel model)
{
if (ModelState.IsValid)
{
var NRadi = new Zaposleni { ImePrezime = model.ImePrezime, JMBG = model.JmbgUnos };
db.ZaposleniOdsjek.Add(NRadi);
db.SaveChanges(); // Fizicko zakljucanje novog zapisa
return RedirectToAction("Organizacija"); // Usmjeravanje korisnickog Ekrana na Spisak svih
}
return View(model); // Vrati ga sa errorima ispod inputa
}
}
Za kraj ispisujemo Bootstrap forme. Podatke vučemo iz Model Varijable.
@model eUprava.Models.UposlenikNoviViewModel
<h2>Novi Radnik Registracija</h2>
@using (Html.BeginForm("PrijemRadnika", "Uposlenik"))
{
@Html.AntiForgeryToken()
<div class="form-group">
@Html.LabelFor(m => m.ImePrezime)
@Html.TextBoxFor(m => m.ImePrezime, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.ImePrezime, "", new { @class = "text-danger" })
</div>
<!-- Samo Direktor vidi Dugmad Otkaza! -->
@if (User.IsInRole("Ministar"))
{
<button type="button" class="btn btn-danger">Otpusni Rok</button>
}
<button type="submit" class="btn btn-primary">Registruj Kadra</button>
}
User.IsInRole filterom.