import { buildClientRequestUrl } from '../../utils'; import { api } from './api'; import { b2b } from '../urls'; import { Basket, BasketParams, BasketResponse, Division, DraftResponse, GetResponse, LoadBasketParams, SaveBasketParams, UpdateProductParams, DeleteProductParams, CreateQuotationParams, BasketStatusResponse, ExportBasketResponse } from '../../types'; const b2bApi = api.injectEndpoints({ endpoints: (build) => ({ getBasketB2b: build.query({ query: () => buildClientRequestUrl(b2b.basket, { contentType: 'application/json' }), providesTags: ['BasketB2b'] }), getDivisions: build.query, void>({ query: () => buildClientRequestUrl(b2b.divisions) }), addToBasket: build.mutation({ query: (body) => ({ url: buildClientRequestUrl(b2b.basket, { contentType: 'application/json' }), method: 'POST', body }) }), saveBasket: build.mutation({ query: (body) => ({ url: buildClientRequestUrl(b2b.saveBasket, { contentType: 'application/json' }), method: 'POST', body }), invalidatesTags: ['BasketB2b', 'DraftsB2b'] }), getDrafts: build.query({ query: () => buildClientRequestUrl(b2b.draftBaskets), providesTags: ['DraftsB2b'] }), loadBasket: build.mutation({ query: (id) => ({ url: buildClientRequestUrl(b2b.loadBasket(id), { contentType: 'application/json' }), method: 'POST' }), invalidatesTags: ['BasketB2b'] }), updateProduct: build.mutation({ query: (body) => ({ url: buildClientRequestUrl(b2b.basket, { contentType: 'application/json' }), method: 'PUT', body }), invalidatesTags: ['BasketB2b'] }), deleteProduct: build.mutation({ query: (body) => ({ url: buildClientRequestUrl(b2b.basket, { contentType: 'application/json' }), method: 'DELETE', body }), invalidatesTags: ['BasketB2b'] }), createQuotation: build.mutation({ query: (body) => ({ url: buildClientRequestUrl(b2b.myQuotations, { contentType: 'application/json' }), method: 'POST', body }), invalidatesTags: ['BasketB2b', 'DraftsB2b'] }), exportBasket: build.mutation({ query: (queryString) => { return { url: buildClientRequestUrl(b2b.basketExport(queryString)), method: 'GET' }; } }), getBasketStatus: build.mutation({ query: (cacheKey) => { return { url: buildClientRequestUrl(b2b.statusBasket(cacheKey)), method: 'GET' }; } }), uploadFile: build.mutation({ query: (body) => { return { url: buildClientRequestUrl(b2b.basketImport, { useFormData: true }), method: 'POST', body }; }, invalidatesTags: ['BasketB2b'] }) }), overrideExisting: true }); export const { useGetBasketB2bQuery, useLazyGetDivisionsQuery, useAddToBasketMutation, useSaveBasketMutation, useGetDraftsQuery, useLoadBasketMutation, useUpdateProductMutation, useDeleteProductMutation, useCreateQuotationMutation, useGetBasketStatusMutation, useExportBasketMutation, useUploadFileMutation } = b2bApi;