Altimax\Apidae\Core\Entity\SitraObjet:
  type: entity
  table: sitra_objet
  repositoryClass: Altimax\Apidae\Core\Repository\SitraObjet
  indexes:
    commune_idx:
      columns:
        - commune_id
    aspect_idx:
      columns:
        - aspect_id
    structure_gestion_idx:
      columns:
        - structure_gestion_id
    structure_information_idx:
      columns:
        - structure_information_id
    prestataire_idx:
      columns:
        - prestataire_id
    lang_idx:
      columns:
        - lang_id
  inheritanceType: JOINED
  discriminatorColumn:
    name: type_objet_discriminator
    type: string
    length: 255
  discriminatorMap:
    OBJET: Altimax\Apidae\Core\Entity\SitraObjet
    ACTIVITE: Altimax\Apidae\Core\Entity\SitraObjetActivite
    DEGUSTATION: Altimax\Apidae\Core\Entity\SitraObjetDegustation
    DOMAINE_SKIABLE: Altimax\Apidae\Core\Entity\SitraObjetDomaineSkiable
    EQUIPEMENT: Altimax\Apidae\Core\Entity\SitraObjetEquipement
    FETE_ET_MANIFESTATION: Altimax\Apidae\Core\Entity\SitraObjetFeteEtManifestation
    HEBERGEMENT_COLLECTIF: Altimax\Apidae\Core\Entity\SitraObjetHebergementCollectif
    HEBERGEMENT_LOCATIF: Altimax\Apidae\Core\Entity\SitraObjetHebergementLocatif
    HOTELLERIE: Altimax\Apidae\Core\Entity\SitraObjetHotellerie
    HOTELLERIE_PLEIN_AIR: Altimax\Apidae\Core\Entity\SitraObjetHotelleriePleinAir
    PATRIMOINE_NATUREL: Altimax\Apidae\Core\Entity\SitraObjetPatrimoineNaturel
    RESTAURATION: Altimax\Apidae\Core\Entity\SitraObjetRestauration
    SEJOUR_PACKAGE: Altimax\Apidae\Core\Entity\SitraObjetSejourPackage
    STRUCTURE: Altimax\Apidae\Core\Entity\SitraObjetStructure
    TERRITOIRE: Altimax\Apidae\Core\Entity\SitraObjetTerritoire
    COMMERCE_ET_SERVICE: Altimax\Apidae\Core\Entity\SitraObjetCommerceEtService
    PATRIMOINE_CULTUREL: Altimax\Apidae\Core\Entity\SitraObjetPatrimoineCulturel
  id:
    id:
      type: integer
      nullable: false
      unsigned: false
      comment: ''
      id: true
      generator:
        strategy: IDENTITY
  fields:
    idSitra2:
      type: integer
      nullable: false
      unsigned: false
      comment: ''
      column: id_sitra2
    identifierSitra1:
      type: string
      nullable: true
      length: 45
      fixed: false
      comment: ''
      column: identifier_sitra1
    typeObjet:
      type: string
      nullable: true
      length: 45
      fixed: false
      comment: ''
      column: type_objet
    nom:
      type: string
      nullable: true
      length: 255
      fixed: false
      comment: 'à traduire'
    gestion:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: "Gestionnaire de l'objet\nA priori pas utilisé en front\nSerialisation"
    bonsPlans:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: 'a traduire'
      column: bons_plans
    descriptifCourt:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: 'a traduire'
      column: descriptif_court
    descriptifDetaille:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: 'a traduire'
      column: descriptif_detaille
    nomDuLieu:
      type: string
      nullable: true
      length: 255
      fixed: false
      comment: ''
    adresse1:
      type: string
      nullable: true
      length: 255
      fixed: false
      comment: ''
    adresse2:
      type: string
      nullable: true
      length: 255
      fixed: false
      comment: ''
    adresse3:
      type: string
      nullable: true
      length: 255
      fixed: false
      comment: ''
    bureauDistribution:
      type: string
      nullable: true
      length: 45
      fixed: false
      comment: ''
      column: bureau_distribution
    cedex:
      type: string
      nullable: true
      length: 45
      fixed: false
      comment: ''
    codePostal:
      type: string
      nullable: true
      length: 45
      fixed: false
      comment: ''
      column: code_postal
    etat:
      type: string
      nullable: true
      length: 45
      fixed: false
      comment: "a quoi correspond ce champ ?\n"
    informationsLegales:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: 'serialisation du noeud Sitra : on retrouve codeApeNaf, modeGestion, numeroAgrementLicence, rcs, siret...'
      column: informations_legales
    altitude:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
    altitudeMaxi:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
      column: altitude_maxi
    altitudeMaxiHebergement:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
      column: altitude_maxi_hebergement
    altitudeMini:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
      column: altitude_mini
    altitudeMiniHebergement:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
      column: altitude_mini_hebergement
    complementGeoloc:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: ''
      column: complement_geoloc
    latitude:
      type: float
      nullable: true
      precision: 10
      scale: 0
      comment: ''
    longitude:
      type: float
      nullable: true
      precision: 10
      scale: 0
      comment: ''
    reperePlan:
      type: string
      nullable: true
      length: 255
      fixed: false
      comment: ''
      column: repere_plan
    valideGeoloc:
      type: boolean
      nullable: true
      comment: ''
      column: valide_geoloc
    complementLien:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: 'a traduire'
      column: complement_lien
    tailleGroupeMin:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
      column: taille_groupe_min
    tailleGroupeMax:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
      column: taille_groupe_max
    nombrePersonnesMinimum:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
      column: nombre_personnes_minimum
    nombrePersonnesMaximum:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
      column: nombre_personnes_maximum
    ageMin:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
      column: age_min
    ageMax:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
      column: age_max
    uniteAgeMin:
      type: string
      nullable: true
      length: null
      fixed: false
      comment: ''
      column: unite_age_min
    uniteAgeMax:
      type: string
      nullable: true
      length: null
      fixed: false
      comment: ''
      column: unite_age_max
    complementAccueil:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: 'a traduire'
      column: complement_accueil
    animauxAcceptes:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: ''
      column: animaux_acceptes
    animauxAcceptesSupplement:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: ''
      column: animaux_acceptes_supplement
    descriptifAnimauxAcceptes:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: ''
      column: descriptif_animaux_acceptes
    periodeEnClair:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: 'a traduire'
      column: periode_en_clair
    tarifsEnClair:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: 'à traduire'
      column: tarifs_en_clair
    complementTarif:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: 'à traduire'
      column: complement_tarif
    gratuit:
      type: boolean
      nullable: true
      comment: ''
    isPrestataireActivites:
      type: boolean
      nullable: true
      comment: ''
      column: is_prestataire_activites
    complementReservation:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: 'à traduire'
      column: complement_reservation
    organismesReservation:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: 'serialization, @TODO : sortir dans une table autonome si besoin'
      column: organismes_reservation
    tourismeAffairesEnabled:
      type: boolean
      nullable: true
      comment: ''
      column: tourisme_affaires_enabled
    nombreSallesReunionEquipees:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
      column: nombre_salles_reunion_equipees
    capaciteMaxAccueil:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
      column: capacite_max_accueil
    nombreSallesModulables:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
      column: nombre_salles_modulables
    ordre:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
      default: '0'
      column: ordre
    searchCapacite:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
      default: null
      column: search_capacite
    searchNombreChambres:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
      default: null
      column: search_nombre_chambres
    searchTarif:
      type: float
      nullable: true
      unsigned: false
      comment: ''
      default: null
      column: search_tarif
    searchClassement:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
      default: null
      column: search_classement
    searchDureeJournaliere:
      type: string
      nullable: true
      length: 45
      fixed: false
      comment: ''
      column: search_duree_journaliere
    tripadvisorId:
      type: integer
      nullable: true
      unsigned: false
      comment: ''
      default: null
      column: tripadvisor_id
    isAspectHiver:
      type: boolean
      nullable: true
      default: 0
      comment: ''
      column: is_aspect_hiver
    isAspectEte:
      type: boolean
      default: 0
      nullable: true
      comment: ''
      column: is_aspect_ete
    isAspectHandicap:
      type: boolean
      default: 0
      nullable: true
      comment: ''
      column: is_aspect_handicap
    isAspectGroupes:
      type: boolean
      default: 0
      nullable: true
      comment: ''
      column: is_aspect_groupes
    isAspectTourismeAffaires:
      type: boolean
      default: 0
      nullable: true
      comment: ''
      column: is_aspect_tourisme_affaires
    isAspectPrestataireActivites:
      type: boolean
      default: 0
      nullable: true
      comment: ''
      column: is_aspect_prestataire_activites
    toDelete:
      type: boolean
      default: 0
      nullable: true
      comment: ''
      column: to_delete
    url:
      type: string
      nullable: true
      length: 255
      comment: 'url vers objet'
    isLinked:
      type: boolean
      nullable: true
      default: 0
      comment: ''
      column: is_linked
    descriptifHandicapMoteur:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: 'a traduire'
      column: descriptif_handicap_moteur
    descriptifHandicapAuditif:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: 'a traduire'
      column: descriptif_handicap_auditif
    descriptifHandicapVisuel:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: 'a traduire'
      column: descriptif_handicap_visuel
    descriptifHandicapMental:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: 'a traduire'
      column: descriptif_handicap_mental
    leTarifComprend:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: ''
      column: tarif_comprend
    leTarifNeComprendPas:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: ''
      column: tarif_comprend_pas
    indicationTarif:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: ''
      column: indication_tarif
    ouvertTouteLAnnee:
      type: text
      nullable: true
      length: null
      fixed: false
      comment: ''
      column: ouvert_toute_l_annee
  oneToMany:
    objetmedias:
      targetEntity: Altimax\Apidae\Core\Entity\SitraObjetMedia
      cascade: [ "persist", "remove" ]
      mappedBy: objet
      orphanRemoval: true
    periodeTarif:
      targetEntity: Altimax\Apidae\Core\Entity\SitraPeriodeTarif
      cascade: [ "persist", "remove" ]
      mappedBy: objet
      orphanRemoval: true
    periodeOuverture:
      targetEntity: Altimax\Apidae\Core\Entity\SitraPeriodeOuverture
      cascade: [ "persist", "remove" ]
      mappedBy: objet
      orphanRemoval: true
    visite:
      targetEntity: Altimax\Apidae\Core\Entity\SitraVisite
      cascade: [ "persist", "remove" ]
      mappedBy: objet
      orphanRemoval: true
    salleReunion:
      targetEntity: Altimax\Apidae\Core\Entity\SitraSalleReunion
      cascade: [ "persist", "remove" ]
      mappedBy: objet
      orphanRemoval: true
    donneePrivee:
      targetEntity: Altimax\Apidae\Core\Entity\SitraDonneePrivee
      cascade: [ "persist", "remove" ]
      mappedBy: objet
      orphanRemoval: true
    childObjects:
      targetEntity: Altimax\Apidae\Core\Entity\SitraObjetLie
      cascade: [ "persist", "remove" ]
      mappedBy: childObject
      orphanRemoval: true
    parentObjects:
      targetEntity: Altimax\Apidae\Core\Entity\SitraObjetLie
      cascade: [ "persist", "remove" ]
      mappedBy: parentObject
      orphanRemoval: true
    activiteProposees:
      targetEntity: Altimax\Apidae\Core\Entity\SitraObjet
      mappedBy: prestataire
      orphanRemoval: true
    structureInformationChildren:
      targetEntity: Altimax\Apidae\Core\Entity\SitraObjet
      mappedBy: structureInformation
      orphanRemoval: true
    structureGestionChildren:
      targetEntity: Altimax\Apidae\Core\Entity\SitraObjet
      mappedBy: structureGestion
      orphanRemoval: true
    dateOuverture:
      targetEntity: Altimax\Apidae\Core\Entity\SitraDateOuverture
      cascade: [ "persist", "remove" ]
      mappedBy: objet
    openSystem:
      targetEntity: Altimax\Apidae\Core\Entity\SitraOpenSystem
      cascade: [ "persist", "remove" ]
      mappedBy: objet
      orphanRemoval: true
    openEdit:
      targetEntity: Altimax\Apidae\Core\Entity\SitraOpenEdit
      cascade: [ "persist", "remove" ]
      mappedBy: objet
      orphanRemoval: true
    elloha:
      targetEntity: Altimax\Apidae\Core\Entity\SitraElloha
      cascade: [ "persist", "remove" ]
      mappedBy: objet
      orphanRemoval: true
    descriptifsThematises:
      targetEntity: Altimax\Apidae\Core\Entity\SitraDescriptifsThematises
      cascade: [ "persist", "remove" ]
      mappedBy: objet
      orphanRemoval: true
    agrement:
      targetEntity: Altimax\Apidae\Core\Entity\SitraAgrement
      cascade: [ "persist", "remove" ]
      mappedBy: objet
      orphanRemoval: true
  manyToOne:
    prestataire:
      targetEntity: Altimax\Apidae\Core\Entity\SitraObjet
      cascade: [ "persist", "remove" ]
      mappedBy: objet
      inversedBy: activiteProposees
      joinColumns:
        prestataire_id:
          referencedColumnName: id
          onDelete: SET NULL
      orphanRemoval: true
    lang:
      targetEntity: Altimax\Apidae\Core\Entity\SitraLangue
      cascade: { }
      mappedBy: null
      inversedBy: null
      joinColumns:
        lang_id:
          referencedColumnName: id
          onDelete: CASCADE
      orphanRemoval: false
    structureInformation:
      targetEntity: Altimax\Apidae\Core\Entity\SitraObjet
      cascade: [ "persist", "remove" ]
      mappedBy: objet
      inversedBy: structureInformationChildren
      joinColumns:
        structure_information_id:
          referencedColumnName: id
          onDelete: SET NULL
      orphanRemoval: true
    structureGestion:
      targetEntity: Altimax\Apidae\Core\Entity\SitraObjet
      cascade: [ "persist", "remove" ]
      mappedBy: objet
      inversedBy: structureGestionChildren
      joinColumns:
        structure_gestion_id:
          referencedColumnName: id
          onDelete: SET NULL
      orphanRemoval: true
    commune:
      targetEntity: Altimax\Apidae\Core\Entity\SitraCommune
      cascade: { }
      mappedBy: objet
      inversedBy: null
      joinColumns:
        commune_id:
          referencedColumnName: id
          onDelete: CASCADE
      orphanRemoval: true
    aspect:
      targetEntity: Altimax\Apidae\Core\Entity\SitraAspect
      cascade: [ "persist" ]
      mappedBy: objet
      inversedBy: null
      joinColumns:
        aspect_id:
          referencedColumnName: id
          onDelete: CASCADE
      orphanRemoval: false
    typeObjetId:
      targetEntity: Altimax\Apidae\Core\Entity\SitraAdminTypeObjet
      cascade: [ "persist" ]
      mappedBy: objet
      inversedBy: null
      joinColumns:
        type_objet_id:
          referencedColumnName: id
          onDelete: CASCADE
      orphanRemoval: false
  manyToMany:
    perimetreGeographique:
      targetEntity: Altimax\Apidae\Core\Entity\SitraCommune
      cascade: { }
      mappedBy: null
      fetch: EXTRA_LAZY
      joinTable:
        name: sitra_liaison_objet_commune
        joinColumns:
          objet_id:
            referencedColumnName: id
            onDelete: CASCADE
        inverseJoinColumns:
          commune_id:
            referencedColumnName: id
            onDelete: CASCADE
      orderBy: null
    contact:
      targetEntity: Altimax\Apidae\Core\Entity\SitraContact
      cascade: { }
      mappedBy: null
      inversedBy: objet
      joinTable:
        name: sitra_liaison_objet_contact
        joinColumns:
          objet_id:
            referencedColumnName: id
            onDelete: CASCADE
        inverseJoinColumns:
          contact_id:
            referencedColumnName: id
            onDelete: CASCADE
      orderBy: null
      orphanRemoval: true
    critereInterne:
      targetEntity: Altimax\Apidae\Core\Entity\SitraCritereInterne
      cascade: { }
      mappedBy: null
      inversedBy: objet
      joinTable:
        name: sitra_liaison_objet_critere_interne
        joinColumns:
          objet_id:
            referencedColumnName: id
            onDelete: CASCADE
        inverseJoinColumns:
          critere_interne_id:
            referencedColumnName: id
            onDelete: CASCADE
      orderBy: null
    objetDomaineLie:
      targetEntity: Altimax\Apidae\Core\Entity\SitraObjetDomaineSkiable
      cascade: { }
      mappedBy: null
      inversedBy: objet
      joinTable:
        name: sitra_liaison_objet_domaine
        joinColumns:
          objet_id:
            referencedColumnName: id
            onDelete: CASCADE
        inverseJoinColumns:
          objet_domaine_lie_id:
            referencedColumnName: id
            onDelete: CASCADE
      orderBy: null
    objetEgpLie:
      targetEntity: Altimax\Apidae\Core\Entity\SitraObjet
      cascade: { }
      mappedBy: null
      joinTable:
        name: sitra_liaison_objet_egp
        joinColumns:
          objet_id:
            referencedColumnName: id
            onDelete: CASCADE
        inverseJoinColumns:
          objet_egp_lie_id:
            referencedColumnName: id
            onDelete: CASCADE
      orderBy: null
    elementReference:
      targetEntity: Altimax\Apidae\Core\Entity\SitraElementReference
      cascade: { }
      mappedBy: null
      inversedBy: objet
      joinTable:
        name: sitra_liaison_objet_element_reference
        joinColumns:
          objet_id:
            referencedColumnName: id
            onDelete: CASCADE
        inverseJoinColumns:
          element_reference_id:
            referencedColumnName: id
            onDelete: CASCADE
      orderBy: null
    moyenCommunication:
      targetEntity: Altimax\Apidae\Core\Entity\SitraMoyenCommunication
      cascade: { }
      mappedBy: null
      inversedBy: objet
      joinTable:
        name: sitra_liaison_objet_moyen_communication
        joinColumns:
          objet_id:
            referencedColumnName: id
            onDelete: CASCADE
        inverseJoinColumns:
          moyen_communication_id:
            referencedColumnName: id
            onDelete: CASCADE
      orderBy: null
    objetSousDomaineLie:
      targetEntity: Altimax\Apidae\Core\Entity\SitraObjet
      cascade: { }
      mappedBy: null
      joinTable:
        name: sitra_liaison_objet_sous_domaine
        joinColumns:
          objet_id:
            referencedColumnName: id
            onDelete: CASCADE
        inverseJoinColumns:
          objet_sous_domaine_lie_id:
            referencedColumnName: id
            onDelete: CASCADE
      orderBy: null
    territoire:
      targetEntity: Altimax\Apidae\Core\Entity\SitraTerritoire
      cascade: [ "persist", "remove" ]
      mappedBy: null
      inversedBy: objet
      joinTable:
        name: sitra_liaison_objet_territoire
        joinColumns:
          objet_id:
            referencedColumnName: id
            onDelete: CASCADE
        inverseJoinColumns:
          territoire_id:
            referencedColumnName: id
            onDelete: CASCADE
      orderBy: null
    selection:
      targetEntity: Altimax\Apidae\Core\Entity\SitraSelection
      cascade: [ "persist", "remove" ]
      mappedBy: objet
  lifecycleCallbacks:
    postLoad: [ updateApidaeObject ]
