/* tslint:disable */
/* eslint-disable */
/* Code generated by ng-openapi-gen DO NOT EDIT. */

import { HttpClient, HttpContext } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

import { BaseService } from '../base-service';
import { ApiConfiguration } from '../api-configuration';
import { StrictHttpResponse } from '../strict-http-response';

import { CittaRes } from '../models/citta-res';
import { ProvinciaRes } from '../models/provincia-res';
import { RegioneRes } from '../models/regione-res';
import { StatoRes } from '../models/stato-res';
import { strutturePubblicheControllerFindManyCittaInStrutture } from '../fn/strutture-pubbliche/strutture-pubbliche-controller-find-many-citta-in-strutture';
import { StrutturePubblicheControllerFindManyCittaInStrutture$Params } from '../fn/strutture-pubbliche/strutture-pubbliche-controller-find-many-citta-in-strutture';
import { strutturePubblicheControllerFindManyProvinceInStrutture } from '../fn/strutture-pubbliche/strutture-pubbliche-controller-find-many-province-in-strutture';
import { StrutturePubblicheControllerFindManyProvinceInStrutture$Params } from '../fn/strutture-pubbliche/strutture-pubbliche-controller-find-many-province-in-strutture';
import { strutturePubblicheControllerFindManyRegioniInStrutture } from '../fn/strutture-pubbliche/strutture-pubbliche-controller-find-many-regioni-in-strutture';
import { StrutturePubblicheControllerFindManyRegioniInStrutture$Params } from '../fn/strutture-pubbliche/strutture-pubbliche-controller-find-many-regioni-in-strutture';
import { strutturePubblicheControllerFindManyStatiInStrutture } from '../fn/strutture-pubbliche/strutture-pubbliche-controller-find-many-stati-in-strutture';
import { StrutturePubblicheControllerFindManyStatiInStrutture$Params } from '../fn/strutture-pubbliche/strutture-pubbliche-controller-find-many-stati-in-strutture';
import { strutturePubblicheControllerFindManyStrutture } from '../fn/strutture-pubbliche/strutture-pubbliche-controller-find-many-strutture';
import { StrutturePubblicheControllerFindManyStrutture$Params } from '../fn/strutture-pubbliche/strutture-pubbliche-controller-find-many-strutture';
import { strutturePubblicheControllerFindManyTipiStrutture } from '../fn/strutture-pubbliche/strutture-pubbliche-controller-find-many-tipi-strutture';
import { StrutturePubblicheControllerFindManyTipiStrutture$Params } from '../fn/strutture-pubbliche/strutture-pubbliche-controller-find-many-tipi-strutture';
import { StrutturePubblicheResDto } from '../models/strutture-pubbliche-res-dto';
import { TipoStruttura } from '../models/tipo-struttura';

@Injectable({ providedIn: 'root' })
export class StrutturePubblicheApiClient extends BaseService {
  constructor(config: ApiConfiguration, http: HttpClient) {
    super(config, http);
  }

  /** Path part for operation `strutturePubblicheControllerFindManyStrutture()` */
  static readonly StrutturePubblicheControllerFindManyStrutturePath =
    '/public/strutture';

  /**
   * Get strutture pubbliche.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `strutturePubblicheControllerFindManyStrutture()` instead.
   *
   * This method doesn't expect any request body.
   */
  strutturePubblicheControllerFindManyStrutture$Response(
    params: StrutturePubblicheControllerFindManyStrutture$Params,
    context?: HttpContext,
  ): Observable<StrictHttpResponse<Array<StrutturePubblicheResDto>>> {
    return strutturePubblicheControllerFindManyStrutture(
      this.http,
      this.rootUrl,
      params,
      context,
    );
  }

