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; }
private void PullTheLeverKronk(Order order) { SendTheOwl("*****@*****.**"); SendTheOwl("*****@*****.**"); }
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(); }