void NewOrder()
 {
     currentOrder = new PackageOrder(); //makes a random package order
     Display(currentOrder);
     spawner.Spawn();
     orderActive = true;
 }
Esempio n. 2
0
        public static ViewPackageOrderVM returnPackage(Order order)
        {
            ViewPackageOrderVM ovm = new ViewPackageOrderVM();

            DataLayer dl = new DataLayer();

            ovm.invoice = order.InvoiceNumber;

            ovm.creditCardNumber = order.CreditCard;

            PackageOrder packageorder = (from x in dl.packageOrders
                                         where x.InvoiceID == ovm.invoice
                                         select x).ToList <PackageOrder>().FirstOrDefault();

            ovm.orderDate = order.OrderDate;

            ovm.status = order.Status;

            ovm.email = order.CustomerEmail;

            ovm.ArrivalLocation = packageorder.ArrivalLocation;

            ovm.DetartureLocation = packageorder.DepartureLocation;

            ovm.DetartureDate = packageorder.DepartureDate;

            ovm.ReturnDate = packageorder.ReturnDate;

            ovm.outbound = packageorder.Outbound_FlightNumber;

            ovm.inbound = packageorder.Inbound_FlightNumber;

            ovm.hotelName = packageorder.HotelName;

            ovm.composition = packageorder.Composition;
            Customer cust = (from x in dl.customers
                             where x.Email == ovm.email
                             select x).ToList <Customer>().FirstOrDefault();

            ovm.customerName = cust.FullName;

            ovm.customerId      = cust.ID;
            ovm.roomdescription = packageorder.RoomDescription;
            ovm.numberOfRooms   = packageorder.NumberOfRooms;
            ovm.totalPrice      = order.TotalPayment;
            ovm.numTickets      = packageorder.NumberOfTickets;
            ovm.Airline         = packageorder.Airline;
            return(ovm);
        }
Esempio n. 3
0
        public ActionResult SubmitOrder(PackageCheckoutVM obj)
        {
            DataLayer dl = new DataLayer();

            DateTime today        = DateTime.Today;
            string   date         = today.ToString("dd/MM/yyyy").Replace("/", ".");
            double   totalFee     = Convert.ToDouble(obj.totalFee.Replace("$", ""));
            bool     sameCustomer = false;

            // first check if customer already exists in table
            List <Customer> customerFromDB = (from u in dl.customers
                                              where u.Email.ToLower() == obj.email.ToLower()
                                              select u).ToList <Customer>();

            if (customerFromDB.Count != 0) // if customer already exists
            {
                // check if the input is the same as the customer data
                if (customerFromDB[0].FullName != obj.customerName || customerFromDB[0].ID != obj.id)
                {
                    TempData["error"] = "This email address already exist in our records with different name and/or different id!";
                    return(View("PackageCheckout", obj));
                }
                else if (customerFromDB[0].Location != obj.address || customerFromDB[0].PhoneNumber != obj.phone)
                {
                    // update: delete this row and later add new customer row
                    dl.customers.Remove(customerFromDB[0]);
                    dl.SaveChanges();
                }
                // else: same row - no need to update
                else
                {
                    sameCustomer = true;
                }
            }

            // --------------------- create object and save to table 1: Order
            Order order = new Order()
            {
                CreditCard       = obj.creditCard,
                CustomerEmail    = obj.email,
                OrderDate        = date,
                Status           = 0,
                TotalPayment     = totalFee,
                Type             = "Package",
                OrderDestination = obj.destCountry,
            };

            dl.orders.Add(order); // adding in memory and not to DB //
            dl.SaveChanges();
            int INVOICE = order.InvoiceNumber;

            // --------------------- create object and save to table 2: PackageOrder
            PackageOrder PackageOrder = new PackageOrder()
            {
                InvoiceID             = INVOICE,
                Composition           = obj.composition,
                DepartureLocation     = obj.departureLocation,
                ArrivalLocation       = obj.returnLocation,
                DepartureDate         = obj.departureDate,
                ReturnDate            = obj.returnDate,
                Outbound_FlightNumber = int.Parse(obj.departureFlightNumber),
                Inbound_FlightNumber  = int.Parse(obj.returnFlightNumber),
                Airline         = obj.airline,
                NumberOfTickets = obj.numberOfTickets,
                HotelName       = obj.hotelName,
                NumberOfRooms   = obj.numberOfRooms,
                RoomDescription = obj.roomDescription,
                Reviewed        = 0
            };

            dl.packageOrders.Add(PackageOrder); // adding in memory and not to DB //

            // --------------------- create object and save to table 3: Customer
            if (!sameCustomer)
            {
                Customer customer = new Customer()
                {
                    Email       = obj.email,
                    FullName    = obj.customerName,
                    Location    = obj.location,
                    ID          = obj.id,
                    PhoneNumber = obj.phone
                };

                dl.customers.Add(customer); // adding in memory and not to DB //
            }

            dl.SaveChanges();

            // go to recipt
            return(RedirectToAction("ViewOrderReceipt", "Support", new { invoice = INVOICE }));
        }
 //set num displays to the correct num sprite based on the order values
 void Display(PackageOrder order)
 {
     nums[0].sprite = numSprites[order.blocks];
     nums[1].sprite = numSprites[order.legos];
     nums[2].sprite = numSprites[order.cars];
 }
