diff --git a/OdeToFoodRider/OdeToFoodRider/Pages/Restaurants/Edit.cshtml b/OdeToFoodRider/OdeToFoodRider/Pages/Restaurants/Edit.cshtml
new file mode 100644
index 0000000..31d85aa
--- /dev/null
+++ b/OdeToFoodRider/OdeToFoodRider/Pages/Restaurants/Edit.cshtml
@@ -0,0 +1,25 @@
+@page "{id}"
+@using OdeToFoodRider.Pages.Restaurants
+
+@model EditModel
+
+
Edit @Model.Restaurant.Name
+
+
diff --git a/OdeToFoodRider/OdeToFoodRider/Pages/Restaurants/Edit.cshtml.cs b/OdeToFoodRider/OdeToFoodRider/Pages/Restaurants/Edit.cshtml.cs
new file mode 100644
index 0000000..363288d
--- /dev/null
+++ b/OdeToFoodRider/OdeToFoodRider/Pages/Restaurants/Edit.cshtml.cs
@@ -0,0 +1,42 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using OdeToFoodRider.Models;
+using OdeToFoodRider.Services;
+
+namespace OdeToFoodRider.Pages.Restaurants
+{
+ public class EditModel : PageModel
+ {
+ private readonly IRestaurantData _restaurantData;
+
+ [BindProperty]
+ public Restaurant Restaurant { get; set; }
+
+ public EditModel(IRestaurantData restaurantData)
+ {
+ _restaurantData = restaurantData;
+ }
+
+ public IActionResult OnGet(int id)
+ {
+ Restaurant = _restaurantData.Get(id);
+ if (Restaurant == null)
+ {
+ return RedirectToAction("Index", "Home");
+ }
+
+ return Page();
+ }
+
+ public IActionResult OnPost()
+ {
+ if (ModelState.IsValid)
+ {
+ _restaurantData.Update(Restaurant);
+ return RedirectToAction("Details", "Home", new {id = Restaurant.Id});
+ }
+
+ return Page();
+ }
+ }
+}
\ No newline at end of file
diff --git a/OdeToFoodRider/OdeToFoodRider/Services/IRestaurantData.cs b/OdeToFoodRider/OdeToFoodRider/Services/IRestaurantData.cs
index 618078a..4a84ace 100644
--- a/OdeToFoodRider/OdeToFoodRider/Services/IRestaurantData.cs
+++ b/OdeToFoodRider/OdeToFoodRider/Services/IRestaurantData.cs
@@ -9,5 +9,6 @@ public interface IRestaurantData
IEnumerable GetAll();
Restaurant Get(int id);
Restaurant Add(Restaurant restaurant);
+ Restaurant Update(Restaurant restaurant);
}
}
\ No newline at end of file
diff --git a/OdeToFoodRider/OdeToFoodRider/Services/InMemoryRestaurantData.cs b/OdeToFoodRider/OdeToFoodRider/Services/InMemoryRestaurantData.cs
index d5bd6e7..600b60a 100644
--- a/OdeToFoodRider/OdeToFoodRider/Services/InMemoryRestaurantData.cs
+++ b/OdeToFoodRider/OdeToFoodRider/Services/InMemoryRestaurantData.cs
@@ -40,5 +40,10 @@ public Restaurant Add(Restaurant restaurant)
_restaurants.Add(restaurant);
return restaurant;
}
+
+ public Restaurant Update(Restaurant restaurant)
+ {
+ throw new System.NotImplementedException();
+ }
}
}
\ No newline at end of file
diff --git a/OdeToFoodRider/OdeToFoodRider/Services/SqlRestaurantData.cs b/OdeToFoodRider/OdeToFoodRider/Services/SqlRestaurantData.cs
index e3d2ac6..2222753 100644
--- a/OdeToFoodRider/OdeToFoodRider/Services/SqlRestaurantData.cs
+++ b/OdeToFoodRider/OdeToFoodRider/Services/SqlRestaurantData.cs
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.Linq;
+using Microsoft.EntityFrameworkCore;
using OdeToFoodRider.Data;
using OdeToFoodRider.Models;
@@ -21,6 +22,13 @@ public Restaurant Add(Restaurant restaurant)
return restaurant;
}
+ public Restaurant Update(Restaurant restaurant)
+ {
+ _context.Attach(restaurant).State = EntityState.Modified;
+ _context.SaveChanges();
+ return restaurant;
+ }
+
public Restaurant Get(int id)
{
return _context.Restaurants.FirstOrDefault(r => r.Id == id);
diff --git a/OdeToFoodRider/OdeToFoodRider/Views/Home/Index.cshtml b/OdeToFoodRider/OdeToFoodRider/Views/Home/Index.cshtml
index 7fec1c0..188d11f 100644
--- a/OdeToFoodRider/OdeToFoodRider/Views/Home/Index.cshtml
+++ b/OdeToFoodRider/OdeToFoodRider/Views/Home/Index.cshtml
@@ -18,6 +18,7 @@
Details
@Html.ActionLink("Go", "Details", new {id = restaurant.Id})
More
+ Edit
}
diff --git a/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Pages/Restaurants/Edit.cshtml b/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Pages/Restaurants/Edit.cshtml
new file mode 100644
index 0000000..7fcb56f
--- /dev/null
+++ b/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Pages/Restaurants/Edit.cshtml
@@ -0,0 +1,26 @@
+@page "{id}"
+@using OdeToFoodVisualStudio.Pages.Restaurants
+
+@model EditModel
+
+Edit @Model.Restaurant.Name
+
+
diff --git a/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Pages/Restaurants/Edit.cshtml.cs b/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Pages/Restaurants/Edit.cshtml.cs
new file mode 100644
index 0000000..68b934f
--- /dev/null
+++ b/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Pages/Restaurants/Edit.cshtml.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using OdeToFoodVisualStudio.Models;
+using OdeToFoodVisualStudio.Services;
+
+namespace OdeToFoodVisualStudio.Pages.Restaurants
+{
+ public class EditModel : PageModel
+ {
+ private IRestaurantData _restaurantData;
+
+ [BindProperty]
+ public Restaurant Restaurant { get; set; }
+
+ public EditModel(IRestaurantData restaurantData)
+ {
+ _restaurantData = restaurantData;
+ }
+
+ public IActionResult OnGet(int id)
+ {
+ Restaurant = _restaurantData.Get(id);
+ if (Restaurant == null)
+ {
+ return RedirectToAction("Index", "Home");
+ }
+ return Page();
+ }
+
+ public IActionResult OnPost()
+ {
+ if(ModelState.IsValid)
+ {
+ _restaurantData.Update(Restaurant);
+ return RedirectToAction("Details", "Home", new { id = Restaurant.Id });
+ }
+
+ return Page();
+ }
+ }
+}
\ No newline at end of file
diff --git a/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Services/IRestaurantData.cs b/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Services/IRestaurantData.cs
index 18ffb31..45c550c 100644
--- a/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Services/IRestaurantData.cs
+++ b/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Services/IRestaurantData.cs
@@ -12,5 +12,6 @@ public interface IRestaurantData
IEnumerable GetAll();
Restaurant Get(int id);
Restaurant Add(Restaurant restaurant);
+ Restaurant Update(Restaurant restaurant);
}
}
diff --git a/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Services/InMemoryRestaurantData.cs b/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Services/InMemoryRestaurantData.cs
index 9a944c2..a58c57d 100644
--- a/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Services/InMemoryRestaurantData.cs
+++ b/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Services/InMemoryRestaurantData.cs
@@ -40,5 +40,10 @@ public Restaurant Add(Restaurant restaurant)
_restaurants.Add(restaurant);
return restaurant;
}
+
+ public Restaurant Update(Restaurant restaurant)
+ {
+ throw new NotImplementedException();
+ }
}
}
diff --git a/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Services/SqlRestaurantData.cs b/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Services/SqlRestaurantData.cs
index e4d9fa8..83d7fc9 100644
--- a/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Services/SqlRestaurantData.cs
+++ b/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Services/SqlRestaurantData.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
+using Microsoft.EntityFrameworkCore;
using OdeToFoodVisualStudio.Data;
using OdeToFoodVisualStudio.Models;
@@ -33,5 +34,13 @@ public IEnumerable GetAll()
{
return _context.Restaurants.OrderBy(r => r.Name);
}
+
+ public Restaurant Update(Restaurant restaurant)
+ {
+ _context.Attach(restaurant).State = EntityState.Modified;
+ // VSRD: Visual Studio provides a kind of smart completion for non-imported EntityState after equals, nice. Inserts an FQN though :(
+ _context.SaveChanges();
+ return restaurant;
+ }
}
}
diff --git a/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Views/Home/Index.cshtml b/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Views/Home/Index.cshtml
index 82c421e..25cdfb8 100644
--- a/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Views/Home/Index.cshtml
+++ b/OdeToFoodVisualStudio/OdeToFoodVisualStudio/Views/Home/Index.cshtml
@@ -17,6 +17,7 @@
Details
@Html.ActionLink("Go", "Details", new { id = restaurant.Id })
More
+ Edit
}