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 = 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}
|
||||||
|
|||||||
@@ -10,4 +10,6 @@ type User = {
|
|||||||
firms: [IFirm],
|
firms: [IFirm],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type IAuthUser = User;
|
||||||
|
|
||||||
export type IUser = User | null;
|
export type IUser = User | null;
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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 }) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user