private bool SendMovedStopToGEP(Stop stopToMove, Stop beforeStop) { Graphic newStop = CreateNewStopToMove(stopToMove, beforeStop); if (newStop == null) return false; return SendStopToGEP(newStop, "Move Stop"); }
private Graphic CreateNewStopToMove(Stop stopToMove, Stop beforeStop) { string sequenceFieldAlias = Stop.SequenceFieldAlias; string sequenceFieldName = beforeStop.AliasToName(sequenceFieldAlias); if (stopToMove.Graphic == null || !stopToMove.Graphic.Attributes.ContainsKey(sequenceFieldName)) return null; if (beforeStop.Graphic == null || !beforeStop.Graphic.Attributes.ContainsKey(sequenceFieldName)) return null; object newSequence = CalculateMovedStopNewSequence(stopToMove, beforeStop); if (newSequence == null) return null; Graphic newStop = Helper.CloneGraphic(stopToMove.Graphic); newStop.Attributes[sequenceFieldName] = newSequence; return newStop; }
private bool MoveStop(Stop stopToMove, Stop beforeStop) { //return CalculateRoute(stopToMove, beforeStop, false); //return AddMovedStopToPending(stopToMove, beforeStop); return SendMovedStopToGEP(stopToMove, beforeStop); }
private Graphic CreateNewStopToAdd(Stop beforeStop, int durationInMinutes) { string sequenceFieldAlias = Stop.SequenceFieldAlias; string sequenceFieldName = beforeStop.AliasToName(sequenceFieldAlias); if (beforeStop.Graphic == null || !beforeStop.Graphic.Attributes.ContainsKey(sequenceFieldName)) return null; Graphic newStop = Helper.CloneGraphic(beforeStop.Graphic); // sequence object newSequence = beforeStop.GetPropertyValue(sequenceFieldAlias); newStop.Attributes[sequenceFieldName] = newSequence; // name string idFieldAlias = Stop.IdFieldAlias; string idFieldName = beforeStop.AliasToName(idFieldAlias); string newName = "Break-" + _routeName + "-Created-" + DateTime.Now.ToString("MM_dd-HH_mm_ss"); newStop.Attributes[idFieldName] = newName; // type string typeFieldAlias = Stop.TypeFieldAlias; string typeFieldName = beforeStop.AliasToName(typeFieldAlias); string typeBreak = Stop.BreakType; newStop.Attributes[typeFieldName] = typeBreak; // scheduled duration string scheduledDurationFieldAlias = Stop.ScheduledDurationFieldAlias; string scheduledDurationFieldName = beforeStop.AliasToName(scheduledDurationFieldAlias); newStop.Attributes[scheduledDurationFieldName] = durationInMinutes; return newStop; }
private Graphic CreateNewStopToEdit(Stop stop, int durationInMinutes) { if (stop.Graphic == null) return null; Graphic newStop = Helper.CloneGraphic(stop.Graphic); // scheduled duration string scheduledDurationFieldAlias = Stop.ScheduledDurationFieldAlias; string scheduledDurationFieldName = stop.AliasToName(scheduledDurationFieldAlias); newStop.Attributes[scheduledDurationFieldName] = durationInMinutes; return newStop; }
private object CalculateMovedStopNewSequence(Stop stopToMove, Stop beforeStop) { if (stopToMove == null) return null; if (beforeStop == null) return null; string sequenceFieldAlias = Stop.SequenceFieldAlias; ICollectionView cv = CollectionViewSource.GetDefaultView(Items); int newSequence = 0; foreach (Stop stop in cv) { if (stop == beforeStop) return stopToMove.ConvertValueByPropertyType(sequenceFieldAlias, newSequence); if (stop != stopToMove) newSequence++; } return null; }
private bool CalculateRoute(Stop stopToMove, Stop beforeStop, bool bOptimize) { if (stopToMove == null) return false; if (beforeStop == null) return false; string fromRouteName = stopToMove.GetPropertyValueAsString(Stop.RouteNameFieldAlias); string toRouteName = beforeStop.GetPropertyValueAsString(Stop.RouteNameFieldAlias); // create a list of stops in the new order List<string> stops = new List<string>(); ICollectionView cv = CollectionViewSource.GetDefaultView(Items); foreach (Stop stop in cv) { if (stop == beforeStop) stops.Add("\"" + stopToMove.GetPropertyValueAsString(Stop.IdFieldAlias) + "\""); if (stop != stopToMove) stops.Add("\"" + stop.GetPropertyValueAsString(Stop.IdFieldAlias) + "\""); } // return if there is nothing to do if (stops == null) return true; // create a list of requests List<string> calculateRequests = new List<string>(); calculateRequests.Add(FormulateHttpRouteRequestBody(fromRouteName, stops, false)); // merge all requests to one request string requestId = GenerateRequestId("Calculate-Routes"); string httpRequestBodyJSON = "{\"route\":["; httpRequestBodyJSON += String.Join(",", calculateRequests); httpRequestBodyJSON += "],\"commit\":true,\"RequestId\":\"" + requestId + "\"}"; string uri = AppSettings.GetCalculateRoutesUrl() + ".json"; PostHttpRequest(uri, httpRequestBodyJSON, "Calculate Routes"); return true; }
private bool AddMovedStopToPending(Stop stopToMove, Stop beforeStop) { Graphic newStop = CreateNewStopToMove(stopToMove, beforeStop); if (newStop == null) return false; _flStopsPending.AddFeature(newStop, false); _flStopsPending.SaveEdits(); _flStopsPending.Update(); return true; }
protected void OnEdit(object stopObject) { _editStop = stopObject as Stop; }
protected void OnAdd(object stopObject) { _addStopBeforeStop = stopObject as Stop; }
protected override Item CreateItem() { Item stop = new Stop(this); return stop; }
private void SetStopStatus(Stop stop, string status, string remark) { if (stop == null || status == null) return; _skipUpdates = true; //RefreshStopsFeatureLayer(); // find the corresponding feature Graphic feature = _flStops.FindFeatureByOID(stop.Graphic); if (feature == null) { _skipUpdates = false; return; } // Set the status SetItemAttribute(stop, feature, Stop.StatusFieldAlias, status); // Set the remark if (remark != null) SetItemAttribute(stop, feature, Stop.RemarkFieldAlias, remark); // Stop Last Updated DateTime now = DateTime.Now; SetItemAttribute(stop, feature, Stop.LastUpdatedFieldAlias, now); // Stop Actual Arrival if (status.Equals("AtStop")) SetItemAttribute(stop, feature, Stop.ActualArrivalFieldAlias, DateTime.Now); if (status.Equals("Completed") || status.Equals("Exception")) { // Stop Actual Departure string stopsActualDepartureAlias = ConfigurationManager.AppSettings.Get("StopsActualDepartureAlias"); SetItemAttribute(stop, feature, stopsActualDepartureAlias, now); // Stop Actual Duration string stopsActualArrivalAlias = ConfigurationManager.AppSettings.Get("StopsActualArrivalAlias"); object actualArrivalObj = stop.GetPropertyValue(stopsActualArrivalAlias); if (actualArrivalObj is DateTime) { DateTime actualArrival = (DateTime)actualArrivalObj; TimeSpan duration = now - actualArrival; string stopsActualDurationAlias = ConfigurationManager.AppSettings.Get("StopsActualDurationAlias"); SetItemAttribute(stop, feature, stopsActualDurationAlias, duration.TotalMinutes); } } _flStopsPending.AddFeature(feature, true); _flStopsPending.SaveEdits(); //_flStopsPending.Update(); _flStops.SaveEdits(); _flStops.Update(); _skipUpdates = false; }