index.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import React, { Component } from "react";
  2. import ContentWrapper from "@/components/Layout/ContentWrapper";
  3. import Link from "next/link";
  4. import { Row, Col, Button } from "reactstrap";
  5. import { getPelaporan } from "@/actions/pelaporan";
  6. import CaseProgress from "@/components/Main/CaseProgress";
  7. import TableLaporan from "@/components/Main/TableLaporan";
  8. import { connect } from "react-redux";
  9. import Loader from "@/components/Common/Loader";
  10. class Pelaporan extends Component {
  11. constructor(props) {
  12. super(props);
  13. this.state = {
  14. user: {
  15. pelaporan: {},
  16. },
  17. };
  18. }
  19. componentDidMount = async () => {
  20. const { organisasi, peran } = this.props.user.peran[0];
  21. const query = { role: peran.id === 2021 ? "lldikti" : "dikti" };
  22. if (peran.id === 2021) query.orgId = organisasi.id;
  23. const pelaporan = await getPelaporan(query);
  24. this.setState({ pelaporan });
  25. };
  26. render() {
  27. const { pelaporan } = this.state;
  28. return (
  29. <ContentWrapper>
  30. <div className="content-heading">Pelaporan</div>
  31. <Row>
  32. <Col lg="4">
  33. <CaseProgress />
  34. </Col>
  35. <Col lg="8">
  36. <div className="mb-3 d-flex">
  37. <div>
  38. <Link href="/app/pelaporan/search">
  39. <Button color="primary">Laporan Baru</Button>
  40. </Link>
  41. </div>
  42. </div>
  43. {pelaporan?.data ? <TableLaporan listData={pelaporan.data} to="/app/pelaporan/detail" linkName="Detail" /> : <Loader />}
  44. </Col>
  45. </Row>
  46. </ContentWrapper>
  47. );
  48. }
  49. }
  50. const mapStateToProps = (state) => ({ user: state.user });
  51. export default connect(mapStateToProps)(Pelaporan);