UNPKG

@bit-ui-libs/common

Version:
109 lines (94 loc) 4.27 kB
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}`); } }