import { HttpClient } from '@angular/common/http';
import { Injectable } from "@angular/core";
import { Observable } from "rxjs";
import { environment } from "src/environments/environment";
import { EmptyData, FieldControl, ResponseData, SessionService, Standard } from "synapse-primeng";

export class {0} extends FieldControl {
  {1}id: number;
}

export class {0}Seek extends FieldControl {
  {1}id: number;
}

export class {0}Find extends FieldControl {
  {1}id: number;
}

@Injectable({ providedIn: 'root' })
export class {0}Service extends Standard {
    constructor(
        http: HttpClient,
        sessionService: SessionService
    ) {
        super(http, sessionService);
        this.url = environment.url;
        this.project = environment.project;
    }

    save(body: {0}): Observable<ResponseData<{0}>> {
        return this.post<{0}>({
            route: '{2}/save',
            body: body
        })
    }

    findKey({1}id: string): Observable<ResponseData<{0}>> {
        return this.get<{0}>({
            route: `{2}/findKey`,
            query: { {1}id }
        })
    }

    remove({1}id: string): Observable<ResponseData<EmptyData>> {
        return this.post<EmptyData>({
            route: `{2}/remove`,
            query: { {1}id }
        })
    }

    restore({1}id: string): Observable<ResponseData<EmptyData>> {
        return this.post<EmptyData>({
            route: `{2}/restore`,
            query: { {1}id }
        })
    }

    seek(filtro: any): Observable<ResponseData<{0}Seek[]>> {
        return this.get<{0}Seek[]>({
            route: '{2}/seek',
            query: filtro
        })
    }

    find(filtro: any): Observable<ResponseData<{0}Find[]>> {
        return this.get<{0}Find[]>({
            route: `{2}/find`,
            query: filtro
        })
    }
}
