Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

321 righe
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. function StyledRadio(props) {
  93. const classes = useStyles();
  94. return (
  95. <Radio
  96. className={classes.root}
  97. disableRipple
  98. color="default"
  99. checkedIcon={<span className={clsx(classes.icon, classes.checkedIcon)} />}
  100. icon={<span className={classes.icon} />}
  101. {...props}
  102. />
  103. );
  104. }
  105. const Transition = React.forwardRef(function Transition(props, ref) {
  106. return <Slide direction="up" ref={ref} {...props} />;
  107. });
  108. const DataCheckout = function ({ midtransClient, backend, checkoutproduct, transactionToken, ...props }) {
  109. console.log('Token :',transactionToken);
  110. const classes = useStyles();
  111. const [open, setOpen] = React.useState(false);
  112. const handleClickOpen = () => {
  113. setOpen(true);
  114. };
  115. const handleClose = () => {
  116. setOpen(false);
  117. };
  118. const { ...rest } = props;
  119. const imageClasses = classNames(
  120. classes.imgRaised,
  121. classes.imgRoundedCircle,
  122. classes.imgFluid
  123. );
  124. const navImageClasses = classNames(classes.imgRounded, classes.imgGallery);
  125. const CheckoutAlamat = checkoutproduct.map((data) => {
  126. return (
  127. <div align="center">
  128. <Card className={classes.textCenter} align="center">
  129. <CardBody>
  130. <div style={{padding:"10px"}}>
  131. <Typography variant="h6" align="left" className={classes.title}>
  132. Alamat Pengiriman
  133. </Typography><br></br>
  134. <img src={image1} style={{width:"1100px"}}/><br></br>
  135. <h5>Yusmar</h5>
  136. <h5>087797315685</h5>
  137. <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>
  138. <Button1 color="info" href={"/yamaha/profile/profile"}>
  139. <Icon className={classes.icons}>cached</Icon>
  140. Ubah Alamat
  141. </Button1>
  142. </div>
  143. </CardBody>
  144. </Card>
  145. </div>
  146. );
  147. })
  148. const CheckoutProdukPesanan = checkoutproduct.map((data) => {
  149. const handleChange = (event) => {
  150. setAge(event.target.value);
  151. };
  152. const [age, setAge] = React.useState('');
  153. return (
  154. <div align="center">
  155. <Card className={classes.textCenter} align="center">
  156. <CardBody>
  157. <div style={{padding:"10px"}}>
  158. <Typography variant="h6" align="left" className={classes.title}>
  159. Pesanan Produk
  160. </Typography><br></br><hr></hr>
  161. <GridContainer>
  162. <Grid item xs>
  163. <div align="center">
  164. <h4>Produk Dipesan</h4>
  165. <img className={navImageClasses} width="200px" alt="First slide" src={`${backend}${data.img[0]["url"]}`} />
  166. </div>
  167. </Grid>
  168. <Grid item xs>
  169. <div align="center">
  170. <h4></h4><br></br><br></br><br></br><br></br>
  171. <h5>{data.name}</h5>
  172. </div>
  173. </Grid>
  174. <Grid item xs>
  175. <div align="center">
  176. <h4>Warna</h4><br></br><br></br><br></br>
  177. <FormControl className={classes.formControl}>
  178. <Select
  179. labelId="demo-simple-select-label"
  180. id="demo-simple-select"
  181. value={age}
  182. onChange={handleChange}
  183. >
  184. <MenuItem value={10}>Hitam</MenuItem>
  185. <MenuItem value={20}>Merah</MenuItem>
  186. <MenuItem value={30}>Biru</MenuItem>
  187. <MenuItem value={30}>Putih</MenuItem>
  188. </Select>
  189. </FormControl>
  190. </div>
  191. </Grid>
  192. <Grid item xs>
  193. <div align="center">
  194. <h4>Harga Satuan</h4><br></br><br></br><br></br>
  195. <h5>Rp.{data.price}</h5>
  196. </div>
  197. </Grid>
  198. <Grid item xs>
  199. <div align="center">
  200. <h4>Jumlah Unit</h4><br></br><br></br><br></br>
  201. <FormControl className={classes.formControl}>
  202. <TextField
  203. id="outlined-number"
  204. type="number"
  205. align="center"
  206. InputLabelProps={{
  207. shrink: true,
  208. }}
  209. />
  210. </FormControl>
  211. </div>
  212. </Grid>
  213. <Grid item xs>
  214. <div align="center">
  215. <h4>Sub Total Produk</h4><br></br><br></br><br></br>
  216. <h5>Total Rp.{data.price}</h5>
  217. </div>
  218. </Grid>
  219. </GridContainer>
  220. <GridContainer style={{padding:"20px"}}>
  221. <Grid item xs style={{padding:"20px"}}>
  222. <TextField
  223. id="outlined-full-width"
  224. label="Pesan"
  225. style={{ margin: 8 }}
  226. placeholder="( Opsional ) Tinggalkan Pesan Kepada Dealer"
  227. fullWidth
  228. margin="normal"
  229. InputLabelProps={{
  230. shrink: true,
  231. }}
  232. variant="outlined"
  233. />
  234. </Grid>
  235. <Grid item xs style={{padding:"20px"}}><br></br>
  236. <Button variant="outlined" color="primary" onClick={handleClickOpen}>
  237. Pilih Opsi Pengiriman
  238. </Button>
  239. <Dialog fullScreen open={open} onClose={handleClose} TransitionComponent={Transition}>
  240. <AppBar className={classes.appBar}>
  241. <Toolbar>
  242. <IconButton edge="start" color="inherit" onClick={handleClose} aria-label="close">
  243. <CloseIcon />
  244. </IconButton>
  245. <Typography variant="h6" className={classes.title}>
  246. Pilih Opsi Pengiriman
  247. </Typography>
  248. <Button autoFocus color="inherit" onClick={handleClose}>
  249. Pilih
  250. </Button>
  251. </Toolbar>
  252. </AppBar>
  253. <List>
  254. <ListItem button>
  255. <ListItemText primary="Reguler" secondary="Akan diterima pada tanggal 2 Apr - 6 Apr" />
  256. </ListItem>
  257. <Divider />
  258. <ListItem button>
  259. <ListItemText primary="Kargo" secondary="Akan diterima pada tanggal 30 Mar - 2 Apr" />
  260. </ListItem>
  261. <ListItem button>
  262. <ListItemText primary="Hemat" secondary="Akan diterima pada tanggal 1 Apr - 4 Apr, COD (Bayar di Tempat) tidak didukung" />
  263. </ListItem>
  264. </List>
  265. </Dialog>
  266. </Grid>
  267. <Grid item xs align="right" style={{padding:"20px"}}><br></br>
  268. Total Rp. {data.price}
  269. </Grid>
  270. </GridContainer>
  271. </div>
  272. </CardBody>
  273. </Card>
  274. </div>
  275. );
  276. })
  277. return (
  278. <div style={{padding:"50px"}}>
  279. <script type="text/javascript" src="https://app.sandbox.midtrans.com/snap/snap.js" data-client-key="SB-Mid-client-srx674LjNbEybd4-"/>
  280. <div align="center" className={classes.section} id="notifications">
  281. <SnackbarContent
  282. message={
  283. <h2><b>Checkout</b></h2>
  284. }
  285. align="center"
  286. color="danger"
  287. />
  288. </div>
  289. <div>
  290. {CheckoutAlamat}
  291. </div>
  292. <div>
  293. {CheckoutProdukPesanan}
  294. </div>
  295. <div>
  296. <Card className={classes.textCenter} align="center">
  297. <CardBody>
  298. <div style={{padding:"10px"}}>
  299. <Button1 color="info" onClick={(e)=>{snap.pay(transactionToken);}} style={{width:"100%"}}>
  300. <Icon className={classes.icons}>attach_money</Icon>
  301. Bayar Pesanan
  302. </Button1>
  303. </div>
  304. </CardBody>
  305. </Card>
  306. </div>
  307. </div>
  308. );
  309. }
  310. export default DataCheckout;