Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.17 KB | None | 0 0
  1. import React, { useEffect, useState } from "react";
  2. import { Input } from "../StyledComponent/Index";
  3. import app from "firebase/app";
  4. import { withStyles } from "@material-ui/core/styles";
  5. import TextField from "@material-ui/core/TextField";
  6.  
  7. function AddVoucher(props) {
  8. const styles = theme => ({
  9. container: {
  10. display: "flex",
  11. flexWrap: "wrap"
  12. },
  13. textField: {
  14. marginLeft: theme.spacing(1),
  15. marginRight: theme.spacing(1),
  16. width: 200
  17. }
  18. });
  19.  
  20. const db = app.firestore();
  21. const [state, setState] = React.useState({
  22. code: "",
  23. diskon: 0,
  24. status: "active",
  25. user: "",
  26. user_id: "",
  27. type: "",
  28. type_diskon: "",
  29. start_date: "",
  30. end_date: ""
  31. });
  32. const [voucher, setVoucher] = useState({
  33. user_id: []
  34. });
  35. const handleChange = e => {
  36. setState({
  37. ...state,
  38. [e.target.name]: e.target.value
  39. });
  40. };
  41. const handleSubmit = e => {
  42. console.log(state);
  43. e.preventDefault();
  44. db.collection("voucher")
  45. .add({
  46. ...state
  47. })
  48. .then(function(docRef) {
  49. setState({
  50. code: "",
  51. diskon: 0,
  52. status: null
  53. });
  54. alert("success");
  55. })
  56. .catch(function(error) {
  57. console.error("Error adding document: ", error);
  58. });
  59. };
  60.  
  61. useEffect(() => {
  62. db.collection("users")
  63. .get()
  64. .then(function(querySnapshot) {
  65. let data = [];
  66. querySnapshot.forEach(function(doc) {
  67. // doc.data() is never undefined for query doc snapshots
  68. let obj = {
  69. user_id: doc.id,
  70. name: doc.data().name
  71. };
  72. data.push(obj);
  73. console.log(doc.id, " => ", doc.data());
  74. });
  75. setVoucher({
  76. user_id: data
  77. });
  78. });
  79. }, []);
  80.  
  81. const { classes } = props;
  82. return (
  83. console.log(voucher.user_id),
  84. (
  85. <div>
  86. <form
  87. onChange={e => {
  88. handleChange(e);
  89. console.log(state);
  90. }}
  91. >
  92. <label>Kode Voucher</label>
  93. <Input
  94. name="code"
  95. type="text"
  96. placeholder="masukan Kode Voucher"
  97. value={state.code}
  98. />
  99. <label>Users</label>
  100. <Input name="user" type="text" placeholder="masukan nama User" />
  101. <select
  102. onChange={e => setState({ ...state, user_id: e.target.value })}
  103. name="user_id"
  104. value={state.user_id}
  105. id="user_id"
  106. >
  107. <option value="">nama user</option>
  108. {voucher &&
  109. voucher.user_id.map(user => {
  110. return <option value={user.user_id}>{user.name}</option>;
  111. })}
  112. </select>
  113. <ul style={{ fontSize: "smaller" }}>
  114. <li>
  115. Untuk nama user itu adalah nama yang ingin kita kasih kupon misal
  116. "praditya"
  117. </li>
  118. <li>
  119. Untuk select adalah id yang sama user login jika berbeda kupon
  120. tidak muncul
  121. </li>
  122. </ul>
  123. <Input
  124. name="user"
  125. type="text"
  126. placeholder="masukan type all/private"
  127. />
  128. <select
  129. name="type"
  130. value={state.type}
  131. onChange={e => setState({ ...state, type: e.target.value })}
  132. >
  133. <option value="">pilih type user</option>
  134. <option value="all">All</option>
  135. <option value="private">Private</option>
  136. </select>
  137. <ul style={{ fontSize: "smaller" }}>
  138. <li>
  139. Untuk type user adalah voucher untuk memilih yang bersifat All
  140. atau Private
  141. </li>
  142. <li>
  143. jika memilih All tidak perlu memberikan user id, tapi kalo Private
  144. wajib memberikan
  145. </li>
  146. </ul>
  147. <label>Description</label>
  148. <Input
  149. name="description"
  150. type="text"
  151. placeholder="masukan description"
  152. />
  153. <label>Diskon</label>
  154. <Input
  155. name="diskon"
  156. type="number"
  157. placeholder="masukan nominal voucher"
  158. value={state.diskon}
  159. onChange={e => {
  160. setState({
  161. ...state,
  162. diskon: parseInt(e.target.value)
  163. });
  164. }}
  165. />
  166. <form
  167. style={{ marginTop: "15px" }}
  168. className={classes.container}
  169. noValidate
  170. >
  171. <TextField
  172. name="start_date"
  173. label="StartDate"
  174. type="date"
  175. className={classes.textField}
  176. InputLabelProps={{
  177. shrink: true
  178. }}
  179. onChange={e => setState({ ...state, start_date: e.target.value })}
  180. />
  181. </form>
  182. <form className={classes.container} noValidate>
  183. <TextField
  184. name="end_date"
  185. label="EndDate"
  186. type="date"
  187. className={classes.textField}
  188. InputLabelProps={{
  189. shrink: true
  190. }}
  191. onChange={e => {
  192. console.log(e.target.value);
  193. setState({ ...state, end_date: e.target.value });
  194. }}
  195. />
  196. </form>
  197. <select
  198. style={{ marginTop: "20px" }}
  199. onChange={e =>
  200. setState({
  201. ...state,
  202. type_diskon: e.target.value
  203. })
  204. }
  205. name="type_diskon"
  206. id="type_diskon"
  207. >
  208. {" "}
  209. <option value="">Pilih Type Diskon</option>
  210. <option value="presentase">Presentase</option>
  211. <option value="rupiah">Rupiah</option>
  212. </select>{" "}
  213. {""}
  214. <button type="submit" onClick={e => handleSubmit(e)}>
  215. Submit Voucher
  216. </button>
  217. </form>
  218. </div>
  219. )
  220. );
  221. }
  222.  
  223. export default withStyles()(AddVoucher);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement