UNPKG

@bit-ui-libs/common

Version:
106 lines (92 loc) 3.96 kB
import { BaseServiceOptions } from '../../api/services/base-service'; import { ProfileTypeEnum } from '../enums'; import { CreatePaymentRes, CreateSellerDocumentPayload, CreateSellerDocumentRes, CreateShippingAddressesRes, GetSellerProfileRes, SellerProfile, ShippingAddress, UserAddress } from '../interfaces'; import { DocumentsService } from './documents.service'; import { WithDocumentsService } from './documents.service.interfaces'; import { PaymentDetailsService } from './payment-details.service'; import { WithPaymentDetails } from './payment-details.service.interfaces'; import { ProfileService } from './profile.service'; import { AddProfileRequest, EditProfileRequest } from './profile.service.interfaces'; import { ShippingAddressService } from './shipping-address.service'; import { ProfileAddShippingAddressRequest, EditShippingAddressRequest, WithShippingAddress, } from './shipping-address.service.interfaces'; export type EditSellerProfileRequest = EditProfileRequest & Partial<SellerProfile>; export type AddSellerProfileRequest = AddProfileRequest & Partial<SellerProfile>; export class SellerProfileService extends ProfileService<SellerProfile> implements WithPaymentDetails, WithShippingAddress, WithDocumentsService { paymentDetails: PaymentDetailsService; shippingAddress: ShippingAddressService; documents: DocumentsService; constructor(opts: BaseServiceOptions) { super({ ...opts, profileType: ProfileTypeEnum.Seller }); this.paymentDetails = new PaymentDetailsService({ ...opts, profileApiUrl: this.profileApiUrl }); this.shippingAddress = new ShippingAddressService({ ...opts, profileApiUrl: this.profileApiUrl }); this.documents = new DocumentsService({ ...opts, profileApiUrl: this.profileApiUrl }); } getSellerProfileByUserId(userId: string) { return this.get<GetSellerProfileRes[]>( `${this.apiUrl}/users/v1/end-user/seller/list`, { userId: userId }, { timeout: 5000 } ); } getSellerDocuments(profileId: string) { return this.get<CreateSellerDocumentRes[]>(`${this.apiUrl}/users/v1/end-user/seller/${profileId}/documents/`); } addSellerDocument(req: CreateSellerDocumentPayload) { return this.post<CreateSellerDocumentRes, CreateSellerDocumentPayload>( `${this.apiUrl}/users/v1/end-user/seller/${req.profileId}/documents`, req ); } updateSellerDocument(req: CreateSellerDocumentPayload) { return this.put<CreateSellerDocumentRes, CreateSellerDocumentPayload>( `${this.apiUrl}/users/v1/end-user/seller/${req.profileId}/documents/${req.docId}`, req ); } getSellerAddress(profileId: string) { return this.get<ShippingAddress[]>( `${this.apiUrl}/users/v1/end-user/seller/${profileId}/shipping-addresses` ); } async getSellerDefaultPaymentDetails(profileId: string) { return this.get<CreatePaymentRes>( `${this.apiUrl}/users/v1/end-user/seller/${profileId}/payment-details/default`, {}, { timeout: 5000 } ); } editProfile(id: string, req: EditSellerProfileRequest) { return this.put<SellerProfile, EditSellerProfileRequest>(`${this.profileApiUrl}/${id}`, req); } addProfile(req: AddSellerProfileRequest) { return this.post<SellerProfile, AddSellerProfileRequest>(this.profileApiUrl, req); } deleteSellerAddress(profileId: string, addressId: string) { return this.delete(`${this.apiUrl}/users/v1/end-user/seller/${profileId}/shipping-addresses/${addressId}`); } addSellerAddress(req: ProfileAddShippingAddressRequest) { return this.post<CreateShippingAddressesRes, ProfileAddShippingAddressRequest>( `${this.apiUrl}/users/v1/end-user/seller/${req.profileId}/shipping-addresses`, req ); } editSellerAddress(req: EditShippingAddressRequest) { return this.put( `${this.apiUrl}/users/v1/end-user/seller/${req.profileId}/shipping-addresses/${req.addressId}`, req ); } }