public async Task <IActionResult> GetMenus(string restaurantName) { var getRestaurantExpr = from restaurantResult in RestaurantDomain.GetRestaurant(restaurantName) select restaurantResult; var restaurant = await _interpreter.Interpret(getRestaurantExpr, Unit.Default); var getRestaurant = from restaurantResult in RestaurantDomainEx.GetRestaurant(restaurantName) select restaurantResult; var restaurantAgg = await _interpreter.Interpret(getRestaurant, Unit.Default); var getMenusExpr = from menusRestaurant in RestaurantDomain.GetMenus(restaurantAgg.Restaurant) select menusRestaurant; var menus = await _interpreter.Interpret(getMenusExpr, Unit.Default); /*var getMenus = * from menusRestaurant in RestaurantDomainEx.GetMenus(restaurantAgg.Restaurant) * select menusRestaurant; * var menusList = await _interpreter.Interpret(getMenus, Unit.Default);*/ return(restaurant.Match( found => (IActionResult)Ok(found.Agg.Restaurant.Menus), notFound => NotFound())); }
public async Task <IActionResult> PostMenuItem(string name, string ingredients, string allergens, uint totalQuantity, decimal price, bool availability, int menuId) { var getMenu = from menuResult in RestaurantDomainEx.GetMenu(menuId) select menuResult; var menuAgg = await _interpreter.Interpret(getMenu, Unit.Default); return(Ok(RestaurantDomain.CreateMenuItem(menuAgg.Menu, name, ingredients, allergens, totalQuantity, price, availability))); }
public bool Exists(int restaurantId, string employeeId) { if (RestaurantDomainEx.GetEmployee(restaurantId, employeeId) is null) { return(false); } else { return(true); } }
public bool Exists(string clientId) { if (RestaurantDomainEx.GetClient(clientId) is null) { return(false); } else { return(true); } }
public async Task <IActionResult> GetOrderItems(int orderId) { var getOrderExpr = from orderResult in RestaurantDomainEx.GetOrder(orderId) select orderResult; var order = await _interpreter.Interpret(getOrderExpr, Unit.Default); var getOrderItemsExpr = from orderItemsResult in RestaurantDomain.GetOrderItems(order.Order) select orderItemsResult; var orderItems = await _interpreter.Interpret(getOrderItemsExpr, Unit.Default); return(orderItems.Match( found => (IActionResult)Ok(found.OrderItems), notFound => NotFound())); }
public async Task <IActionResult> GetOrders(string clientId) { var getClientExpr = from clientResult in RestaurantDomainEx.GetClient(clientId) select clientResult; var client1 = await _interpreter.Interpret(getClientExpr, Unit.Default); var getOrdersExpr = from ordersResult in RestaurantDomain.GetOrders(client1.Client.Id) select ordersResult; var orders = await _interpreter.Interpret(getOrdersExpr, Unit.Default); return(orders.Match( found => (IActionResult)Ok(found.Orders), notFound => NotFound())); }
public async Task <IActionResult> GetOrders(string restaurantName) { var getRestaurant = from restaurantResult in RestaurantDomainEx.GetRestaurant(restaurantName) select restaurantResult; var restaurantAgg = await _interpreter.Interpret(getRestaurant, Unit.Default); var getOrdersExpr = from ordersResult in RestaurantDomain.GetRestaurantOrders(restaurantAgg.Restaurant) select ordersResult; var orders = await _interpreter.Interpret(getOrdersExpr, Unit.Default); return(orders.Match( found => (IActionResult)Ok(found.Orders), notFound => NotFound())); }
public async Task <IActionResult> GetMenuItems(int menuId) { var getMenuExpr = from menuResult in RestaurantDomain.GetMenu(menuId) select menuResult; var menu = await _interpreter.Interpret(getMenuExpr, Unit.Default); var getMenu = from menuResult in RestaurantDomainEx.GetMenu(menuId) select menuResult; var menuAgg = await _interpreter.Interpret(getMenu, Unit.Default); var getMenuItemsExpr = from menuItemsResult in RestaurantDomainEx.GetMenuItems(menuAgg.Menu) select menuItemsResult; var menuItems = await _interpreter.Interpret(getMenuItemsExpr, Unit.Default); return(menu.Match( found => (IActionResult)Ok(found.Agg.Menu.MenuItems), notFound => NotFound())); }
public async Task <IActionResult> GetEmployee(string restaurantName, string employeeId) { var getRestaurantExpr = from restaurantResult in RestaurantDomain.GetRestaurant(restaurantName) select restaurantResult; var restaurant = await _interpreter.Interpret(getRestaurantExpr, Unit.Default); var getRestaurant = from restaurantResult in RestaurantDomainEx.GetRestaurant(restaurantName) select restaurantResult; var restaurantAgg = await _interpreter.Interpret(getRestaurant, Unit.Default); var getEmployeeExpr = from employeeResult in RestaurantDomain.GetEmployee(restaurantAgg.Restaurant.Id, employeeId) select employeeResult; var employee = await _interpreter.Interpret(getEmployeeExpr, Unit.Default); return(restaurant.Match( found => (IActionResult)Ok(found.Agg.Restaurant), notFound => NotFound())); }
static async Task Main(string[] args) { var serviceCollection = new ServiceCollection(); serviceCollection.AddOperations(typeof(RestaurantAgg).Assembly); serviceCollection.AddOperations(typeof(ClientAgg).Assembly); serviceCollection.AddOperations(typeof(EmployeeAgg).Assembly); serviceCollection.AddOperations(typeof(MenuAgg).Assembly); serviceCollection.AddOperations(typeof(MenuItemAgg).Assembly); serviceCollection.AddOperations(typeof(OrderAgg).Assembly); serviceCollection.AddOperations(typeof(OrderItemAgg).Assembly); serviceCollection.AddOperations(typeof(AddOrUpdateOp).Assembly); serviceCollection.AddTransient(typeof(IOp <,>), typeof(QueryOp <,>)); serviceCollection.AddDbContext <OrderAndPayContext>(ServiceLifetime.Singleton); serviceCollection.AddOperations(typeof(OrderAndPayContext).Assembly); var serviceProvider = serviceCollection.BuildServiceProvider(); var interpreter = new LiveInterpreterAsync(serviceProvider); //Adding a Restaurant var exprRestaurant = from restaurantResult in RestaurantDomain.CreateRestaurantAndPersist("Piata 9", "Strada Rozelor, nr.35") let restaurant = (restaurantResult as RestaurantCreated).Restaurant from menuResult1 in RestaurantDomain.CreateMenuAndPersist("Menu of the day", restaurant.Restaurant) let menu1 = (menuResult1 as MenuCreated)?.Menu from menuResult2 in RestaurantDomain.CreateMenuAndPersist("Breakfast", restaurant.Restaurant) let menu2 = (menuResult2 as MenuCreated)?.Menu from menuResult3 in RestaurantDomain.CreateMenuAndPersist("Soup", restaurant.Restaurant) let menu3 = (menuResult3 as MenuCreated)?.Menu from menuResult4 in RestaurantDomain.CreateMenuAndPersist("MainCourse", restaurant.Restaurant) let menu4 = (menuResult4 as MenuCreated)?.Menu from menuResult5 in RestaurantDomain.CreateMenuAndPersist("Pasta", restaurant.Restaurant) let menu5 = (menuResult5 as MenuCreated)?.Menu from menuResult6 in RestaurantDomain.CreateMenuAndPersist("Pizza", restaurant.Restaurant) let menu6 = (menuResult6 as MenuCreated)?.Menu from menuResult7 in RestaurantDomain.CreateMenuAndPersist("Desserts", restaurant.Restaurant) let menu7 = (menuResult7 as MenuCreated)?.Menu from menuResult8 in RestaurantDomain.CreateMenuAndPersist("Drinks", restaurant.Restaurant) let menu8 = (menuResult8 as MenuCreated)?.Menu from menuItemResult1 in RestaurantDomain.CreateMenuItemAndPersist(menu1.Menu, "Menu of the day", "ingredients", "allergens", 100, 15.99m, true) let menuItem1 = (menuItemResult1 as MenuItemCreated)?.MenuItem from menuItemResult2 in RestaurantDomain.CreateMenuItemAndPersist(menu2.Menu, "Breakfast 1", "ingredients", "allergens", 150, 12.00m, true) let menuItem2 = (menuItemResult2 as MenuItemCreated)?.MenuItem from menuItemResult3 in RestaurantDomain.CreateMenuItemAndPersist(menu1.Menu, "Chicken Soup", "ingredients", "allergens", 200, 16.00m, true) let menuItem3 = (menuItemResult3 as MenuItemCreated)?.MenuItem from menuItemResult4 in RestaurantDomain.CreateMenuItemAndPersist(menu2.Menu, "Beef Soup", "ingredients", "allergens", 100, 17.00m, true) let menuItem4 = (menuItemResult4 as MenuItemCreated)?.MenuItem from menuItemResult5 in RestaurantDomain.CreateMenuItemAndPersist(menu1.Menu, "Chicken Schnitzel", "ingredients", "allergens", 100, 20.00m, true) let menuItem5 = (menuItemResult5 as MenuItemCreated)?.MenuItem from menuItemResult6 in RestaurantDomain.CreateMenuItemAndPersist(menu1.Menu, "Carbonara", "ingredients", "allergens", 150, 19.00m, true) let menuItem6 = (menuItemResult6 as MenuItemCreated)?.MenuItem from menuItemResult7 in RestaurantDomain.CreateMenuItemAndPersist(menu1.Menu, "Spaghetti Bolognese", "ingredients", "allergens", 200, 18.00m, true) let menuItem7 = (menuItemResult7 as MenuItemCreated)?.MenuItem from menuItemResult8 in RestaurantDomain.CreateMenuItemAndPersist(menu2.Menu, "Lasagna", "ingredients", "allergens", 100, 27.00m, true) let menuItem8 = (menuItemResult8 as MenuItemCreated)?.MenuItem from menuItemResult9 in RestaurantDomain.CreateMenuItemAndPersist(menu1.Menu, "Quatro Stagioni", "ingredients", "allergens", 100, 25.00m, true) let menuItem9 = (menuItemResult9 as MenuItemCreated)?.MenuItem from menuItemResult10 in RestaurantDomain.CreateMenuItemAndPersist(menu1.Menu, "Cheesecake", "ingredients", "allergens", 150, 30.00m, true) let menuItem10 = (menuItemResult10 as MenuItemCreated)?.MenuItem from menuItemResult11 in RestaurantDomain.CreateMenuItemAndPersist(menu1.Menu, "Coca-Cola", "ingredients", "allergens", 200, 5.00m, true) let menuItem11 = (menuItemResult11 as MenuItemCreated)?.MenuItem /* from clientResult in RestaurantDomainEx.CreateClientAndPersist("Fifth", "Client", "*****@*****.**", "07xxxxxxxx", "xxxxxxxxxxxxxxxx", "fifth.client", "client05") * let client = (clientResult as ClientCreated)?.Client*/ from client in RestaurantDomainEx.GetClient("first.client") from cartItemResult1 in RestaurantDomain.AddToCart("sessionClient05", menuItem4.MenuItem, 1, "special requests") let cartItem1 = (cartItemResult1 as AddToCartSuccessful)?.CartItem from cartItemResult2 in RestaurantDomain.AddToCart("sessionClient05", menuItem2.MenuItem, 2, "special requests") let cartItem2 = (cartItemResult2 as AddToCartSuccessful)?.CartItem from cartItemResult3 in RestaurantDomain.AddToCart("sessionClient05", menuItem3.MenuItem, 3, "special requests") let cartItem3 = (cartItemResult3 as AddToCartSuccessful)?.CartItem from orderResult in RestaurantDomain.PlaceOrderAndPersist(client.Client, restaurant.Restaurant, 140.00m, 5) let order = (orderResult as OrderPlaced)?.Order from orderItemResult1 in RestaurantDomain.CreateOrderItemAndPersist(cartItem1, order.Order) from orderItemResult2 in RestaurantDomain.CreateOrderItemAndPersist(cartItem2, order.Order) from orderItemResult3 in RestaurantDomain.CreateOrderItemAndPersist(cartItem3, order.Order) select restaurant; var resultRestaurant = await interpreter.Interpret(exprRestaurant, Unit.Default); //var restaurant = await interpreter.Interpret(exprRestaurant, Unit.Default); //var finalResultRestaurant = restaurant.Match(OnRestaurantCreated, OnRestaurantNotCreated); //Assert.True(finalResultRestaurant); //Adding a Client /* var exprClient = * from clientResult in RestaurantDomainEx.CreateClientAndPersist("Third", "Client", "*****@*****.**", "07xxxxxxxx", "xxxxxxxxxxxxxxxx", "third.client", "client03") * let client = (clientResult as ClientCreated)?.Client * select clientResult; * * var resultClient = await interpreter.Interpret(exprClient, Unit.Default); * * * //Adding an Employee * var exprEmployee = * from employeeResult in RestaurantDomainEx.CreateEmployeeAndPersist("Employee", "01", "*****@*****.**", "07xxxxxxxx", "Chef", "Chef01", "password", 4) * let employee = (employeeResult as EmployeeCreated)?.Employee * select employeeResult; * * var resultEmployee = await interpreter.Interpret(exprEmployee, Unit.Default);*/ // Testing Queries /*var getRestaurantExpr = * from restaurantResult in RestaurantDomainEx.GetRestaurant("Restaurant_4") * select restaurantResult; * * var interpretedRestaurant = await interpreter.Interpret(getRestaurantExpr, Unit.Default);*/ //var restaurantResponse = interpretedRestaurant.Match<bool>(OnRestaurantFound, OnRestaurantNotFound); /*var exprFindClient = * from clientResult in RestaurantDomainEx.GetClient("second.client") * select clientResult; * var client = await interpreter.Interpret(exprFindClient, Unit.Default);*/ /*var exprFindEmployee = * from employeeResult in RestaurantDomainEx.GetEmployee(restaurant.Restaurant.Id, "waiter01") * select employeeResult; * var employee = await interpreter.Interpret(exprFindEmployee, Unit.Default);*/ /*var exprFindMenus = * from menusResult in RestaurantDomainEx.GetMenus(interpretedRestaurant.Restaurant) * select menusResult; * var menus = await interpreter.Interpret(exprFindMenus, Unit.Default);*/ //var finalResultMenus = menus.Match(OnMenusFound, OnMenusNotFound); //Assert.True(finalResultMenus); //Console.WriteLine(restaurant.Restaurant.Name); //Console.WriteLine(client.Client.ClientId); //Console.WriteLine(employee.Employee.EmployeeId); /*foreach (Menu m in menus.Menus) * { * Console.WriteLine(m.Name); * }*/ }
static async Task Main(string[] args) { var serviceCollection = new ServiceCollection(); serviceCollection.AddOperations(typeof(RestaurantAgg).Assembly); serviceCollection.AddOperations(typeof(ClientAgg).Assembly); serviceCollection.AddOperations(typeof(EmployeeAgg).Assembly); serviceCollection.AddOperations(typeof(MenuAgg).Assembly); serviceCollection.AddOperations(typeof(MenuItemAgg).Assembly); serviceCollection.AddOperations(typeof(OrderAgg).Assembly); serviceCollection.AddOperations(typeof(OrderItemAgg).Assembly); serviceCollection.AddOperations(typeof(AddOrUpdateOp).Assembly); serviceCollection.AddTransient(typeof(IOp <,>), typeof(QueryOp <,>)); serviceCollection.AddDbContext <OrderAndPayContext>(ServiceLifetime.Singleton); serviceCollection.AddOperations(typeof(OrderAndPayContext).Assembly); var serviceProvider = serviceCollection.BuildServiceProvider(); var interpreter = new LiveInterpreterAsync(serviceProvider); /* * //Adding a Restaurant * var exprRestaurant = * from restaurantResult in RestaurantDomainEx.CreateRestaurantAndPersist("Restaurant_7", "address") * let restaurant = (restaurantResult as RestaurantCreated)?.Restaurant * * /*from menuResult1 in RestaurantDomainEx.CreateMenuAndPersist("Pasta", restaurant.Restaurant) * let menu1 = (menuResult1 as MenuCreated)?.Menu * from menuResult2 in RestaurantDomainEx.CreateMenuAndPersist("Pizza", restaurant.Restaurant) * let menu2 = (menuResult2 as MenuCreated)?.Menu * * from menuItemResult1 in RestaurantDomainEx.CreateMenuItemAndPersist(menu1.Menu, "Carbonara", "ingredients", "allergens", 100, 27.00, true) * let menuItem1 = (menuItemResult1 as MenuItemCreated)?.MenuItem * from menuItemResult2 in RestaurantDomainEx.CreateMenuItemAndPersist(menu1.Menu, "Spaghetti", "ingredients", "allergens", 150, 25.00, true) * let menuItem2 = (menuItemResult2 as MenuItemCreated)?.MenuItem * from menuItemResult3 in RestaurantDomainEx.CreateMenuItemAndPersist(menu1.Menu, "Macaroni", "ingredients", "allergens", 200, 21.00, true) * let menuItem3 = (menuItemResult3 as MenuItemCreated)?.MenuItem * from menuItemResult4 in RestaurantDomainEx.CreateMenuItemAndPersist(menu2.Menu, "Pizza", "ingredients", "allergens", 1, 30.00, true) * let menuItem4 = (menuItemResult4 as MenuItemCreated)?.MenuItem * * from clientResult in RestaurantDomainEx.CreateClientAndPersist("Fifth", "Client", "*****@*****.**", "07xxxxxxxx", "xxxxxxxxxxxxxxxx", "fifth.client", "client05") * let client = (clientResult as ClientCreated)?.Client * * from cartItemResult1 in RestaurantDomain.AddToCart("sessionClient05", menuItem4.MenuItem, 1, "special requests") * let cartItem1 = (cartItemResult1 as AddToCartSuccessful)?.CartItem * from cartItemResult2 in RestaurantDomain.AddToCart("sessionClient05", menuItem2.MenuItem, 2, "special requests") * let cartItem2 = (cartItemResult2 as AddToCartSuccessful)?.CartItem * from cartItemResult3 in RestaurantDomain.AddToCart("sessionClient05", menuItem3.MenuItem, 3, "special requests") * let cartItem3 = (cartItemResult3 as AddToCartSuccessful)?.CartItem * * from orderResult in RestaurantDomainEx.PlaceOrder(client.Client, restaurant.Restaurant, 140.00, 5) * let order = (orderResult as OrderPlaced)?.Order * * from orderItemResult1 in RestaurantDomainEx.CreateOrderItem(cartItem1, order.Order) * //from orderItemResult2 in RestaurantDomainEx.CreateOrderItem(cartItem2, order.Order) * //from orderItemResult3 in RestaurantDomainEx.CreateOrderItem(cartItem3, order.Order) * * select restaurantResult; * * var resultRestaurant = await interpreter.Interpret(exprRestaurant, Unit.Default); * * * //Adding a Client * var exprClient = * from clientResult in RestaurantDomainEx.CreateClientAndPersist("Third", "Client", "*****@*****.**", "07xxxxxxxx", "xxxxxxxxxxxxxxxx", "third.client", "client03") * let client = (clientResult as ClientCreated)?.Client * select clientResult; * * var resultClient = await interpreter.Interpret(exprClient, Unit.Default); * * * //Adding an Employee * var exprEmployee = * from employeeResult in RestaurantDomainEx.CreateEmployeeAndPersist("Employee", "01", "*****@*****.**", "07xxxxxxxx", "Chef", "Chef01", "password", 4) * let employee = (employeeResult as EmployeeCreated)?.Employee * select employeeResult; * * var resultEmployee = await interpreter.Interpret(exprEmployee, Unit.Default); */ // Testing Queries var exprFindRestaurant = from restaurantResult in RestaurantDomainEx.GetRestaurant("Restaurant_1") select restaurantResult; var restaurant = await interpreter.Interpret(exprFindRestaurant, Unit.Default); var exprFindClient = from clientResult in RestaurantDomainEx.GetClient("second.client") select clientResult; var client = await interpreter.Interpret(exprFindClient, Unit.Default); var exprFindEmployee = from employeeResult in RestaurantDomainEx.GetEmployee(restaurant.Restaurant.Id, "waiter01") select employeeResult; var employee = await interpreter.Interpret(exprFindEmployee, Unit.Default); var exprFindMenus = from menusResult in RestaurantDomainEx.GetMenus(restaurant.Restaurant) select menusResult; var menus = await interpreter.Interpret(exprFindMenus, Unit.Default); Console.WriteLine(restaurant.Restaurant.Name); Console.WriteLine(client.Client.ClientId); Console.WriteLine(employee.Employee.EmployeeId); foreach (Menu m in menus) { Console.WriteLine(m.Name); } }