frontend add

This commit is contained in:
shinmj
2021-10-21 09:03:17 +09:00
parent 8caa4bbc5a
commit cb9d50511e
443 changed files with 88282 additions and 0 deletions

View File

@@ -0,0 +1,163 @@
import { common, SearchPayload } from '@service'
import { Page } from '@utils'
import axios, { AxiosError } from 'axios'
import {
Control,
FormState,
UseFormGetValues,
UseFormRegister,
} from 'react-hook-form'
import useSWR from 'swr'
import { ILocation } from './Location'
const API_URL = '/reserve-item-service/api/v1/reserve-items'
const CODE_API_URL = (code: string) =>
`/portal-service/api/v1/code-details/${code}/codes`
export interface IReserveItemList {
reserveItemId: number
reserveItemName: string
locationId: number
categoryId: string
totalQty: number
inventoryQty: number
isUse: boolean
createDate: Date
isPossible: boolean
}
export interface IReserveItem {
reserveItemId: number
reserveItemName: string
locationId: number
categoryId: string
prevTotalQty: number
totalQty: number
inventoryQty: number
operationStartDate: Date
operationEndDate: Date
reserveMethodId: string
reserveMeansId?: string
requestStartDate?: Date
requestEndDate?: Date
isPeriod?: boolean
periodMaxCount?: number
externalUrl?: string
selectionMeansId: string
isPaid: boolean
usageCost?: number
isUse: boolean
purpose?: string
address?: string
targetId?: string
excluded?: string
homepage?: string
contact?: string
managerDept?: string
managerName?: string
managerContact?: string
}
export interface IReserveItemRelation {
reserveItemId: number
reserveItemName: string
locationId: number
location: ILocation
categoryId: string
categoryName: string
totalQty: number
inventoryQty: number
operationStartDate: string
operationEndDate: string
reserveMethodId: string
reserveMethodName: string
reserveMeansId: string
reserveMeansName: string
requestStartDate: string
requestEndDate: string
isPeriod: true
periodMaxCount: number
externalUrl: string
selectionMeansId: string
selectionMeansName: string
isPaid: true
usageCost: number
isUse: true
purpose: string
address: string
targetId: string
targetName: string
excluded: string
homepage: string
contact: string
managerDept: string
managerName: string
managerContact: string
}
export interface ReserveItemFormProps {
control: Control<IReserveItem, object>
formState: FormState<IReserveItem>
register?: UseFormRegister<IReserveItem>
getValues?: UseFormGetValues<IReserveItem>
}
interface ReserveItemSearchPayload extends SearchPayload {
locationId?: string
categoryId?: string
isUse?: boolean
}
export const reserveItemService = {
search: ({
keywordType,
keyword,
size,
page,
locationId,
categoryId,
isUse = false,
}: ReserveItemSearchPayload) => {
return useSWR<Page, AxiosError>(
[
`${API_URL}?size=${size}&page=${page}`,
keywordType,
keyword,
locationId,
categoryId,
isUse,
],
url =>
common.fetcher(url, {
keywordType,
keyword,
locationId,
categoryId,
isUse,
}),
{ revalidateOnFocus: false, errorRetryCount: 0 },
)
},
get: (id: number) =>
axios.get(`${API_URL}/${id}`, {
headers: common.headers,
}),
getWithRelation: (id: number) => axios.get(`${API_URL}/relations/${id}`),
save: (data: IReserveItem) =>
axios.post(API_URL, data, {
headers: common.headers,
}),
update: (id: number, data: IReserveItem) =>
axios.put(`${API_URL}/${id}`, data, {
headers: common.headers,
}),
updateUse: (id: number, isUse: boolean) =>
axios.put(`${API_URL}/${id}/${isUse}`, null, {
headers: common.headers,
}),
getCode: (codeId: string) =>
axios.get(CODE_API_URL(codeId), {
headers: common.headers,
}),
}