Example #1
0
        public static Order ToModel(this Orders o)
        {
            Order newOrder = new Order();

            newOrder.Id = o.Id;
            newOrder.Price = o.Price;
            newOrder.RestaurantID = o.RestaurantID;
            newOrder.Discount = o.Discount;
            newOrder.Time = o.Time;
            newOrder.Latitude = o.Latitude;
            newOrder.Longitude = o.Longitude;
            newOrder.ClusterID = o.ClusterID;
            newOrder.UserID = o.UserID;
            newOrder.Done = o.Done;
            newOrder.Location = o.Location;
            newOrder.Suborders = new List<Suborder>();
            foreach (var sub in o.Suborders)
            {
                newOrder.Suborders.Add(sub.ToModel());
            }

            return newOrder;
        }
Example #2
0
 private void PullTheLeverKronk(Order order)
 {
     SendTheOwl("*****@*****.**");
     SendTheOwl("*****@*****.**");
 }
Example #3
0
        public static Order ToModel(this GetOrdersInArea_Result o)
        {
            Order newOrder = new Order();

            newOrder.Id = o.Id;
            newOrder.Price = o.Price;
            newOrder.RestaurantID = o.RestaurantID;
            newOrder.Discount = o.Discount;
            newOrder.Time = o.Time;
            newOrder.Latitude = o.Latitude;
            newOrder.Longitude = o.Longitude;
            newOrder.ClusterID = o.ClusterID;
            newOrder.UserID = o.UserID;
            newOrder.Done = o.Done;
            newOrder.Location = o.Location;
            newOrder.Suborders = new List<Suborder>();
            Entities db = new Entities();
            var suborders = db.Suborders.Where(x => x.OrderID == o.Id);
            foreach (var sub in suborders)
            {
                newOrder.Suborders.Add(sub.ToModel());
            }

            return newOrder;
        }
        public Order PostOrder(Order order)
        {
            var clusters = db.GetClustersInAreaEntity(order.Latitude, order.Longitude, Constants.MaxRadius).
                Where(x=>x.RestaurantID==order.RestaurantID&&
                (x.Time/1000)==(order.Time/1000)).ToList();
            if (clusters!=null&&clusters.Count() > 0)
            {
                int clMinId = -1;
                double distMin = 99999;
                double clNewLat=0;
                double clNewLong = 0;
                foreach (var cluster in clusters)
                {
                    var clusterOrders = db.Orders.Where(x => x.ClusterID == cluster.Id);
                    double latitudeG= clusterOrders.Sum(x=>x.Latitude);
                    double longitudeG= clusterOrders.Sum(x => x.Longitude);
                    var n = cluster.Orders.Count;
                    latitudeG += order.Latitude;
                    longitudeG += order.Longitude;
                    latitudeG /= n+1;
                    longitudeG /= n+1;
                    var theOrders = db.GetOrdersInArea(latitudeG, longitudeG, Constants.MaxRadius).ToList();
                    var clusterOrdersIds = clusterOrders.Select(x => x.Id).ToList();
                    var theOrdersIds = theOrders.Select(x => x.Id).ToList();
                    if(clusterOrdersIds.Any(x=>theOrdersIds.Contains(x)))
                    {
                        double dist = theOrders.Min(x => x.Distance).GetValueOrDefault(0);
                        if (dist<distMin)
                        {
                            distMin = dist;
                            clMinId = cluster.Id;
                            clNewLat = latitudeG;
                            clNewLong = longitudeG;
                        }
                    }
                }
                if(clMinId!=-1)
                {
                    order.ClusterID = clMinId;
                    var cl = db.Clusters.Find(clMinId);
                    cl.Latitude = clNewLat;
                    cl.Longitude = clNewLong;
                    db.Entry(cl).State = System.Data.Entity.EntityState.Modified;
                    var outputorder=db.Orders.Add(order.ToEntity());
                    db.SaveChanges();
                    return outputorder.ToModel();
                }
                else
                {
                    var a = db.Clusters.Add(new Clusters() { Latitude = order.Latitude, Longitude = order.Longitude,RestaurantID=order.RestaurantID,Time=order.Time });
                    db.SaveChanges();
                    order.ClusterID = a.Id;
                    var outputorder=db.Orders.Add(order.ToEntity());
                    db.SaveChanges();
                    return outputorder.ToModel();
                }
            }
            else
            {
                var a = db.Clusters.Add(new Clusters() {Latitude=order.Latitude,Longitude=order.Longitude,RestaurantID=order.RestaurantID,Time=order.Time });
                db.SaveChanges();
                order.ClusterID = a.Id;
                var outputorder=db.Orders.Add(order.ToEntity());
                db.SaveChanges();
                return outputorder.ToModel();
            }

            //db.Orders.Add(order.ToEntity());
            //db.SaveChanges();
        }