114 lines
5.7 KiB
JavaScript
114 lines
5.7 KiB
JavaScript
import React, {Component} from 'react';
|
|
import {connect} from 'react-redux';
|
|
import {Row, Col, Button} from 'reactstrap';
|
|
import WiaasBox from '../../mainComponents/box/WiaasBox.jsx';
|
|
import {fetchPackageDetails, addToCart} from '../../actions/coMarket/coMarketPackageDetailsActions';
|
|
import PackageInfo from './components/PackageInfo.jsx';
|
|
import PackagePrice from './components/PackagePrice.jsx';
|
|
import PackageOptions from './components/PackageOptions.jsx';
|
|
import AdditionalPackages from './components/AdditionalPackages.jsx';
|
|
import AgreementOptions from './components/AgreementOptions.jsx';
|
|
import {coMarketTexts} from '../../constants/coMarketConstants';
|
|
import './style/CoMarketPackageDetailsContainer.css';
|
|
|
|
class CoMarketPackageDetailsContainer extends Component {
|
|
constructor(props) {
|
|
super(props);
|
|
|
|
this.handleAddToCart = this.handleAddToCart.bind(this);
|
|
this.state = {
|
|
selectedOptions: {}
|
|
};
|
|
}
|
|
|
|
handleAddToCart() {
|
|
const addParams = {
|
|
selectedPackage: this.props.selectedPackage,
|
|
selectedAgreement: this.props.selectedAgreement,
|
|
selectedOptions: this.props.selectedOptions,
|
|
selectedAdditionals: this.props.selectedAdditionals
|
|
};
|
|
this.props.dispatch(addToCart(addParams));
|
|
}
|
|
|
|
componentDidMount() {
|
|
const {idPackage, idCommercialLead} = this.props;
|
|
this.props.dispatch(fetchPackageDetails({idPackage, idCommercialLead}));
|
|
}
|
|
|
|
render() {
|
|
const {selectedPackage, selectedAgreement, messages, isLoading} = this.props;
|
|
return(
|
|
<div id="co-market-package-details">
|
|
<Row>
|
|
<Col xl="12" lg="12">
|
|
<WiaasBox>
|
|
{
|
|
isLoading &&
|
|
<div className="loader">
|
|
<i className="fa fa-spinner fa-spin fa-3x" aria-hidden="true"></i>
|
|
</div>
|
|
}
|
|
{
|
|
(selectedPackage && !isLoading) &&
|
|
<Row>
|
|
<Col xl="6" lg="5" md="12" xs="12">
|
|
<PackageInfo
|
|
name={selectedPackage.name}
|
|
reference={selectedPackage.reference}
|
|
shortDescription={selectedPackage.shortDescription}
|
|
country={selectedPackage.country}
|
|
countryCode={selectedPackage.countryCode}
|
|
documents={selectedPackage.documents} />
|
|
</Col>
|
|
|
|
<Col xl="6" lg="7" md="12" xs="12">
|
|
<div id="shop-package-buy-info">
|
|
{
|
|
selectedPackage.groups && Object.keys(selectedPackage.groups).length > 0 && selectedAgreement &&
|
|
<PackageOptions
|
|
groups={selectedPackage.groups}
|
|
country={selectedPackage.country}/>
|
|
}
|
|
{
|
|
selectedPackage.additionalPackages && selectedPackage.additionalPackages.length > 0 && selectedAgreement &&
|
|
<AdditionalPackages
|
|
additionalPackages={selectedPackage.additionalPackages}
|
|
country={selectedPackage.country}/>
|
|
}
|
|
<AgreementOptions
|
|
prices={selectedPackage.prices}
|
|
currency={selectedPackage.currency}/>
|
|
<Row className="justify-content-end" style={{ marginTop: 30 }}>
|
|
<Button id="add-to-cart-btn"
|
|
className="add-to-cart-btn"
|
|
onClick={this.handleAddToCart}
|
|
color="secondary">
|
|
<i className="fa fa-shopping-cart" aria-hidden="true"></i>
|
|
{' '}{coMarketTexts.buttons.ADD_TO_CART}
|
|
</Button>
|
|
</Row>
|
|
{messages && <span>{messages[0].message}</span>}
|
|
</div>
|
|
</Col>
|
|
</Row>
|
|
}
|
|
</WiaasBox>
|
|
</Col>
|
|
</Row>
|
|
</div>
|
|
);
|
|
}
|
|
}
|
|
|
|
const mapStateToProps = (state) => ({
|
|
selectedPackage: state.coMarketPackageDetailsReducer.selectedPackage,
|
|
selectedAgreement: state.coMarketPackageDetailsReducer.selectedAgreement,
|
|
selectedOptions: state.coMarketPackageDetailsReducer.selectedOptions,
|
|
selectedAdditionals: state.coMarketPackageDetailsReducer.selectedAdditionals,
|
|
messages: state.coMarketPackageDetailsReducer.messages,
|
|
isLoading: state.coMarketPackageDetailsReducer.isLoading
|
|
});
|
|
|
|
export default connect(mapStateToProps)(CoMarketPackageDetailsContainer);
|