  /**
   * Get strutture pubbliche.
   *
   *
   *
   * This method provides access only to the response body.
   * To access the full response (for headers, for example), `strutturePubblicheControllerFindManyStrutture$Response()` instead.
   *
   * This method doesn't expect any request body.
   */
  strutturePubblicheControllerFindManyStrutture(
    params: StrutturePubblicheControllerFindManyStrutture$Params,
    context?: HttpContext,
  ): Observable<Array<StrutturePubblicheResDto>> {
    return this.strutturePubblicheControllerFindManyStrutture$Response(
      params,
      context,
    ).pipe(
      map(
        (
          r: StrictHttpResponse<Array<StrutturePubblicheResDto>>,
        ): Array<StrutturePubblicheResDto> => r.body,
      ),
    );
  }

  /** Path part for operation `strutturePubblicheControllerFindManyTipiStrutture()` */
  static readonly StrutturePubblicheControllerFindManyTipiStrutturePath =
    '/public/strutture/tipi';

  /**
   * Get tipi strutture.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `strutturePubblicheControllerFindManyTipiStrutture()` instead.
   *
   * This method doesn't expect any request body.
   */
  strutturePubblicheControllerFindManyTipiStrutture$Response(
    params?: StrutturePubblicheControllerFindManyTipiStrutture$Params,
    context?: HttpContext,
  ): Observable<StrictHttpResponse<Array<TipoStruttura>>> {
    return strutturePubblicheControllerFindManyTipiStrutture(
      this.http,
      this.rootUrl,
      params,
      context,
    );
  }

  /**
   * Get tipi strutture.
   *
   *
   *
   * This method provides access only to the response body.
   * To access the full response (for headers, for example), `strutturePubblicheControllerFindManyTipiStrutture$Response()` instead.
   *
   * This method doesn't expect any request body.
   */
  strutturePubblicheControllerFindManyTipiStrutture(
    params?: StrutturePubblicheControllerFindManyTipiStrutture$Params,
    context?: HttpContext,
  ): Observable<Array<TipoStruttura>> {
    return this.strutturePubblicheControllerFindManyTipiStrutture$Response(
      params,
      context,
    ).pipe(
      map(
        (r: StrictHttpResponse<Array<TipoStruttura>>): Array<TipoStruttura> =>
          r.body,
      ),
    );
  }

  /** Path part for operation `strutturePubblicheControllerFindManyStatiInStrutture()` */
  static readonly StrutturePubblicheControllerFindManyStatiInStrutturePath =
    '/public/strutture/luoghi/stati';

  /**
   * Get stati strutture.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `strutturePubblicheControllerFindManyStatiInStrutture()` instead.
   *
   * This method doesn't expect any request body.
   */
  strutturePubblicheControllerFindManyStatiInStrutture$Response(
    params?: StrutturePubblicheControllerFindManyStatiInStrutture$Params,
    context?: HttpContext,
  ): Observable<StrictHttpResponse<Array<StatoRes>>> {
    return strutturePubblicheControllerFindManyStatiInStrutture(
      this.http,
      this.rootUrl,
      params,
      context,
    );
  }

  /**
   * Get stati strutture.
   *
   *
   *
   * This method provides access only to the response body.
   * To access the full response (for headers, for example), `strutturePubblicheControllerFindManyStatiInStrutture$Response()` instead.
   *
   * This method doesn't expect any request body.
   */
  strutturePubblicheControllerFindManyStatiInStrutture(
    params?: StrutturePubblicheControllerFindManyStatiInStrutture$Params,
    context?: HttpContext,
  ): Observable<Array<StatoRes>> {
    return this.strutturePubblicheControllerFindManyStatiInStrutture$Response(
      params,
      context,
    ).pipe(
      map((r: StrictHttpResponse<Array<StatoRes>>): Array<StatoRes> => r.body),
    );
  }

  /** Path part for operation `strutturePubblicheControllerFindManyRegioniInStrutture()` */
  static readonly StrutturePubblicheControllerFindManyRegioniInStrutturePath =
    '/public/strutture/luoghi/regioni';

  /**
   * Get regioni strutture.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `strutturePubblicheControllerFindManyRegioniInStrutture()` instead.
   *
   * This method doesn't expect any request body.
   */
  strutturePubblicheControllerFindManyRegioniInStrutture$Response(
    params: StrutturePubblicheControllerFindManyRegioniInStrutture$Params,
    context?: HttpContext,
  ): Observable<StrictHttpResponse<Array<RegioneRes>>> {
    return strutturePubblicheControllerFindManyRegioniInStrutture(
      this.http,
      this.rootUrl,
      params,
      context,
    );
  }

