index.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. import React, { Component } from "react";
  2. import Router from "next/router";
  3. import ContentWrapper from "@/components/Layout/ContentWrapper";
  4. import { Row, Col, Progress, Modal, ModalHeader, ModalBody, ModalFooter, Button, Table } from "reactstrap";
  5. import { getPelaporan } from "../../../../actions/pelaporan";
  6. import Sparkline from "@/components/Common/Sparklines";
  7. import Datatable from "@/components/Tables/Datatable";
  8. import moment from "moment";
  9. import Swal from "@/components/Common/Swal";
  10. import swal from "sweetalert";
  11. class Keberatan extends Component {
  12. constructor(props) {
  13. super(props);
  14. this.state = {
  15. modal: false,
  16. swalOption: {
  17. title: "Are you sure?",
  18. text: "Your will not be able to recover this imaginary file!",
  19. buttons: {
  20. cancel: {
  21. text: "Tidak",
  22. value: false,
  23. visible: true,
  24. className: "bg-danger",
  25. closeModal: true,
  26. },
  27. confirm: {
  28. text: "Ya",
  29. value: true,
  30. visible: true,
  31. className: "bg-primary",
  32. closeModal: true,
  33. },
  34. },
  35. },
  36. };
  37. }
  38. static getInitialProps = async () => {
  39. const pelaporan = await getPelaporan();
  40. return { pelaporan };
  41. };
  42. toggleModal = (value, number) => {
  43. if (value) {
  44. console.log("Ya");
  45. } else {
  46. console.log("Tidak");
  47. }
  48. this.setState({
  49. modal: !this.state.modal,
  50. });
  51. };
  52. permohonanClick = (e, ptId, number) => {
  53. e.preventDefault();
  54. // Router.push({
  55. // pathname: "/app/pelaporan/search",
  56. // });
  57. swal(this.state.swalOption).then((isConfirm) => {
  58. if (isConfirm) {
  59. console.log("berhasil");
  60. // swal("Deleted!", "Your imaginary file has been deleted.", "success");
  61. } else {
  62. console.log("gagal");
  63. // swal("Cancelled", "Your imaginary file is safe :)", "error");
  64. }
  65. });
  66. };
  67. render() {
  68. console.log(this.state);
  69. const { pelaporan } = this.props;
  70. return (
  71. <ContentWrapper>
  72. <div className="content-heading">Permohonan Keberatan</div>
  73. <Row>
  74. <Col lg="4">
  75. <div className="card b">
  76. <div className="card-body bb">
  77. <p>Overvall progress</p>
  78. <div className="d-flex align-items-center mb-2">
  79. <div className="w-100">
  80. <Progress className="progress-xs m0" color="info" value={20} />
  81. </div>
  82. <div className="ml-auto">
  83. <div className="col wd-xxs text-right">
  84. <div className="text-bold text-muted">20%</div>
  85. </div>
  86. </div>
  87. </div>
  88. </div>
  89. <div className="card-body">
  90. <p>Metrics</p>
  91. <div className="row text-center">
  92. <div className="col-6 col-lg-6 col-xl-6">
  93. <Sparkline
  94. values={[20, 80]}
  95. options={{
  96. type: "pie",
  97. height: "50",
  98. sliceColors: ["#edf1f2", "#23b7e5"],
  99. }}
  100. className="sparkline"
  101. />
  102. <p className="mt-3">Open Case</p>
  103. </div>
  104. <div className="col-6 col-lg-6 col-xl-6">
  105. <Sparkline
  106. values={[80, 20]}
  107. options={{
  108. type: "pie",
  109. height: "50",
  110. sliceColors: ["#edf1f2", "#27c24c"],
  111. }}
  112. className="sparkline"
  113. />
  114. <p className="mt-3">Close Case</p>
  115. </div>
  116. </div>
  117. </div>
  118. <table className="table bb">
  119. <tbody>
  120. <tr>
  121. <td>
  122. <strong>Open Case</strong>
  123. </td>
  124. <td>80</td>
  125. </tr>
  126. <tr>
  127. <td>
  128. <strong>Close Case</strong>
  129. </td>
  130. <td>20</td>
  131. </tr>
  132. <tr>
  133. <td>
  134. <strong>Performance</strong>
  135. </td>
  136. <td>
  137. <em className="far fa-smile fa-lg text-warning"></em>
  138. </td>
  139. </tr>
  140. <tr>
  141. <td>
  142. <strong>Last Case Closed</strong>
  143. </td>
  144. <td>BI:1107 - 12/01/2016</td>
  145. </tr>
  146. </tbody>
  147. </table>
  148. </div>
  149. </Col>
  150. <Col lg="8">
  151. <div className="card b">
  152. <div className="card-body">
  153. <Table options={{ responsive: true }}>
  154. {/* <table className="table w-100"> */}
  155. <thead>
  156. <tr>
  157. <th>#ID</th>
  158. <th>Description</th>
  159. <th>Created</th>
  160. <th>Status</th>
  161. <th></th>
  162. </tr>
  163. </thead>
  164. <tbody>
  165. {pelaporan.data.map((value) => {
  166. return (
  167. <tr key={value._id}>
  168. <td>BI:{value._number}</td>
  169. <td className="text-nowrap">
  170. <div className="media align-items-center">
  171. <img className="img-fluid rounded thumb64" src="/static/img/dummy-search.png" alt="Dummy" />
  172. <div className="media-body d-flex">
  173. <div>
  174. <h4 className="m-0">Universitas Satyagama</h4>
  175. <small className="text-muted">0742/O/1990 - www.satyagama.ac.id - info@satyagama.ac.id</small>
  176. <p>{value.description}</p>
  177. </div>
  178. </div>
  179. </div>
  180. </td>
  181. <td>{moment(value.createdAt).fromNow()}</td>
  182. <td>
  183. <div className="inline wd-xxs badge badge-success">open</div>
  184. </td>
  185. <td>
  186. <Button color="primary" onClick={this.toggleModal}>
  187. Ajukan
  188. </Button>
  189. <Modal isOpen={this.state.modal} toggle={this.toggleModal}>
  190. <ModalHeader toggle={this.toggleModal}>Permohonan Keberatan</ModalHeader>
  191. <ModalBody>apakah anda akan mengajukan permohonan keberatan atas pengenaan sanksi?</ModalBody>
  192. <ModalFooter>
  193. <Button color="primary" onClick={() => this.toggleModal(true, value.ptId, value._number)}>
  194. Ya
  195. </Button>{" "}
  196. <Button color="secondary" onClick={() => this.toggleModal(false, value.ptId, value._number)}>
  197. Tidak
  198. </Button>
  199. </ModalFooter>
  200. </Modal>
  201. {/* <Swal options={this.state.swalOption} callback={this.swalCallback} className="btn btn-primary">
  202. Ajukan
  203. </Swal> */}
  204. {/* START card */}
  205. {/* Button trigger modal */}
  206. {/* <Button color="primary" onClick={(e) => this.permohonanClick(e, value.pt_id, value.number)}>
  207. Ajukan
  208. </Button> */}
  209. {/* END card */}
  210. {/* <Button onClick={(e) => this.permohonanClick(e, value.pt_id, value.number)} className="btn-primary">
  211. Ajukan
  212. </Button> */}
  213. </td>
  214. </tr>
  215. );
  216. })}
  217. </tbody>
  218. {/* </table> */}
  219. </Table>
  220. </div>
  221. </div>
  222. </Col>
  223. </Row>
  224. </ContentWrapper>
  225. );
  226. }
  227. }
  228. export default Keberatan;