Krok 1 zmiana Connection stringa w Kolokwium.API I Kolokwium.WEB ----------------------------------------------------------------------------------------------------- Krok 2 stworzenie encji W Kolokwium.Model: namespace Kolokwium.Model.DataModels; public class Order{ public int Id{get;set;} public DateTime CreationDate{get;set;} public string ShippingAdress{get;set;}=null!; public string? Description{get;set;} public string Status{get;set;}=null!; public int TotalAmount{get;set;} public DateTime DueDate{get;set;} public int ClientId{get;set;} public Client Client{get;set;}=null!; public ICollection Products{get;set;}=null!; } ------------------------------------------------------------------------------------------------------ Krok 3 Deklaracja właściwości dla tabel w kontekście bazodanowym ApplicationDbContext w Kolokwium.DAL // table properties // public virtual DbSet TableName { get; set; } = null!; public virtual DbSet Clients{get;set;}=null!; public virtual DbSet Orders{get;set;}=null!; public virtual DbSet Products{get;set;}=null!; ------------------------------------------------------------------------------------------------------- Krok 4 Tworzenie kontrolerów dla encji w Kolokwium.WEB/Controllers ClientController.cs: using Kolokwium.Model.DataModels; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Kolokwium.DAL; public class ClientController:Controller { private readonly ApplicationDbContext _context; public ClientController(ApplicationDbContext context) { _context = context; } public async Task Index() { var dane = await _context.Clients.ToListAsync(); return View(dane); } public IActionResult AddClients() { return View(); } public IActionResult AddClient(Client client) { _context.Clients.Add(client); _context.SaveChanges(); return Redirect("Index"); } public IActionResult DeleteClients(int id) { Client? c=_context.Clients.FirstOrDefault(d=>d.Id==id); if(c!=null){ _context.Clients.Remove(c); _context.SaveChanges(); } return RedirectToAction(nameof(Index)); } public IActionResult EditClients(int id) { Client? c=_context.Clients.FirstOrDefault(d=>d.Id==id); if(c==null){ throw new Exception(); } return View(c); } public IActionResult EditClient(Client client) { Client? oldclient=_context.Clients.FirstOrDefault(d=>d.Id==client.Id); if(oldclient==null){ throw new Exception(); } oldclient.RegistrationDate=client.RegistrationDate; oldclient.FirstName=client.FirstName; oldclient.LastName=client.LastName; oldclient.Phone=client.Phone; oldclient.Email=client.Email; _context.SaveChanges(); return RedirectToAction(nameof(Index)); } } /////////////////////////////////////////////////////////////////////////////////////////////////////// OrderController.cs: using Kolokwium.Model.DataModels; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Kolokwium.DAL; public class OrderController:Controller { private readonly ApplicationDbContext _context; public OrderController(ApplicationDbContext context) { _context = context; } public async Task Index() { var dane = await _context.Orders.ToListAsync(); return View(dane); } public IActionResult AddOrders() { IList clients=_context.Clients.ToList(); ViewBag.Clients = clients; return View(); } public IActionResult AddOrder(Order Order) { _context.Orders.Add(Order); _context.SaveChanges(); return Redirect("Index"); } public IActionResult DeleteOrders(int id) { Order? c=_context.Orders.FirstOrDefault(d=>d.Id==id); if(c!=null){ _context.Orders.Remove(c); _context.SaveChanges(); } return RedirectToAction(nameof(Index)); } public IActionResult EditOrders(int id) { Order? c=_context.Orders.FirstOrDefault(d=>d.Id==id); if(c==null){ throw new Exception(); } IList clients=_context.Clients.ToList(); ViewBag.Clients = clients; return View(c); } public IActionResult EditOrder(Order order) { Order? oldOrder=_context.Orders.FirstOrDefault(d=>d.Id==order.Id); if(oldOrder==null){ throw new Exception(); } oldOrder.CreationDate=order.CreationDate; oldOrder.ShippingAdress=order.ShippingAdress; oldOrder.Description=order.Description; oldOrder.Status=order.Status; oldOrder.TotalAmount=order.TotalAmount; oldOrder.DueDate=order.DueDate; oldOrder.ClientId=order.ClientId; _context.SaveChanges(); return RedirectToAction(nameof(Index)); } } ------------------------------------------------------------------------------------------------------- Krok 5 Uworzenie folderów zgodnych z nazwą klasy dla encji w Kolokwium.WEB/Views ------------------------------------------------------------------------------------------------------- Krok 6 Tworzenie widoków Index.cshtml w tych folderach Client/Index.cshtml: @using Kolokwium.Model.DataModels; @model ICollection Add new client @foreach(Client client in Model) {

Registration Date:@client.RegistrationDate


First Name:@client.FirstName


Last Name:@client.LastName


Email:@client.Email


Phone:@client.Phone

Delete client Edit client
} ///////////////////////////////////////////////////////////////////////////////////////////////////////// AddClients: @using Kolokwium.Model.DataModels; @model Client;





////////////////////////////////////////////////////////////////////////////////////////////////////// EditClients: @using Kolokwium.Model.DataModels; @model Client;





//////////////////////////////////////////////////////////////////////////////////////////////////// Order/Index.cshtml: @using Kolokwium.Model.DataModels; @model ICollection Add new Order @foreach(Order Order in Model) {

Creation Date:@Order.CreationDate


ShippingAdress:@Order.ShippingAdress


Description:@Order.Description


Status:@Order.Status


TotalAmount:@Order.TotalAmount

DueDate:@Order.DueDate

Client:@Order.ClientId

Delete Order Edit Order
} ////////////////////////////////////////////////////////////////////////////////////////////////// AddOrders.cshtml: @using Kolokwium.Model.DataModels; @model Order; @{ var clients = ViewBag.Clients as List; }







////////////////////////////////////////////////////////////////////////////////////////////// EditOrders.cshtml @using Kolokwium.Model.DataModels; @model Order; @{ var clients = ViewBag.Clients as List; }







------------------------------------------------------------------------------------------------------- Krok 7 W pliku Kolokwium.WEB/Views/Shared/_Layout.cshtml dorabiamy list item ------------------------------------------------------------------------------------------------------- Komendy: dotnet build dotnet ef migrations add migrancja1 --project Kolokwium.DAL --startup-project Kolokwium.Web dotnet ef database update --project Kolokwium.DAL --startup-project Kolokwium.WEB dotnet ef database drop --project Kolokwium.DAL --startup-project Kolokwium.WEB dotnet run --project Kolokwium.Web