From 5be138ae638afb91bcf485dead5fa7a993de2d5f Mon Sep 17 00:00:00 2001 From: Aji Kamaludin Date: Wed, 18 Aug 2021 21:53:42 +0700 Subject: [PATCH] refact api merge with Api --- src/api/index.js | 35 --------- src/views/categories/Api.js | 13 ++++ src/views/categories/List.js | 3 +- src/views/categories/Modal.js | 2 +- src/views/products/Api.js | 13 ++++ src/views/products/List.js | 3 +- src/views/sales/Api.js | 13 ++++ src/views/sales/List.js | 137 +++++++++++++++++++++++++++++++++- src/views/users/Api.js | 13 ++++ src/views/users/List.js | 3 +- 10 files changed, 192 insertions(+), 43 deletions(-) delete mode 100644 src/api/index.js create mode 100644 src/views/sales/Api.js diff --git a/src/api/index.js b/src/api/index.js deleted file mode 100644 index bff2f47..0000000 --- a/src/api/index.js +++ /dev/null @@ -1,35 +0,0 @@ -import useSWR from "swr" -import qs from "query-string" - -export function useUsers(user, params) { - const { data, error } = useSWR([ - `/users?${qs.stringify(params)}`, user.accessToken - ]) - - return [ - data, - error, - ] -} - -export function useProducts(user, params) { - const { data, error } = useSWR([ - `/products?${qs.stringify(params)}`, user.accessToken - ]) - - return [ - data, - error, - ] -} - -export function useCategories(user, params) { - const { data, error } = useSWR([ - `/categories?${qs.stringify(params)}`, user.accessToken - ]) - - return [ - data, - error - ] -} diff --git a/src/views/categories/Api.js b/src/views/categories/Api.js index 409d146..e5d6163 100644 --- a/src/views/categories/Api.js +++ b/src/views/categories/Api.js @@ -1,4 +1,17 @@ import axios from "axios"; +import useSWR from "swr" +import qs from "query-string" + +export function useCategories(user, params) { + const { data, error } = useSWR([ + `/categories?${qs.stringify(params)}`, user.accessToken + ]) + + return [ + data, + error + ] +} export function createCategory(payload, token) { return axios({ diff --git a/src/views/categories/List.js b/src/views/categories/List.js index a6f72de..ab19563 100644 --- a/src/views/categories/List.js +++ b/src/views/categories/List.js @@ -29,8 +29,7 @@ import { SearchInput, useModalState, } from "../../components/Common" -import { useCategories } from "../../api" -import { deleteCategory } from "./Api" +import { useCategories, deleteCategory } from "./Api" import { useAuth } from "../../context/AppContext" export default function List() { diff --git a/src/views/categories/Modal.js b/src/views/categories/Modal.js index 9a18f83..2eab918 100644 --- a/src/views/categories/Modal.js +++ b/src/views/categories/Modal.js @@ -15,7 +15,7 @@ import { } from "@chakra-ui/react" import { Loading, Pagination, SearchInput, useDebounce } from "../../components/Common" import { useAuth } from "../../context/AppContext" -import { useCategories } from "../../api" +import { useCategories } from "./Api" export default function ModalCom(props) { const { isOpen, toggle, onClose } = props diff --git a/src/views/products/Api.js b/src/views/products/Api.js index 46fa9d8..81f8e80 100644 --- a/src/views/products/Api.js +++ b/src/views/products/Api.js @@ -1,4 +1,17 @@ import axios from "axios"; +import useSWR from "swr" +import qs from "query-string" + +export function useProducts(user, params) { + const { data, error } = useSWR([ + `/products?${qs.stringify(params)}`, user.accessToken + ]) + + return [ + data, + error, + ] +} export function createProduct(payload, token) { return axios({ diff --git a/src/views/products/List.js b/src/views/products/List.js index 09b87c9..deadf22 100644 --- a/src/views/products/List.js +++ b/src/views/products/List.js @@ -16,7 +16,6 @@ import { useToast, Grid, } from "@chakra-ui/react" -import { useProducts } from "../../api" import { mutate } from "swr" import qs from "query-string" import { @@ -30,7 +29,7 @@ import { useModalState, FormInputSelection } from "../../components/Common" -import { deleteProduct } from "./Api" +import { useProducts, deleteProduct } from "./Api" import { formatIDR } from "../../utils" import { Link } from "react-router-dom" import { useAuth } from "../../context/AppContext" diff --git a/src/views/sales/Api.js b/src/views/sales/Api.js new file mode 100644 index 0000000..ca419df --- /dev/null +++ b/src/views/sales/Api.js @@ -0,0 +1,13 @@ +import useSWR from "swr" +import qs from "query-string" + +export function useSales(user, params) { + const { data, error } = useSWR([ + `/sales?${qs.stringify(params)}`, user.accessToken + ]) + + return [ + data, + error + ] +} \ No newline at end of file diff --git a/src/views/sales/List.js b/src/views/sales/List.js index e94abf3..9223f7a 100644 --- a/src/views/sales/List.js +++ b/src/views/sales/List.js @@ -1,5 +1,140 @@ +import { useState } from "react" +import { + Button, + Alert, + AlertIcon, + Table, + Thead, + Tr, + Td, + Th, + Tbody, + Menu, + MenuItem, + MenuButton, + MenuList, + useToast, +} from "@chakra-ui/react" +import { Link } from "react-router-dom" +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" +import { mutate } from 'swr' +import qs from "query-string" +import { + Breadcrumb, + Card, + Loading, + Pagination, + useDebounce, + AlertDialog, + SearchInput, + useModalState, +} from "../../components/Common" +import { useUsers, deleteUser } from "./Api" +import { useAuth } from "../../context/AppContext" + export default function List() { + const { user } = useAuth() + const toast = useToast() + + const [page, setPage] = useState(1) + const [search, setSearch] = useState('') + const q = useDebounce(search, 600) + const params = { page, q } + const [data, error] = useUsers(user, params) + + const [isOpen, toggle, selected] = useModalState(false) + + const handleDelete = async () => { + await deleteUser(selected.id, user.accessToken) + .then((res) => { + toast({ + title: res.status, + description: "item dihapus", + status: "success", + position: "top-right", + duration: 4000, + isClosable: true + }) + mutate([`/users?${qs.stringify(params)}`, user.accessToken]) + }) + .catch((err) => { + toast({ + title: err.status, + description: err.message, + status: "error", + position: "top-right", + duration: 4000, + isClosable: true + }) + }) + } + + if(error) { + return ( + + + {error.message} + + ) + } + return ( -
Penjualan
+ <> + + + + + {data ? ( + <> + + + + + + + + + + + {data.users.map((auser) => auser.id !== user.id && ( + + + + + + + ))} + +
namaemailrole
{auser.name}{auser.email}{auser.role} + + + + + + ubah + { + toggle(auser) + }} + > + hapus + + + +
+ + + ) : ( + + )} +
+ toggle()} + /> + ) } \ No newline at end of file diff --git a/src/views/users/Api.js b/src/views/users/Api.js index 4dd808e..4810cf0 100644 --- a/src/views/users/Api.js +++ b/src/views/users/Api.js @@ -1,4 +1,17 @@ import axios from "axios"; +import useSWR from "swr" +import qs from "query-string" + +export function useUsers(user, params) { + const { data, error } = useSWR([ + `/users?${qs.stringify(params)}`, user.accessToken + ]) + + return [ + data, + error, + ] +} export function createUser(payload, token) { return axios({ diff --git a/src/views/users/List.js b/src/views/users/List.js index 4ed9cd0..9223f7a 100644 --- a/src/views/users/List.js +++ b/src/views/users/List.js @@ -29,8 +29,7 @@ import { SearchInput, useModalState, } from "../../components/Common" -import { useUsers } from "../../api" -import { deleteUser } from "./Api" +import { useUsers, deleteUser } from "./Api" import { useAuth } from "../../context/AppContext" export default function List() {