Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Runtime.Serialization;
- using System.ServiceModel;
- using System.ServiceModel.Web;
- using System.Text;
- using System.Web.Hosting;
- using System.Xml.Linq;
- using IIProjectService.EventAndMasterServiceReference;
- using System.Globalization;
- namespace IIProjectService
- {
- // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.
- // NOTE: In order to launch WCF Test Client for testing this service, please select Service1.svc or Service1.svc.cs at the Solution Explorer and start debugging.
- public class TrainService : ITrainService
- {
- string appDataFolder;
- EpcisEventServiceClient eventService;
- NamingServiceClient namingService;
- //XElement xml;
- public TrainService()
- {
- appDataFolder = HostingEnvironment.MapPath("/App_Data/");
- eventService = new EpcisEventServiceClient();
- namingService = new NamingServiceClient();
- }
- public IEnumerable<XElement> Test()
- {
- EpcisEventServiceClient test = new EpcisEventServiceClient();
- string plats = "urn:epc:id:sgln:735999271.000.13";
- DateTime from = new DateTime(2011,03,25);
- DateTime to = new DateTime(2011,11,10);
- IEnumerable<XElement> result = (IEnumerable<XElement>)test.GetEvents(from, to, plats);
- XElement locations = new XElement("Locations",
- new XElement("Plats", "Goteborg"),
- new XElement("Plats", "Falkoping"));
- XElement test3 = CreateVehicle("urn:epc:id:giai:123456.1847447213244");
- //XElement test2 = GetTrainData(from, to, locations, "lukas", "hej");
- //bool existingUser = UserAuthorization("Lukas", "123456");
- //bool wrongPassword = UserAuthorization("Lukas", "12346");
- //bool nonExistingUser = UserAuthorization("dsa", "sada");
- return result;
- }
- public XElement GetTrainData(XElement request)
- {
- DateTime from = Convert.ToDateTime(request.Descendants("FromTid").First().Value);
- DateTime to = Convert.ToDateTime(request.Descendants("TomTid").First().Value);
- XElement locations = new XElement("Platser", request.Descendants("Plats"));
- XElement filteredEvents = searchFiltering(from, to, locations);
- bool authorizedUser = UserAuthorization(request.Descendants("Användarnamn").First().Value, request.Descendants("Lösenord").First().Value);
- string message;
- string svarskod;
- if (authorizedUser)
- {
- message = "Authorized user";
- svarskod = "1";
- }
- else
- {
- message = "Nonauthorized user";
- svarskod = "0";
- }
- XElement serviceResult = new XElement("Servicesvar",
- new XElement("Tjänstemeddelande",
- new XElement("Svarsinformation",
- new XElement("Svarskod", svarskod),
- new XElement("Meddelande", message),
- new XElement("Tjänsteansvarig", "Grupp6"),
- new XElement("Applikation",
- new XElement("Namn", "TraceTrains"),
- new XElement("Version", "1.0")
- ),
- new XElement("Svarstid", DateTime.Now)
- ),
- new XElement("Anropsinformation",
- new XElement("Anropsansvarig",
- new XElement("Användarnamn", request.Descendants("Användarnamn").First().Value),
- new XElement("Lösenord", request.Descendants("Lösenord").First().Value)
- ),
- new XElement("Sökfilter",
- new XElement("FromTid", from),
- new XElement("TomTid", to),
- new XElement("Platser",
- from location in request.Descendants("Plats")
- select new XElement("Plats",
- new XElement("Ortsnamn", location.Value)
- )
- )
- )
- )
- )
- );
- if(authorizedUser)
- {
- XElement tempVehicleResult = new XElement("Fordonspassager",
- from objectEvent in filteredEvents.Descendants("ObjectEvent")
- select new XElement("Fordonspassage",
- new XElement("Tidpunkt", (string)objectEvent.Element("eventTime")),
- new XElement("Fordon", CreateVehicle((string)objectEvent.Descendants("epc").First())),
- new XElement("Plats",
- new XElement("PlatsEpc", (string)objectEvent.Element("readPoint").Element("id")),
- new XElement("Platsnamn", namingService.GetLocation((string)objectEvent.Descendants("id").First()).Descendants("Name").First().Value)
- )
- )
- );
- if(tempVehicleResult.Descendants().Where(d => string.IsNullOrEmpty(d.Value)).Equals(true))
- {
- message += ", " + "Some problems with elements with a null reference";
- }
- serviceResult.Add(tempVehicleResult);
- }
- return serviceResult;
- }
- private bool UserAuthorization(string username, string password)
- {
- XElement usersXml = XElement.Load(appDataFolder + "anvandare.xml");
- try
- {
- XElement selectedUser = usersXml.Descendants("Användare").Where(u => u.Element("Användarnamn").Value == username).First();
- if (password == selectedUser.Element("Lösenord").Value)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- catch
- {
- return false;
- }
- }
- private XElement CreateVehicle(string vehicleEpc)
- {
- XElement fordonsindivid = new XElement("fordonsindivid", namingService.GetVehicle(vehicleEpc));
- XElement tempVehicle = new XElement("Fordon");
- string response = (string)fordonsindivid.Descendants("ResponseStatus").First().Value;
- try
- {
- tempVehicle.Add(
- new XElement("Fordonstyp", (string)fordonsindivid.Descendants("FordonskategoriKodFullVardeSE").First()),
- new XElement("Fordonsunderkategori", (string)fordonsindivid.Descendants("FordonsunderkategoriKodFullVardeSE").First()),
- new XElement("FordonsEpc", vehicleEpc),
- new XElement("FordonsEvn", (string)fordonsindivid.Descendants("Fordonsnummer").First()),
- new XElement("Fordonsinnehavare",
- new XElement("FöretagsId", (string)fordonsindivid.Descendants("Fordonsinnehavare").First().Element("ForetagId")),
- new XElement("Företagsnamn", (string)fordonsindivid.Descendants("Fordonsinnehavare").First().Element("Foretag"))
- ),
- new XElement("Underhållsansvarig",
- new XElement("FöretagsId", (string)fordonsindivid.Descendants("UnderhallsansvarigtForetag").First().Element("ForetagId")),
- new XElement("Företagsnamn", (string)fordonsindivid.Descendants("UnderhallsansvarigtForetag").First().Element("Foretag"))
- ),
- from godkannande in fordonsindivid.Descendants("Godkannande")
- select new XElement("Godkännande",
- new XElement("Status", (string)godkannande.Element("FordonsgodkannandeFullVardeSE")),
- new XElement("GiltigFrom", (string)godkannande.Element("GiltigtFrom")),
- new XElement("GiltigTom", (string)godkannande.Element("GiltigtTom"))
- )
- );
- return tempVehicle;
- }
- catch
- {
- if (fordonsindivid.Descendants("ResponseStatus").First().Value.Equals("0"))
- {
- tempVehicle = null;
- }
- return tempVehicle;
- }
- }
- private XElement searchFiltering(DateTime from, DateTime to, XElement locations)
- {
- //Sortera ut rätt passager efter ort
- List<string> epcLocationList = new List<string>();
- foreach (string location in locations.Descendants("Plats").Select(l => l.Value).ToList())
- {
- epcLocationList.Add(namingService.GetAllLocations().Descendants("Location").Where(l => l.Element("Name").Value.Equals(location)).Select(epc => epc.Element("Epc").Value).First());
- }
- //Sortera ut rätt passager efter datum
- XElement trainPassageXml = new XElement("TrainPassageXml");
- foreach(string epc in epcLocationList)
- {
- IEnumerable<XElement> trainPassageEvents = eventService.GetEvents(from, to, epc);
- foreach(XElement trainPassage in trainPassageEvents)
- {
- //XElement tempVehicle = new XElement("", )
- XElement tempLocation = namingService.GetLocation(epc);
- XElement tempVehicle = namingService.GetVehicle(trainPassage.Descendants("epc").Select(vehicleEpc => vehicleEpc.Value).First());
- trainPassage.Add(tempVehicle);
- trainPassage.Add(tempLocation);
- trainPassageXml.Add(trainPassage);
- }
- }
- return trainPassageXml;
- }
- public IEnumerable<string> GetAllLocations()
- {
- XElement allLocations = namingService.GetAllLocations();
- List<string> locationList = allLocations.Descendants("Name").Select(n => (string)n.Value).ToList();
- return locationList;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement