/* 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 { ConvenzioniStrutture } from '../models/convenzioni-strutture';
import { DownloadFile } from '../models/download-file';
import { FileDetails } from '../models/file-details';
import { GenericMessageDto } from '../models/generic-message-dto';
import { Struttura } from '../models/struttura';
import { StrutturaExcerptRes } from '../models/struttura-excerpt-res';
import { struttureControllerCreateConvenzione } from '../fn/strutture/strutture-controller-create-convenzione';
import { StruttureControllerCreateConvenzione$Params } from '../fn/strutture/strutture-controller-create-convenzione';
import { struttureControllerCreateStruttura } from '../fn/strutture/strutture-controller-create-struttura';
import { StruttureControllerCreateStruttura$Params } from '../fn/strutture/strutture-controller-create-struttura';
import { struttureControllerDeleteAllegatoConvenzione } from '../fn/strutture/strutture-controller-delete-allegato-convenzione';
import { StruttureControllerDeleteAllegatoConvenzione$Params } from '../fn/strutture/strutture-controller-delete-allegato-convenzione';
import { struttureControllerDownloadAllegatoConvenzione } from '../fn/strutture/strutture-controller-download-allegato-convenzione';
import { StruttureControllerDownloadAllegatoConvenzione$Params } from '../fn/strutture/strutture-controller-download-allegato-convenzione';
import { struttureControllerExportStrutture } from '../fn/strutture/strutture-controller-export-strutture';
import { StruttureControllerExportStrutture$Params } from '../fn/strutture/strutture-controller-export-strutture';
import { struttureControllerFindManyStrutture } from '../fn/strutture/strutture-controller-find-many-strutture';
import { StruttureControllerFindManyStrutture$Params } from '../fn/strutture/strutture-controller-find-many-strutture';
import { struttureControllerFindManyStruttureByAutocomplete } from '../fn/strutture/strutture-controller-find-many-strutture-by-autocomplete';
import { StruttureControllerFindManyStruttureByAutocomplete$Params } from '../fn/strutture/strutture-controller-find-many-strutture-by-autocomplete';
import { struttureControllerFindManyTipiGestioni } from '../fn/strutture/strutture-controller-find-many-tipi-gestioni';
import { StruttureControllerFindManyTipiGestioni$Params } from '../fn/strutture/strutture-controller-find-many-tipi-gestioni';
import { struttureControllerFindManyTipiStrutture } from '../fn/strutture/strutture-controller-find-many-tipi-strutture';
import { StruttureControllerFindManyTipiStrutture$Params } from '../fn/strutture/strutture-controller-find-many-tipi-strutture';
import { struttureControllerGetAllegatiConvenzione } from '../fn/strutture/strutture-controller-get-allegati-convenzione';
import { StruttureControllerGetAllegatiConvenzione$Params } from '../fn/strutture/strutture-controller-get-allegati-convenzione';
import { struttureControllerGetConvenzioniByStrutturaId } from '../fn/strutture/strutture-controller-get-convenzioni-by-struttura-id';
import { StruttureControllerGetConvenzioniByStrutturaId$Params } from '../fn/strutture/strutture-controller-get-convenzioni-by-struttura-id';
import { struttureControllerGetOneStrutturaById } from '../fn/strutture/strutture-controller-get-one-struttura-by-id';
import { StruttureControllerGetOneStrutturaById$Params } from '../fn/strutture/strutture-controller-get-one-struttura-by-id';
import { struttureControllerUpdateConvenzione } from '../fn/strutture/strutture-controller-update-convenzione';
import { StruttureControllerUpdateConvenzione$Params } from '../fn/strutture/strutture-controller-update-convenzione';
import { struttureControllerUpdateStruttura } from '../fn/strutture/strutture-controller-update-struttura';
import { StruttureControllerUpdateStruttura$Params } from '../fn/strutture/strutture-controller-update-struttura';
import { struttureControllerUpdateVisibilitaStruttura } from '../fn/strutture/strutture-controller-update-visibilita-struttura';
import { StruttureControllerUpdateVisibilitaStruttura$Params } from '../fn/strutture/strutture-controller-update-visibilita-struttura';
import { struttureControllerUploadFiles } from '../fn/strutture/strutture-controller-upload-files';
import { StruttureControllerUploadFiles$Params } from '../fn/strutture/strutture-controller-upload-files';
import { TipoGestione } from '../models/tipo-gestione';
import { TipoStruttura } from '../models/tipo-struttura';
import { VisibilitaStruttura } from '../models/visibilita-struttura';

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

  /** Path part for operation `struttureControllerFindManyStruttureByAutocomplete()` */
  static readonly StruttureControllerFindManyStruttureByAutocompletePath = '/';

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

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

  /** Path part for operation `struttureControllerFindManyStrutture()` */
  static readonly StruttureControllerFindManyStrutturePath = '/';

  /**
   * Get strutture.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `struttureControllerFindManyStrutture()` instead.
   *
   * This method sends `application/json` and handles request body of type `application/json`.
   */
  struttureControllerFindManyStrutture$Response(
    params: StruttureControllerFindManyStrutture$Params,
    context?: HttpContext,
  ): Observable<StrictHttpResponse<Array<StrutturaExcerptRes>>> {
    return struttureControllerFindManyStrutture(
      this.http,
      this.rootUrl,
      params,
      context,
    );
  }

  /**
   * Get strutture.
   *
   *
   *
   * This method provides access only to the response body.
   * To access the full response (for headers, for example), `struttureControllerFindManyStrutture$Response()` instead.
   *
   * This method sends `application/json` and handles request body of type `application/json`.
   */
  struttureControllerFindManyStrutture(
    params: StruttureControllerFindManyStrutture$Params,
    context?: HttpContext,
  ): Observable<Array<StrutturaExcerptRes>> {
    return this.struttureControllerFindManyStrutture$Response(
      params,
      context,
    ).pipe(
      map(
        (
          r: StrictHttpResponse<Array<StrutturaExcerptRes>>,
        ): Array<StrutturaExcerptRes> => r.body,
      ),
    );
  }

  /** Path part for operation `struttureControllerCreateStruttura()` */
  static readonly StruttureControllerCreateStrutturaPath = '/add';

  /**
   * Add struttura.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `struttureControllerCreateStruttura()` instead.
   *
   * This method sends `application/json` and handles request body of type `application/json`.
   */
  struttureControllerCreateStruttura$Response(
    params: StruttureControllerCreateStruttura$Params,
    context?: HttpContext,
  ): Observable<StrictHttpResponse<Struttura>> {
    return struttureControllerCreateStruttura(
      this.http,
      this.rootUrl,
      params,
      context,
    );
  }

  /**
   * Add struttura.
   *
   *
   *
   * This method provides access only to the response body.
   * To access the full response (for headers, for example), `struttureControllerCreateStruttura$Response()` instead.
   *
   * This method sends `application/json` and handles request body of type `application/json`.
   */
  struttureControllerCreateStruttura(
    params: StruttureControllerCreateStruttura$Params,
    context?: HttpContext,
  ): Observable<Struttura> {
    return this.struttureControllerCreateStruttura$Response(
      params,
      context,
    ).pipe(map((r: StrictHttpResponse<Struttura>): Struttura => r.body));
  }

  /** Path part for operation `struttureControllerGetOneStrutturaById()` */
  static readonly StruttureControllerGetOneStrutturaByIdPath = '/id/{id}';

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

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

  /** Path part for operation `struttureControllerUpdateStruttura()` */
  static readonly StruttureControllerUpdateStrutturaPath = '/id/{id}';

  /**
   * Edit struttura.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `struttureControllerUpdateStruttura()` instead.
   *
   * This method sends `application/json` and handles request body of type `application/json`.
   */
  struttureControllerUpdateStruttura$Response(
    params: StruttureControllerUpdateStruttura$Params,
    context?: HttpContext,
  ): Observable<StrictHttpResponse<Struttura>> {
    return struttureControllerUpdateStruttura(
      this.http,
      this.rootUrl,
      params,
      context,
    );
  }

  /**
   * Edit struttura.
   *
   *
   *
   * This method provides access only to the response body.
   * To access the full response (for headers, for example), `struttureControllerUpdateStruttura$Response()` instead.
   *
   * This method sends `application/json` and handles request body of type `application/json`.
   */
  struttureControllerUpdateStruttura(
    params: StruttureControllerUpdateStruttura$Params,
    context?: HttpContext,
  ): Observable<Struttura> {
    return this.struttureControllerUpdateStruttura$Response(
      params,
      context,
    ).pipe(map((r: StrictHttpResponse<Struttura>): Struttura => r.body));
  }

  /** Path part for operation `struttureControllerExportStrutture()` */
  static readonly StruttureControllerExportStrutturePath = '/export';

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

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

  /** Path part for operation `struttureControllerGetConvenzioniByStrutturaId()` */
  static readonly StruttureControllerGetConvenzioniByStrutturaIdPath =
    '/id/{id}/convenzioni';

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

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

  /** Path part for operation `struttureControllerCreateConvenzione()` */
  static readonly StruttureControllerCreateConvenzionePath =
    '/id/{id}/convenzioni';

  /**
   * Add convenzione.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `struttureControllerCreateConvenzione()` instead.
   *
   * This method sends `application/json` and handles request body of type `application/json`.
   */
  struttureControllerCreateConvenzione$Response(
    params: StruttureControllerCreateConvenzione$Params,
    context?: HttpContext,
  ): Observable<StrictHttpResponse<ConvenzioniStrutture>> {
    return struttureControllerCreateConvenzione(
      this.http,
      this.rootUrl,
      params,
      context,
    );
  }

  /**
   * Add convenzione.
   *
   *
   *
   * This method provides access only to the response body.
   * To access the full response (for headers, for example), `struttureControllerCreateConvenzione$Response()` instead.
   *
   * This method sends `application/json` and handles request body of type `application/json`.
   */
  struttureControllerCreateConvenzione(
    params: StruttureControllerCreateConvenzione$Params,
    context?: HttpContext,
  ): Observable<ConvenzioniStrutture> {
    return this.struttureControllerCreateConvenzione$Response(
      params,
      context,
    ).pipe(
      map(
        (r: StrictHttpResponse<ConvenzioniStrutture>): ConvenzioniStrutture =>
          r.body,
      ),
    );
  }

  /** Path part for operation `struttureControllerUpdateConvenzione()` */
  static readonly StruttureControllerUpdateConvenzionePath =
    '/id/{id}/convenzioni/{idConvenzione}';

  /**
   * Edit convenzione.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `struttureControllerUpdateConvenzione()` instead.
   *
   * This method sends `application/json` and handles request body of type `application/json`.
   */
  struttureControllerUpdateConvenzione$Response(
    params: StruttureControllerUpdateConvenzione$Params,
    context?: HttpContext,
  ): Observable<StrictHttpResponse<ConvenzioniStrutture>> {
    return struttureControllerUpdateConvenzione(
      this.http,
      this.rootUrl,
      params,
      context,
    );
  }

  /**
   * Edit convenzione.
   *
   *
   *
   * This method provides access only to the response body.
   * To access the full response (for headers, for example), `struttureControllerUpdateConvenzione$Response()` instead.
   *
   * This method sends `application/json` and handles request body of type `application/json`.
   */
  struttureControllerUpdateConvenzione(
    params: StruttureControllerUpdateConvenzione$Params,
    context?: HttpContext,
  ): Observable<ConvenzioniStrutture> {
    return this.struttureControllerUpdateConvenzione$Response(
      params,
      context,
    ).pipe(
      map(
        (r: StrictHttpResponse<ConvenzioniStrutture>): ConvenzioniStrutture =>
          r.body,
      ),
    );
  }

  /** Path part for operation `struttureControllerGetAllegatiConvenzione()` */
  static readonly StruttureControllerGetAllegatiConvenzionePath =
    '/id/{id}/allegati/convenzioni/{idConvenzione}';

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

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

  /** Path part for operation `struttureControllerDownloadAllegatoConvenzione()` */
  static readonly StruttureControllerDownloadAllegatoConvenzionePath =
    '/id/{id}/allegati/convenzioni/{idConvenzione}/download/{fileName}';

  /**
   * Download allegato convenzione.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `struttureControllerDownloadAllegatoConvenzione()` instead.
   *
   * This method doesn't expect any request body.
   */
  struttureControllerDownloadAllegatoConvenzione$Response(
    params: StruttureControllerDownloadAllegatoConvenzione$Params,
    context?: HttpContext,
  ): Observable<StrictHttpResponse<DownloadFile>> {
    return struttureControllerDownloadAllegatoConvenzione(
      this.http,
      this.rootUrl,
      params,
      context,
    );
  }

  /**
   * Download allegato convenzione.
   *
   *
   *
   * This method provides access only to the response body.
   * To access the full response (for headers, for example), `struttureControllerDownloadAllegatoConvenzione$Response()` instead.
   *
   * This method doesn't expect any request body.
   */
  struttureControllerDownloadAllegatoConvenzione(
    params: StruttureControllerDownloadAllegatoConvenzione$Params,
    context?: HttpContext,
  ): Observable<DownloadFile> {
    return this.struttureControllerDownloadAllegatoConvenzione$Response(
      params,
      context,
    ).pipe(map((r: StrictHttpResponse<DownloadFile>): DownloadFile => r.body));
  }

  /** Path part for operation `struttureControllerUploadFiles()` */
  static readonly StruttureControllerUploadFilesPath =
    '/id/{id}/allegati/convenzioni/{idConvenzione}/upload';

  /**
   * Upload allegati convenzione.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `struttureControllerUploadFiles()` instead.
   *
   * This method sends `multipart/form-data` and handles request body of type `multipart/form-data`.
   */
  struttureControllerUploadFiles$Response(
    params: StruttureControllerUploadFiles$Params,
    context?: HttpContext,
  ): Observable<StrictHttpResponse<GenericMessageDto>> {
    return struttureControllerUploadFiles(
      this.http,
      this.rootUrl,
      params,
      context,
    );
  }

  /**
   * Upload allegati convenzione.
   *
   *
   *
   * This method provides access only to the response body.
   * To access the full response (for headers, for example), `struttureControllerUploadFiles$Response()` instead.
   *
   * This method sends `multipart/form-data` and handles request body of type `multipart/form-data`.
   */
  struttureControllerUploadFiles(
    params: StruttureControllerUploadFiles$Params,
    context?: HttpContext,
  ): Observable<GenericMessageDto> {
    return this.struttureControllerUploadFiles$Response(params, context).pipe(
      map(
        (r: StrictHttpResponse<GenericMessageDto>): GenericMessageDto => r.body,
      ),
    );
  }

  /** Path part for operation `struttureControllerDeleteAllegatoConvenzione()` */
  static readonly StruttureControllerDeleteAllegatoConvenzionePath =
    '/id/{id}/allegati/convenzioni/{idConvenzione}/delete/{fileName}';

  /**
   * Delete allegati convenzione.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `struttureControllerDeleteAllegatoConvenzione()` instead.
   *
   * This method doesn't expect any request body.
   */
  struttureControllerDeleteAllegatoConvenzione$Response(
    params: StruttureControllerDeleteAllegatoConvenzione$Params,
    context?: HttpContext,
  ): Observable<StrictHttpResponse<GenericMessageDto>> {
    return struttureControllerDeleteAllegatoConvenzione(
      this.http,
      this.rootUrl,
      params,
      context,
    );
  }

  /**
   * Delete allegati convenzione.
   *
   *
   *
   * This method provides access only to the response body.
   * To access the full response (for headers, for example), `struttureControllerDeleteAllegatoConvenzione$Response()` instead.
   *
   * This method doesn't expect any request body.
   */
  struttureControllerDeleteAllegatoConvenzione(
    params: StruttureControllerDeleteAllegatoConvenzione$Params,
    context?: HttpContext,
  ): Observable<GenericMessageDto> {
    return this.struttureControllerDeleteAllegatoConvenzione$Response(
      params,
      context,
    ).pipe(
      map(
        (r: StrictHttpResponse<GenericMessageDto>): GenericMessageDto => r.body,
      ),
    );
  }

  /** Path part for operation `struttureControllerFindManyTipiGestioni()` */
  static readonly StruttureControllerFindManyTipiGestioniPath =
    '/tipi-gestioni';

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

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

  /** Path part for operation `struttureControllerFindManyTipiStrutture()` */
  static readonly StruttureControllerFindManyTipiStrutturePath =
    '/tipi-strutture';

  /**
   * Get tipi strutture.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `struttureControllerFindManyTipiStrutture()` instead.
   *
   * This method doesn't expect any request body.
   */
  struttureControllerFindManyTipiStrutture$Response(
    params?: StruttureControllerFindManyTipiStrutture$Params,
    context?: HttpContext,
  ): Observable<StrictHttpResponse<Array<TipoStruttura>>> {
    return struttureControllerFindManyTipiStrutture(
      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), `struttureControllerFindManyTipiStrutture$Response()` instead.
   *
   * This method doesn't expect any request body.
   */
  struttureControllerFindManyTipiStrutture(
    params?: StruttureControllerFindManyTipiStrutture$Params,
    context?: HttpContext,
  ): Observable<Array<TipoStruttura>> {
    return this.struttureControllerFindManyTipiStrutture$Response(
      params,
      context,
    ).pipe(
      map(
        (r: StrictHttpResponse<Array<TipoStruttura>>): Array<TipoStruttura> =>
          r.body,
      ),
    );
  }

  /** Path part for operation `struttureControllerUpdateVisibilitaStruttura()` */
  static readonly StruttureControllerUpdateVisibilitaStrutturaPath =
    '/id/{id}/visibilita';

  /**
   * Edit visibilità struttura.
   *
   *
   *
   * This method provides access to the full `HttpResponse`, allowing access to response headers.
   * To access only the response body, use `struttureControllerUpdateVisibilitaStruttura()` instead.
   *
   * This method sends `application/json` and handles request body of type `application/json`.
   */
  struttureControllerUpdateVisibilitaStruttura$Response(
    params: StruttureControllerUpdateVisibilitaStruttura$Params,
    context?: HttpContext,
  ): Observable<StrictHttpResponse<Array<VisibilitaStruttura>>> {
    return struttureControllerUpdateVisibilitaStruttura(
      this.http,
      this.rootUrl,
      params,
      context,
    );
  }

  /**
   * Edit visibilità struttura.
   *
   *
   *
   * This method provides access only to the response body.
   * To access the full response (for headers, for example), `struttureControllerUpdateVisibilitaStruttura$Response()` instead.
   *
   * This method sends `application/json` and handles request body of type `application/json`.
   */
  struttureControllerUpdateVisibilitaStruttura(
    params: StruttureControllerUpdateVisibilitaStruttura$Params,
    context?: HttpContext,
  ): Observable<Array<VisibilitaStruttura>> {
    return this.struttureControllerUpdateVisibilitaStruttura$Response(
      params,
      context,
    ).pipe(
      map(
        (
          r: StrictHttpResponse<Array<VisibilitaStruttura>>,
        ): Array<VisibilitaStruttura> => r.body,
      ),
    );
  }
}
