/*private void txtFromStation_ValueChanged(object sender, EventArgs e) * { * if (txtFromStation.Value != null && App.IsInternetAvailable) * { * var fromValue = txtFromStation.Value as Station; * var fromStation = Database.SavedData.Stations.SingleOrDefault(x => x.Name == fromValue.Name); * if (fromStation != null) * { * App.ShowProgress("varış istasyonları yükleniyor..."); * StationRequest.OnToStationsCompleted = (stations) => * { * if (stations != null) * { * txtToStation.ItemsSource = stations.ToList(); * if (Database.SavedData.BusJourney != null && Database.SavedData.BusJourney.To != null && fromValue.Name.ToString() != Database.SavedData.BusJourney.To.Name.ToString()) * txtToStation.Value = Database.SavedData.BusJourney.To; * } * App.HideProgress(); * }; * StationRequest.GetToStations(fromStation); * } * } * }*/ private void btnSearch_Click(object sender, EventArgs e) { Logger.Clicked("btnSearch"); this.Focus(); if (!App.IsInternetAvailable) { App.ShowProgress("internet bağlantınızı kontrol ediniz", ProgressType.Warning, ProgressTime.Normal); } else if (!Database.SavedData.Stations.Any()) { App.ShowProgress("istasyonların yüklenmesini bekleyiniz", ProgressType.Warning, ProgressTime.Normal); } else if (txtFromStation.Value == null || txtToStation.Value == null || dpDepartureDate.Value == null) { App.ShowProgress("boş bıraktığınız alan(lar) var", ProgressType.Warning, ProgressTime.Normal); } else if (dpDepartureDate.Value < Convert.ToDateTime(DateTime.Now.ToShortDateString())) { App.ShowProgress("seçtiğiniz tarih bugünden geçmişte olamaz", ProgressType.Warning, ProgressTime.Normal); } else { App.AddBackPressedEvent(BackPressed); App.ShowProgress("uygun seferler aranıyor..."); btnSearch.IsActivated = false; Database.TempData.Ticket.Type = TicketType.BusJourney; Database.TempData.TicketSearch = Database.SavedData.BusSearch = new TicketSearch() { Factory = new Factory() { Id = 0 }, From = txtFromStation.Value as Station, To = txtToStation.Value as Station, DepartureDate = Convert.ToDateTime(dpDepartureDate.Value), Passengers = { new Passenger() }, Type = Database.TempData.Ticket.Type }; JourneyRequests.JourneysRequest.OnCompleted = (response) => { var journeys = response.Result; App.RemoveBackPressedEvent(BackPressed); Database.TempData.Journeys = journeys; App.HideProgress(); if (journeys == null || journeys.Count() == 0) { App.ShowProgress("aradığınız kriterlere uygun sefer bulunamadı", ProgressType.Error, ProgressTime.Normal); } else { NavigationService.Navigate(new Uri("/Pages/Bus/JourneyListPage.xaml", UriKind.RelativeOrAbsolute)); } btnSearch.IsActivated = true; }; JourneyRequests.GetJourneys(Database.TempData.TicketSearch); } }
private void btnSearch_Click(object sender, EventArgs e) { Logger.Clicked("btnSearch"); this.Focus(); if (!App.IsInternetAvailable) { App.ShowProgress("internet bağlantınızı kontrol ediniz", ProgressType.Warning, ProgressTime.Normal); } else if (!Database.SavedData.Airports.Any()) { App.ShowProgress("havalimanlarının yüklenmesini bekleyiniz", ProgressType.Warning, ProgressTime.Normal); } else if (txtFromStation.Value == null || txtToStation.Value == null || dpDepartureDate.Value == null || (rbRoundTrip.IsChecked == true && dpReturnDate.Value == null)) { App.ShowProgress("boş bıraktığınız alan(lar) var", ProgressType.Warning, ProgressTime.Normal); } else if (dpDepartureDate.Value < Convert.ToDateTime(DateTime.Now.ToShortDateString()) || (rbRoundTrip.IsChecked == true && dpReturnDate.Value < Convert.ToDateTime(DateTime.Now.ToShortDateString()))) { App.ShowProgress("seçtiğiniz tarih bugünden geçmişte olamaz", ProgressType.Warning, ProgressTime.Normal); } else if (rbRoundTrip.IsChecked == true && dpDepartureDate.Value > dpReturnDate.Value) { App.ShowProgress("dönüş tarihi gidiş tarihinden önce olamaz", ProgressType.Warning, ProgressTime.Normal); } else { App.AddBackPressedEvent(BackPressed); Database.TempData.TicketSearch.From = txtFromStation.Value as Station; Database.TempData.TicketSearch.To = txtToStation.Value as Station; Database.TempData.TicketSearch.DepartureDate = Convert.ToDateTime(dpDepartureDate.Value); Database.TempData.TicketSearch.ReturnDate = Convert.ToDateTime(dpReturnDate.Value); Database.TempData.TicketSearch.Type = Database.TempData.Ticket.Type; App.ShowProgress("uygun seferler aranıyor..."); btnSearch.IsActivated = false; Database.SavedData.AirplaneSearch = Database.TempData.TicketSearch; JourneyRequests.JourneysRequest.OnCompleted = (response) => { var flights = response.Result; App.RemoveBackPressedEvent(BackPressed); Database.TempData.Journeys = flights; App.HideProgress(); if (flights == null || flights.Count() == 0) { App.ShowProgress("aradığınız kriterlere uygun sefer bulunamadı", ProgressType.Error, ProgressTime.Normal); } else { NavigationService.Navigate(new Uri("/Pages/Airplane/JourneyListPage.xaml", UriKind.RelativeOrAbsolute)); } btnSearch.IsActivated = true; }; JourneyRequests.GetJourneys(Database.TempData.TicketSearch); } }
private void NextDay_Tap(object sender, EventArgs e) { Logger.Clicked("NextDay"); App.AddBackPressedEvent(BackPressedForDayChanging); if (JourneyRequests.JourneysRequest.IsCompleted) { App.ShowProgress("sonraki gün yükleniyor..."); if (IsReturn) { Database.TempData.TicketSearch.ReturnDate = Database.TempData.TicketSearch.ReturnDate.AddDays(+1); } else { Database.TempData.TicketSearch.DepartureDate = Database.TempData.TicketSearch.DepartureDate.AddDays(+1); } JourneyRequests.JourneysRequest.OnCompleted += Journeys_Completed; JourneyRequests.GetJourneys(Database.TempData.TicketSearch); } }
private void GetPriceDetails() { App.ShowProgress("fiyat detayları yükleniyor..."); JourneyRequests.PriceDetailsRequest.OnCompleted = (response) => { var priceDetail = response.Result; JourneyRequests.PriceDetailsRequest.OnCompleted = null; App.HideProgress(); if (response.Status != ResponseStatus.Successful) { if (response.Status == ResponseStatus.DifferentFactories) { App.ShowProgress("gidiş-dönüş biletinizi tek seferde alabilmeniz için seçtiğiniz firmalar aynı olmalıdır", ProgressType.Warning, ProgressTime.Infinite, new List <string>() { "Tamam, anladım" }); } else { App.ShowProgress("fiyat detayları yüklenemedi", ProgressType.Error, ProgressTime.Normal); } } else { JourneyRequests.FillPassengerPrices(Database.TempData.Ticket, priceDetail); Database.TempData.Ticket.Price = priceDetail.TotalPrice; PriceDetailsGrid.DataContext = null; PriceDetailsGrid.DataContext = priceDetail; PriceDetailsGrid.Visibility = Visibility.Visible; var grid = PassengersPricePanel.FindName("PassengersPrices") as Grid; grid.Children.Clear(); var stackPanel = new StackPanel(); stackPanel.Children.Add(new FlightPriceRow()); stackPanel.Children.Add(new FlightPriceRow() { Price = priceDetail.AdultPrice, Label = "yetişkin", Visibility = priceDetail.AdultPrice.PassengerCount == 0 ? Visibility.Collapsed : Visibility.Visible }); stackPanel.Children.Add(new FlightPriceRow() { Price = priceDetail.ChildPrice, Label = "çocuk", Visibility = priceDetail.ChildPrice.PassengerCount == 0 ? Visibility.Collapsed : Visibility.Visible }); stackPanel.Children.Add(new FlightPriceRow() { Price = priceDetail.InfantPrice, Label = "yaşlı", Visibility = priceDetail.InfantPrice.PassengerCount == 0 ? Visibility.Collapsed : Visibility.Visible }); stackPanel.Children.Add(new FlightPriceRow() { Price = priceDetail.TeenagerPrice, Label = "genç", Visibility = priceDetail.TeenagerPrice.PassengerCount == 0 ? Visibility.Collapsed : Visibility.Visible }); stackPanel.Children.Add(new FlightPriceRow() { Price = priceDetail.StudentPrice, Label = "öğrenci", Visibility = priceDetail.StudentPrice.PassengerCount == 0 ? Visibility.Collapsed : Visibility.Visible }); stackPanel.Children.Add(new FlightPriceRow() { Price = priceDetail.BabyPrice, Label = "bebek", Visibility = priceDetail.BabyPrice.PassengerCount == 0 ? Visibility.Collapsed : Visibility.Visible }); stackPanel.Children.Add(new FlightPriceRow() { Price = priceDetail.MilitaryPrice, Label = "asker", Visibility = priceDetail.MilitaryPrice.PassengerCount == 0 ? Visibility.Collapsed : Visibility.Visible }); grid.Children.Add(stackPanel); Functions.ScrollTo(Scroll, LayoutRoot, DetailsPanel.ActualHeight); btnReserve.IsActivated = true; btnBuy.IsActivated = true; } }; JourneyRequests.GetPriceDetails(Database.TempData.Ticket); }
public static BaseResponse <Ticket> ParseTicket(string xml) { var response = new BaseResponse <Ticket>(); var ticket = new Ticket(); var departureJourney = new Journey(); var returnJourney = new Journey() { IsReturn = true }; var root = XElement.Parse(xml); if (root.Element(XName.Get("Sonuc")) != null && root.Element(XName.Get("Sonuc")).Value.ToString() == "false") { response.Status = ResponseStatus.NotFound; response.Message = root.Element(XName.Get("Hata")).Value; return(response); } #region PNR var pnr = root.Element(XName.Get("PNR")); ticket.PNR = new PNR(); ticket.PNR.Code = pnr.Element(XName.Get("PNR")).Value.ToString(); ticket.Type = Functions.GetTicketType(pnr.Element(XName.Get("PnrTip")).Value.ToString()); //ticket.PNR.TrackingId = pnr.Element(XName.Get("TakipNo")).Value.ToString(); //ticket.PNR.FirstName = pnr.Element(XName.Get("Ad")).Value.ToString(); //ticket.PNR.LastName = pnr.Element(XName.Get("Soyad")).Value.ToString(); ticket.PNR.Parameter = pnr.Element(XName.Get("Soyad")).Value.ToString(); ticket.PNR.PhoneNumber = pnr.Element(XName.Get("Tel")).Value.ToString(); ticket.PNR.Email = pnr.Element(XName.Get("Email")).Value.ToString(); ticket.PNR.ExpirationDate = Convert.ToDateTime(pnr.Element(XName.Get("OpsiyonTarih")).Value.ToString()); if (pnr.Element(XName.Get("SabitTel")) != null) { ticket.PNR.TelephoneNumber = pnr.Element(XName.Get("SabitTel")).Value.ToString(); } //if (!string.IsNullOrEmpty(pnr.Element(XName.Get("TCKimlikNo")).Value)) // ticket.PNR.TCKN = Con vert.ToInt64(pnr.Element(XName.Get("TCKimlikNo")).Value.ToString()); //ticket.PNR.Factory = new Factory() { Id = Convert.ToInt32(pnr.Element(XName.Get("FirmaNo")).Value.ToString()) }; /* * if (pnrDetail != null) * ticket.ActionType = pnrDetail.Element(XName.Get("IslemTipi")).Value.ToString() == "SATIS" ? ActionType.Buying : ActionType.Reservation; * else * ticket.ActionType = ActionType.Reservation; */ #endregion #region Passengers var passengerNodes = root.Elements().Where(x => x.Name.LocalName == "Yolcu" && x.Element(XName.Get("Durum1")) != null).ToList(); foreach (var pNode in passengerNodes.ToList()) { var passenger = new Passenger(); passenger.FirstName = pNode.Element(XName.Get("Ad")).Value.ToString(); passenger.LastName = pNode.Element(XName.Get("Soyad")).Value.ToString(); if (!string.IsNullOrEmpty(pNode.Element(XName.Get("TCKimlikNo")).Value)) { passenger.TCKN = Convert.ToInt64(pNode.Element(XName.Get("TCKimlikNo")).Value.ToString()); } passenger.Gender = pNode.Element(XName.Get("Cinsiyet")).Value.ToString() == "1" ? Gender.Female : Gender.Male; if (pNode.Element(XName.Get("KoltukNo")) != null) { passenger.Seat = new Seat() { Number = Convert.ToInt32(pNode.Element(XName.Get("KoltukNo")).Value.ToString()) } } ; passenger.Type = Functions.GetPassengerType(pNode.Element(XName.Get("Tip")).Value.ToString()); if (pNode.Element(XName.Get("EBiletNo")) != null) { passenger.ETicketId = pNode.Element(XName.Get("EBiletNo")).Value; } if (pNode.Element(XName.Get("FirmaKartNo")) != null) { passenger.FactoryCardId = pNode.Element(XName.Get("FirmaKartNo")).Value; } passenger.FromServiceStop = new ServiceStop(); passenger.ToServiceStop = new ServiceStop(); passenger.TicketActions = new List <TicketAction>(); for (int i = 1; i < 5; i++) { var actionNode = pNode.Element(XName.Get("Durum" + i)); if (actionNode == null) { break; } passenger.TicketActions.Add(new TicketAction() { Id = i, Type = Functions.GetActionType(pNode.Element(XName.Get("Durum" + i)).Value.ToString()), Date = Convert.ToDateTime(pNode.Element(XName.Get("Durum" + i + "Tarih")).Value.ToString()) }); } int currentActionId = Convert.ToInt32(pNode.Element(XName.Get("AktifDurum")).Value.ToString()); passenger.LastAction = passenger.TicketActions.SingleOrDefault(x => x.Id == currentActionId); var price = new Price(); price.NetPrice = Convert.ToDouble(pNode.Element(XName.Get("Fiyat")).Value.ToString()); price.ServicePrice = Convert.ToDouble(pNode.Element(XName.Get("ServisUcret")).Value.ToString()); price.Tax = Convert.ToDouble(pNode.Element(XName.Get("Vergi")).Value.ToString()); price.TotalPrice = price.NetPrice + price.ServicePrice + price.Tax; passenger.Price = price; ticket.Passengers.Add(passenger); } #endregion #region Segments int segmentIndex = 1; var segmentNodes = root.Elements().Where(x => x.Name.LocalName == "Segment"); int departureCount = segmentNodes.Count(x => x.Element(XName.Get("DonusMu")).Value != "1"); foreach (var sNode in segmentNodes.ToList()) { var segment = new Segment(); bool isReturn = sNode.Element(XName.Get("DonusMu")).Value == "1"; segment.Id = sNode.Element(XName.Get("SeferNo")).Value.ToString(); if (segmentNodes.Count() > 1 || isReturn) { if (segmentIndex == departureCount) { segmentIndex = 1; } if (isReturn) { segment.Name = "Dönüş" + (segmentNodes.Count() - departureCount == 1 ? "" : " (" + segmentIndex++ + ". uçuş)"); } else { segment.Name = "Gidiş" + (departureCount == 1 ? "" : " (" + segmentIndex++ + ". uçuş)"); } } segment.From = new Station() { Name = sNode.Element(XName.Get("Kalkis")).Value.ToString() }; segment.To = new Station() { Name = sNode.Element(XName.Get("Varis")).Value.ToString() }; if (ticket.Type != TicketType.BusJourney && sNode.Element(XName.Get("KalkisKod")) != null && !string.IsNullOrEmpty(sNode.Element(XName.Get("KalkisKod")).Value.ToString())) { if (Global.Stations.Any()) { segment.From = Global.Stations.SingleOrDefault(x => x.Code == sNode.Element(XName.Get("KalkisKod")).Value.ToString()); segment.To = Global.Stations.SingleOrDefault(x => x.Code == sNode.Element(XName.Get("VarisKod")).Value.ToString()); } else { segment.From = new Station() { Code = sNode.Element(XName.Get("KalkisKod")).Value.ToString() }; segment.To = new Station() { Code = sNode.Element(XName.Get("VarisKod")).Value.ToString() }; } } segment.Factory = new Factory() { Id = Convert.ToInt32(sNode.Element(XName.Get("TasiyiciFirma")).Value.ToString()), Code = sNode.Element(XName.Get("FirmaKod")).Value.ToString(), Name = sNode.Element(XName.Get("FirmaAd")).Value.ToString() }; segment.DepartureDate = Convert.ToDateTime(sNode.Element(XName.Get("KalkisTarih")).Value.ToString()); segment.ArrivalDate = Convert.ToDateTime(sNode.Element(XName.Get("VarisTarih")).Value.ToString()); if (sNode.Element(XName.Get("SeferSure")) != null) { segment.Duration = Convert.ToDateTime(sNode.Element(XName.Get("SeferSure")).Value.ToString()); } if (sNode.Element(XName.Get("BosSaat")) != null && sNode.Element(XName.Get("BosTarih")) != null) { var date = Convert.ToDateTime(sNode.Element(XName.Get("BosTarih")).Value); string hour = sNode.Element(XName.Get("BosSaat")).Value.Replace("1900-01-01", date.ToString("yyyy") + "-" + date.ToString("MM") + "-" + date.ToString("dd")); segment.Hour = hour; } if (ticket.Type == TicketType.BusJourney) { segment.Bus = new Bus(); segment.UnitPrice = ticket.Passengers.First().Price; if (sNode.Element(XName.Get("HatNo")) != null) { segment.LineNumber = Convert.ToInt32(sNode.Element(XName.Get("HatNo")).Value.ToString()); } if (sNode.Element(XName.Get("SeferTip")) != null) { segment.Type = sNode.Element(XName.Get("SeferTip")).Value.ToString() == "MOLALI" ? SegmentType.Stop : SegmentType.Nonstop; } if (sNode.Element(XName.Get("AracTipi")) != null) { segment.Bus.Type = new BusType() { Name = sNode.Element(XName.Get("AracTipi")).Value.ToString() } } ; if (sNode.Element(XName.Get("PeronNo")) != null) { segment.Bus.PlatformNumber = sNode.Element(XName.Get("PeronNo")).Value.ToString(); } } var selectedClass = new JourneyClass(); if (sNode.Element(XName.Get("SinifTip")) != null) { selectedClass.Name = sNode.Element(XName.Get("SinifTip")).Value.ToString(); } if (sNode.Element(XName.Get("Sinif")) != null) { selectedClass.ShortName = sNode.Element(XName.Get("Sinif")).Value.ToString(); } segment.SelectedClass = selectedClass; if (!isReturn) { departureJourney.Segments.Add(segment); } else { returnJourney.Segments.Add(segment); } } #endregion #region Journeys departureJourney.Factory = departureJourney.Segments.First().Factory; departureJourney.From = departureJourney.Segments.First().From; departureJourney.To = departureJourney.Segments.Last().To; departureJourney.DepartureDate = departureJourney.Segments.First().DepartureDate; ticket.Journeys.Add(departureJourney); if (returnJourney.Segments.Any()) { returnJourney.Factory = returnJourney.Segments.First().Factory; returnJourney.From = returnJourney.Segments.First().From; returnJourney.To = returnJourney.Segments.Last().To; returnJourney.DepartureDate = returnJourney.Segments.First().DepartureDate; ticket.Journeys.Add(returnJourney); } #endregion #region Prices var ticketPrice = new Price(); foreach (var item in ticket.Passengers.ToList()) { ticketPrice.NetPrice += item.Price.NetPrice; ticketPrice.Tax += item.Price.Tax; ticketPrice.ServicePrice += item.Price.ServicePrice; ticketPrice.TotalPrice += item.Price.TotalPrice; } ticket.Price = ticketPrice; #endregion #region Bill var billNode = root.Element(XName.Get("Fatura")); if (billNode != null) { var bill = new Bill(); if (billNode.Element(XName.Get("KisiAd")) != null) { bill.Type = BillType.Person; bill.PersonFirstName = billNode.Element(XName.Get("KisiAd")).Value; bill.PersonLastName = billNode.Element(XName.Get("KisiSoyad")).Value; bill.PersonTCKN = Convert.ToInt64(billNode.Element(XName.Get("KisiTcKimlikNo")).Value); bill.Address = billNode.Element(XName.Get("KisiAdres")).Value; } else if (billNode.Element(XName.Get("FirmaAd")) != null) { bill.Type = BillType.Factory; bill.FactoryName = billNode.Element(XName.Get("FirmaAd")).Value; bill.FactoryTaxId = billNode.Element(XName.Get("FirmaVergiNo")).Value; bill.FactoryTaxOfficeName = billNode.Element(XName.Get("FirmaVergiDairesi")).Value; bill.Address = billNode.Element(XName.Get("FirmaAdres")).Value; } ticket.Bill = bill; } #endregion #region Price Details if (ticket.Type != TicketType.BusJourney) { JourneyRequests.PriceDetailsRequest.OnCompleted = (priceResponse) => { if (priceResponse.Status == ResponseStatus.Successful) { var priceDetail = priceResponse.Result; JourneyRequests.FillPassengerPrices(ticket, priceDetail); } else { // 3D Secure zorunluluk bilgisine erişilemediğinde ticket.Is3DBuyingActivated = true; ticket.Is3DBuyingRequired = false; ticket.IsPassportRequired = ticket.Type == TicketType.InternationalJourney; } }; JourneyRequests.GetPriceDetails(ticket); } else { BusRequests.BusRequest.OnCompleted = (busResponse) => { if (busResponse.Status == ResponseStatus.Successful) { var bus = busResponse.Result; ticket.Is3DBuyingActivated = bus.Is3DBuyingActivated; ticket.Is3DBuyingRequired = bus.Is3DSecureRequired; } else { ticket.Is3DBuyingActivated = true; ticket.Is3DBuyingRequired = false; } }; BusRequests.GetBus(ticket.Journeys[0].Segments[0]); } #endregion response.Result = ticket; return(response); } } }