Ejemplo n.º 1
0
        //Méthode qui retourne les orders qui ont été livrées (Archivage)
        public ActionResult GetArchivedOrders(string email)
        {
            // On récupère les orders correspondantes à un id
            int id     = CourierManager.GetCourierId(email);
            var orders = OrderManager.GetArchivedCourierOrders(id);

            //On stock dans des views bags les boolean de connection
            ViewBag.email = email;

            return(View(orders));
        }
Ejemplo n.º 2
0
        // Personal data and list of the orders of the courier
        public ActionResult Deliver()
        {
            string  name    = User.Identity.Name;
            User    user    = UserManager.GetUserByEmail(name);
            Courier courier = CourierManager.GetCourierByUserId(user.IdUser);

            var orderslist = new List <Order>();

            if (OrderManager.GetOrdersByCourier(courier.IdCourier) != null)
            {
                orderslist = OrderManager.GetOrdersByCourier(courier.IdCourier);
            }
            //order by the idOrder descending
            var descendingOrder = orderslist.OrderByDescending(i => i.IdOrder);

            var orderCustomer = new List <OrderCustomer>();

            foreach (var item in descendingOrder)
            {
                var order = new OrderCustomer();
                order.order = item;
                var customer     = CustomerManager.GetCustomer(item.IdClient);
                var customerdata = UserManager.GetUser(customer.IdUser);
                order.user = customerdata;
                order.city = CityManager.GetCity(customerdata.IdCity);

                orderCustomer.Add(order);
            }

            var deliverData = new DeliverData();

            deliverData.orderlist = orderCustomer;
            deliverData.user      = user;
            deliverData.city      = CityManager.GetCity(user.IdCity);

            return(View(deliverData));
        }
Ejemplo n.º 3
0
 public CourierController()
 {
     _courierManager = new CourierManager();
 }
Ejemplo n.º 4
0
        public ActionResult Order(OrderItem orderItem)
        {
            int idCityRestaurant = (int)HttpContext.Session.GetInt32("idCityRestaurant");


            List <Courier> couriers = CourierManager.GetIdCourier(idCityRestaurant);



            //Cherche les livreurs de la même ville que le restaurant ceux qui n'ont pas 5 orders dans l'intervalle de 30 minutes
            foreach (Courier courier in couriers)
            {
                Boolean isAvailable = true;

                int cpt = 0;

                //Retourne la liste de toutes les orders correspondantes au livreur sélectionné
                List <Order> orders = OrderManager.GetCourierOrders(courier.IdCourier);

                //Si le livreur n'a pas d'order
                if (orders != null)
                {
                    foreach (Order order in orders)
                    {
                        //On trouve la différence de temps pour la vérification des 30 minutes. Si c'est le cas, on augmente le compteur de commande
                        double diffHours = (order.Delivery_time - orderItem.DeliveryTime).TotalMinutes;

                        if (diffHours >= -15 && diffHours <= 0 || diffHours <= 15 && diffHours >= 0)
                        {
                            cpt++;
                        }
                    }

                    //Si le compteur est égal à 5, on n'assigne pas le livreur
                    if (cpt >= 5)
                    {
                        isAvailable = false;
                    }

                    //Si le boolean est toujours à true, on assigne ce livreur.
                    if (isAvailable == true)
                    {
                        orderItem.IdCourier = courier.IdCourier;
                        break;
                    }
                }
                else
                {
                    //Si le boolean est toujours à true, on assigne ce livreur.
                    if (isAvailable == true)
                    {
                        orderItem.IdCourier = courier.IdCourier;
                    }
                }
            }

            //Si aucun livreur n'est disponible, on affiche une page qui le dit
            if (orderItem.IdCourier == 0)
            {
                basket.Clear();
                return(RedirectToAction("NoCourierAvailable"));
            }

            //Si le prix total n'est pas égal à 0, on crée l'order, sinon non et on affiche un message d'erreur
            if (true)
            {
                //On crée un objet Order qu'on remplit avec les informations de l'orderItem
                int   idOrder;
                var   listOrderDish = new List <OrderDish>();
                Order order         = new Order();
                order.Status        = orderItem.Status;
                order.IdCourier     = orderItem.IdCourier;
                order.IdCustomer    = orderItem.IdCustomer;
                order.Delivery_time = orderItem.DeliveryTime;

                //Quand on a crée l'order, on récupère son id pour créer l'Order_dishes
                idOrder = OrderManager.AddOrder(order);

                //On remplit une liste d'orderDish qui permettra de créer toutes les lignes dans la base de données
                foreach (CardItem cardItem in basket)
                {
                    OrderDish orderDish = new OrderDish();

                    orderDish.IdOrder  = idOrder;
                    orderDish.IdDishes = cardItem.idDish;
                    orderDish.Quantity = cardItem.quantity;

                    listOrderDish.Add(orderDish);
                }

                //Pour chaque objet dans la liste, on crée une ligne dans la BDD. Si la quantité est à 0, on ne crée pas de ligne
                foreach (OrderDish orderDishObject in listOrderDish)
                {
                    if (orderDishObject.Quantity != 0)
                    {
                        Order_dishesManager.AddOrderDishes(orderDishObject);
                    }
                }
                basket.Clear();
                //HttpContext.Session.SetString("Role", "Customer");
                return(RedirectToAction("Restaurants", "Restaurant"));
            }
        }
