diff options
author | HombreLaser <sebastian-440@live.com> | 2023-05-25 19:11:31 -0600 |
---|---|---|
committer | HombreLaser <sebastian-440@live.com> | 2023-05-25 19:11:31 -0600 |
commit | e8fa9bd7bba125a339f11876eb5ea99d0cd301b6 (patch) | |
tree | 5d8211221680a3c214b3a16b5d179722a8add085 /src/routes/account | |
parent | da2631822f902094e691143302d6fc6b68e1cf56 (diff) |
Añade historial de órdenes
Diffstat (limited to 'src/routes/account')
-rw-r--r-- | src/routes/account/cart.tsx | 72 | ||||
-rw-r--r-- | src/routes/account/orders.tsx | 14 |
2 files changed, 76 insertions, 10 deletions
diff --git a/src/routes/account/cart.tsx b/src/routes/account/cart.tsx index a98cf20..cc81756 100644 --- a/src/routes/account/cart.tsx +++ b/src/routes/account/cart.tsx @@ -1,25 +1,60 @@ -import { useLoaderData } from "react-router-dom"; -import { cartLoader } from "../../clients/loaders"; +import { Form, useLoaderData } from "react-router-dom"; import ProductCart from "../../components/product_cart"; import { Product } from "../../models/product"; import MainContentLayout from "../../components/main_content_layout"; import { CartXFill } from "react-bootstrap-icons"; +import { Card } from "../../models/card"; +import "../../components/stylesheets/shared.css" -export default function Cart() { - let products; - const data = useLoaderData() as Array<Product>; +function getOrderForm(cards: Array<Card>) { + if(cards.length > 0) { + const options = cards.map(card => + <option value={card.id}>{card.number}</option> + ); - if(data.length > 0) { - products = data.map(product => + return( + <div className="mx-4 my-1"> + <div className="border-b-2 w-2/6 border-slate-500 my-4"> + <h1 className="text-3xl "> + Completar pago + </h1> + </div> + <Form method="post" action="/account/orders"> + <div className="my-2 mb-6"> + <select name="card_id" id="card-select"> + {options} + </select> + </div> + <div className="my-2 mb-6"> + <button type="submit" className="text-white button focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 mr-2 mb-2 focus:outline-none dark:focus:ring-blue-800"> + Enviar + </button> + </div> + </Form> + </div> + ); + } + else { + <div className="mx-4 my-1"> + <span className="text-red-600 italic text-lg"> + No tiene ningún método de pago configurado. + </span> + </div> + } +} + +function getProducts(product_data: Array<Product>) { + if(product_data.length > 0) { + return (product_data.map(product => <ul> <li key={product.id}> <ProductCart product={product}/> </li> </ul> - ); + )); } else { - products = ( + return ( <div> <div className="flex justify-center my-4 w-4/6"> <CartXFill color="rgb(55 65 81)" size={256}/> @@ -30,11 +65,28 @@ export default function Cart() { </div> ); } +} + +export default function Cart() { + const product_data = useLoaderData()[0] as Array<Product>; + const cards_data = useLoaderData()[1] as Array<Card>; + let order_form; + const products = getProducts(product_data); + + if(product_data.length > 0) + order_form = getOrderForm(cards_data); + else + order_form = null; return( <> <MainContentLayout> - {products} + <div className="grid grid-cols-2"> + <div> + {products} + </div> + {order_form} + </div> </MainContentLayout> </> ); diff --git a/src/routes/account/orders.tsx b/src/routes/account/orders.tsx new file mode 100644 index 0000000..1e655d1 --- /dev/null +++ b/src/routes/account/orders.tsx @@ -0,0 +1,14 @@ +import { useLoaderData } from "react-router-dom"; +import MainContentLayout from "../../components/main_content_layout"; +import OrderTable from "../../components/order_table"; + + +export default function Orders() { + const orders = useLoaderData(); + + return( + <MainContentLayout> + <OrderTable orders={orders}/> + </MainContentLayout> + ); +}
\ No newline at end of file |