Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.08 KB | None | 0 0
  1. import React, { useEffect, useState } from "react";
  2. import {
  3. Container,
  4. Columns,
  5. Card,
  6. Button,
  7. Section,
  8. Image,
  9. Dropdown,
  10. Tag,
  11. Tabs
  12. } from "react-bulma-components";
  13. import { graphql } from "react-apollo";
  14. import Swal from "sweetalert2";
  15. import { flowRight as compose } from "lodash";
  16. import { Link } from "react-router-dom";
  17. import { parseISO, format } from "date-fns";
  18.  
  19. //queries
  20. import {
  21. getTeeTimesQuery,
  22. getBookingsQuery,
  23. getPendingQuery,
  24. getUsersQuery,
  25. getBookingQuery
  26. } from "../queries/queries";
  27.  
  28. //import
  29. import { deleteBookingMutation } from "../queries/mutations.js";
  30.  
  31. const Booking = props => {
  32. console.log(props);
  33.  
  34. const [username, setUsername] = useState("");
  35. const [teeTimeId, setTeeTimeId] = useState("");
  36. const [status, setStatus] = useState("");
  37. const [noOfPlayers, setNoOfPlayers] = useState("");
  38.  
  39. useEffect(() => {
  40. console.log("val of date: " + username);
  41. console.log("val of price: " + teeTimeId);
  42. console.log("val of time: " + status);
  43. console.log("val of holes: " + noOfPlayers);
  44. });
  45.  
  46. const deleteBookingHandler = e => {
  47. console.log(e.target.id);
  48. let id = e.target.id;
  49.  
  50. Swal.fire({
  51. title: "Are you sure?",
  52. text: "You won't be able to revert this!",
  53. icon: "warning",
  54. showCancelButton: true,
  55. confirmButtonColor: "#3085d6",
  56. cancelButtonColor: "#d33",
  57. confirmButtonText: "Yes, delete the booking!"
  58. }).then(result => {
  59. if (result.value) {
  60. props.deleteBookingMutation({
  61. variables: { id: id },
  62. refetchQueries: [
  63. {
  64. query: getBookingsQuery
  65. }
  66. ]
  67. });
  68.  
  69. Swal.fire("Deleted!", "Booking has been deleted.", "success");
  70. }
  71. });
  72. };
  73.  
  74. // console.log(props) "three-fifths" offset="one-fifth";
  75.  
  76. const bookingData = props.getBookingsQuery.getBookings
  77. ? props.getBookingsQuery.getBookings
  78. : [];
  79.  
  80. console.log(bookingData);
  81.  
  82. const teeTimeData = props.getTeeTimesQuery.getTeeTimes
  83. ? props.getTeeTimesQuery.getTeeTimes
  84. : [];
  85.  
  86. const pending = props.getPendingQuery.getPending
  87. ? props.getPendingQuery.getPending
  88. : [];
  89. console.log(pending);
  90.  
  91. if (props.getBookingsQuery.loading) {
  92. let timerInterval;
  93. Swal.fire({
  94. title: "Fetching bookings....",
  95. timer: 1000,
  96. timerProgressBar: true,
  97. onBeforeOpen: () => {
  98. Swal.showLoading();
  99. },
  100. onClose: () => {
  101. clearInterval(timerInterval);
  102. }
  103. }).then(result => {
  104. if (
  105. /* Read more about handling dismissals below */
  106. result.dismiss === Swal.DismissReason.timer
  107. ) {
  108. console.log("I was closed by the timer"); // eslint-disable-line
  109. }
  110. });
  111. }
  112. const [displayed, setDisplay] = useState("");
  113. const PendingHandler = () => {
  114. setDisplay('"display":"none"');
  115. };
  116.  
  117. const [filterBookings, setFilterBookings] = useState("pending");
  118. const [tagColor, setTagColor] = useState("dark");
  119.  
  120. const approvedHandler = event => {
  121. setFilterBookings("approved");
  122. setTagColor("success");
  123. };
  124. const cancelledHandler = event => {
  125. setFilterBookings("cancelled");
  126. setTagColor("danger");
  127. };
  128.  
  129. const pendingHandler = event => {
  130. setFilterBookings("pending");
  131. setTagColor("dark");
  132. };
  133. return (
  134. <Container className="column">
  135. <Columns>
  136. <Columns.Column size={11} id="bookingcard">
  137. <Card id="card3">
  138. <Card.Header>
  139. <Card.Header.Title
  140. className="is-centered "
  141. id="title"
  142. >
  143. Bookings
  144. </Card.Header.Title>
  145. </Card.Header>
  146. <Card.Content id="card-content">
  147. {/*sorter*/}
  148. <div class="tabs is-toggle is-toggle-rounded is-centered">
  149. <ul>
  150. <li>
  151. <Link onClick={pendingHandler}>
  152. Pending
  153. </Link>
  154. </li>
  155. <li>
  156. <a onClick={approvedHandler}>
  157. <span>Approved</span>
  158. </a>
  159. </li>
  160. <li>
  161. <a onClick={cancelledHandler}>
  162. <span>Cancelled</span>
  163. </a>
  164. </li>
  165. </ul>
  166. </div>
  167. {/*end of sorter*/}
  168.  
  169. {/*start of all*/}
  170.  
  171. <div
  172. id="card-content"
  173. className="columns is-multiline has-text-centered"
  174. >
  175. {bookingData.map(booking => {
  176. let teetimes = booking.teetimes;
  177. let users = booking.users;
  178. if (booking.status === filterBookings) {
  179. return (
  180. <div
  181. id="test"
  182. className="column is-one-third"
  183. key={booking.id}
  184. >
  185. <div class="card">
  186. <header className="card-header">
  187. <span
  188. id="tag"
  189. class={
  190. "tag is-" +
  191. tagColor
  192. }
  193. >
  194. {booking.status}
  195. </span>
  196. <p
  197. id="price"
  198. className="card-header-title is-centered is-size-5"
  199. >
  200. {teetimes
  201. ? teetimes.time
  202. : "unassigned"}
  203. </p>
  204.  
  205. <Button
  206. id={booking.id}
  207. onClick={
  208. deleteBookingHandler
  209. }
  210. color="dark"
  211. className="button fas fa-trash-alt btns2 delete "
  212. ></Button>
  213. </header>
  214. <header className="card-header">
  215. <p
  216. id="price"
  217. className="card-header-title is-centered"
  218. >
  219. {format(
  220. parseISO(
  221. teetimes.date
  222. ),
  223. " E., MMM. d, yyyy"
  224. )}
  225. </p>
  226. </header>
  227.  
  228. <div
  229. id="crd2"
  230. className="card-content has-text-left"
  231. >
  232. <div className="content is-size-7">
  233. <p id="txt">
  234. <strong>
  235. Holes:
  236. </strong>
  237. {" "}
  238. {teetimes
  239. ? teetimes.holes
  240. : "unassigned"}
  241. </p>
  242. <p id="txt">
  243. <strong>
  244. Players:
  245. </strong>
  246. {" "}
  247.  
  248. {
  249. booking.noOfPlayers
  250. }
  251. </p>
  252.  
  253. <p id="txt">
  254. <strong>
  255. Green Fee:
  256. </strong>
  257. {" "}
  258. &#8369;
  259. {teetimes
  260. ? teetimes.price
  261. : "unassigned"}{" "}
  262. per player
  263. </p>
  264. </div>
  265. </div>
  266.  
  267. <div
  268. id="crd"
  269. className="card-content has-text-left"
  270. >
  271. <div
  272. id="contain"
  273. className="content is-size-7"
  274. >
  275. <p id="txt">
  276. <strong>
  277. User's
  278. Details
  279. </strong>
  280. </p>
  281. <p id="txt">
  282. <strong>
  283. User:
  284. </strong>
  285. {" "}
  286.  
  287. {users
  288. ? users.firstName
  289. : "unassigned"}
  290. {" "}
  291.  
  292. {users
  293. ? users.lastName
  294. : "unassigned"}
  295. </p>
  296.  
  297. <p id="txt">
  298. <strong>
  299. Username:
  300. </strong>
  301. {" "}
  302.  
  303. {users
  304. ? users.username
  305. : "unassigned"}
  306. </p>
  307.  
  308. <p id="txt">
  309. <strong>
  310. Email:
  311. </strong>
  312. {" "}
  313.  
  314. {users
  315. ? users.email
  316. : "unassigned"}
  317. </p>
  318.  
  319. <p id="txt">
  320. <strong>
  321. Role:
  322. </strong>
  323. {" "}
  324.  
  325. {users
  326. ? users.role
  327. : "unassigned"}
  328. </p>
  329. </div>
  330. </div>
  331. <footer className="card-footer">
  332. <div className="btn-group">
  333. <Link
  334. to={
  335. "booking/update/" +
  336. booking.id
  337. }
  338. >
  339. <Button
  340. id="edit"
  341. className="button is-rounded is-small fas fa-edit is-dark is-outlined"
  342. ></Button>
  343. </Link>
  344. </div>
  345. </footer>
  346. </div>
  347. </div>
  348. );
  349. }
  350. })}
  351. </div>
  352. {/*end of all*/}
  353. </Card.Content>
  354. </Card>
  355. </Columns.Column>
  356. </Columns>
  357. </Container>
  358. );
  359. };
  360.  
  361. export default compose(
  362. graphql(getTeeTimesQuery, { name: "getTeeTimesQuery" }),
  363. graphql(getUsersQuery, { name: "getUsersQuery" }),
  364. graphql(getBookingsQuery, { name: "getBookingsQuery" }),
  365. graphql(getPendingQuery, { name: "getPendingQuery" }),
  366. graphql(deleteBookingMutation, { name: "deleteBookingMutation" })
  367. )(Booking);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement