| @@ -24,25 +24,28 @@ async function GetDealers(filter, token="") { | |||
| return res; | |||
| } | |||
| async function GetHomeDealer(token="") { | |||
| async function GetHomeDealer(token="", start = 0) { | |||
| var res = await apollo.query( | |||
| ` | |||
| query{ | |||
| dealers{ | |||
| query($start: Int!) { | |||
| dealers(limit:6,start:$start){ | |||
| id | |||
| name | |||
| kota_dealer | |||
| address | |||
| telp | |||
| location | |||
| name | |||
| kota_dealer | |||
| address | |||
| telp | |||
| location | |||
| img{ | |||
| url | |||
| } | |||
| } | |||
| } | |||
| `, | |||
| token | |||
| token, | |||
| { | |||
| start: start, | |||
| } | |||
| ); | |||
| return res; | |||
| } | |||
| @@ -50,4 +53,4 @@ async function GetHomeDealer(token="") { | |||
| module.exports = { | |||
| GetDealers: GetDealers, | |||
| GetHomeDealer: GetHomeDealer, | |||
| }; | |||
| }; | |||
| @@ -11,7 +11,8 @@ async function GetDetailProduct(id, token = "") { | |||
| price | |||
| price1 | |||
| price2 | |||
| product_otrs{ | |||
| product_otrs { | |||
| id | |||
| name | |||
| price | |||
| } | |||
| @@ -75,6 +76,26 @@ async function GetDetailProduct(id, token = "") { | |||
| return res; | |||
| } | |||
| async function GetProductImgColor(id, token = "") { | |||
| var res = await apollo.query( | |||
| ` | |||
| query($input: ID!) { | |||
| productImageColors(where:{id:$input}) { | |||
| id | |||
| name | |||
| img{ | |||
| url | |||
| } | |||
| } | |||
| } | |||
| `, | |||
| token, { | |||
| "input": id | |||
| } | |||
| ); | |||
| return res; | |||
| } | |||
| async function GetProduct(token = "") { | |||
| var res = await apollo.query( | |||
| ` | |||
| @@ -311,6 +332,7 @@ async function GetProductHino(token = "") { | |||
| module.exports = { | |||
| GetProductImgColor: GetProductImgColor, | |||
| GetProduct: GetProduct, | |||
| //yamaha | |||
| @@ -154,15 +154,6 @@ export default function HeaderLinks({ username, ...props }) { | |||
| </Button> | |||
| </ListItem> | |||
| <ListItem className={classes.listItem} style={{ marginTop: "10px" }}> | |||
| <Button | |||
| href="/yamaha/order/order" | |||
| color="transparent" | |||
| className={classes.navLink} | |||
| > | |||
| <Chart className={classes.icons} /> | |||
| </Button> | |||
| </ListItem> | |||
| <ListItem className={classes.listItem} style={{ marginTop: "10px" }}> | |||
| {!username || username == "" ? ( | |||
| <Button | |||
| href="/yamaha/login" | |||
| @@ -29,7 +29,7 @@ const DataProduct = function ({ backend, maxi, matic, naked, sport, offroad, mop | |||
| <div style={{padding: "20px", marginTop:"-40px"}}> | |||
| <Card className={classes.textCenter} align="center" style={{width:"300px"}}> | |||
| <CardBody> | |||
| <div style={{padding:"10px"}}> | |||
| <div> | |||
| <img style={{ width: "200px", display: "block" }} src={`${backend}${data.img[0]["url"]}`} className={navImageClasses} | |||
| /> | |||
| <div align="center"> | |||
| @@ -24,7 +24,6 @@ import Carousel from "react-slick"; | |||
| const useStyles = makeStyles(styles); | |||
| const DataProduct = function ({ backend, detailproduct, ...props }) { | |||
| console.log(detailproduct); | |||
| const classes = useStyles(); | |||
| const { ...rest } = props; | |||
| const imageClasses = classNames( | |||
| @@ -35,7 +34,7 @@ const DataProduct = function ({ backend, detailproduct, ...props }) { | |||
| const settings = { | |||
| dots: true, | |||
| infinite: true, | |||
| speed: 500, | |||
| speed: 1000, | |||
| slidesToShow: 1, | |||
| slidesToScroll: 1, | |||
| autoplay: true, | |||
| @@ -48,6 +47,12 @@ const DataProduct = function ({ backend, detailproduct, ...props }) { | |||
| const [value2, setValue2] = React.useState(2); | |||
| const [value1, setValue1] = React.useState(1); | |||
| const navImageClasses = classNames(classes.imgRounded, classes.imgGallery); | |||
| const ProdcutImgColor = detailproduct.map((data) => { | |||
| return ( | |||
| <div> | |||
| </div> | |||
| ); | |||
| }) | |||
| const Productdetails = detailproduct.map((data) => { | |||
| return ( | |||
| <div> | |||
| @@ -64,6 +69,8 @@ const DataProduct = function ({ backend, detailproduct, ...props }) { | |||
| <img src={`${backend}${data.img[1]["url"]}`}/> | |||
| <img src={`${backend}${data.img[2]["url"]}`}/> | |||
| <img src={`${backend}${data.img[3]["url"]}`}/> | |||
| <img src={`${backend}${data.img[4]["url"]}`}/> | |||
| <img src={`${backend}${data.img[5]["url"]}`}/> | |||
| </Carousel> | |||
| </div> | |||
| <div align="center"> | |||
| @@ -137,7 +144,7 @@ const DataProduct = function ({ backend, detailproduct, ...props }) { | |||
| <Rating name="read-only" value={value} readOnly/> | |||
| <div style={{marginTop:"-20px"}}> | |||
| <h3><b> | |||
| <NumberFormat value={data.price1} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /> s/d <NumberFormat value={data.price2} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /> | |||
| <NumberFormat value={data.price} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /> s/d <NumberFormat value={data.price2} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /> | |||
| </b></h3> | |||
| </div><br/> | |||
| <CustomTabs | |||
| @@ -191,8 +198,6 @@ const DataProduct = function ({ backend, detailproduct, ...props }) { | |||
| /> | |||
| </Grid> | |||
| </GridContainer> | |||
| <GridContainer justify="center"> | |||
| <GridItem> | |||
| <NavPills | |||
| color="primary" | |||
| align="center" | |||
| @@ -424,8 +429,6 @@ const DataProduct = function ({ backend, detailproduct, ...props }) { | |||
| }, | |||
| ]} | |||
| /> | |||
| </GridItem> | |||
| </GridContainer> | |||
| </div> | |||
| ); | |||
| }) | |||
| @@ -0,0 +1,41 @@ | |||
| import auth from "../../../api/auth/auth"; | |||
| import Cookies from "cookies"; | |||
| export default async function handler(req, res) { | |||
| if (req.method == "POST") { | |||
| const cookies = new Cookies(req, res); | |||
| var email = req.body.email; | |||
| var pass = req.body.pass; | |||
| var partner = req.body.partner; | |||
| var resp = await auth.login(partner, email, pass); | |||
| var login = resp["res"]; | |||
| // console.log(login["DATA"]); | |||
| if (login["STATUS"] == 0) { | |||
| return res | |||
| .status(400) | |||
| .send(login["DATA"] + ". Check user and password again."); | |||
| } | |||
| var userObj = resp["cookies"]["user"]; | |||
| await cookies.set("myToken", resp["cookies"]["token"], { | |||
| httpOnly: true, // true by default | |||
| }); | |||
| await cookies.set("user", JSON.stringify(userObj), { | |||
| httpOnly: true, // true by default | |||
| }); | |||
| let sessionId = userObj["partners_login_states"].filter( | |||
| (i) => | |||
| i.business_partner && | |||
| i.business_partner.name.toUpperCase() == partner.toUpperCase() | |||
| ); | |||
| if (sessionId.length == 0) return res.status(400).send("Login Failed"); | |||
| return res.status(200).send("Success Login"); | |||
| // res.status(200).json(login); | |||
| // res.writeHead(200, { | |||
| // Location: "../home", | |||
| // //add other headers here... | |||
| // }); | |||
| // res.end(); | |||
| } else { | |||
| return res.status(400).send("NOT FOUND"); | |||
| } | |||
| } | |||
| @@ -0,0 +1,36 @@ | |||
| import auth from "../../../api/auth/auth"; | |||
| import Cookies from "cookies"; | |||
| export default async function handler(req, res) { | |||
| if (req.method == "POST") { | |||
| const cookies = new Cookies(req, res); | |||
| const partner = req.body.p; | |||
| var user = await cookies.get("user"); | |||
| var token = await cookies.get("myToken"); | |||
| var userObj = user ? JSON.parse(user) : null; | |||
| let sessionId = userObj["partners_login_states"].filter( | |||
| (i) => | |||
| i.business_partner && | |||
| i.business_partner.name.toUpperCase() == partner.toUpperCase() | |||
| ); | |||
| sessionId.forEach(async (i) => { | |||
| var resp = await auth.logout(i.id, token); | |||
| if (resp["STATUS"] == 0) { | |||
| return res.status(400).send(resp["DATA"]); | |||
| } | |||
| }); | |||
| userObj["partners_login_states"] = userObj[ | |||
| "partners_login_states" | |||
| ].filter( | |||
| (i) => | |||
| i.business_partner && | |||
| i.business_partner.name.toUpperCase() != partner.toUpperCase() | |||
| ); | |||
| await cookies.set("user", JSON.stringify(userObj), { | |||
| httpOnly: true, // true by default | |||
| }); | |||
| return res.status(200).send("Success Logout"); | |||
| } else { | |||
| return res.status(400).send("NOT FOUND"); | |||
| } | |||
| } | |||
| @@ -9,7 +9,7 @@ import styles from "assets/jss/nextjs-material-kit/pages/components.js"; | |||
| import Footer from "components/Footer/Footer.js"; | |||
| import Getcarousels from "api/home/carousel.js"; | |||
| import Getdealer from "../../api/dealer/dealer.js"; | |||
| import Getdealer from "api/dealer/dealer.js"; | |||
| import DataSnackbarContent from "pages-sections/yamaha/snackbar.js"; | |||
| import DataCarousel from "pages-sections/yamaha/home/carousel.js"; | |||
| import DataService from "pages-sections/yamaha/home/service.js"; | |||
| @@ -13,7 +13,7 @@ import Cookies from "cookies"; | |||
| const useStyles = makeStyles(styles); | |||
| const ProductDetails = function ({ backend, detailproduct, user, ...props }) { | |||
| const ProductDetails = function ({ backend, detailproduct, user, color, ...props }) { | |||
| const classes = useStyles(); | |||
| const { ...rest } = props; | |||
| return ( | |||
| @@ -30,7 +30,7 @@ const ProductDetails = function ({ backend, detailproduct, user, ...props }) { | |||
| /> | |||
| <Parallax image={require("assets/img/Promotion_2-1.jpg")} width="200px"/> | |||
| <div className={classNames(classes.main, classes.mainRaised)}> | |||
| <ProductDetail detailproduct={detailproduct} backend={backend}/> | |||
| <ProductDetail detailproduct={detailproduct} backend={backend} color={color}/> | |||
| </div> | |||
| <Footer /> | |||
| </div> | |||
| @@ -42,6 +42,8 @@ export default ProductDetails; | |||
| export async function getServerSideProps(context) { | |||
| var {query} = context; | |||
| var detailproduct = []; | |||
| var color = []; | |||
| const backend = process.env.BACKEND_SERVER_URI; | |||
| var { req, resp } = context; | |||
| @@ -59,12 +61,17 @@ export async function getServerSideProps(context) { | |||
| if (sessionId.length != 0) user = userObj["username"]; | |||
| } | |||
| var res = await GetDetailproduct.GetProductImgColor(query.s||0); | |||
| if (res["STATUS"] === 1) { | |||
| color = res["DATA"]["productImageColors"]; | |||
| } | |||
| var res = await GetDetailproduct.GetDetailProduct(query.s||0); | |||
| if (res["STATUS"] === 1) { | |||
| detailproduct = res["DATA"]["products"]; | |||
| } | |||
| return { | |||
| props: { detailproduct, backend, user }, // will be passed to the page component as props | |||
| props: { detailproduct, backend, color, user }, // will be passed to the page component as props | |||
| }; | |||
| } | |||
| } | |||