Listing owned firms and working at firms
This commit is contained in:
@@ -7,6 +7,10 @@ from hub.firm import Firm, FirmRead, FirmCreate, FirmUpdate
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@router.get("/", response_model=list[FirmRead], response_description="{} records retrieved".format(Firm.__name__))
|
||||
async def read_list(user=Depends(get_current_user)) -> list[FirmRead]:
|
||||
return await Firm.find({ "owner": user.id}).to_list()
|
||||
|
||||
@router.post("/", response_description="{} added to the database".format(Firm.__name__))
|
||||
async def create(item: FirmCreate, user=Depends(get_current_user)) -> FirmRead:
|
||||
firm_dict = {"name": item.name, "instance": item.instance}
|
||||
|
||||
@@ -10,4 +10,6 @@ type User = {
|
||||
firms: [IFirm],
|
||||
};
|
||||
|
||||
export type IAuthUser = User;
|
||||
|
||||
export type IUser = User | null;
|
||||
|
||||
@@ -1,37 +1,36 @@
|
||||
import { Button } from "@mui/material";
|
||||
import { Link } from "react-router";
|
||||
import { useGetIdentity } from "@refinedev/core";
|
||||
import { useGetIdentity, useList } from "@refinedev/core";
|
||||
import { IAuthUser, IFirm } from "../../interfaces";
|
||||
|
||||
type Firm = {
|
||||
name: string,
|
||||
instance: string,
|
||||
}
|
||||
type User = {
|
||||
firms: [Firm],
|
||||
}
|
||||
|
||||
export const Hub = () => {
|
||||
const user = useGetIdentity<User>();
|
||||
const { data: user } = useGetIdentity<IAuthUser>();
|
||||
const { data: list } = useList<IFirm>({resource: "firms/", pagination: { mode: "off" }}, )
|
||||
if (user === undefined || list === undefined) {
|
||||
return <p>Loading</p>
|
||||
}
|
||||
console.log("list data: ", list);
|
||||
const ownedFirms = list.data;
|
||||
if (user === undefined || ownedFirms === undefined) {
|
||||
return <p>Loading</p>
|
||||
}
|
||||
console.log("owned firms: ", ownedFirms);
|
||||
|
||||
console.log(user);
|
||||
let ownFirms = [];
|
||||
let workFirms = [];
|
||||
//firms.forEach((f, index) => {
|
||||
// workFirms.push(<li>{f.instance}/{f.name}</li>)
|
||||
//})
|
||||
//{firms.map((f: Firm, index) => (
|
||||
// <li key={index}>{f.instance} / {f.name}</li>
|
||||
// ))}
|
||||
return (
|
||||
<div>
|
||||
<h1>HUB</h1>
|
||||
<p>List of managed firms</p>
|
||||
<ul>
|
||||
<li></li>
|
||||
{ownedFirms.map((f: IFirm, index) => (
|
||||
<li key={index}>{f.instance} / {f.name}</li>
|
||||
))}
|
||||
</ul>
|
||||
<p>List of firm you're working at</p>
|
||||
<ul>
|
||||
|
||||
{user.firms.map((f: IFirm, index) => (
|
||||
<li key={index}>{f.instance} / {f.name}</li>
|
||||
))}
|
||||
</ul>
|
||||
<Link to="/hub/create-firm" ><Button >Create a new firm</Button></Link>
|
||||
</div>
|
||||
|
||||
@@ -31,7 +31,8 @@ export const dataProvider: DataProvider = {
|
||||
getList: async ({ resource, pagination, filters, sorters, meta }) => {
|
||||
const params = new URLSearchParams();
|
||||
|
||||
if (pagination) {
|
||||
const serverPagination = pagination && pagination.mode =="server";
|
||||
if (serverPagination) {
|
||||
params.append("page", String(pagination.current));
|
||||
params.append("size", String(pagination.pageSize));
|
||||
}
|
||||
@@ -54,9 +55,15 @@ export const dataProvider: DataProvider = {
|
||||
|
||||
const data = await response.json();
|
||||
|
||||
if (serverPagination) {
|
||||
return {
|
||||
data: data.items,
|
||||
total: data.total,
|
||||
};
|
||||
}
|
||||
return {
|
||||
data: data.items,
|
||||
total: data.total, // We'll cover this in the next steps.
|
||||
data: data,
|
||||
total: data.length,
|
||||
};
|
||||
},
|
||||
create: async ({ resource, variables }) => {
|
||||
|
||||
Reference in New Issue
Block a user