Ejemplo n.º 5
0
        static void Main(string[] args)
        {
            /*--Customers--*/

            var customerDBManager = new CustomersManager(Configuration);

            //Add new customer
            Console.WriteLine("--Add customer --");
            customerDBManager.AddCustomer(new Customers {
                Firstname = "Ludovic", Lastname = "Sahraoui", Login = "******", Password = "******", Country_code = 1, Address = "Chemin des Salines 40"
            });;
            //var customers = customerDBManager.GetCustomer(1);
            //Console.WriteLine(customers.Firstname);

            /*
             * //Update new customer
             * var newCustomer = customerDBManager.GetCustomer(1);
             * newCustomer.Firstname = "Léo";
             * newCustomer.Lastname = "Favre";
             * customerDBManager.UpdateCustomer(newCustomer);
             *
             * /*
             * //Delete customer
             * Console.WriteLine("--Delete customer --");
             * customerDBManager.DeleteCustomer(1);
             */

            /*--Cities--*/
            //Get Cities
            Console.WriteLine("--Get cities --");
            var citiesDBManager = new CitiesManager(Configuration);
            var cities          = citiesDBManager.GetCities();

            foreach (var city in cities)
            {
                Console.WriteLine(city.Name);
            }


            /*--Courier--*/
            Console.WriteLine("--Get courier 1 --");
            var courierDBManager = new CourierManager(Configuration);
            var courier          = courierDBManager.GetCourier(1);

            Console.WriteLine(courier.Firstname);

            /*--Dishes--*/


            //Get dishes
            Console.WriteLine("--Get dishes --");
            var dishesDBManager = new DishesManager(Configuration);
            var dishes          = dishesDBManager.GetDishes();

            foreach (var dish in dishes)
            {
                Console.WriteLine(dish.Name);
            }

            /*--OrderDishes--*/



            /*--Orders--*/

            //add order
            Console.WriteLine("--Add order --");
            var ordersDBManager = new OrdersManager(Configuration);

            ordersDBManager.AddOrder(new Order {
                Status = "Ready", Created_at = 02042019, Delivery_time = 2, IdCourier = 1, IdCustomer = 1
            });;


            /*--Restaurants--*/
        }
Ejemplo n.º 6
0
        //Method that creates the order
        public ActionResult Order(string deliverytime)
        {
            User user       = UserManager.GetUserByEmail(User.Identity.Name);
            int  idCustomer = CustomerManager.GetCustomerByIdUser(user.IdUser);
            var  cartlists  = HttpContext.Session.GetObjectFromJson <List <Cart> >("Cart");

            int idresto = cartlists[0].dish.IdRestaurant;

            var idcity = RestaurantManager.GetCityFromRestaurant(idresto);

            var users = UserManager.GetUsersByIdCity(idcity);

            var couriers = CourierManager.GetCouriersByUserIdSameCity(users);

            //Check if there is a courier in the same city as the restaurant
            if (!couriers.Any())
            {
                return(RedirectToAction("NoFreeCourier"));
            }

            var            orders      = OrderManager.GetOrders();
            List <Courier> courierFree = new List <Courier>();

            //Retrieve the date of the order and the delivery date from the view ShoppingCart or Restaurants/Details
            string   tspan = Convert.ToString(deliverytime);
            DateTime dt    = DateTime.Now;
            DateTime ts    = DateTime.Parse(tspan);


            foreach (var courier in couriers)
            {
                if (OrderManager.GetNumberOfOrder(courier.IdCourier, ts) < 5)
                {
                    courierFree.Add(courier);
                }
            }

            //Check if any courier is available
            if (!courierFree.Any())
            {
                return(RedirectToAction("NoFreeCourier"));
            }

            var courriers = CourierManager.GetCouriers();

            OrderManager.GetNumberOfOrder(courriers[0].IdCourier, ts);



            //Insert the order from the cart
            Order order = new Order();

            order.Status       = "Not delivered";
            order.Date         = dt;
            order.ShippingDate = ts;
            order.TotalPrice   = cartlists.Sum(m => m.totalPriceProduct);
            order.IdCourier    = courierFree[0].IdCourier;
            order.IdClient     = idCustomer;

            Order order1 = OrderManager.AddOrder(order);


            //Insert each dish and quantity into Order_Dishes
            foreach (var product in cartlists)
            {
                Order_Dishes productordered = new Order_Dishes();
                productordered.Quantity = product.quantity;
                productordered.IdDish   = product.dish.IdDish;
                productordered.IdOrder  = order1.IdOrder;


                Order_DishesManager.AddOrder_Dishes(productordered);
            }

            var cart = new List <Cart>();

            HttpContext.Session.SetObjectAsJson("Cart", cart);


            return(RedirectToAction("Confirmation", "Cart"));
        }