Create internal filament from external flow done
This commit is contained in:
48
client/src/pages/vendors/functions.ts
vendored
Normal file
48
client/src/pages/vendors/functions.ts
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
import { getAPIURL } from "../../utils/url";
|
||||
import { IVendor } from "./model";
|
||||
|
||||
/**
|
||||
* Get a vendor given its external ID.
|
||||
*/
|
||||
export async function getVendorByExternalID(external_id: string): Promise<IVendor | null> {
|
||||
// Make a search using GET and query params
|
||||
const response = await fetch(`${getAPIURL()}/vendor?${new URLSearchParams({ external_id })}`);
|
||||
if (!response.ok) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const data: IVendor[] = await response.json();
|
||||
if (data.length === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return data[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new internal filament given an external filament object.
|
||||
* Returns the created internal filament.
|
||||
*/
|
||||
export async function getOrCreateVendorFromExternal(vendor_external_id: string): Promise<IVendor> {
|
||||
const existingVendor = await getVendorByExternalID(vendor_external_id);
|
||||
if (existingVendor) {
|
||||
return existingVendor;
|
||||
}
|
||||
|
||||
const body: Omit<IVendor, "id" | "registered" | "extra"> = {
|
||||
name: vendor_external_id,
|
||||
external_id: vendor_external_id,
|
||||
};
|
||||
|
||||
const response = await fetch(getAPIURL() + "/vendor", {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify(body),
|
||||
});
|
||||
if (!response.ok) {
|
||||
throw new Error("Network response was not ok");
|
||||
}
|
||||
return response.json();
|
||||
}
|
||||
1
client/src/pages/vendors/model.tsx
vendored
1
client/src/pages/vendors/model.tsx
vendored
@@ -4,6 +4,7 @@ export interface IVendor {
|
||||
name: string;
|
||||
comment?: string;
|
||||
empty_spool_weight?: number;
|
||||
external_id?: string;
|
||||
extra: { [key: string]: string };
|
||||
}
|
||||
|
||||
|
||||
2
client/src/pages/vendors/show.tsx
vendored
2
client/src/pages/vendors/show.tsx
vendored
@@ -44,6 +44,8 @@ export const VendorShow: React.FC<IResourceComponentsProps> = () => {
|
||||
<TextField value={enrichText(record?.comment)} />
|
||||
<Title level={5}>{t("vendor.fields.empty_spool_weight")}</Title>
|
||||
<TextField value={record?.empty_spool_weight} />
|
||||
<Title level={5}>{t("vendor.fields.external_id")}</Title>
|
||||
<TextField value={record?.external_id} />
|
||||
<Title level={4}>{t("settings.extra_fields.tab")}</Title>
|
||||
{extraFields?.data?.map((field, index) => (
|
||||
<ExtraFieldDisplay key={index} field={field} value={record?.extra[field.key]} />
|
||||
|
||||
Reference in New Issue
Block a user