import { RentalCar } from '@rentalCar-lib/search';
import { LocationUtility } from '@utility-lib/location';
import { TrainSearch } from '@train-lib/search';
import { FakeProviderStations } from '@train-lib/trip_data';
import { Timeouts } from '@utility-lib/index';
import { createTripProposal } from './create_proposal';

export class TripProposalBooking {
  static expectTripProposalBookingSuccessfully() {
    cy.get('[class^="information__content__subject"]').should('be.contain', 'Your Trip is all booked!');
    cy.allure().logStep('Trip proposal booking successfully');
  }

  static trainBooking() {
    const origin = FakeProviderStations.DepartureStation;
    const destination = FakeProviderStations.DestinationStation;

    TrainSearch.setOrigin(origin);
    TrainSearch.setDestination(destination);
    TrainSearch.selectFutureTrainDate();
    cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout);
    cy.get('body').then(($button) => {
      if ($button.length > 0) {
        cy.get(createTripProposal.removeLOB).eq(0).click();
        cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout);
        cy.get(createTripProposal.bookingTypeVerticalOption('train')).click();
        TrainSearch.setOrigin(origin);
        TrainSearch.setDestination(destination);
        TrainSearch.selectFutureTrainDate();
      }
    });
  }

  static startBooking() {
    cy.get(createTripProposal.startBooking).click();
    cy.allure().logStep('start booking');
  }

  static carBooking() {
    RentalCar.selectPickUpLocation(LocationUtility.getRentalCarAirportUS());
    RentalCar.setPickUpAndDropOffDate();
    cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout);
    cy.get('body').then(($button) => {
      if ($button.length > 0) {
        cy.get(createTripProposal.removeLOB).eq(0).click();
        cy.wait(Timeouts.SHORT_TIMEOUT_3_SEC.timeout);
        cy.get(createTripProposal.bookingTypeVerticalOption('car')).click();
        RentalCar.selectPickUpLocation(LocationUtility.getRentalCarAirportUS());
        RentalCar.setPickUpAndDropOffDate();
      }
    });
  }
}
