static void Main(string[] args) { var client = new PizzaClient(); System.Console.WriteLine(client.Prepare().Message); System.Console.ReadLine(); }
public void OrderMustBeValidBeforeItCanBeSent_with_mock_example() { var repository = Substitute.For <IOrderRepository>(); var exampleOrder = new Order(); var fakeOrderId = new OrderId(); repository.Add(Arg.Any <Order>()).Returns(fakeOrderId); repository.Get(fakeOrderId).Returns(exampleOrder); var client = new PizzaClient(new TestFactory(), repository); var menu = client.GetMenu(); var orderId = client.StartOrder(); client.AddToOrder("Arek", orderId, new ClientOrderPosition(menu.Position(1), 2)); client.AddToOrder("Marek", orderId, new ClientOrderPosition(menu.Position(2), 4)); Assert.False(client.Validate(orderId)); client.AddToOrder("Jarek", orderId, new ClientOrderPosition(menu.Position(1), 2)); Assert.True(client.Validate(orderId)); client.Send(orderId); // gdzie dotarło zamówienie? // czy się zapisało? repository.Received(1).Add(Arg.Is <Order>(x => x.Positions.Count() == 0)); }
public async Task OnGet([FromServices] PizzaClient client) { Pizzas = await client.GetPizzasAsync(); if (Pizzas.Count() == 0) { ErrorMessage = "We must be sold out. Try again tomorrow."; } else { ErrorMessage = string.Empty; } }
public void OrderMustBeValidBeforeItCanBeSent_with_in_memmory_example() { var exampleMenu = new TestFactory(); var repository = new InMemmoryOrderRepository(); var client = new PizzaClient(exampleMenu, repository); var menu = client.GetMenu(); var orderId = client.StartOrder(); client.AddToOrder("Arek", orderId, new ClientOrderPosition(menu.Position(1), 2)); client.AddToOrder("Marek", orderId, new ClientOrderPosition(menu.Position(2), 4)); Assert.False(client.Validate(orderId)); client.AddToOrder("Jarek", orderId, new ClientOrderPosition(menu.Position(1), 2)); Assert.True(client.Validate(orderId)); client.Send(orderId); // gdzie dotarło zamówienie? // czy się zapisało? }
static void Main(string[] args) { var client = new PizzaClient(); var tc = Transaction.Current; using (var t = new TransactionScope(tc)) { try { client.Prepare(); //client.Bake(); //client.Deliver(); t.Complete(); } catch (Exception) { t.Dispose(); } } System.Console.WriteLine(client.Prepare().Message); System.Console.ReadLine(); }
public PizzaController(PizzaClient pizzaClient) { this.pizzaClient = pizzaClient; }
//[Serializable] //public class PizzaOrder //{ // public List<string> Pizza; // public static IForm<PizzaOrder> BuildForm() // { // OnCompletionAsyncDelegate<PizzaOrder> processOrder = async (context, state) => // { // foreach (var pizza in state.Pizza) // { // //var orderLine = new FoodOrderLine(contex); // } // await context.PostAsync("We are ordered your pizza."); // }; // return new FormBuilder<PizzaOrder>() // .Message("Welcome to the pizza order bot!") // .Field(new FieldReflector<PizzaOrder>(nameof(Pizza)) // .SetType(null) // .SetActive((state) => true) // .SetDefine( (state, field) => // { // var values = Andys.GetPizzas().ToArray(); // foreach (var pizzaType in values) // { // field.AddDescription(pizzaType, pizzaType.Name +" "+ pizzaType.Price+" MDL"); // } // return Task.FromResult(true); // } // ) // ) // .Confirm("{Pizza} ???") // .AddRemainingFields() // .Message("Thanks for ordering a pizza!") // .OnCompletion(processOrder) // .Build(); // } //}; //internal static IDialog<PizzaOrder> MakeRootDialog() //{ // return Chain.From(() => FormDialog.FromForm(PizzaOrder.BuildForm)); //} /// <summary> /// POST: api/Messages /// Receive a message from a user and reply to it /// </summary> public async Task <HttpResponseMessage> Post([FromBody] Activity activity) { if (activity.Type == ActivityTypes.Message) { //await Conversation.SendAsync(activity, MakeRootDialog); ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl)); // calculate something for us to return PizzaLuisModel pizzaLuis = await PizzaClient.ParseInputText(activity.Text); Pizza pizza = null; List <Pizza> allPizza = new List <Pizza>(); string strResponse = string.Empty; switch (pizzaLuis.topScoringIntent.intent) { case "GetPizza": pizza = Andys.GetByName(pizzaLuis.entities.First().entity); if (pizza != null) { strResponse = $"To order pizza '{pizza.Name}', type 'order {pizza.Name}'"; } break; case "GetListOfPizza": allPizza = Andys.GetPizzas().ToList(); if (allPizza.Any()) { strResponse = "Type 'order {pizzaName}', ex. 'order rancho'"; } break; case "OrderPizza": pizza = Andys.GetByName(pizzaLuis.entities.First().entity); AddOrder(activity, pizza); if (pizza != null) { strResponse = $"Your pizza '{pizza.Name}' is added to cart. Thank you!"; } break; case "ExecuteOrder": var foodOrderRepo = new FoodOrderRepository(); var foodOrder = foodOrderRepo.FindPendingOrder(); if (foodOrder == null) { strResponse = "Your cart is empty, add some pizza"; break; } var cartItems = ConvertToAndysFormat.Convert(foodOrder); var requestHelper = new RequestHelper(); var orderOwner = ConvertToAndysFormat.GetOrderOwner(foodOrder); requestHelper.Order(orderOwner, cartItems); foodOrder.OrderStatus = OrderStatus.Closed; foodOrderRepo.SaveOrUpdate(foodOrder); strResponse = "Your order is placed. Wait for a call!"; break; default: strResponse = "Please specify another pizza name"; break; } var stringResponse = string.Join("\n\n", allPizza .Select((x, index) => index + 1 + ") " + " {" + x.ExternalId + "} " + x.Name + " " + x.Price + " MDL")); if (pizza != null) { stringResponse = pizza.ExternalId + " " + pizza.Name + " " + pizza.Price + " MDL"; } stringResponse += "\n\n" + strResponse; // return our reply to the user Activity reply = activity.CreateReply(stringResponse); await connector.Conversations.ReplyToActivityAsync(reply); } else { ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl)); var message = HandleSystemMessage(activity); await connector.Conversations.ReplyToActivityAsync(message); } var response = Request.CreateResponse(HttpStatusCode.OK); return(response); }