No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 

323 líneas
14 KiB

  1. import React from 'react';
  2. import { makeStyles } from '@material-ui/core/styles';
  3. import clsx from 'clsx';
  4. import SnackbarContent from "components/Snackbar/SnackbarContent.js";
  5. import Button1 from "components/CustomButtons/Button.js";
  6. import image1 from "../../../assets/img/mail.png"
  7. import GridContainer from "components/Grid/GridContainer.js";
  8. import classNames from "classnames";
  9. import Icon from "@material-ui/core/Icon";
  10. import Grid from '@material-ui/core/Grid';
  11. import TextField from '@material-ui/core/TextField';
  12. import Button from '@material-ui/core/Button';
  13. import Dialog from '@material-ui/core/Dialog';
  14. import ListItemText from '@material-ui/core/ListItemText';
  15. import ListItem from '@material-ui/core/ListItem';
  16. import List from '@material-ui/core/List';
  17. import Divider from '@material-ui/core/Divider';
  18. import AppBar from '@material-ui/core/AppBar';
  19. import Toolbar from '@material-ui/core/Toolbar';
  20. import IconButton from '@material-ui/core/IconButton';
  21. import Typography from '@material-ui/core/Typography';
  22. import CloseIcon from '@material-ui/icons/Close';
  23. import Slide from '@material-ui/core/Slide';
  24. import Radio from '@material-ui/core/Radio';
  25. import RadioGroup from '@material-ui/core/RadioGroup';
  26. import FormControlLabel from '@material-ui/core/FormControlLabel';
  27. import FormControl from '@material-ui/core/FormControl';
  28. import Select from '@material-ui/core/Select';
  29. import MenuItem from '@material-ui/core/MenuItem';
  30. import Card from "components/Card/Card.js";
  31. import CardBody from "components/Card/CardBody.js";
  32. const useStyles = makeStyles((theme) => ({
  33. root: {
  34. width: '100%',
  35. },
  36. button: {
  37. marginTop: theme.spacing(1),
  38. marginRight: theme.spacing(1),
  39. },
  40. actionsContainer: {
  41. marginBottom: theme.spacing(2),
  42. },
  43. resetContainer: {
  44. padding: theme.spacing(3),
  45. },
  46. appBar: {
  47. position: 'relative',
  48. },
  49. title: {
  50. marginLeft: theme.spacing(2),
  51. flex: 1,
  52. },
  53. root: {
  54. '&:hover': {
  55. backgroundColor: 'transparent',
  56. },
  57. },
  58. icon: {
  59. borderRadius: '50%',
  60. width: 16,
  61. height: 16,
  62. boxShadow: 'inset 0 0 0 1px rgba(16,22,26,.2), inset 0 -1px 0 rgba(16,22,26,.1)',
  63. backgroundColor: '#f5f8fa',
  64. backgroundImage: 'linear-gradient(180deg,hsla(0,0%,100%,.8),hsla(0,0%,100%,0))',
  65. '$root.Mui-focusVisible &': {
  66. outline: '2px auto rgba(19,124,189,.6)',
  67. outlineOffset: 2,
  68. },
  69. 'input:hover ~ &': {
  70. backgroundColor: '#ebf1f5',
  71. },
  72. 'input:disabled ~ &': {
  73. boxShadow: 'none',
  74. background: 'rgba(206,217,224,.5)',
  75. },
  76. },
  77. checkedIcon: {
  78. backgroundColor: '#137cbd',
  79. backgroundImage: 'linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))',
  80. '&:before': {
  81. display: 'block',
  82. width: 16,
  83. height: 16,
  84. backgroundImage: 'radial-gradient(#fff,#fff 28%,transparent 32%)',
  85. content: '""',
  86. },
  87. 'input:hover ~ &': {
  88. backgroundColor: '#106ba3',
  89. },
  90. },
  91. }));
  92. const Transition = React.forwardRef(function Transition(props, ref) {
  93. return <Slide direction="up" ref={ref} {...props} />;
  94. });
  95. const DataCheckout = function ({ province, cities, midtransClient, backend, checkoutproduct, transactionToken, ...props }) {
  96. console.log('Token :',transactionToken);
  97. const classes = useStyles();
  98. const [open, setOpen] = React.useState(false);
  99. const handleClickOpen = () => {
  100. setOpen(true);
  101. };
  102. const handleClose = () => {
  103. setOpen(false);
  104. };
  105. const { ...rest } = props;
  106. const imageClasses = classNames(
  107. classes.imgRaised,
  108. classes.imgRoundedCircle,
  109. classes.imgFluid
  110. );
  111. const navImageClasses = classNames(classes.imgRounded, classes.imgGallery);
  112. const CheckoutAlamat = checkoutproduct.map((data) => {
  113. return (
  114. <div align="center">
  115. <Card className={classes.textCenter} align="center">
  116. <CardBody>
  117. <div style={{padding:"10px"}}>
  118. <Typography variant="h6" align="left" className={classes.title}>
  119. Alamat Pengiriman
  120. </Typography><br></br>
  121. <img src={image1} style={{width:"1100px"}}/><br></br>
  122. <h5>Yusmar</h5>
  123. <h5>087797315685</h5>
  124. <h5>Thamrin Indrapura Jl.Aipda Karel Satsuit Tubun,17 Ilir, Kec.Ilir Tim.I, Palembang, KOTA PALEMBANG - ILIR TIMUR II, SUMATERA SELATAN, ID 30114</h5>
  125. <Button1 color="info" href={"/yamaha/profile/profile"}>
  126. <Icon className={classes.icons}>cached</Icon>
  127. Ubah Alamat
  128. </Button1>
  129. </div>
  130. </CardBody>
  131. </Card>
  132. </div>
  133. );
  134. })
  135. const CheckoutProdukPesanan = checkoutproduct.map((data) => {
  136. const handleChange = (event) => {
  137. setAge(event.target.value);
  138. };
  139. const handleChanges = (event) => {
  140. setPengiriman(event.target.value);
  141. };
  142. const [age, setAge] = React.useState('');
  143. const [pengiriman, setPengiriman] = React.useState('');
  144. return (
  145. <div align="center">
  146. <Card className={classes.textCenter} align="center">
  147. <CardBody>
  148. <div style={{padding:"10px"}}>
  149. <Typography variant="h6" align="left" className={classes.title}>
  150. Pesanan Produk
  151. </Typography><br></br><hr></hr>
  152. <GridContainer>
  153. <Grid item xs>
  154. <div align="center">
  155. <h4>Produk Dipesan</h4>
  156. <img className={navImageClasses} width="200px" alt="First slide" src={`${backend}${data.img[0]["url"]}`} />
  157. </div>
  158. </Grid>
  159. <Grid item xs>
  160. <div align="center">
  161. <h4></h4><br></br><br></br><br></br><br></br>
  162. <h5>{data.name}</h5>
  163. </div>
  164. </Grid>
  165. <Grid item xs>
  166. <div align="center">
  167. <h4>Warna</h4><br></br><br></br><br></br>
  168. <FormControl className={classes.formControl}>
  169. <Select
  170. labelId="demo-simple-select-label"
  171. id="demo-simple-select"
  172. value={age}
  173. onChange={handleChange}
  174. >
  175. <MenuItem value={10}>Hitam</MenuItem>
  176. <MenuItem value={20}>Merah</MenuItem>
  177. <MenuItem value={30}>Biru</MenuItem>
  178. <MenuItem value={30}>Putih</MenuItem>
  179. </Select>
  180. </FormControl>
  181. </div>
  182. </Grid>
  183. <Grid item xs>
  184. <div align="center">
  185. <h4>Harga Satuan</h4><br></br><br></br><br></br>
  186. <h5>Rp.{data.price}</h5>
  187. </div>
  188. </Grid>
  189. <Grid item xs>
  190. <div align="center">
  191. <h4>Jumlah Unit</h4><br></br><br></br><br></br>
  192. <FormControl className={classes.formControl}>
  193. <TextField
  194. id="outlined-number"
  195. type="number"
  196. align="center"
  197. InputLabelProps={{
  198. shrink: true,
  199. }}
  200. />
  201. </FormControl>
  202. </div>
  203. </Grid>
  204. <Grid item xs>
  205. <div align="center">
  206. <h4>Sub Total Produk</h4><br></br><br></br><br></br>
  207. <h5>Total Rp.{data.price}</h5>
  208. </div>
  209. </Grid>
  210. </GridContainer>
  211. <GridContainer style={{padding:"20px"}}>
  212. <Grid item xs style={{padding:"20px"}}>
  213. <TextField
  214. id="outlined-full-width"
  215. label="Pesan"
  216. style={{ margin: 8 }}
  217. placeholder="( Opsional ) Tinggalkan Pesan Kepada Dealer"
  218. fullWidth
  219. margin="normal"
  220. InputLabelProps={{
  221. shrink: true,
  222. }}
  223. variant="outlined"
  224. />
  225. </Grid>
  226. <Grid item xs style={{padding:"20px"}}><br></br>
  227. <Button variant="outlined" color="primary" onClick={handleClickOpen}>
  228. Pilih Opsi Pengiriman
  229. </Button>
  230. <Dialog fullScreen open={open} onClose={handleClose} TransitionComponent={Transition}>
  231. <AppBar className={classes.appBar}>
  232. <Toolbar>
  233. <IconButton edge="start" color="inherit" onClick={handleClose} aria-label="close">
  234. <CloseIcon />
  235. </IconButton>
  236. <Typography variant="h6" className={classes.title}>
  237. Pilih Opsi Pengiriman
  238. </Typography>
  239. <Button autoFocus color="inherit" onClick={handleClose}>
  240. Pilih
  241. </Button>
  242. </Toolbar>
  243. </AppBar>
  244. <List>
  245. <ListItem button
  246. id="POS"
  247. value={pengiriman}
  248. onChange={handleChanges}
  249. >
  250. <ListItemText primary="POS" secondary="Akan diterima pada tanggal 2 Apr - 6 Apr" />
  251. </ListItem>
  252. <Divider />
  253. <ListItem button
  254. id="JNE"
  255. value={pengiriman}
  256. onChange={handleChanges}
  257. >
  258. <ListItemText primary="JNE" secondary="Akan diterima pada tanggal 30 Mar - 2 Apr" />
  259. </ListItem>
  260. <ListItem button
  261. id="TIKI"
  262. value={pengiriman}
  263. onChange={handleChanges}
  264. >
  265. <ListItemText primary="TIKI" secondary="Akan diterima pada tanggal 1 Apr - 4 Apr, COD (Bayar di Tempat) tidak didukung" />
  266. </ListItem>
  267. </List>
  268. </Dialog>
  269. </Grid>
  270. <Grid item xs align="right" style={{padding:"20px"}}><br></br>
  271. Total Rp. {data.price}
  272. </Grid>
  273. </GridContainer>
  274. </div>
  275. </CardBody>
  276. </Card>
  277. </div>
  278. );
  279. })
  280. return (
  281. <div style={{padding:"50px"}}>
  282. <script type="text/javascript" src="https://app.sandbox.midtrans.com/snap/snap.js" data-client-key="SB-Mid-client-srx674LjNbEybd4-"/>
  283. <div align="center" className={classes.section} id="notifications">
  284. <SnackbarContent
  285. message={
  286. <h2><b>Checkout</b></h2>
  287. }
  288. align="center"
  289. color="danger"
  290. />
  291. </div>
  292. <div>
  293. {CheckoutAlamat}
  294. </div>
  295. <div>
  296. {CheckoutProdukPesanan}
  297. </div>
  298. <div>
  299. <Card className={classes.textCenter} align="center">
  300. <CardBody>
  301. <div style={{padding:"10px"}}>
  302. <Button1 color="info" onClick={(e)=>{snap.pay(transactionToken);}} style={{width:"100%"}}>
  303. <Icon className={classes.icons}>attach_money</Icon>
  304. Bayar Pesanan
  305. </Button1>
  306. </div>
  307. </CardBody>
  308. </Card>
  309. </div>
  310. </div>
  311. );
  312. }
  313. export default DataCheckout;