using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.EntityFrameworkCore; using ThAmCo.Events.Data; using ThAmCo.Events.Models; using System.Net.Http; using System.Diagnostics; using ThAmCo.Events.Models.ViewModels.Events; using ThAmCo.Events.Models.Dto; namespace ThAmCo.Events.Controllers { public class FoodController : Controller { EventsDbContext _context; public FoodController() { } // GET: Food public async Task Index() { //Get full list of menus and their data from the web service. HttpClient client = new HttpClient { BaseAddress = new Uri("http://localhost:32824") }; client.DefaultRequestHeaders.Accept.ParseAdd("application/json"); HttpResponseMessage response = await client.GetAsync("api/values"); if (response.IsSuccessStatusCode) { var menus = response.Content.ReadAsAsync>().Result.ToList(); return View(menus); } else { Debug.WriteLine("Index received a bad response from the web service."); } return NotFound(); } // GET: Food/Details/5 public async Task Details(int? id) { //Get details of a specific menu from the web service. if (id == null) { return NotFound(); } HttpClient client = new HttpClient { BaseAddress = new Uri("http://localhost:32824") }; client.DefaultRequestHeaders.Accept.ParseAdd("application/json"); HttpResponseMessage response = await client.GetAsync("api/values/" + id); if (response.IsSuccessStatusCode) { var menu = response.Content.ReadAsAsync().Result; return View(menu); } else { Debug.WriteLine("Index received a bad response from the web service."); } return NotFound(); } // GET: Food/Create public IActionResult Create() { return View(); } // POST: Food/Create // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public async Task Create([Bind("Id,Items,Price")] Food food) { if (ModelState.IsValid) { HttpClient client = new HttpClient() { BaseAddress = new Uri("http://localhost:32824/") }; client.DefaultRequestHeaders.Accept.ParseAdd("application/json"); HttpResponseMessage response = await client.PostAsJsonAsync("api/values", food); return RedirectToAction(nameof(Details), new { id = food.Id }); } return View(food); } // GET: Food/Edit/5 public async Task Edit(int? id) { //TODO: Fix /*if (id == null) { return NotFound(); } var food = await _context.Food.FindAsync(id); if (food == null) { return NotFound(); } return View(food);*/ return null; } // POST: Food/Edit/5 // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public async Task Edit(int id, [Bind("Id,Items,Price")] Food food) { if (id != food.Id) { return NotFound(); } if (ModelState.IsValid) { try { _context.Update(food); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (false) { return NotFound(); } else { throw; } } return RedirectToAction(nameof(Index)); } return View(food); } } }