import { BaseService, BaseServiceOptions } from '../../api/services/base-service';
import { PagedResponse } from '../../common';
import { Bid } from '../interfaces';
import { AddBidRequest, RejectBidRequest, SearchBidsRequest } from './bid.service.interfaces';

export class BidService extends BaseService {
  bidsApiUrl: string;

  constructor(opts: BaseServiceOptions) {
    super(opts);
    this.bidsApiUrl = `${this.apiUrl}/marketplace/v1/bids`
  }

  search(req: SearchBidsRequest) {
    return this.get<PagedResponse<Bid>, SearchBidsRequest>(this.bidsApiUrl, req);
  }

  create(req: AddBidRequest) {
    return this.post<Bid, AddBidRequest>(this.bidsApiUrl, req);
  }

  reject(req: RejectBidRequest) {
    return this.patch<Bid, RejectBidRequest>(this.bidsApiUrl, req);
  }

  getById(id: string) {
    return this.get<Bid>(`${this.bidsApiUrl}/${id}`);
  }

  accept(id: string) {
    return this.patch<Bid, object>(`${this.bidsApiUrl}/${id}`, {});
  }
}
