import React from "react"; import Head from "next/head"; import Image from "next/image"; import Link from "next/link"; import cookie from "cookie"; import numeral from "numeral"; import pluralize from "pluralize-ru"; import { SpinnerCircular } from "spinners-react"; import { connect } from "react-redux"; import { withRouter } from 'next/router'; import moment from "moment"; import QuestionnaireForm from "../QuestionnaireForm"; import { reduxWrapper } from '../../../../store'; import DigitalSignaturesList from "../DigitalSignaturesList"; import { downloadQuestionnaire, uploadSignedFile } from "../../../../actions"; import FormMessage from "../FormMessage"; class Form_9_Status extends QuestionnaireForm { constructor(props) { super(props); this.state = { sign: {}, uploading: false, file: null, sent: null, company: {}, error_file_size: false, error_send: false, }; this.ref_file_input = React.createRef(); } static getDerivedStateFromProps(nextProps, prevState) { return { sign: nextProps.questionnaire.sign, step: nextProps.questionnaire.step, company: nextProps.company, }; } componentDidMount() { const { sign } = this.state; if(sign.digital) { this.props.onSuccess(this.state.sign); } } _handle_onFileUpload = () => { this.ref_file_input.current.click(); } _handle_onFileChange = (event) => { const file = event.target.files[0]; const error_file_size = file.size > ( 1024 * 1024 * process.env.NEXT_PUBLIC_UPLOAD_SCAN_FILESIZE_LIMIT_MB) ? true : false; this.setState({ file: file, error_file_size, filename: file.name }); } _handle_onSend = () => { const { file, company, uploading } = this.state; if(!uploading) { this.setState({ uploading: true, error_send: false, }, () => { uploadSignedFile(file, company.questionnaire_id) .then(() => { this.setState({ uploading: false, sent: true, error_send: false, }, () => { this.props.onSuccess(this.state.sign); }); }) .catch(() => { this.setState({ uploading: false, sent: false, error_send: true, }); }); }); } } render() { const { sign, file, uploading, sent, error_file_size, error_send, filename } = this.state; //console.log("Form_9_Status", "render", { sign }); return ( { sign.digital ? (
) : ( { file === null ? (
<>
) : ( { !sent ? ( { !error_file_size && !error_send ? ( ) : ( { error_file_size && ( ) } { error_send && ( ) } ) }

{ file.name } Подписанный скан анкеты

{ error_file_size ? ( ) : ( ) }
) : (
) }
)}
) }
); } } function mapStateToProps(state, ownProps) { return { questionnaire: state.questionnaire, company: state.company, } } export const getServerSideProps = reduxWrapper.getServerSideProps(store => async ({ req, res, query }) => { } ); export default connect(mapStateToProps)(Form_9_Status);