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()));
        }
예제 #2
0
        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);
     }
 }
예제 #4
0
 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()));
        }
예제 #7
0
        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()));
        }
예제 #9
0
        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()));
        }
예제 #10
0
        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);
             * }*/
        }
예제 #11
0
        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);
            }
        }