Files
old-new-wiaas/frontend/src/containers/coMarket/CoMarketPackageDetailsContainer.jsx

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);