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

import { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';
import { Observable } from 'rxjs';
import { filter, map } from 'rxjs/operators';
import { StrictHttpResponse } from '../../strict-http-response';
import { RequestBuilder } from '../../request-builder';

import { StrutturePubblicheResDto } from '../../models/strutture-pubbliche-res-dto';

export interface StrutturePubblicheControllerFindManyStrutture$Params {
  /**
   * Nome della struttura
   */
  nome?: string | null;

  /**
   * Indirizzo calcola distanza da
   */
  indirizzo?: string | null;

  /**
   * Luogo calcola distanza da
   */
  luogo: string;

  /**
   * Tipo luogo calcola distanza da
   */
  'luogo.tipo': string;

  /**
   * Tipo della struttura
   */
  tipoStruttura?: string | null;
}

export function strutturePubblicheControllerFindManyStrutture(
  http: HttpClient,
  rootUrl: string,
  params: StrutturePubblicheControllerFindManyStrutture$Params,
  context?: HttpContext,
): Observable<StrictHttpResponse<Array<StrutturePubblicheResDto>>> {
  const rb = new RequestBuilder(
    rootUrl,
    strutturePubblicheControllerFindManyStrutture.PATH,
    'get',
  );
  if (params) {
    rb.query('nome', params.nome, {});
    rb.query('indirizzo', params.indirizzo, {});
    rb.query('luogo', params.luogo, {});
    rb.query('luogo.tipo', params['luogo.tipo'], {});
    rb.query('tipoStruttura', params.tipoStruttura, {});
  }

  return http
    .request(
      rb.build({ responseType: 'json', accept: 'application/json', context }),
    )
    .pipe(
      filter((r: any): r is HttpResponse<any> => r instanceof HttpResponse),
      map((r: HttpResponse<any>) => {
        return r as StrictHttpResponse<Array<StrutturePubblicheResDto>>;
      }),
    );
}

strutturePubblicheControllerFindManyStrutture.PATH = '/public/strutture';
