# Doc Entreprise

## Changer le manual mode d'une entreprise

    Le user doit avoir comme rôle Superadmin.

    Si l'entity à un manual mode en true il changera en false et vice versa

        PUT /api/dmo/entities/{id}/switch_manual_mode

    params: id:

    retour json

        {status: "success", code: 200, message: "manual mode switch to true / false"}




















## Affectations d'habilitation sur les entreprise et bailleurs
  3 types de droit sur une entreprise/bailleur :
  * `reader`
    * voir l'entreprise/bailleur dans son arborescence REX
  * `user`
    * les droits de `reader`
    * peut modifier les informations de l'entreprise
  * `administrator` :
    * les droits de `user`
    * créer des habilitation sur les entreprises/bailleurs dont il a les droits

  Pour créer une habilitation sur une entreprise ou bailleur :

      POST /api/dmo/user_rights
        data: {
          attributes: {
              right: 'administrator',
              type: 'entity',
              entity_id: entity_id,
              user_id: user_id,
            }
          }
        }

  Pour supprimer une habilitations 

    DELETE /api/dmo/user_rights/:id

  Pour récupérer les habilitations, il existe 2 méthodes :

  * Sur les entity et lessor un champs `current_user_right`
  * Une route GET /api/dmo/user_rights avec la possibilité de filtrer par entity_id, lessor_id, user_id, right, type


## Entreprises

### Validation des matricules

**Ce modèle est nommé `EntityValidation`**

La validation de matricule est le fait pour une entrprise de valider qu'un salarier travaille bien pour elle et que le contrat est toujours actif.

Pour ce qui est des validations via matricule, cela concerne surtout les demandes et non les requalifications.
Le matricule n'étant pas un champ SNE, on ne l'aura pas pour une requalification, donc on passe forcément par l'attente d'une validation manuelle (cas par défaut).

La mise à jour de la date de fin de contrat declenche un job (à date) qui enlèvera l'entreprise de la demande et invalidera la candidature en cours

#### Impact score

Lors du calcul de score, si un candidat a une EntityValidation avec les champs `:validation` et `:active` à `true` alors **210 points** seront attributés


#### Liste des champs

|Name|Type|Editable|Format|Default|Infos
|---|---|---|---|---|---|---|
|entity_id|:srting|false|`"5e4fdc8b3604e9cfbf4d055e"`|auto|Entreprise lié à l'utilisateur courant|
|applicant_id|:srting|true|`"5e4fdc8b3604e9cfbf4d055e"`|null|Obligatoire lors de la création|
|identification_number|:srting|true|`"5e4fdc8b3604e9cfbf4d055e"`|null|Obligatoire lors de la création|
|civility|:srting|true|`"Mr", "Mme", "Mlle"`|null|Récupéré sur le candidat si aucun de [civility, first_name, last_name, birth_date] n'est fournit à la création|
|first_name|:srting|true|`"Jhon"`|null|Récupéré sur le candidat si aucun de [civility, first_name, last_name, birth_date] n'est fournit à la création|
|last_name|:srting|true|`"DOE"`|null|Récupéré sur le candidat si aucun de [civility, first_name, last_name, birth_date] n'est fournit à la création|
|birth_date|:srting|true|`"2020-08-24"`|null|Récupéré sur le candidat si aucun de [civility, first_name, last_name, birth_date] n'est fournit à la création|
|validation|:booleen|true|`true, false`|entity.auto_validation ou true|création/mise à jour|
|contract_start_date|:srting|true|`"2020-08-24"`|null|création/mise à jour|
|contract_end_date|:srting|true|`"2020-08-24"`|null|création/mise à jour|
|active|:booleen|false|`true, false`|auto|`true` si contract_start_date <= Date.today et contract_end_date > Date.today|
Lorsqu'une erreur se produit lors de l'appel d'un flux sopra, un log emmetant un evenement websocket est produit. ce log contient l'url appelée ainsi que le retour erreur du webservice sopra.

### Validation des demandes

**Attention à ne pas confondre avec la validation de matricule**

Par défaut, chaque entreprise est créée avec un champ `:auto_request_validation` à `true` ce champ est utilisé pour valider de manière automatique chaque demande émise par les salariers de l'entreprise `housing_request.entity_validated`.

Le champ `:auto_request_validation` peut êtrer modifié par les utilisateurs ayant un droit d'écriture sur l'entreprise.

*Voir **Validation du salarié par l'entreprise** pour les validations manuelles unitaire*

#### Impact score

Lors du calcul de score, si un demande a un `:entity_validated` à `false` les points liés à l'entreprise (`entity_points`) seront de `0`.
