using Casestudy.DAL; using Casestudy.DAL.DAO; using Casestudy.DAL.DomainClasses; using Casestudy.Helpers; using Casestudy.Helpers.OrderHelper; using Castle.Components.DictionaryAdapter.Xml; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Razor.TagHelpers; namespace Casestudy.Controllers { [Route("api/[controller]")] [ApiController] [Authorize] public class OrderController : ControllerBase { readonly AppDbContext? _ctx; public OrderController(AppDbContext context) // injected here { _ctx = context; } [HttpPost] [Produces("application/json")] public async Task<ActionResult<string>> Index(OrderHelper helper) { string retVal; try { CustomerDAO cDao = new(_ctx); Customer? orderOwner = await cDao.GetByEmail(helper.Email); OrderDAO oDao = new(_ctx); int orderId = await oDao.AddOrder(orderOwner!.Id, helper.Selections!); retVal = orderId > 0 ? "Order " + orderId + " placed!" : "Order not placed"; } catch (Exception ex) { retVal = "Order not placed " + ex.Message; } return retVal; } [Route("{email}")] [HttpGet] [AllowAnonymous] public async Task<ActionResult<List<Order>>> List(string email) { List<Order> orders; CustomerDAO uDao = new(_ctx!); Customer? trayOwner = await uDao.GetByEmail(email); OrderDAO tDao = new(_ctx!); orders = await tDao.GetAll(trayOwner!.Id); return orders; } [Route("{orderid}/{email}")] [HttpGet] [AllowAnonymous] public async Task<ActionResult<List<OrderDetailsHelper>>> GetTrayDetails(int orderid, string email) { OrderDAO dao = new(_ctx!); return await dao.GetOrderDetails(orderid, email); } } }