import React, { FC, ReactType } from 'react'; import css from './index.module.css'; import Button from '../../blocks/Button'; interface Partner { firstName?: string; lastName?: string; mobilePhone?: string; } interface ServicePackage { id: number; name: string; price: string; currency: string; } interface ServiceCallProps { id: number; milaInternalId: string; trackerUrlSafeId: string; status: string; StatusLink: ReactType; date: string; name: string; totalPrice: number; totalPriceDiscounted: number; currency: string; priceHappines: number; servicePackages: [ServicePackage]; partner: Partner; cancelable: boolean; } export interface ServiceCallsInformationProps { serviceCalls?: [ServiceCallProps]; priceHappinesLabel?: string; serviceNumberLabel?: string; partnerLabel?: string; additionalPriceInfoLabel?: string; recommendedPriceLabel?: string; appointmentLabel?: string; appointmentDeterminedLabel?: string; canceledLabel?: string; cancelButtonLabel?: string; rateUsButtonLabel?: string; handleOnCancel?: (id) => void; handleRateUs?: (id: string) => void; } const ServiceCallsInformation: FC = ({ serviceCalls, priceHappinesLabel, serviceNumberLabel, additionalPriceInfoLabel, recommendedPriceLabel, appointmentLabel, appointmentDeterminedLabel, handleOnCancel, cancelButtonLabel, rateUsButtonLabel, canceledLabel, handleRateUs, }) => (
{serviceCalls && serviceCalls.map(serviceCall => (
{serviceNumberLabel}: # {serviceCall.milaInternalId && serviceCall.milaInternalId.slice(0, 6)}
{serviceCall.StatusLink && ( )}
{serviceCall.status !== 'Canceled' ? (
{appointmentLabel}:{' '} {serviceCall.date ? serviceCall.date : appointmentDeterminedLabel}
) : (
{canceledLabel}
)} {serviceCall.partner && (
{serviceCall.partner.firstName} {serviceCall.partner.lastName} ( {serviceCall.partner.mobilePhone})
)}
{serviceCall.servicePackages && serviceCall.servicePackages.map(servicePackage => (
{servicePackage.name}
{servicePackage.currency} {servicePackage.price}
))} {!!serviceCall.priceHappines && (
{priceHappinesLabel}
{serviceCall.currency} {serviceCall.priceHappines}
)}
Total{' '} {additionalPriceInfoLabel && ( ({additionalPriceInfoLabel}) )}
{serviceCall.currency}{' '} {serviceCall.totalPrice} {' '} {serviceCall.totalPriceDiscounted}
{handleOnCancel && serviceCall.cancelable && (
)} {!serviceCall.cancelable && serviceCall.status !== 'Canceled' && serviceCall.status !== 'Unsuccessful' && (
)}
))} {recommendedPriceLabel && serviceCalls.length && (
* {recommendedPriceLabel}
)}
); export default ServiceCallsInformation;