@@ -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 | |||
}; | |||
} | |||
} |