  /**
   * Get regioni strutture.
   *
   *
   *
   * This method provides access only to the response body.
   * To access the full response (for headers, for example), `strutturePubblicheControllerFindManyRegioniInStrutture$Response()` instead.
   *
   * This method doesn't expect any request body.
   */
  strutturePubblicheControllerFindManyRegioniInStrutture(
    params: StrutturePubblicheControllerFindManyRegioniInStrutture$Params,
    context?: HttpContext,
  ): Observable<Array<RegioneRes>> {
    return this.strutturePubblicheControllerFindManyRegioniInStrutture$Response(
      params,
      context,
    ).pipe(
      map(
        (r: StrictHttpResponse<Array<RegioneRes>>): Array<RegioneRes> => r.body,
      ),
    );
  }

  /** Path part for operation `strutturePubblicheControllerFindManyProvinceInStrutture()` */
  static readonly StrutturePubblicheControllerFindManyProvinceInStrutturePath =
    '/public/strutture/luoghi/province';

  /**
   * Get province strutture.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `strutturePubblicheControllerFindManyProvinceInStrutture()` instead.
   *
   * This method doesn't expect any request body.
   */
  strutturePubblicheControllerFindManyProvinceInStrutture$Response(
    params: StrutturePubblicheControllerFindManyProvinceInStrutture$Params,
    context?: HttpContext,
  ): Observable<StrictHttpResponse<Array<ProvinciaRes>>> {
    return strutturePubblicheControllerFindManyProvinceInStrutture(
      this.http,
      this.rootUrl,
      params,
      context,
    );
  }

  /**
   * Get province strutture.
   *
   *
   *
   * This method provides access only to the response body.
   * To access the full response (for headers, for example), `strutturePubblicheControllerFindManyProvinceInStrutture$Response()` instead.
   *
   * This method doesn't expect any request body.
   */
  strutturePubblicheControllerFindManyProvinceInStrutture(
    params: StrutturePubblicheControllerFindManyProvinceInStrutture$Params,
    context?: HttpContext,
  ): Observable<Array<ProvinciaRes>> {
    return this.strutturePubblicheControllerFindManyProvinceInStrutture$Response(
      params,
      context,
    ).pipe(
      map(
        (r: StrictHttpResponse<Array<ProvinciaRes>>): Array<ProvinciaRes> =>
          r.body,
      ),
    );
  }

  /** Path part for operation `strutturePubblicheControllerFindManyCittaInStrutture()` */
  static readonly StrutturePubblicheControllerFindManyCittaInStrutturePath =
    '/public/strutture/luoghi/citta';

  /**
   * Get città strutture.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `strutturePubblicheControllerFindManyCittaInStrutture()` instead.
   *
   * This method doesn't expect any request body.
   */
  strutturePubblicheControllerFindManyCittaInStrutture$Response(
    params: StrutturePubblicheControllerFindManyCittaInStrutture$Params,
    context?: HttpContext,
  ): Observable<StrictHttpResponse<Array<CittaRes>>> {
    return strutturePubblicheControllerFindManyCittaInStrutture(
      this.http,
      this.rootUrl,
      params,
      context,
    );
  }

  /**
   * Get città strutture.
   *
   *
   *
   * This method provides access only to the response body.
   * To access the full response (for headers, for example), `strutturePubblicheControllerFindManyCittaInStrutture$Response()` instead.
   *
   * This method doesn't expect any request body.
   */
  strutturePubblicheControllerFindManyCittaInStrutture(
    params: StrutturePubblicheControllerFindManyCittaInStrutture$Params,
    context?: HttpContext,
  ): Observable<Array<CittaRes>> {
    return this.strutturePubblicheControllerFindManyCittaInStrutture$Response(
      params,
      context,
    ).pipe(
      map((r: StrictHttpResponse<Array<CittaRes>>): Array<CittaRes> => r.body),
    );
  }
}
