public IActionResult Deliver() { int orderid = int.Parse(Request.Form["orderid"]); Order order = ordersManager.GetOrderById(orderid); OrdersStatus orderStatus = ordersStatusManager.GetOrdersStatusByStatus(OrdersStatusManager.COMMANDE_LIVREE); OrdersStatusHistory ordersStatusHistory = new OrdersStatusHistory { order = order, created_at = new DateTime(), ordersStatus = orderStatus }; ordersStatusHistoryManager.AddOrdersStatusHistory(ordersStatusHistory); HttpContext.Session.SetInt32("deliveredOrder", 1); return(RedirectToAction("MyDeliveries", "Orders")); }
public IActionResult Cancel() { string nom = Request.Form["nom"]; string prenom = Request.Form["prenom"]; int orderid = int.Parse(Request.Form["orderid"]); Order order = ordersManager.GetOrderById(orderid); // on compare le nom et le prénom de la commande avec ceux saisis if (order.customer.full_name.ToLower() == (prenom + " " + nom).ToLower()) { OrdersStatus orderStatus = ordersStatusManager.GetOrdersStatusByStatus(OrdersStatusManager.COMMANDE_ANNULEE); OrdersStatusHistory ordersStatusHistory = new OrdersStatusHistory { order = order, created_at = new DateTime(), ordersStatus = orderStatus }; ordersStatusHistoryManager.AddOrdersStatusHistory(ordersStatusHistory); HttpContext.Session.SetInt32("deletedOrder", 1); return(RedirectToAction("MyOrders", "Orders")); } else { HttpContext.Session.SetInt32("wrongInfos", 1); return(RedirectToAction("Cancel", "Orders")); } }
public OrdersStatusHistory AddOrdersStatusHistory(OrdersStatusHistory ordersStatusHistory) { return(OrdersStatusHistoryDB.AddOrdersStatusHistory(ordersStatusHistory)); }
public IActionResult Confirm() { int orderid = (int)HttpContext.Session.GetInt32("orderid").GetValueOrDefault(); int hours = int.Parse(Request.Form["livraisonHeures"]); int minutes = int.Parse(Request.Form["livraisonMinutes"]); //System.Diagnostics.Debug.WriteLine("---------------> hours = " + hours); //System.Diagnostics.Debug.WriteLine("---------------> minutes = " + minutes); DateTime deliveryTime = new DateTime( DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, hours, minutes, 0, 0, DateTime.Now.Kind); Order order = ordersManager.GetOrderById(orderid); // On doit retrouver le restaurant de la commande pour savoir la ville où // chercher un livreur List <OrderDish> orderDishes = orderDishesManager.GetOrderDishByOrderId(order.id); int cityId = orderDishes[0].dish.restaurant.city.id; //System.Diagnostics.Debug.WriteLine("---------------> cityid = " + cityId); // On doit trouver un livreur dispo pour cette commande // critères : 1. la ville (le livreur doit être dans la même) // 2. la date de livraison souhaitée (le livreur ne doit pas avoir // plus de 5 commandes à livrer dans les 30mn int count = 0; List <Deliverer> deliverers = deliverersManager.GetDeliverersForCity(cityId); bool canOrder = false; Deliverer finalDeliverer = new Deliverer(); if (deliverers.Count > 0) // si 0, c'est qu'on a pas pu trouver de livreur { foreach (var deliverer in deliverers) { List <Order> orders = ordersManager.GetOrdersForDelivererInTimespan(deliverer.id, deliveryTime); if (orders.Count > 0) { foreach (var o in orders) { OrdersStatusHistory ordersStatusHistory = ordersStatusHistoryManager.GetCurrentOrderStatusHistoryForOrder(o.id); if (ordersStatusHistory.ordersStatus.status == OrdersStatusManager.COMMANDE_RECUE || ordersStatusHistory.ordersStatus.status == OrdersStatusManager.COMMANDE_PREPA || ordersStatusHistory.ordersStatus.status == OrdersStatusManager.COMMANDE_LIVRAISON) { count++; } } // One courier cannot have more than 5 orders to deliver every 30 minutes if (count > MAX_ORDER_PER_DELIVERER) { HttpContext.Session.SetString("orderError", "Tout les livreurs sont occupés !"); canOrder = false; } else { HttpContext.Session.SetString("orderError", ""); finalDeliverer = deliverer; canOrder = true; } } else { HttpContext.Session.SetString("orderError", ""); finalDeliverer = deliverer; canOrder = true; } } } else { //System.Diagnostics.Debug.WriteLine("---------------> counta = " + count); HttpContext.Session.SetString("orderError", "Pas de livreurs pour cette ville !"); canOrder = false; } if (canOrder) { System.Diagnostics.Debug.WriteLine("---------------> deliverer name = " + finalDeliverer.full_name); System.Diagnostics.Debug.WriteLine("---------------> deliveryTime = " + deliveryTime.ToString()); order.deliverer = finalDeliverer; order.delivery_time_requested = deliveryTime; ordersManager.UpdateOrder(order); OrdersStatus orderStatus = ordersStatusManager.GetOrdersStatusByStatus(OrdersStatusManager.COMMANDE_RECUE); OrdersStatusHistory ordersStatusHistory = new OrdersStatusHistory { order = order, created_at = new DateTime(), ordersStatus = orderStatus }; ordersStatusHistoryManager.AddOrdersStatusHistory(ordersStatusHistory); // On considère que la commande est directement en cours de livraison, on fait progresser les statuts // commande reçue -> en cours de prépa orderStatus = ordersStatusManager.GetOrdersStatusByStatus(OrdersStatusManager.COMMANDE_PREPA); ordersStatusHistory = new OrdersStatusHistory { order = order, created_at = new DateTime(), ordersStatus = orderStatus }; ordersStatusHistoryManager.AddOrdersStatusHistory(ordersStatusHistory); // en cours de prépa -> en cours de livraison orderStatus = ordersStatusManager.GetOrdersStatusByStatus(OrdersStatusManager.COMMANDE_LIVRAISON); ordersStatusHistory = new OrdersStatusHistory { order = order, created_at = new DateTime(), ordersStatus = orderStatus }; ordersStatusHistoryManager.AddOrdersStatusHistory(ordersStatusHistory); HttpContext.Session.Remove("orderid"); HttpContext.Session.Remove("cityid"); return(RedirectToAction("MyOrders", "Orders")); } else { return(RedirectToAction("DisplayCart", "Orders")); } }
public void SimuScenario() { Console.WriteLine("--------------------------------------------------------"); Console.WriteLine("Simulating scenario"); Console.WriteLine("--------------------------------------------------------"); string User = "******"; string Pwd = "Pass1234"; // Connexion Console.WriteLine($"Authenticating user {User} with password {Pwd}."); Customer c = customersManager.CheckAuthentication(User, Pwd); if (c != null) { Console.WriteLine($"Successfully authenticated user {c.username}."); Console.WriteLine("Listing avalaible restaurants."); // Listing des restaurants disponibles Restaurant selectedRestaurant = new Restaurant(); foreach (Restaurant r in restaurantsManager.GetAllRestaurants()) { Console.WriteLine("\t" + r.merchant_name); // On sélectionne arbitrairement un restaurant pour ce scénario if (r.merchant_name == "Fish from Valais") { selectedRestaurant = r; } } Console.WriteLine("User selects \"Fish from Valais\"."); Console.WriteLine("Listing avalaible dishes for selected restaurant."); // Listing des plats du restaurant choisi Dish selectedDish = new Dish(); foreach (Dish d in dishesManager.GetAllDishesForRestaurant(selectedRestaurant.id)) { Console.WriteLine("\t" + d.name + " - " + d.price); if (d.name == "Cheeseburger") { selectedDish = d; } } // Création d'une nouvelle commande "vide" Console.WriteLine("Creating a new order"); Order order = new Order(); order.customer = c; order.deliverer = deliverersManager.GetDelivererById(2); order.delivery_time_requested = DateTime.Now.AddHours(4); order = ordersManager.AddOrder(order); Console.WriteLine($"Created order id {order.id}"); // On ajoute les plats voulus à la commande Console.WriteLine("Adding dishes to the order"); OrderDish orderDish = new OrderDish(); orderDish.order = order; orderDish.dish = selectedDish; orderDish.quantity = 2; orderDish = orderDishesManager.AddOrderDish(orderDish); Console.WriteLine($"Added {orderDish.quantity} {orderDish.dish.name} to the order"); int total = 0; foreach (var od in orderDishesManager.GetOrderDishByOrderId(orderDish.order.id)) { total += od.dish.price * od.quantity; } Console.WriteLine($"Total amount : {total}"); Console.WriteLine("Adding history info for the order"); OrdersStatusHistory ordersStatusHistory = new OrdersStatusHistory(); ordersStatusHistory.order = orderDish.order; ordersStatusHistory.created_at = DateTime.Now; // TODO à voir si on peut le mettre par défaut au lieu de le rajouter ordersStatusHistory.ordersStatus = ordersStatusManager.GetOrdersStatusById(1); ordersStatusHistory = ordersStatusHistoryManager.AddOrdersStatusHistory(ordersStatusHistory); Console.WriteLine("Current order status : " + ordersStatusHistoryManager.GetCurrentOrderStatusHistoryForOrder(order.id).ordersStatus.status); } else { Console.WriteLine($"Could not authenticate user {User}."); } Console.WriteLine("--------------------------------------------------------"); Console.WriteLine("End of simulation"); Console.WriteLine("--------------------------------------------------------"); }