<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
  <entity repository-class="App\Entity\EspaceRepository" name="App\Entity\Espace" table="espace" inheritance-type="JOINED">
    <discriminator-column name="type" type="string"/>
    <discriminator-map>
      <discriminator-mapping value="CHAMBRE" class="App\Entity\Chambre"/>
    </discriminator-map>
    <id name="id" type="integer" column="id">
      <generator strategy="IDENTITY"/>
    </id>
    <field name="nom" type="string" column="nom" length="50" precision="0" scale="0" nullable="false"/>
    <field name="etat" type="string" column="etat" length="255" precision="0" scale="0" nullable="true"/>
    <field name="statut" type="string" column="statut" length="255" nullable="true"/>
    <field name="couleurDemandeEnCours" type="string" column="couleurDemandeEnCours" length="255" precision="0" scale="0" nullable="true"/>
    <field name="consigne" type="text" column="consigne" precision="0" scale="0" nullable="true"/>
    <field name="dateDebutConsigne" type="date" column="date_debut_consigne" precision="0" scale="0" nullable="true"/>
    <field name="dateFinConsigne" type="date" column="date_fin_consigne" precision="0" scale="0" nullable="true"/>
    <field name="dateActualisation" type="datetime" column="dateActualisation" precision="0" scale="0" nullable="true"/>
    <field name="maxDemandesParDefautParJour" type="integer" column="maxDemandesParDefautParJour" precision="0" scale="0" nullable="true"/>
    <field name="dateAjout" type="datetime" column="dateAjout" precision="0" scale="0" nullable="false"/>
    <field name="dateModification" type="datetime" column="dateModification" precision="0" scale="0" nullable="false"/>
    <field name="modifiePar" type="text" column="modifiePar" length="100" precision="0" scale="0" nullable="true"/>
    <many-to-one field="structure" target-entity="App\Entity\Structure" fetch="LAZY" >
      <join-columns>
        <join-column name="etablissement_id" referenced-column-name="id" nullable="true"/>
      </join-columns>
    </many-to-one>

    <one-to-many field="fiches" target-entity="FicheEspace" mapped-by="espace">
        <cascade>
            <cascade-persist/>
            <cascade-remove/>
        </cascade>
    </one-to-many>

    <one-to-many field="objetsTrouves" target-entity="ObjetTrouve" mapped-by="espace">
        <cascade>
            <cascade-persist/>
            <cascade-remove/>
        </cascade>
    </one-to-many>

    <one-to-many field="materiels" target-entity="Materiel" mapped-by="espace">
    </one-to-many>

    <many-to-many field="categories" target-entity="Intitule" inversed-by="espaces" fetch="LAZY">
      <join-table name="espaces_categories">
        <join-columns>
          <join-column name="espace_id" referenced-column-name="id"/>
        </join-columns>
        <inverse-join-columns>
          <join-column name="categorie_id" referenced-column-name="id"/>
        </inverse-join-columns>
      </join-table>
    </many-to-many>

    <many-to-one field="typeEspace" target-entity="TypeEspace">
        <join-columns>
            <join-column name="type_espace_id" referenced-column-name="id"/>
        </join-columns>
    </many-to-one>

    <many-to-one field="typeZone" target-entity="TypeZone">
        <join-columns>
            <join-column name="type_zone_id" referenced-column-name="id"/>
        </join-columns>
    </many-to-one>

    <many-to-one field="controleModel" target-entity="ControleModel">
        <join-columns>
            <join-column name="controle_model_id" referenced-column-name="id"/>
        </join-columns>
    </many-to-one>

    <one-to-many field="demandes" target-entity="Demande" mapped-by="espace">
        <cascade>
            <cascade-persist/>
            <cascade-remove/>
        </cascade>
    </one-to-many>

    <many-to-many field="controles" target-entity="Controle" mapped-by="espaces" />


  </entity>
</doctrine-mapping>
