@bit-ui-libs/common
Version:
This library was generated with [Nx](https://nx.dev).
106 lines (92 loc) • 3.96 kB
text/typescript
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
);
}
}