import {Injectable} from '@angular/core';
import {HttpClient, HttpHeaders} from "@angular/common/http";
import {ConfigurationService} from "../env/configuration.service";
import {Observable} from "rxjs";
import {map} from "rxjs/operators";
import {Schedblock} from "../model/schedblock";

@Injectable({
  providedIn: 'root'
})
export class SchedblocksService {

  endPoint: string = '/services/schedblocks/';

  constructor(private http: HttpClient, private configService: ConfigurationService) {
  }

  public getSchedblocks(): Observable<Array<Schedblock>> {
    return this.http.get<Array<Schedblock>>(this.configService.config.url + this.endPoint, {observe: 'response'}).pipe(
      map(response => {
        return response.body;
      }));
  }

  public createSchedblock(epoch: string, sbname: string, sbid: number, minitiles: string): Observable<Schedblock> {
    const paramObj = {
      epoch: Number(epoch),
      sbname: sbname,
      sbid: sbid,
      minitiles: minitiles
    }
    let headers = new HttpHeaders();
    headers = headers.append('content-type', 'application/json');

    return this.http.post<Schedblock>(this.configService.config.url + this.endPoint + 'generateEverything', paramObj, {headers: headers, observe: "response"}).pipe(
      map(response => {
        return response.body;
      })
    );
  }
}