import { HttpClient } from '@angular/common/http';
import { Inject, Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import {
  Availability,
  UpdateAvailabilityRequest,
} from '../models/availability.model';
import { API_URL } from '../tokens/api-url.token';

@Injectable({ providedIn: 'root' })
export class AvailabilityApiService {
  constructor(
    private http: HttpClient,
    @Inject(API_URL) private apiUrl: string,
  ) {}

  getForEventType(eventTypeId: string): Observable<Availability> {
    return this.http.get<Availability>(
      `${this.apiUrl}/me/event-types/${eventTypeId}/availability`,
    );
  }

  updateForEventType(
    eventTypeId: string,
    data: UpdateAvailabilityRequest,
  ): Observable<Availability> {
    return this.http.put<Availability>(
      `${this.apiUrl}/me/event-types/${eventTypeId}/availability`,
      data,
    );
  }

  copyFromEventType(
    targetEventTypeId: string,
    sourceEventTypeId: string,
  ): Observable<Availability> {
    return this.http.post<Availability>(
      `${this.apiUrl}/me/event-types/${targetEventTypeId}/availability/copy-from`,
      { sourceEventTypeId },
    );
  }
}
