import React from 'react' import Router from 'next/router' import Link from 'next/link' import axios from 'axios' import Head from 'next/head' import useCart, {useSetCart} from '~/hooks/useCart' import {FormController, Input, Button} from '~/components/form' import Table from '~/components/table' export default function Cart(){ const cart = useCart() const setCart = useSetCart() const numItems = (cart?.items) ? cart.items.length : 0 const allInStock = !cart?.items?.some(item => !item.item.number_in_stock || item.item.number_in_stock < 1) const allHaveEnough = !cart?.items?.some(item => item.count > item.item.number_in_stock) const handleRemove = id => async ev => { if(ev) ev.preventDefault() const {data} = await axios.post(`/api/cart/remove/${id}`) setCart(data) } // We can't let the form controller do this as it shouldn't actually pass a body const handleCreateTransaction = async () => { await axios.put(`/api/orders`) Router.push('/store/checkout') } return ( <> Cart | Society of Socks

Cart

{ numItems > 0 ? ( <> {row.item.name} {(!row.item.number_in_stock || row.item.number_in_stock < 1) && Out of stock} {(row.item.number_in_stock > 0 && row.count > row.item.number_in_stock) && Not enough in stock} )}, {name: 'Quantity in Cart', extractor: row => row.count}, {name: 'Price Each', extractor: row => '$' + (row.item.price_cents / 100).toFixed(2)}, {name: 'Total Price', extractor: row => '$' + (row.count * row.item.price_cents / 100).toFixed(2)}, {name: '', extractor: row => } ]} rows={cart?.items?.map(row=>({ ...row, id: row.item.uuid }))} foot={[ 'Total:', cart?.items.map(r=>r.count).reduce((a,b) => (a+b), 0) || 0, '', '$' + ((cart?.items.map(r=>r.count * r.item.price_cents).reduce((a,b) => (a+b), 0) || 0) / 100).toFixed(2), '' ]} /> // Empty cart table :
} {(()=>{ if(!(cart?.items?.length)) return if(!allInStock) return if(!allHaveEnough) return return })()} ) }