import React, { useState } from 'react';
import { useSelector } from "react-redux";
import { buildClassName } from '../../../shared/utils/class-util';
import { getPriceDifferenceText } from "../../../shared/utils/localization-util";
import { GroupedFlights } from "../../types";
import { selectTranslations } from "../booking/selectors";
import FlightOptionFlight from './flight-option-flight';

interface FlightOptionProps {
  item: GroupedFlights;
  isSelected: boolean;
  currentPrice: number;
  onChange: (item: GroupedFlights) => void;
}

const FlightOption: React.FC<FlightOptionProps> = ({
  item,
  isSelected,
  currentPrice,
  onChange
}) => {
  const translations = useSelector(selectTranslations);

  const ownTotalPrice = item.selectedOutward.price + item.selectedReturn.price
  const priceDifference = item.isSelected
    ? 0
    : ownTotalPrice - currentPrice;

  const [outwardVisible] = useState<boolean>(false);
  const [returnVisible] = useState<boolean>(false);

  const handleButtonClick = () => {
    if (!item.isSelected) onChange(item)
  };

  return (
    <div className="flight__option">
      <div className="flight__content">
        <div className="flight__flights">
          <div className="flight__flight">
            <div className="flight__flight__header">
              <div className="flight__status__container">
              </div>
              <div className="flight__price">
                {!isSelected && (
                  <span className={buildClassName(["price",
                    priceDifference > 0 && "price--increase",
                    priceDifference < 0 && "price--decrease"
                  ])}>{getPriceDifferenceText(priceDifference)}</span>
                )}
                <button type="button" className={`cta ${isSelected ? 'cta--selected' : 'cta--select'}`} onClick={handleButtonClick}>
                  {isSelected ? translations.SHARED.SELECTED : translations.SHARED.SELECT}
                </button>
              </div>
            </div>
          </div>
          <FlightOptionFlight details={item.outward} isOptionsVisible={outwardVisible} />
          <FlightOptionFlight details={item.return} isOptionsVisible={returnVisible} />
        </div>
      </div>
    </div>

  );
}

export default FlightOption;