import React from "react"; import Head from "next/head"; import Image from "next/image"; import { connect } from "react-redux"; import { withRouter } from "next/router"; import moment from "moment"; import numeral from "numeral"; import { SpinnerCircular } from "spinners-react"; import pluralize from "pluralize-ru"; import { reduxWrapper } from "../../store"; import Header from "../components/Header"; import Footer from "../components/Footer"; import InnerMenu from "./components/InnerMenu"; import Company from "../components/Company"; import DownloadFinesPdfButton from "../components/DownloadFinesPdfButton"; import { getContractInfo, getContractFines, } from "../../actions"; import AccountLayout from "../components/Layout/Account"; import ContractHeader from "./components/ContractHeader"; const TYPES = { upd: "УПД по очередным платежам", upd_avans: "УПД по авансовым платежам", billfines: "Счета-уведомления на пени", billgibdd: "BillGIBDD", fines: "Штрафы ГИБДД", }; class ContractFinesPage extends React.Component { constructor(props) { super(props); this.state = { loading: false, contracts_info: [], fines: null, all: false, contract_fines: {}, }; } static getDerivedStateFromProps(nextProps, prevState) { return { contracts_info: nextProps.contracts_info, fines: nextProps.fines, contract_fines: nextProps.contract_fines, }; } componentDidMount() { const { dispatch, number} = this.props; const { contracts_info, contract_fines } = this.state; if(!this.state.loading && number !== undefined) { this.setState({ loading: true }, () => { Promise.all([ ( (resolve) => { if(contracts_info[ number ] === undefined) { getContractInfo({ dispatch, number }) .then(() => { resolve(); }) .catch(() => { resolve(); }); } else { resolve(); } } ), ( (resolve) => { if(contract_fines[number] === undefined) { getContractFines({ dispatch, contract: number }) .then(() => { resolve(); }) .catch(() => { resolve(); }); } else { resolve(); } } ) ]) .then(() => { this.setState({ loading: false }); }); }); } } componentDidUpdate(prevProps, prevState) { } _handle_onShowMore = () => { this.setState({ all: true }); } _renderFines = (contract_fines) => { const { number } = this.props; const fines = contract_fines[number]; const { all } = this.state; const status = { NotPaid: "danger", PaidEvolution: "danger", PaidIndependently: "success", }; if (fines.length > 0) { console.log({ fines }); return ( <>
{ fines.slice(0, all ? fines.length : 10).map((fine, fine_index) => (

№ постановления: {fine.fine_number}

  • Дата нарушения:{" "} {moment(fine.violation_date).format("DD.MM.YYYY")}
  • Сумма:{" "} {numeral(fine.amount).format(" ., ")} ₽
  • Статус:{" "} {fine.status}
    { fine.violation_place !== undefined && fine.violation_place !== null && (
  • Место нарушения: {fine.violation_place}
  • ) } {fine.gibdd !== undefined && fine.gibdd !== null && (
  • Подразделение: {fine.gibdd}
  • )}

Штраф: { fine.fine_title }

{ fine.status_code !== "PaidIndependently" && (

Счет на оплату

) }
{/*} {*/}
)) } { !all && fines.length > 3 && (

Еще {fines.length - 10}{" "} {pluralize( fines.length - 10, "постановлений", "постановление", "постановления", "постановлений" )}

) }
); } return ( <>

Штрафов не найдено.

 

); } render() { const { number } = this.props; const { loading, contracts_info, contract_fines, } = this.state; let { date, car, status } = contracts_info[ number ] !== undefined ? contracts_info[ number ] : {}; return ( ЛК Эволюция автолизинга
{ loading ? (
) : (

Штрафы ГИБДД

{ contract_fines !== undefined && contract_fines !== null && contract_fines[ number ] !== undefined && contract_fines[ number ] !== null && ( <> { this._renderFines(contract_fines) } ) }
) } {/*} <>
{*/}