public IHttpActionResult Create(OrderCreatingModel orderModel) { var client = ClientHelper.GetClient(context, orderModel.Identifier, orderModel.IdentifierType); HereApi api = new HereApi(); Order order = new Order() { Id = Guid.NewGuid(), CreationTimestamp = DateTime.Now, State = OrderStateEnum.Draft, Description = orderModel.Description, Photo = orderModel.Photo, RecipientDescription = orderModel.RecipientDescription, EndAddress = api.GetAdress(orderModel.EndAddressCoords), EndAddressCoords = orderModel.EndAddressCoords, StartAddress = api.GetAdress(orderModel.StartAddressCoords), StartAddressCoords = orderModel.StartAddressCoords, ClientId = client.Id, StateChangeTimestamp = DateTime.Now }; context.GetTable <Order>().InsertOnSubmit(order); context.SubmitChanges(); return(Ok()); }
/// <summary> /// Asynchronously get world map from REST API /// </summary> /// <remarks>Creates a Bitmap from fragments, gotten from REST API</remarks> /// <returns>Bitmap with world map</returns> public async Task <Bitmap> GetWorldMap() { // MapApi is Square, so minRow == min Column and maxRow == max Column // 1 << zoom == Pow(2, zoom), google left shift to multiple 2. F**k the Math.Pow const int zoom = 1; const int minRowAndColumn = 0; const int maxRowAndColumnPlusOne = (1 << zoom); var fragmentsOfMap = new List <List <Bitmap> >(maxRowAndColumnPlusOne); for (int i = minRowAndColumn; i < maxRowAndColumnPlusOne; ++i) { fragmentsOfMap.Add(new List <Bitmap>(maxRowAndColumnPlusOne)); for (int j = minRowAndColumn; j < maxRowAndColumnPlusOne; ++j) { fragmentsOfMap[i].Add(null); } } // TODO: Paralel load of fragments for (int i = minRowAndColumn; i < maxRowAndColumnPlusOne; ++i) { for (int j = minRowAndColumn; j < maxRowAndColumnPlusOne; ++j) { fragmentsOfMap[i][j] = await HereApi.GetSquareAsync(i, j, zoom); } } // Fragments have equal size int fragmentWidth = fragmentsOfMap[0][0].Width; int fragmentHeight = fragmentsOfMap[0][0].Height; int resWidth = fragmentWidth * (maxRowAndColumnPlusOne - minRowAndColumn); int resHeight = fragmentHeight * (maxRowAndColumnPlusOne - minRowAndColumn); // TODO: Exception handler Bitmap res = new Bitmap(resWidth, resHeight); using (Graphics g = Graphics.FromImage(res)) { g.Clear(Color.Gray); int rowOffset = 0; int columnOffset = 0; foreach (var column in fragmentsOfMap) { foreach (var fragment in column) { g.DrawImage(fragment, new Rectangle(rowOffset, columnOffset, fragmentWidth, fragmentHeight)); rowOffset += fragmentWidth; } columnOffset += fragmentHeight; rowOffset = 0; } } return(res); }
public IHttpActionResult StartDelivery(StartDeliveryModel model) { Courier courier = CourierHelper.GetCourier(context, model.Identifier, model.IdentifierType); if (courier == null) { return(BadRequest()); } var order = context.GetTable <Order>().Where(x => x.Id == model.OrderId).FirstOrDefault(); order.State = OrderStateEnum.InDelivery; order.StateChangeTimestamp = DateTime.Now; order.CourierId = courier.Id; context.SubmitChanges(); HereApi api = new HereApi(); var time = api.GetTimeTravel(order.StartAddressCoords, order.EndAddressCoords); return(Json(time)); }
public IHttpActionResult GetOrders(string location, string identifier, IdentifierEnum identifierType) { var courier = CourierHelper.GetCourier(context, identifier, identifierType); if (courier == null) { return(BadRequest()); } HereApi api = new HereApi(); var wayPoints = new List <string> { identifier + ";" + location }; context.GetTable <Order>() //.Where(x =>x.State == OrderStateEnum.Draft) .OrderBy(x => x.CreationTimestamp).Take(5).ToList() .ForEach(x => wayPoints.Add(x.Id + ";" + x.StartAddressCoords)); if (wayPoints.Count == 1) { return(Json(new object[] { })); } var ordersIds = new List <string>() { "FAA08AD6-A736-45EB-8F22-126BAB4163AF", "AE16E32E-DD2A-45FA-83B6-29A1DFB3E7B9 " }; //var ordersIds = api.GenerateOrdersForCourier(wayPoints, 2); var orders = new List <Order>(); foreach (var item in ordersIds) { orders.Add(context.GetTable <Order>().Where(x => x.Id == new Guid(item)).FirstOrDefault()); } ; return(Json(orders)); }
public async Task <Bitmap> GetHeatMap(List <MeteorBase> data) { Bitmap res = await HereApi.GetHeatMap(data); return(res); }