Ejemplo n.º 1
0
        /// <summary>
        /// Constructs a FordonPassage node and returns it to the caller method
        /// </summary>
        /// <param name="epcisEvent"></param>
        /// <param name="location"></param>
        /// <returns></returns>
        public XElement FordonPassageConstruct(XElement epcisEvent, string location)
        {
            // Gets information about a specific vehicle
            XElement vehicle = namingClient.GetVehicle(epcisEvent.Element("epcList").Element("epc").Value.ToString());


            XElement vehiclePassage;

            // If there isn't any master data about the vehicle
            if (vehicle.Descendants("Fordonsindivider").Any() == false)
            {
                vehiclePassage = new XElement("FordonPassage",
                                              new XElement("FordonsEPC", GetElementValue(epcisEvent.Element("epcList").Element("epc"))),
                                              new XElement("PlatsEPC", GetElementValue(epcisEvent.Element("readPoint").Element("id"))),
                                              new XElement("Tid", GetElementValue(epcisEvent.Element("eventTime"))),
                                              new XElement("Plats", location));
            }
            else
            {
                // Builds the FordonPassage node
                vehiclePassage = new XElement("FordonPassage",

                                              new XElement("FordonsEPC", GetElementValue(epcisEvent.Element("epcList").Element("epc"))),
                                              new XElement("PlatsEPC", GetElementValue(epcisEvent.Element("readPoint").Element("id"))),
                                              new XElement("Tid", GetElementValue(epcisEvent.Element("eventTime"))),
                                              new XElement("Plats", location),



                                              new XElement("EVN", GetElementValue(vehicle.Element("Fordonsindivider").Element("FordonsIndivid").Element("Fordonsnummer"))),
                                              new XElement("Fordonsinnehavare", GetElementValue(vehicle.Element("Fordonsindivider").Element("FordonsIndivid").Element("Fordonsinnehavare").Element("Foretag"))),

                                              new XElement("Godkänd", GetElementValue(vehicle.Element("Fordonsindivider").Element("FordonsIndivid").Element("Godkannande").Element("FordonsgodkannandeFullVardeSE"))),
                                              new XElement("GiltigFrån", GetElementValue(vehicle.Element("Fordonsindivider").Element("FordonsIndivid").Element("Godkannande").Element("GiltigtFrom"))),
                                              new XElement("GiltigTill", GetElementValue(vehicle.Element("Fordonsindivider").Element("FordonsIndivid").Element("Godkannande").Element("GiltigtTom"))),
                                              new XElement("Underhållsansvarig", GetElementValue(vehicle.Element("Fordonsindivider").Element("FordonsIndivid").Element("UnderhallsansvarigtForetag").Element("Foretag"))),


                                              new XElement("Fordonstyp", GetElementValue(vehicle.Element("FordonsTyp").Element("FordonskategoriKodFullVardeSE"))),
                                              new XElement("Fordonsunderkategori", GetElementValue(vehicle.Element("FordonsTyp").Element("FordonsunderkategoriKodFullVardeSE")))
                                              );
            }

            // Returns the FordonPassage node
            return(vehiclePassage);
        }
        /// <summary>
        /// Endpoint to search vehicles on EPC
        /// </summary>
        /// <param name="epc"></param>
        /// <returns>An XElement containing vehicle information formatted to fit the Fordon class</returns>
        public XElement GetVehicleFromEpc(string epc)
        {
            NamingServiceClient namingClient = new NamingServiceClient();

            XElement specificVehicle = namingClient.GetVehicle(epc);
            namingClient.Close();
            if (specificVehicle.Element("ResponseData").Elements("ResponseMessage").Any())
            {
                return new XElement("Fordon",
                                new XElement("FordonsEPC", epc));

            }

            XElement godkännande;

            //Skapa godkännandeelement
            try
            {
                 godkännande = new XElement("Godkännande",
                    new XElement("GiltigtFrom", specificVehicle.Element("Fordonsindivider").Element("FordonsIndivid").Element("Godkannande").Element("GiltigtFrom").Value)
                );
            }
            catch(NullReferenceException)
            {
                godkännande = new XElement("Godkännande",
                        new XElement("GiltigtFrom", "NoVehicleException")
                    );
            }

            //Kontrollera om giltigt godkännande

            if (specificVehicle.Element("Fordonsindivider").Element("FordonsIndivid").Elements("Godkannanade").Elements("GiltigtTom").Any())
            {
                godkännande.Add(
                        new XElement("GiltigtTom", specificVehicle.Element("Fordonsindivider").Element("FordonsIndivid").Element("Godkannande").Element("GiltigtTom").Value),
                        new XElement("Godkänd", "Ej godkänd")
                    );
            }
            else
            {
                godkännande.Add(new XElement("Godkänd", "Godkänd"));

            }
            XElement specificVehicleRelevantData = new XElement("Fordon",
                                                        new XElement("FordonsEPC", epc),
                                                        new XElement("FordonsEVN", (string)specificVehicle.Element("Fordonsindivider").Element("FordonsIndivid").Element("Fordonsnummer")),
                                                        new XElement("Fordonsinnehavare", (string)specificVehicle.Element("Fordonsindivider").Element("FordonsIndivid").Element("Fordonsinnehavare").Element("Foretag")),
                                                        new XElement("Underhållsansvarig", (string)specificVehicle.Element("Fordonsindivider").Element("FordonsIndivid").Element("UnderhallsansvarigtForetag").Element("Foretag")),
                                                        new XElement("Fordonstyp", (string)specificVehicle.Element("FordonsTyp").Element("FordonskategoriKodFullVardeSE")),
                                                        godkännande
                );

            return specificVehicleRelevantData;
        }
        public XElement HämtaFordon(string epc)
        {
            XElement fordon = namingClient.GetVehicle(epc);

            return(fordon);
        }