//saves a route
private static XmlElement SaveRoute(XmlDocument xmlDoc, Route route)
{
XmlElement routeNode = xmlDoc.CreateElement("route");
routeNode.SetAttribute("id", route.Id);
routeNode.SetAttribute("destination1", route.Destination1.Profile.IATACode);
routeNode.SetAttribute("destination2", route.Destination2.Profile.IATACode);
routeNode.SetAttribute("isbanned", route.Banned.ToString());
routeNode.SetAttribute("type", route.Type.ToString());
XmlElement routeStopoversNode = xmlDoc.CreateElement("stopovers");
foreach (StopoverRoute stopover in route.Stopovers)
{
XmlElement routeStopoverNode = xmlDoc.CreateElement("stopover");
routeStopoverNode.SetAttribute("airport", stopover.Stopover.Profile.ID);
XmlElement stopoverLegsNode = xmlDoc.CreateElement("legs");
foreach (Route leg in stopover.Legs)
{
XmlElement stopoverLegNode = xmlDoc.CreateElement("leg");
stopoverLegNode.AppendChild(SaveRoute(xmlDoc, leg));
stopoverLegsNode.AppendChild(stopoverLegNode);
}
routeStopoverNode.AppendChild(stopoverLegsNode);
routeStopoversNode.AppendChild(routeStopoverNode);
}
routeNode.AppendChild(routeStopoversNode);
if (route.Type == Route.RouteType.Passenger || route.Type == Route.RouteType.Mixed)
{
XmlElement routeClassesNode = xmlDoc.CreateElement("routeclasses");
foreach (RouteAirlinerClass aClass in ((PassengerRoute) route).Classes)
{
XmlElement routeClassNode = xmlDoc.CreateElement("routeclass");
routeClassNode.SetAttribute("type", aClass.Type.ToString());
routeClassNode.SetAttribute("fareprice", aClass.FarePrice.ToString(new CultureInfo("de-DE", false)));
foreach (RouteFacility facility in aClass.GetFacilities())
{
routeClassNode.SetAttribute(facility.Type.ToString(), facility.Uid);
}
// chs, 2011-18-10 added for saving of type of seating
routeClassNode.SetAttribute("seating", aClass.Seating.ToString());
routeClassesNode.AppendChild(routeClassNode);
}
routeNode.AppendChild(routeClassesNode);
}
if (route.Type == Route.RouteType.Mixed || route.Type == Route.RouteType.Cargo)
{
XmlElement routeCargoNode = xmlDoc.CreateElement("cargo");
routeCargoNode.SetAttribute(
"priceperunit",
((CargoRoute) route).PricePerUnit.ToString(new CultureInfo("de-DE", false)));
routeNode.AppendChild(routeCargoNode);
}
XmlElement timetableNode = xmlDoc.CreateElement("timetable");
foreach (RouteTimeTableEntry entry in route.TimeTable.Entries)
{
XmlElement ttEntryNode = xmlDoc.CreateElement("timetableentry");
ttEntryNode.SetAttribute("destination", entry.Destination.Airport.Profile.IATACode);
ttEntryNode.SetAttribute("flightcode", entry.Destination.FlightCode);
ttEntryNode.SetAttribute("day", entry.Day.ToString());
ttEntryNode.SetAttribute("time", entry.Time.ToString());
ttEntryNode.SetAttribute("airliner", entry.Airliner != null ? entry.Airliner.Airliner.ID : "-");
ttEntryNode.SetAttribute("id", entry.ID);
if (entry.MainEntry != null)
{
ttEntryNode.SetAttribute("mainentry", entry.MainEntry.ID);
}
timetableNode.AppendChild(ttEntryNode);
}
routeNode.AppendChild(timetableNode);
XmlElement routeInvoicesNode = xmlDoc.CreateElement("invoices");
foreach (MonthlyInvoice invoice in route.GetInvoices().MonthlyInvoices)
{
XmlElement routeInvoiceNode = xmlDoc.CreateElement("invoice");
routeInvoiceNode.SetAttribute("type", invoice.Type.ToString());
routeInvoiceNode.SetAttribute("year", invoice.Year.ToString(CultureInfo.InvariantCulture));
routeInvoiceNode.SetAttribute("month", invoice.Month.ToString(CultureInfo.InvariantCulture));
routeInvoiceNode.SetAttribute("amount", invoice.Amount.ToString(new CultureInfo("de-DE", false)));
routeInvoicesNode.AppendChild(routeInvoiceNode);
}
routeNode.AppendChild(routeInvoicesNode);
return routeNode;
}