/// <summary> /// Add Capacities properties /// </summary> private void _AddCapacityProperties(string prePath, IList <object> mapProperties, IList <object> selectedMapProperties, StringCollection selectedConfig) { // specials type: capacities if (App.Current.Project != null) { CapacitiesInfo info = App.Current.Project.CapacitiesInfo; for (int i = 0; i < info.Count; ++i) { CapacityInfo capacityInfo = info[i]; Unit units; if (RegionInfo.CurrentRegion.IsMetric) { units = capacityInfo.DisplayUnitMetric; } else { units = capacityInfo.DisplayUnitUS; } _AddPropertyTip(prePath, "Capacities.[" + i.ToString() + "]", info[i].Name, mapProperties, selectedMapProperties, selectedConfig, units, units); } } }
public override bool Equals(object obj) { var otherLb = obj as LabelInfo; return(Cost == otherLb.Cost && UnreachableNodesAmount == otherLb.UnreachableNodesAmount && CapacityInfo.Equals(otherLb.CapacityInfo) && IsCoincideUnreachableVector(otherLb.UnreachableNodes)); }
public BodyPart(EBodyType bodyType, HpSystem hpSystem, string name, float size, CapacityInfo capacityInfo) { this.BodyType = bodyType; this.HpSystem = hpSystem; this.Name = name; this.NameCustom = name; this.Size = size; this.CapacityInfo = capacityInfo; }
private List <ESRI.ArcLogistics.DomainObjects.Order> processOrders(DataTable table) { List <ESRI.ArcLogistics.DomainObjects.Order> OrderList = new List <Order>(); foreach (DataRow row in table.Rows) { // Create New empty Order CapacitiesInfo capInfo = m_application.Project.CapacitiesInfo; OrderCustomPropertiesInfo propInfo = m_application.Project.OrderCustomPropertiesInfo; ESRI.ArcLogistics.DomainObjects.Order resultOrder = new ESRI.ArcLogistics.DomainObjects.Order(capInfo, propInfo); OrderCustomPropertiesInfo orderPropertiesInfo = resultOrder.CustomPropertiesInfo; OrderCustomProperties orderProperties = resultOrder.CustomProperties; CapacitiesInfo orderCapacitiesInfo = resultOrder.CapacitiesInfo; Capacities orderCapacities = resultOrder.Capacities; bool geocodeProvided = false; bool geocodeCorrect = false; bool geocodedCorrectly = false; double tempD; DateTime TWdateTime; Double tempX = 0.0; Double tempY = 0.0; // Insert Order Information resultOrder.PlannedDate = m_application.CurrentDate; for (int i = 0; i < table.Columns.Count; i++) { try { switch (table.Columns[i].ColumnName) { #region Case Statements case "Name": resultOrder.Name = row["Name"].ToString(); break; case "Address": resultOrder.Address.AddressLine = row["Address"].ToString(); break; case "City": resultOrder.Address.Locality3 = row["City"].ToString(); break; case "State": resultOrder.Address.StateProvince = row["State"].ToString(); break; case "Zip": resultOrder.Address.PostalCode1 = row["Zip"].ToString(); break; case "Zip4": resultOrder.Address.PostalCode2 = row["Zip4"].ToString(); break; case "Country": resultOrder.Address.Country = row["Country"].ToString(); break; case "PlannedDate": DateTime tempDT = new DateTime(); if (System.DateTime.TryParse(row["PlannedDate"].ToString(), out tempDT)) { resultOrder.PlannedDate = tempDT; } break; case "Priority": if (row["Priority"].ToString() == "High") { resultOrder.Priority = OrderPriority.High; } else if (row["Priority"].ToString() == "Normal") { resultOrder.Priority = OrderPriority.Normal; } break; case "OrderType": if (row["OrderType"].ToString() == "Pickup") { resultOrder.Type = OrderType.Pickup; } else if (row["OrderType"].ToString() == "Delivery") { resultOrder.Type = OrderType.Delivery; } break; case "ServiceTime": if (Double.TryParse(row["ServiceTime"].ToString(), out tempD)) { resultOrder.ServiceTime = tempD; } break; case "TimeWindowStart": string tempS = row["TimeWindowStart"].ToString(); if (DateTime.TryParse(tempS, out TWdateTime)) { if (TWdateTime.TimeOfDay != TimeSpan.Zero) { resultOrder.TimeWindow.From = TWdateTime.TimeOfDay; resultOrder.TimeWindow.IsWideOpen = false; } } break; case "TimeWindowFinish": if (DateTime.TryParse(row["TimeWindowFinish"].ToString(), out TWdateTime)) { if (TWdateTime.TimeOfDay != TimeSpan.Zero) { resultOrder.TimeWindow.To = TWdateTime.TimeOfDay; resultOrder.TimeWindow.IsWideOpen = false; } } break; case "TimeWindow2Start": if (DateTime.TryParse(row["TimeWindow2Start"].ToString(), out TWdateTime)) { if (TWdateTime.TimeOfDay != TimeSpan.Zero) { resultOrder.TimeWindow2.From = TWdateTime.TimeOfDay; resultOrder.TimeWindow2.IsWideOpen = false; } } break; case "TimeWindow2Finish": if (DateTime.TryParse(row["TimeWindow2Finish"].ToString(), out TWdateTime)) { if (TWdateTime.TimeOfDay != TimeSpan.Zero) { resultOrder.TimeWindow2.To = TWdateTime.TimeOfDay; resultOrder.TimeWindow2.IsWideOpen = false; } } break; case "MaxViolationTime": if (Double.TryParse(row["MaxViolationTime"].ToString(), out tempD)) { resultOrder.MaxViolationTime = tempD; } break; case "VehicleSpecialties": if (row["VehicleSpecialties"].ToString() != "") { string[] stringSeparators = new string[] { ";", "," }; string[] specialties = row["VehicleSpecialties"].ToString().Split(stringSeparators, StringSplitOptions.None); foreach (string s in specialties) { VehicleSpecialty vs = new VehicleSpecialty(); vs.Name = s; foreach (VehicleSpecialty V in m_application.Project.VehicleSpecialties) { if (String.Compare(V.Name, vs.Name, true) == 0) { V.CopyTo(vs); m_application.Project.VehicleSpecialties.Remove(V); break; } } m_application.Project.VehicleSpecialties.Add(vs); resultOrder.VehicleSpecialties.Add(vs); } } break; case "DriverSpecialties": if (row["DriverSpecialties"].ToString() != "") { string[] stringSeparators2 = new string[] { ";", "," }; string[] specialties2 = row["DriverSpecialties"].ToString().Split(stringSeparators2, StringSplitOptions.None); foreach (string s in specialties2) { DriverSpecialty ds = new DriverSpecialty(); ds.Name = s; foreach (DriverSpecialty D in m_application.Project.DriverSpecialties) { if (String.Compare(D.Name, ds.Name, true) == 0) { D.CopyTo(ds); m_application.Project.DriverSpecialties.Remove(D); break; } } m_application.Project.DriverSpecialties.Add(ds); resultOrder.DriverSpecialties.Add(ds); } } break; case "X": string x = row["X"].ToString(); if (x != "" && x != null) { if (Double.TryParse(row["X"].ToString(), out tempX)) { if (tempX >= -180.0 && tempX <= 180.0 && tempX != 0.0) { geocodeProvided = true; geocodeCorrect = true; } else if (tempX == 0.0) { geocodeCorrect = true; } } } break; case "Y": string y = row["Y"].ToString(); if (y != "" && y != null) { if (Double.TryParse(row["Y"].ToString(), out tempY)) { if (tempY >= -90.0 && tempY <= 90.0 && tempY != 0) { geocodeProvided = true; geocodeCorrect = true; } else if (tempY == 0.0) { geocodeCorrect = true; } } } break; #endregion } if (orderProperties.Count > 0) { OrderCustomProperty orderPropertyInfoItem = null; for (int j = 0; j < orderPropertiesInfo.Count; j++) { orderPropertyInfoItem = orderPropertiesInfo.ElementAt(j) as OrderCustomProperty; string tempName = orderPropertyInfoItem.Name.Replace(" ", ""); if (tempName == table.Columns[i].ColumnName) { orderProperties[j] = (row[table.Columns[i].ToString()].ToString()); break; } } } if (orderCapacities.Count > 0) { CapacityInfo orderCapacityInfoItem = null; for (int k = 0; k < orderCapacitiesInfo.Count; k++) { orderCapacityInfoItem = orderCapacitiesInfo.ElementAt(k); string tempName = orderCapacityInfoItem.Name.Replace(" ", ""); if (tempName == table.Columns[i].ColumnName) { if (Double.TryParse(row[table.Columns[i].ToString()].ToString(), out tempD)) { orderCapacities[k] = tempD; } break; } } } } catch (Exception e) { string statusMessage = " Distribute Orders encountered a problem: " + e.Message; m_application.Messenger.AddError(statusMessage); } } resultOrder.CustomProperties = orderProperties; resultOrder.Capacities = orderCapacities; if (geocodeProvided && geocodeCorrect) { AddressCandidate candidate1 = new AddressCandidate(); ESRI.ArcLogistics.Geometry.Point p = new ESRI.ArcLogistics.Geometry.Point(tempX, tempY); candidate1.GeoLocation = p; candidate1.Score = 100; candidate1.Address = resultOrder.Address; resultOrder.GeoLocation = candidate1.GeoLocation; geocodedCorrectly = true; } else { try { AddressCandidate candidate = new AddressCandidate(); candidate = m_application.Geocoder.Geocode(resultOrder.Address); if (candidate != null) { resultOrder.GeoLocation = candidate.GeoLocation; geocodedCorrectly = true; } else { string statusMessage = "Could not geocode address for: " + resultOrder.Name; m_application.Messenger.AddError(statusMessage); //TODO: Handle orders which were not geocoded!! } } catch (Exception e) { string statusMessage = "Distribute Orders encountered a problem while geocoding addresses: " + e.Message; m_application.Messenger.AddError(statusMessage); } } // Add Order if (geocodedCorrectly) { OrderList.Add(resultOrder); } else { string statusMessage = "Distribute Orders encountered a problem while adding order: " + resultOrder.Name; m_application.Messenger.AddError(statusMessage); } } return(OrderList); }
private ESRI.ArcLogistics.DomainObjects.Order MakeOrderFromInvoice(IInvoiceRet invoiceRet, QBSessionManager session) { ESRI.ArcLogistics.DomainObjects.Order resultOrder = null; ICustomerRet customerRet = QueryCustomer(session, invoiceRet.CustomerRef.FullName.GetValue()); CapacitiesInfo capInfo = m_application.Project.CapacitiesInfo; OrderCustomPropertiesInfo propInfo = m_application.Project.OrderCustomPropertiesInfo; resultOrder = new ESRI.ArcLogistics.DomainObjects.Order(capInfo, propInfo); resultOrder.PlannedDate = m_application.CurrentDate; if (customerRet.ParentRef != null) { resultOrder.Name = customerRet.ParentRef.FullName.GetValue(); } else { resultOrder.Name = customerRet.FullName.GetValue(); } IAddress useAddress = null; if (customerRet.ShipAddress != null) { useAddress = customerRet.ShipAddress; } else if (customerRet.BillAddress != null) { useAddress = customerRet.BillAddress; } else { m_application.Messenger.AddWarning("No address for: " + resultOrder.Name); } if (useAddress != null) { if (useAddress.Addr2 != null) { resultOrder.Address.AddressLine = useAddress.Addr2.GetValue(); } else { resultOrder.Address.AddressLine = useAddress.Addr1.GetValue(); } resultOrder.Address.Locality3 = useAddress.City.GetValue(); resultOrder.Address.StateProvince = useAddress.State.GetValue(); resultOrder.Address.PostalCode1 = useAddress.PostalCode.GetValue(); AddressCandidate candidate = m_application.Geocoder.Geocode(resultOrder.Address); resultOrder.GeoLocation = candidate.GeoLocation; } // Look in the order custom properties for matching invoice detail items (by item description). // Look in the order capacities for matching item type custom fields. OrderCustomPropertiesInfo orderPropertiesInfo = resultOrder.CustomPropertiesInfo; OrderCustomProperties orderProperties = resultOrder.CustomProperties; CapacitiesInfo orderCapacitiesInfo = resultOrder.CapacitiesInfo; Capacities orderCapacities = resultOrder.Capacities; // Retrieve invoice line list // Each line can be either InvoiceLineRet OR InvoiceLineGroupRet IORInvoiceLineRetList orInvoiceLineRetList = invoiceRet.ORInvoiceLineRetList; if (orInvoiceLineRetList != null && (orderProperties.Count > 0 || orderCapacities.Count > 0)) { int lineCount = orInvoiceLineRetList.Count; for (int i = 0; i < lineCount; i++) { IORInvoiceLineRet orInvoiceLineRet = orInvoiceLineRetList.GetAt(i); // Check what to retrieve from the orInvoiceLineRet object // based on the "ortype" property. Skip summary lines. if (orInvoiceLineRet.ortype != ENORInvoiceLineRet.orilrInvoiceLineRet) { continue; } if (orInvoiceLineRet.InvoiceLineRet.ItemRef.FullName != null) { string itemName = orInvoiceLineRet.InvoiceLineRet.ItemRef.FullName.GetValue(); double itemQuantity = 0; if (orInvoiceLineRet.InvoiceLineRet.ItemRef != null) { itemQuantity = System.Convert.ToDouble(orInvoiceLineRet.InvoiceLineRet.Quantity.GetValue()); } // look for matching custom order property OrderCustomProperty orderPropertyInfoItem = null; for (int j = 0; j < orderPropertiesInfo.Count; j++) { orderPropertyInfoItem = orderPropertiesInfo.ElementAt(j) as OrderCustomProperty; if (orderPropertyInfoItem.Name == itemName) { if (orderPropertyInfoItem.Type == OrderCustomPropertyType.Numeric) { orderProperties[j] = itemQuantity; } else { orderProperties[j] = itemQuantity.ToString(); } break; } } // look for matching capacity // need to lookup item record so we get the extra field(s) // TODO: It might be a good idea to cache these locally to avoid // excess QB queries. IORItemRet orItemRet = QueryItem(session, itemName); IDataExtRetList custItemFieldsRetList = null; switch (orItemRet.ortype) { case ENORItemRet.orirItemServiceRet: { // orir prefix comes from OR + Item + Ret IItemServiceRet ItemServiceRet = orItemRet.ItemServiceRet; custItemFieldsRetList = ItemServiceRet.DataExtRetList; } break; case ENORItemRet.orirItemInventoryRet: { IItemInventoryRet ItemInventoryRet = orItemRet.ItemInventoryRet; custItemFieldsRetList = ItemInventoryRet.DataExtRetList; } break; case ENORItemRet.orirItemNonInventoryRet: { IItemNonInventoryRet ItemNonInventoryRet = orItemRet.ItemNonInventoryRet; custItemFieldsRetList = ItemNonInventoryRet.DataExtRetList; } break; } int custItemFieldCount = 0; if (custItemFieldsRetList != null) { custItemFieldCount = custItemFieldsRetList.Count; } for (int j = 0; j < custItemFieldCount; j++) { IDataExtRet custItemField = custItemFieldsRetList.GetAt(j); string custItemFieldName = custItemField.DataExtName.GetValue(); CapacityInfo orderCapacityInfoItem = null; for (int k = 0; k < orderCapacitiesInfo.Count; k++) { orderCapacityInfoItem = orderCapacitiesInfo.ElementAt(k); if (orderCapacityInfoItem.Name == custItemFieldName) { orderCapacities[k] += System.Convert.ToDouble(custItemField.DataExtValue.GetValue()) * itemQuantity; break; } } } } } } resultOrder.CustomProperties = orderProperties; resultOrder.Capacities = orderCapacities; return(resultOrder); }
public static void makeEdit(string field, string value) { field = field.Replace(" ", ""); string message = "Changing " + field + " to " + value + " for all seleced vehicles."; App.Current.Messenger.AddInfo(message); ISupportSelection selector = (ISupportSelection)App.Current.MainWindow.CurrentPage; for (int i = 0; i < selector.SelectedItems.Count; i++) { Vehicle vehicleRef = (Vehicle)selector.SelectedItems[i]; CapacitiesInfo orderCapacitiesInfo = vehicleRef.CapacitiesInfo; Capacities orderCapacities = vehicleRef.Capacities; double tempD; try { switch (field) { #region Case Statements case "VehicleName": vehicleRef.Name = value; break; case "FixedCost": if (Double.TryParse(value.ToString(), out tempD)) { vehicleRef.FixedCost = tempD; } break; case "FuelEconomy": if (Double.TryParse(value.ToString(), out tempD)) { vehicleRef.FuelEconomy = tempD; } break; case "FuelType": foreach (FuelType f in App.Current.Project.FuelTypes) { if (f.Name == value) { vehicleRef.FuelType = f; } } break; case "Specialties": if (value != "") { string[] stringSeparators = new string[] { ";", "," }; string[] specialties = value.Split(stringSeparators, StringSplitOptions.None); foreach (string s in specialties) { VehicleSpecialty vs = new VehicleSpecialty(); vs.Name = s; foreach (VehicleSpecialty V in App.Current.Project.VehicleSpecialties) { if (String.Compare(V.Name, vs.Name, true) == 0) { V.CopyTo(vs); App.Current.Project.VehicleSpecialties.Remove(V); break; } } foreach (VehicleSpecialty V in vehicleRef.Specialties) { if (String.Compare(V.Name, vs.Name, true) == 0) { V.CopyTo(vs); vehicleRef.Specialties.Remove(V); break; } } App.Current.Project.VehicleSpecialties.Add(vs); vehicleRef.Specialties.Add(vs); } } break; case "MobileDevice": foreach (MobileDevice m in App.Current.Project.MobileDevices) { if (m.Name == value) { vehicleRef.MobileDevice = m; } } break; case "Comment": vehicleRef.Comment = value; break; #endregion }// End Switch #region Custom order capacities if (orderCapacities.Count > 0) { CapacityInfo orderCapacityInfoItem = null; for (int k = 0; k < orderCapacitiesInfo.Count; k++) { orderCapacityInfoItem = orderCapacitiesInfo.ElementAt(k); string tempName = orderCapacityInfoItem.Name.Replace(" ", ""); if (tempName == field) { if (Double.TryParse(value, out tempD)) { vehicleRef.Capacities[k] = tempD; } break; } } } #endregion custom order capacities } catch (Exception e) { message = "Error: " + e.Message; App.Current.Messenger.AddError(message); } } App.Current.Project.Save(); }
public override string ToString() { return($"C={Cost} U={UnreachableNodesAmount} {CapacityInfo.ToString()}"); }
/// <summary> /// Formats capacity utilization description. /// </summary> /// <param name="capacityInfo">Capacity information.</param> /// <param name="descriptionFormat">Description format.</param> /// <returns>Formated description string.</returns> private string _FormatCapacityDescriptionUtilization(CapacityInfo capacityInfo, string descriptionFormat) { // Percent (%) of available capacity ({0}) used on the route (100 * ({1}/{2})). string capacityName = capacityInfo.Name; string capacityNameLower = capacityName.ToLower(); string capacity = string.Format(Properties.Resources.ExportFieldNameLongCapacity, capacityName); string capacityTotal = string.Format(Properties.Resources.ExportFieldNameLongTotal, capacityName); return string.Format(descriptionFormat, capacityNameLower, capacity, capacityTotal); }
/// <summary> /// Formats capacity total description. /// </summary> /// <param name="capacityInfo">Capacity information.</param> /// <param name="descriptionFormat">Description format.</param> /// <returns>Formated description string.</returns> private string _FormatCapacityDescriptionTotal(CapacityInfo capacityInfo, string descriptionFormat) { string result = null; string capacityName = capacityInfo.Name.ToLower(); if (capacityInfo.DisplayUnitMetric == capacityInfo.DisplayUnitUS) { // one effective Unit string unit = (Unit.Unknown == capacityInfo.DisplayUnitUS)? Unit.Unknown.ToString().ToLower() : UnitFormatter.GetUnitTitle(capacityInfo.DisplayUnitUS); // Total {0} of all goods in {1}. int startRemoveIndex = descriptionFormat.IndexOf(FORMAT_FIRST_ELEMENT) + FORMAT_FIRST_ELEMENT.Length; Debug.Assert(0 < startRemoveIndex); string format = descriptionFormat.Remove(startRemoveIndex, descriptionFormat.Length - 1 - startRemoveIndex); // -1 last point must present. result = string.Format(format, capacityName, unit); } else { // Total {0} of all goods in {1} or {2} for the route. string format = descriptionFormat; result = string.Format(format, capacityName, UnitFormatter.GetUnitTitle(capacityInfo.DisplayUnitUS), UnitFormatter.GetUnitTitle(capacityInfo.DisplayUnitMetric)); } return result; }
/// <summary> /// Formats capacity description. /// </summary> /// <param name="capacityInfo">Capacity information.</param> /// <param name="descriptionFormat">Description format.</param> /// <returns>Formated description string.</returns> private string _FormatCapacityDescription(CapacityInfo capacityInfo, string descriptionFormat) { string result = null; string capacityName = capacityInfo.Name.ToLower(); if (capacityInfo.DisplayUnitMetric == capacityInfo.DisplayUnitUS) { // one effective Unit if (capacityInfo.DisplayUnitMetric == Unit.Unknown) { // The maximum {0} for the route. int startRemoveIndex = descriptionFormat.IndexOf('(') - 1; Debug.Assert(0 < startRemoveIndex); string format = descriptionFormat.Remove(startRemoveIndex, descriptionFormat.Length - 1 - startRemoveIndex); // -1 last point must present. result = string.Format(format, capacityName); } else { // The maximum {0} for the route (in predefined units; {1}). int startRemoveIndex = descriptionFormat.IndexOf(";") + 2; // show space Debug.Assert(0 < startRemoveIndex); int sropRemoveIndex = descriptionFormat.IndexOf(FORMAT_FIRST_ELEMENT); Debug.Assert(0 < sropRemoveIndex); string format = descriptionFormat.Remove(startRemoveIndex, sropRemoveIndex - startRemoveIndex); int startRemoveIndex2 = format.IndexOf(FORMAT_FIRST_ELEMENT) + FORMAT_FIRST_ELEMENT.Length; Debug.Assert(0 < startRemoveIndex2); format = format.Remove(startRemoveIndex2, format.Length - 2 - startRemoveIndex2); // -1 last point must present. result = string.Format(format, capacityName, UnitFormatter.GetUnitTitle(capacityInfo.DisplayUnitUS)); } } else { // The maximum {0} for the route (in predefined units; may be {1} or {2} depending // on your location). string format = descriptionFormat; result = string.Format(format, capacityName, UnitFormatter.GetUnitTitle(capacityInfo.DisplayUnitUS), UnitFormatter.GetUnitTitle(capacityInfo.DisplayUnitMetric)); } return result; }
public static void makeEdit(string field, string value) { field = field.Replace(" ", ""); string message = "Changing " + field + " to " + value + " for all seleced orders."; App.Current.Messenger.AddInfo(message); ISupportSelection selector = (ISupportSelection)App.Current.MainWindow.CurrentPage; for (int i = 0; i < selector.SelectedItems.Count; i++) { // orderRef is a reference to the selected order [i] Order orderRef = (ESRI.ArcLogistics.DomainObjects.Order)selector.SelectedItems[i]; OrderCustomPropertiesInfo orderPropertiesInfo = orderRef.CustomPropertiesInfo; OrderCustomProperties orderProperties = orderRef.CustomProperties; CapacitiesInfo orderCapacitiesInfo = orderRef.CapacitiesInfo; Capacities orderCapacities = orderRef.Capacities; double tempD; DateTime TWdateTime; try { switch (field) { #region Case Statements case "Name": orderRef.Name = value; break; case "Address": orderRef.Address.AddressLine = value; break; case "City": orderRef.Address.Locality3 = value; break; case "State": orderRef.Address.StateProvince = value; break; case "Zip": orderRef.Address.PostalCode1 = value; break; case "Zip4": orderRef.Address.PostalCode2 = value; break; case "Country": orderRef.Address.Country = value; break; case "PlannedDate": DateTime tempDT = new DateTime(); if (System.DateTime.TryParse(value, out tempDT)) { orderRef.PlannedDate = tempDT; } break; case "Priority": if (value == "High") { orderRef.Priority = OrderPriority.High; } else if (value == "Normal") { orderRef.Priority = OrderPriority.Normal; } break; case "OrderType": if (value == "Pickup") { orderRef.Type = OrderType.Pickup; } else if (value == "Delivery") { orderRef.Type = OrderType.Delivery; } break; case "ServiceTime": if (Double.TryParse(value.ToString(), out tempD)) { orderRef.ServiceTime = tempD; } break; case "TimeWindowStart": string tempS = value; if (DateTime.TryParse(tempS, out TWdateTime)) { if (TWdateTime.TimeOfDay != TimeSpan.Zero) { orderRef.TimeWindow.From = TWdateTime.TimeOfDay; orderRef.TimeWindow.IsWideOpen = false; } } break; case "TimeWindowFinish": if (DateTime.TryParse(value, out TWdateTime)) { if (TWdateTime.TimeOfDay != TimeSpan.Zero) { orderRef.TimeWindow.To = TWdateTime.TimeOfDay; orderRef.TimeWindow.IsWideOpen = false; } } break; case "TimeWindow2Start": if (DateTime.TryParse(value, out TWdateTime)) { if (TWdateTime.TimeOfDay != TimeSpan.Zero) { orderRef.TimeWindow2.From = TWdateTime.TimeOfDay; orderRef.TimeWindow2.IsWideOpen = false; } } break; case "TimeWindow2Finish": if (DateTime.TryParse(value, out TWdateTime)) { if (TWdateTime.TimeOfDay != TimeSpan.Zero) { orderRef.TimeWindow2.To = TWdateTime.TimeOfDay; orderRef.TimeWindow2.IsWideOpen = false; } } break; case "MaxViolationTime": if (Double.TryParse(value, out tempD)) { orderRef.MaxViolationTime = tempD; } break; case "VehicleSpecialties": if (value != "") { string[] stringSeparators = new string[] { ";", "," }; string[] specialties = value.Split(stringSeparators, StringSplitOptions.None); foreach (string s in specialties) { VehicleSpecialty vs = new VehicleSpecialty(); vs.Name = s; foreach (VehicleSpecialty V in App.Current.Project.VehicleSpecialties) { if (String.Compare(V.Name, vs.Name, true) == 0) { V.CopyTo(vs); App.Current.Project.VehicleSpecialties.Remove(V); break; } } foreach (VehicleSpecialty V in orderRef.VehicleSpecialties) { if (String.Compare(V.Name, vs.Name, true) == 0) { V.CopyTo(vs); orderRef.VehicleSpecialties.Remove(V); break; } } App.Current.Project.VehicleSpecialties.Add(vs); orderRef.VehicleSpecialties.Add(vs); } } break; case "DriverSpecialties": if (value != "") { string[] stringSeparators2 = new string[] { ";", "," }; string[] specialties2 = value.Split(stringSeparators2, StringSplitOptions.None); foreach (string s in specialties2) { DriverSpecialty ds = new DriverSpecialty(); ds.Name = s; foreach (DriverSpecialty D in App.Current.Project.DriverSpecialties) { if (String.Compare(D.Name, ds.Name, true) == 0) { D.CopyTo(ds); App.Current.Project.DriverSpecialties.Remove(D); break; } } foreach (DriverSpecialty D in orderRef.DriverSpecialties) { if (String.Compare(D.Name, ds.Name, true) == 0) { D.CopyTo(ds); orderRef.DriverSpecialties.Remove(D); break; } } App.Current.Project.DriverSpecialties.Add(ds); orderRef.DriverSpecialties.Add(ds); } } break; //end of case statements #endregion } #region Custom order properties and capacities if (orderProperties.Count > 0) { OrderCustomProperty orderPropertyInfoItem = null; for (int j = 0; j < orderPropertiesInfo.Count; j++) { orderPropertyInfoItem = orderPropertiesInfo.ElementAt(j) as OrderCustomProperty; string tempName = orderPropertyInfoItem.Name.Replace(" ", ""); if (tempName == field) { orderRef.CustomProperties[j] = value; break; } } } if (orderCapacities.Count > 0) { CapacityInfo orderCapacityInfoItem = null; for (int k = 0; k < orderCapacitiesInfo.Count; k++) { orderCapacityInfoItem = orderCapacitiesInfo.ElementAt(k); string tempName = orderCapacityInfoItem.Name.Replace(" ", ""); if (tempName == field) { if (Double.TryParse(value, out tempD)) { orderRef.Capacities[k] = tempD; } break; } } } // End custom order properties and capacities #endregion } catch (Exception e) { message = "Error: " + e.Message; App.Current.Messenger.AddError(message); } } App.Current.Project.Save(); }
/// <summary> /// Initialize control. /// </summary> private void _Init() { Xceed.Wpf.DataGrid.CellContentPresenter cellContentPresenter = this.VisualParent as Xceed.Wpf.DataGrid.CellContentPresenter; if (cellContentPresenter == null) { return; } Xceed.Wpf.DataGrid.DataCell dataCell = cellContentPresenter.TemplatedParent as Xceed.Wpf.DataGrid.DataCell; string columnName = dataCell.ParentColumn.FieldName; ESRI.ArcLogistics.Data.DataObject dataObject = dataCell.ParentRow.DataContext as ESRI.ArcLogistics.Data.DataObject; if (dataObject != null) { int capacityPropertyIndex = Capacities.GetCapacityPropertyIndex(columnName); if (capacityPropertyIndex != -1) { CapacityInfo capacityInfo = App.Current.Project.CapacitiesInfo[capacityPropertyIndex]; if (RegionInfo.CurrentRegion.IsMetric) { _displayUnits = capacityInfo.DisplayUnitMetric; } else { _displayUnits = capacityInfo.DisplayUnitUS; } _valueUnits = _displayUnits; } else { Type type = dataObject.GetType(); PropertyInfo property = type.GetProperty(columnName); UnitPropertyAttribute unitAttribute = (UnitPropertyAttribute)Attribute.GetCustomAttribute(property, typeof(UnitPropertyAttribute)); _displayUnits = (RegionInfo.CurrentRegion.IsMetric) ? unitAttribute.DisplayUnitMetric : unitAttribute.DisplayUnitUS; _valueUnits = unitAttribute.ValueUnits; } _TextBox.Text = UnitFormatter.Format(0.0, _displayUnits); _inited = true; _SetTextToInnerTextBox(); } else { // If this is not DataObject Break breakObject = dataCell.ParentRow.DataContext as Break; if (breakObject != null) { // If this is Break. Get it`s type and initiate control in a proper way. Type type = breakObject.GetType(); PropertyInfo property = type.GetProperty(columnName); if (property != null) { Attribute attr = Attribute.GetCustomAttribute(property, typeof(UnitPropertyAttribute)); UnitPropertyAttribute unitAttribute = (UnitPropertyAttribute)attr; _displayUnits = (RegionInfo.CurrentRegion.IsMetric) ? unitAttribute.DisplayUnitMetric : unitAttribute.DisplayUnitUS; _valueUnits = unitAttribute.ValueUnits; } _TextBox.Text = UnitFormatter.Format(0.0, _displayUnits); _inited = true; _SetTextToInnerTextBox(); } } }