update build admin
This commit is contained in:
		
							parent
							
								
									d819ea9850
								
							
						
					
					
						commit
						6cf2cd4de4
					
				| 
						 | 
					@ -0,0 +1,109 @@
 | 
				
			||||||
 | 
					import { generateNestParams, handleError, handleSuccess } from '.';
 | 
				
			||||||
 | 
					import axios from '../lib/axios';
 | 
				
			||||||
 | 
					import { IAdmin } from '../system/type';
 | 
				
			||||||
 | 
					import { removeFalsyValues } from '../utils';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const getAdmins = async (params: Record<string, string | number>) => {
 | 
				
			||||||
 | 
					    return await axios({
 | 
				
			||||||
 | 
					        url: 'admins',
 | 
				
			||||||
 | 
					        params: generateNestParams(params),
 | 
				
			||||||
 | 
					        withCredentials: true,
 | 
				
			||||||
 | 
					        method: 'GET',
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const updateAdmin = async (admin: Partial<IAdmin>) => {
 | 
				
			||||||
 | 
					    const { email, fullname, permissions } = removeFalsyValues(admin);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        const { data } = await axios({
 | 
				
			||||||
 | 
					            url: 'admins/' + admin.id,
 | 
				
			||||||
 | 
					            withCredentials: true,
 | 
				
			||||||
 | 
					            method: 'PUT',
 | 
				
			||||||
 | 
					            data: { email, fullname, permissions },
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        handleSuccess(data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return data;
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					        handleError(error);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const grantNewPasswordAdmin = async (admin: Partial<IAdmin>) => {
 | 
				
			||||||
 | 
					    const { password } = removeFalsyValues(admin);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        const { data } = await axios({
 | 
				
			||||||
 | 
					            url: 'admins/grant-new-password/' + admin.id,
 | 
				
			||||||
 | 
					            withCredentials: true,
 | 
				
			||||||
 | 
					            method: 'POST',
 | 
				
			||||||
 | 
					            data: { password },
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        handleSuccess(data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return data;
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					        handleError(error);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const createAdmin = async (admin: Omit<IAdmin, 'id' | 'created_at' | 'updated_at' | 'is_system_account'>) => {
 | 
				
			||||||
 | 
					    const newData = removeFalsyValues(admin);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        const { data } = await axios({
 | 
				
			||||||
 | 
					            url: 'admins',
 | 
				
			||||||
 | 
					            withCredentials: true,
 | 
				
			||||||
 | 
					            method: 'POST',
 | 
				
			||||||
 | 
					            data: newData,
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        handleSuccess(data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return data;
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					        handleError(error);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const deleteAdmin = async (admin: IAdmin) => {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        const { data } = await axios({
 | 
				
			||||||
 | 
					            url: 'admins/' + admin.id,
 | 
				
			||||||
 | 
					            withCredentials: true,
 | 
				
			||||||
 | 
					            method: 'DELETE',
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        handleSuccess(data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return data;
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					        handleError(error);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const deletesAdmin = async (admins: IAdmin[]) => {
 | 
				
			||||||
 | 
					    const ids = admins.reduce((prev, cur) => {
 | 
				
			||||||
 | 
					        prev.push(cur.id);
 | 
				
			||||||
 | 
					        return prev;
 | 
				
			||||||
 | 
					    }, [] as number[]);
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        const { data } = await axios({
 | 
				
			||||||
 | 
					            url: 'admins/deletes',
 | 
				
			||||||
 | 
					            withCredentials: true,
 | 
				
			||||||
 | 
					            method: 'POST',
 | 
				
			||||||
 | 
					            data: {
 | 
				
			||||||
 | 
					                ids,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        handleSuccess(data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return data;
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					        handleError(error);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,11 @@
 | 
				
			||||||
 | 
					import { generateNestParams } from '.';
 | 
				
			||||||
 | 
					import axios from '../lib/axios';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const getPermissions = async (params: Record<string, string | number>) => {
 | 
				
			||||||
 | 
					    return await axios({
 | 
				
			||||||
 | 
					        url: 'permissions',
 | 
				
			||||||
 | 
					        params: generateNestParams(params),
 | 
				
			||||||
 | 
					        withCredentials: true,
 | 
				
			||||||
 | 
					        method: 'GET',
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -4,11 +4,9 @@ import { useForm, zodResolver } from '@mantine/form';
 | 
				
			||||||
import _ from 'lodash';
 | 
					import _ from 'lodash';
 | 
				
			||||||
import { useEffect, useRef } from 'react';
 | 
					import { useEffect, useRef } from 'react';
 | 
				
			||||||
import { z } from 'zod';
 | 
					import { z } from 'zod';
 | 
				
			||||||
import { updateBid } from '../../apis/bid';
 | 
					import { updateWebBid } from '../../apis/web-bid';
 | 
				
			||||||
import { createWebBid, updateWebBid } from '../../apis/web-bid';
 | 
					 | 
				
			||||||
import { useConfirmStore } from '../../lib/zustand/use-confirm';
 | 
					import { useConfirmStore } from '../../lib/zustand/use-confirm';
 | 
				
			||||||
import { IWebBid } from '../../system/type';
 | 
					import { IWebBid } from '../../system/type';
 | 
				
			||||||
import { extractDomain } from '../../utils';
 | 
					 | 
				
			||||||
export interface IWebBidModelProps extends ModalProps {
 | 
					export interface IWebBidModelProps extends ModalProps {
 | 
				
			||||||
    data: IWebBid | null;
 | 
					    data: IWebBid | null;
 | 
				
			||||||
    onUpdated?: () => void;
 | 
					    onUpdated?: () => void;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,7 +4,6 @@ import { useForm, zodResolver } from '@mantine/form';
 | 
				
			||||||
import _ from 'lodash';
 | 
					import _ from 'lodash';
 | 
				
			||||||
import { useEffect, useRef } from 'react';
 | 
					import { useEffect, useRef } from 'react';
 | 
				
			||||||
import { z } from 'zod';
 | 
					import { z } from 'zod';
 | 
				
			||||||
import { updateBid } from '../../apis/bid';
 | 
					 | 
				
			||||||
import { createWebBid, updateWebBid } from '../../apis/web-bid';
 | 
					import { createWebBid, updateWebBid } from '../../apis/web-bid';
 | 
				
			||||||
import { useConfirmStore } from '../../lib/zustand/use-confirm';
 | 
					import { useConfirmStore } from '../../lib/zustand/use-confirm';
 | 
				
			||||||
import { IWebBid } from '../../system/type';
 | 
					import { IWebBid } from '../../system/type';
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1 @@
 | 
				
			||||||
export { default as usePermissions } from './use-permissions';
 | 
					export { default as usePermissions } from './use-permissions';
 | 
				
			||||||
export { default as useCategories } from './use-categories';
 | 
					 | 
				
			||||||
export { default as useTags } from './use-tags';
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,28 +0,0 @@
 | 
				
			||||||
import { useEffect, useState } from 'react';
 | 
					 | 
				
			||||||
import { getCategories } from '../apis/category';
 | 
					 | 
				
			||||||
import { ICategory } from '../system/type';
 | 
					 | 
				
			||||||
import { ComboboxData } from '@mantine/core';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default function usePermissions() {
 | 
					 | 
				
			||||||
    const [data, setData] = useState<ICategory[]>([]);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    const handleGetData = async () => {
 | 
					 | 
				
			||||||
        const result = await getCategories({ per_page: 100 });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!result || !result.data?.data) return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        setData(result.data.data);
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    useEffect(() => {
 | 
					 | 
				
			||||||
        handleGetData();
 | 
					 | 
				
			||||||
    }, []);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return {
 | 
					 | 
				
			||||||
        data,
 | 
					 | 
				
			||||||
        select: data.map((item) => {
 | 
					 | 
				
			||||||
            return { label: item.name, value: String(item.id) };
 | 
					 | 
				
			||||||
        }) as ComboboxData,
 | 
					 | 
				
			||||||
        refresh: handleGetData,
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,28 +0,0 @@
 | 
				
			||||||
import { ComboboxData } from '@mantine/core';
 | 
					 | 
				
			||||||
import { useEffect, useState } from 'react';
 | 
					 | 
				
			||||||
import { getTags } from '../apis/tag';
 | 
					 | 
				
			||||||
import { ITag } from '../system/type';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default function useTags() {
 | 
					 | 
				
			||||||
    const [data, setData] = useState<ITag[]>([]);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    const handleGetData = async () => {
 | 
					 | 
				
			||||||
        const result = await getTags({ per_page: 100 });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!result || !result.data?.data) return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        setData(result.data.data);
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    useEffect(() => {
 | 
					 | 
				
			||||||
        handleGetData();
 | 
					 | 
				
			||||||
    }, []);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return {
 | 
					 | 
				
			||||||
        data,
 | 
					 | 
				
			||||||
        select: data.map((item) => {
 | 
					 | 
				
			||||||
            return { label: item.name, value: String(item.id) };
 | 
					 | 
				
			||||||
        }) as ComboboxData,
 | 
					 | 
				
			||||||
        refresh: handleGetData,
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -3,3 +3,10 @@ export const mappingStatusColors = {
 | 
				
			||||||
    'out-bid': 'red',
 | 
					    'out-bid': 'red',
 | 
				
			||||||
    'win-bid': 'green',
 | 
					    'win-bid': 'green',
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const mappingPermissionsColors = {
 | 
				
			||||||
 | 
					    POST: 'blue',
 | 
				
			||||||
 | 
					    DELETE: 'red',
 | 
				
			||||||
 | 
					    GET: 'green',
 | 
				
			||||||
 | 
					    PUT: 'yellow',
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -54,3 +54,9 @@ export interface IWebBid extends ITimestamp {
 | 
				
			||||||
    active: boolean;
 | 
					    active: boolean;
 | 
				
			||||||
    children: IBid[];
 | 
					    children: IBid[];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface IPermission extends ITimestamp {
 | 
				
			||||||
 | 
					    id: number;
 | 
				
			||||||
 | 
					    name: string;
 | 
				
			||||||
 | 
					    description: string;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue