Esempio n. 1
0
 void UpdateRoutesPixBuf()
 {
     if (pixbufMarkers != null && ViewModel.RoutesOnDay.Count == pixbufMarkers.Length)
     {
         return;
     }
     pixbufMarkers = new Pixbuf[ViewModel.RoutesOnDay.Count];
     for (int i = 0; i < ViewModel.RoutesOnDay.Count; i++)
     {
         PointMarkerShape shape = ViewModel.GetMarkerShapeFromBottleQuantity(ViewModel.RoutesOnDay[i].TotalFullBottlesToClient);
         pixbufMarkers[i] = PointMarker.GetIconPixbuf(ViewModel.GetAddressMarker(i).ToString(), shape);
     }
 }
Esempio n. 2
0
        private PointMarker FillAddressMarker(Order order, PointMarkerType type, PointMarkerShape shape, GMapOverlay overlay, RouteList route)
        {
            var addressMarker = new PointMarker(new PointLatLng((double)order.DeliveryPoint.Latitude, (double)order.DeliveryPoint.Longitude), type, shape)
            {
                Tag = order
            };

            string ttText = order.DeliveryPoint.ShortAddress;

            if (order.Total19LBottlesToDeliver > 0)
            {
                ttText += string.Format("\nБутылей 19л: {0}", order.Total19LBottlesToDeliver);
            }
            if (order.Total6LBottlesToDeliver > 0)
            {
                ttText += string.Format("\nБутылей 6л: {0}", order.Total6LBottlesToDeliver);
            }
            if (order.Total600mlBottlesToDeliver > 0)
            {
                ttText += string.Format("\nБутылей 0,6л: {0}", order.Total600mlBottlesToDeliver);
            }

            ttText += string.Format($"\nЗабор бутылей: {order.BottlesReturn}");

            ttText += string.Format("\nВремя доставки: {0}\nРайон: {1}",
                                    order.DeliverySchedule?.Name ?? "Не назначено",
                                    ViewModel.LogisticanDistricts?.FirstOrDefault(x => x.DistrictBorder.Contains(order.DeliveryPoint.NetTopologyPoint))?.DistrictName);

            addressMarker.ToolTipText = ttText;

            var identicalPoint = overlay.Markers.Count(g => g.Position.Lat == (double)order.DeliveryPoint.Latitude && g.Position.Lng == (double)order.DeliveryPoint.Longitude);
            var pointShift     = 5;

            if (identicalPoint >= 1)
            {
                addressMarker.Offset = new System.Drawing.Point(identicalPoint * pointShift, identicalPoint * pointShift);
            }

            if (route != null)
            {
                addressMarker.ToolTipText += string.Format(" Везёт: {0}", route.Driver.ShortName);
            }

            return(addressMarker);
        }
Esempio n. 3
0
        private void FillTypeAndShapeMarker(Order order, RouteList route, IEnumerable <int> orderRlsIds, out PointMarkerShape shape, out PointMarkerType type, bool overdueOrder = false)
        {
            shape = ViewModel.GetMarkerShapeFromBottleQuantity(order.Total19LBottlesToDeliver, overdueOrder);
            type  = PointMarkerType.black;

            if (!orderRlsIds.Any())
            {
                if ((order.DeliverySchedule.To - order.DeliverySchedule.From).TotalHours <= 1)
                {
                    type = PointMarkerType.black_and_red;
                }
                else
                {
                    double from = order.DeliverySchedule.From.TotalMinutes;
                    double to   = order.DeliverySchedule.To.TotalMinutes;
                    if (from >= 1080 && to <= 1439)                   //>= 18:00, <= 23:59
                    {
                        type = PointMarkerType.grey_stripes;
                    }
                    else if (from >= 0)
                    {
                        if (to <= 720)                       //<= 12:00
                        {
                            type = PointMarkerType.red_stripes;
                        }
                        else if (to <= 900)                       //<=15:00
                        {
                            type = PointMarkerType.yellow_stripes;
                        }
                        else if (to <= 1080)                       //<= 18:00
                        {
                            type = PointMarkerType.green_stripes;
                        }
                    }
                }
            }

            if (route != null)
            {
                type = ViewModel.GetAddressMarker(ViewModel.RoutesOnDay.IndexOf(route));
            }
        }