Listing owned firms and working at firms

This commit is contained in:
2025-04-10 13:31:57 +02:00
parent cda4f5654a
commit f1ad5d2965
4 changed files with 35 additions and 23 deletions

View File

@@ -7,6 +7,10 @@ from hub.firm import Firm, FirmRead, FirmCreate, FirmUpdate
router = APIRouter() 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__)) @router.post("/", response_description="{} added to the database".format(Firm.__name__))
async def create(item: FirmCreate, user=Depends(get_current_user)) -> FirmRead: async def create(item: FirmCreate, user=Depends(get_current_user)) -> FirmRead:
firm_dict = {"name": item.name, "instance": item.instance} firm_dict = {"name": item.name, "instance": item.instance}

View File

@@ -10,4 +10,6 @@ type User = {
firms: [IFirm], firms: [IFirm],
}; };
export type IAuthUser = User;
export type IUser = User | null; export type IUser = User | null;

View File

@@ -1,37 +1,36 @@
import { Button } from "@mui/material"; import { Button } from "@mui/material";
import { Link } from "react-router"; 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 = () => { 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 ( return (
<div> <div>
<h1>HUB</h1> <h1>HUB</h1>
<p>List of managed firms</p> <p>List of managed firms</p>
<ul> <ul>
<li></li> {ownedFirms.map((f: IFirm, index) => (
<li key={index}>{f.instance} / {f.name}</li>
))}
</ul> </ul>
<p>List of firm you're working at</p> <p>List of firm you're working at</p>
<ul> <ul>
{user.firms.map((f: IFirm, index) => (
<li key={index}>{f.instance} / {f.name}</li>
))}
</ul> </ul>
<Link to="/hub/create-firm" ><Button >Create a new firm</Button></Link> <Link to="/hub/create-firm" ><Button >Create a new firm</Button></Link>
</div> </div>

View File

@@ -31,7 +31,8 @@ export const dataProvider: DataProvider = {
getList: async ({ resource, pagination, filters, sorters, meta }) => { getList: async ({ resource, pagination, filters, sorters, meta }) => {
const params = new URLSearchParams(); const params = new URLSearchParams();
if (pagination) { const serverPagination = pagination && pagination.mode =="server";
if (serverPagination) {
params.append("page", String(pagination.current)); params.append("page", String(pagination.current));
params.append("size", String(pagination.pageSize)); params.append("size", String(pagination.pageSize));
} }
@@ -54,9 +55,15 @@ export const dataProvider: DataProvider = {
const data = await response.json(); const data = await response.json();
if (serverPagination) {
return { return {
data: data.items, data: data.items,
total: data.total, // We'll cover this in the next steps. total: data.total,
};
}
return {
data: data,
total: data.length,
}; };
}, },
create: async ({ resource, variables }) => { create: async ({ resource, variables }) => {