import React, { useContext } from 'react';
import Loader from '../../shared/components/loader';
import { getTranslations } from '../../shared/utils/localization-util';
import SettingsContext from '../settings-context';
import { buildClassName } from '../../shared/utils/class-util';

interface FooterProps {
  priceText: string | undefined;
  isLoading: boolean;
  isOffer: boolean | undefined;
  roomsIsDisabled: boolean;
  handleBookClick: () => void;
}

const Footer: React.FC<FooterProps> = ({ priceText, isLoading, isOffer, roomsIsDisabled, handleBookClick }) => {
  const { language, alternativeActionText, alternativeAction } = useContext(SettingsContext);
  const translations = getTranslations(language);

  return (
    <div className="booking-product__footer">
      {isLoading ? (
        <Loader loaderText={translations.PRODUCT.LOADING_PRICE} />
      ) : (
        <>
          {priceText && (
            <div className="booking-product__footer-total">
              <div className="booking-product__footer-label">{translations.SHARED.TOTAL_PRICE}</div>
              <div className="booking-product__footer-price">{priceText}</div>
            </div>
          )}
          <div className="booking-product__footer-actions">
            {priceText ? (
              <button
                type="button"
                className={buildClassName(['cta', !roomsIsDisabled && 'cta--disabled'])}
                onClick={handleBookClick}
                disabled={!roomsIsDisabled}>
                {isOffer ? translations.PRODUCT.TO_YOUR_OFFER : translations.PRODUCT.BOOK_NOW}
              </button>
            ) : alternativeActionText && alternativeAction ? (
              <a href="#offer-form" className="cta" onClick={alternativeAction}>
                {alternativeActionText}
              </a>
            ) : (
              <>{translations.PRODUCT.NOT_AVAILABLE}</>
            )}
          </div>
        </>
      )}
    </div>
  );
};

export default Footer;