Esempio n. 5
0
        public async Task <IActionResult> PostAsync([FromBody] RegisterPackage command)
        {
            if (ModelState.IsValid)
            {
                Package package = Mapper.Map <Package>(command);

                // Checklist for package, order and product
                List <Product> products         = new List <Product>();
                List <Order>   orders           = new List <Order>();
                bool           packageIsChecked = false;
                bool           orderIsChecked   = false;

                foreach (var order in package.Orders)
                {
                    // Get the order from order repository
                    var ord = await _orderRepo.GetOrderAsync(order.OrderId);

                    if (ord != null)
                    {
                        // Create a "PackageOrder" entity and map the relationships with package and order
                        var packageOrder = new PackageOrder
                        {
                            Package = package,
                            Order   = ord,
                        };

                        // Add both "PackageOrder" and "Order" to the package
                        package.PackageOrders.Add(packageOrder);
                        orders.Add(ord);
                    }
                    else
                    {
                        return(NotFound());
                    }
                }

                // Check if ALL the orders have the same value in order "Destination"
                // (NOTE: Orders must have the same destination in order to be packaged)
                if (orders.Count != 0)
                {
                    orderIsChecked = !package.Orders
                                     .Select(o => o.Destination)
                                     .Distinct()
                                     .Skip(1)
                                     .Any();
                }
                else
                {
                    return(BadRequest());
                }

                foreach (var product in package.Products)
                {
                    // Get the product from product repository
                    var prod = await _productRepo.GetProductAsync(product.ProductId);

                    if (prod != null)
                    {
                        // Add the total weight to the package from all products
                        package.WeightInKgMax += prod.Weight;

                        // Create a "PackageProduct" entity and map the relationships with package and product
                        var packageProduct = new PackageProduct
                        {
                            Package = package,
                            Product = prod,
                        };

                        // Add both "PackageProduct" and "Product" to the package
                        package.PackageProducts.Add(packageProduct);
                        products.Add(prod);
                    }
                    else
                    {
                        return(NotFound());
                    }
                }

                // Replace the current package "Orders" and "Products" with correct ones
                if (orders.Count != 0 && products.Count != 0)
                {
                    package.Orders   = orders;
                    package.Products = products;
                }

                // Check if the package is of the type "Letterbox" and its total weight is less or equal to 2
                // (NOTE: This is a "Letterbox" package)
                if (package.TypeOfPackage == "Letterbox package" && package.WeightInKgMax <= 2)
                {
                    packageIsChecked = true;
                }

                // Check if the package is NOT of type "Letterbox" and its total weight is greater then 2 and less or equal to 20
                // (NOTE: This is a "Package" of any kind)
                if (package.TypeOfPackage != "Letterbox package" && package.WeightInKgMax > 2 && package.WeightInKgMax <= 20)
                {
                    packageIsChecked = true;
                }

                if (packageIsChecked == true && orderIsChecked == true)
                {
                    // Insert Package
                    package.Region         = package.Orders.Select(o => o.Destination).FirstOrDefault();
                    package.ShippingStatus = "IN STOCK";
                    package.Transport      = null;
                    await _packageRepo.AddPackageAsync(package);

                    return(CreatedAtRoute("GetPackageById", new { packageId = package.PackageId }, package));
                }

                return(BadRequest());
            }

            return(BadRequest());
        }