@bit-ui-libs/common
Version:
This library was generated with [Nx](https://nx.dev).
109 lines (94 loc) • 4.27 kB
text/typescript
import { BaseServiceOptions } from '../../api/services/base-service';
import { ProfileTypeEnum } from '../enums';
import { BuyerProfile, CreatePaymentRes, CreateShippingAddressesRes } from '../interfaces';
import { PaymentDetailsService } from './payment-details.service';
import { WithPaymentDetails } from './payment-details.service.interfaces';
import { ProfileService } from './profile.service';
import { AddProfileRequest, AddShippingAddressRequest, EditProfileRequest } from './profile.service.interfaces';
import { CreateBuyerProfilePayload, CreatePaymentPayload, GetBuyerProfileRes } from '../interfaces';
import { ShippingAddressService } from './shipping-address.service';
import { WithShippingAddress } from './shipping-address.service.interfaces';
type EditBuyerProfileRequest = EditProfileRequest;
type AddBuyerProfileRequest = AddProfileRequest;
export class BuyerProfileService
extends ProfileService<BuyerProfile>
implements WithPaymentDetails, WithShippingAddress
{
paymentDetails: PaymentDetailsService;
shippingAddress: ShippingAddressService;
constructor(opts: BaseServiceOptions) {
super({ ...opts, profileType: ProfileTypeEnum.Buyer });
this.paymentDetails = new PaymentDetailsService({ ...opts, profileApiUrl: this.profileApiUrl });
this.shippingAddress = new ShippingAddressService({ ...opts, profileApiUrl: this.profileApiUrl });
}
editProfile(id: string, req: EditBuyerProfileRequest) {
return this.put<BuyerProfile, EditBuyerProfileRequest>(`${this.profileApiUrl}/${id}`, req);
}
addProfile(req: AddBuyerProfileRequest) {
return this.post<BuyerProfile, AddBuyerProfileRequest>(this.profileApiUrl, req);
}
getBuyerProfile() {
return this.get<GetBuyerProfileRes>(`${this.apiUrl}/users/v1/end-user/buyer/default`, {}, { timeout: 5000 });
}
getBuyerProfilebyId(buyerId: string) {
return this.get<GetBuyerProfileRes>(`${this.apiUrl}/users/v1/end-user/buyer/${buyerId}`, {}, { timeout: 5000 });
}
getBuyerAddresses(profileId: string) {
return this.get<CreateShippingAddressesRes[]>(
`${this.apiUrl}/users/v1/end-user/buyer/${profileId}/shipping-addresses`,
{},
{ timeout: 5000 }
);
}
getBuyerPaymentDetails(profileId: string) {
return this.get<CreatePaymentRes[]>(
`${this.apiUrl}/users/v1/end-user/buyer/${profileId}/payment-details`,
{},
{ timeout: 5000 }
);
}
createBuyerProfile(payload: CreateBuyerProfilePayload) {
return this.post<GetBuyerProfileRes, CreateBuyerProfilePayload>(`${this.apiUrl}/users/v1/end-user/buyer`, payload, {
timeout: 5000,
});
}
updateBuyerProfile(payload: CreateBuyerProfilePayload) {
return this.patch<GetBuyerProfileRes, CreateBuyerProfilePayload>(`${this.apiUrl}/users/v1/end-user/buyer`, payload);
}
addBuyerAddress(payload: AddShippingAddressRequest) {
return this.post<CreateShippingAddressesRes, AddShippingAddressRequest>(
`${this.apiUrl}/users/v1/end-user/buyer/${payload.profileId}/shipping-addresses`,
payload,
{ timeout: 5000 }
);
}
addBuyerPaymentDetails(payload: CreatePaymentPayload) {
return this.post<CreatePaymentRes, CreatePaymentPayload>(
`${this.apiUrl}/users/v1/end-user/buyer/${payload.profileId}/payment-details`,
payload,
{ timeout: 5000 }
);
}
updateBuyerAddress(payload: AddShippingAddressRequest) {
return this.put<CreateShippingAddressesRes, AddShippingAddressRequest>(
`${this.apiUrl}/users/v1/end-user/buyer/${payload.profileId}/shipping-addresses/${payload.addressId}`,
payload,
{ timeout: 5000 }
);
}
deleteBuyerAddress(payload: { profileId: string; addressId: string }) {
return this.delete(
`${this.apiUrl}/users/v1/end-user/buyer/${payload.profileId}/shipping-addresses/${payload.addressId}`
);
}
updateBuyerPaymentDetails(payload: any) {
return this.put<CreatePaymentRes, CreatePaymentPayload>(
`${this.apiUrl}/users/v1/end-user/buyer/${payload.profileId}/payment-details/${payload.id}`,
payload,
{ timeout: 5000 }
);
}
deleteBuyerPaymentDetails(payload: any) {
return this.delete(`${this.apiUrl}/users/v1/end-user/buyer/${payload.profileId}/payment-details/${payload.id}`);
}
}