# Docenten

#### **Docenten kunnen op drie manieren in het systeem terecht komen:**

* Een nieuwe docent kan worden toegevoegd via de topic-endpoints
* Een docent kan worden toegevoegd vanuit een draft user (concept gebruiker).&#x20;
* Een docent kan worden toegevoegd vanuit een draft user tijdens het toevoegen van een cursus

De eerste optie resulteert in een docent die bij een specifieke opleiding hoort. De tweede en derde optie in principe ook, alleen blijft daar de koppeling naar de draft user behouden waardoor de gegevens altijd up-to-date kunnen worden gehouden door de draft user te updaten. Op die manier kan beheer van gebruikers plaatsvinden zoals omschreven in stap 1.

Een docent wordt altijd toegevoegd bij een specifieke opleiding, daarvoor is het ID van de opleiding nodig (niet het externe ID), zie stap 2.

**Docenten kunnen worden beheerd op basis van het externe ID en het interne ID.**

#### **De flow zal normaal gesproken als volgt lopen**

* Aanmaken van een ‘draft user’.
* Toevoegen van een ‘draft user’ aan een cursus. Hierbij wordt automatisch de docent (en gebruiker) aangemaakt bij de desbetreffende opleiding.&#x20;
* Update of delete op een ‘draft user’ en deze past de bijbehorende docenten aan.

#### **Gebruikers en docenten**&#x20;

Gebruikers en docenten zijn nauw met elkaar verbonden. Op het moment dat je een docent aanmaakt binnen de opleiding, zal er automatisch ook een gebruiker aangemaakt worden. Hetzelfde geldt voor concept gebruikers. Als je een concept gebruiker omzet naar docent, zal er automatisch ook een gebruiker aangemaakt worden. De gebruiker en docent zijn met elkaar gekoppeld.<br>

### Overzichtstabel termen

| name             | Type           | Verplicht bij aanmaken | Omschrijving                                                                                                                                                                                                          |
| ---------------- | -------------- | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| title            | string         | Nee                    | Titel van de docent (Bijv. Mevr. of Dhr.)                                                                                                                                                                             |
| firstName        | string         | Ja                     | Voornaam van docent                                                                                                                                                                                                   |
| lastName         | string         | Ja                     | Achternaam van docent                                                                                                                                                                                                 |
| prefix           | string         | Nee                    | Tussenvoegsel van docent                                                                                                                                                                                              |
| code             | string         | Ja                     | Code van docent. Door instelling zelf in te geven                                                                                                                                                                     |
| externalId       | string         | Nee                    | Het interne id van de instelling                                                                                                                                                                                      |
| emailAddress     | string (email) | Ja                     | Het e-mailadres van de docent                                                                                                                                                                                         |
| isGuestTeacher   | boolean        | Nee                    | Geeft aan of de docent een gastdocent is                                                                                                                                                                              |
| isWorkingStudent | boolean        | Nee                    | Geeft aan of de docent een werkstudent is                                                                                                                                                                             |
| noSurf           | boolean        | Nee                    | Kan de gebruiker niet inloggen via surfConext. Er wordt dan een activeringsmail gestuurd waarmee de gebruiker een wachtwoord kan instellen.                                                                           |
| phoneNumber      | integer        | Nee                    | telefoonnummer van de docent                                                                                                                                                                                          |
| type             | integer        | Ja                     | Door dit op 2 te zetten geef je aan dat dit een docent is.                                                                                                                                                            |
| name             | string         | Ja                     | Gehele naam van de docent, dus **Voornaam tussenvoegsel achternaam**                                                                                                                                                  |
| importLock       | boolean        | Nee                    | Zorgt ervoor dat op de frontend de docent 'gelocked' wordt. Hierdoor kunnen docenten niet zomaar aangepast worden door gebruikers. Alleen een functioneel beheerder heeft de mogelijkheid om de docent aan te passen. |
| useDisabledEmail | boolean        | Nee                    | Als je een docent wilt aanmaken zonder e-mail. Deze docent wordt niet gekoppeld aan een gebruiker en kan ook niet inloggen.                                                                                           |

## Docenten ophalen (lijst)

<mark style="color:blue;">`GET`</mark> `https://api-portal.evalytics.nl/teacher`

Zoeken op docenten.&#x20;

#### Query Parameters

| Name                 | Type         | Description                                           |
| -------------------- | ------------ | ----------------------------------------------------- |
| archived             | boolean      | Filter op gearchiveerde docenten                      |
| q                    | string       | Zoeken op docent (naam, code, externalId)             |
| populateProfileImage | boolean      | Populated the uploaded profile images of the teachers |
| status               | string array | Filter on active, archived, deleted (default=active)  |

{% tabs %}
{% tab title="200 " %}

```
{
  "metadata": {
    ...
  },
  "results": [
   {
    "data": {
      "title": "",
      "firstName": "Example",
      "lastName": "Teacher",
      "prefix": "",
      "code": "et",
      "emailAddress": "teacher@evalytics.nl"
    },
    "name": "Example teacher",
    "type": 2,
    "organisation": 101,
    "topOrganisation": 100,
    "id": 123,
    "user": 456
  }
 ]
}

```

{% endtab %}
{% endtabs %}

## Docent ophalen (item)

<mark style="color:blue;">`GET`</mark> `https://api-portal.evalytics.nl/teacher/:id`

Een enkele docent kan gevonden worden op basis van het interne of externe id. Hiermee geeft onze API het interne id en organisatie id terug.

#### Path Parameters

| Name | Type   | Description                        |
| ---- | ------ | ---------------------------------- |
| id   | string | Intern of externalId van de docent |

{% tabs %}
{% tab title="200 " %}

```
{
    "data": {
      "title": "",
      "firstName": "Example",
      "prefix": "",
      "lastName": "Teacher",
      "code": "et",
      "emailAddress": "teacher@evalytics.nl"
    },
    "name": "Example teacher",
    "type": 2,
    "organisation": 101,
    "topOrganisation": 100,
    "id": 123,
    "user": 456
  }

```

{% endtab %}
{% endtabs %}

## Docent aanmaken

<mark style="color:green;">`POST`</mark> `https://api-portal.evalytics.nl/teacher`

Maakt een docent aan. Als er nog geen gebruiker bestaat bij het gegeven e-mailadres, zal er ook een gebruiker aangemaakt worden.

#### Query Parameters

| Name             | Type    | Description                                                                             |
| ---------------- | ------- | --------------------------------------------------------------------------------------- |
| useDisabledEmail | boolean | When set to true, the teacher will be created without an emailAddress (default = false) |

{% tabs %}
{% tab title="200 " %}

```
{
  "data": {
    "title": "Dhr.",
    "firstName": "Example",
    "lastName": "Teacher",
    "code": "et",
    "emailAddress": "teacher@evalytics.nl"
  },
  "name": "Dhr. Example teacher",
  "importLock": false,
  "type": 2,
  "organisation": 101,
  "topOrganisation": 100,
  "id": 123
}
```

{% endtab %}
{% endtabs %}

```
{
  "noSurf":(boolean),
  "data":{
    "title": "(string)",
    "firstName":"(string)",
    "lastName":"(string)",
    "prefix":"(string)",
    "code":"(string - required)",
    "emailAddress": (string - required),
    "phoneNumber":(string),
    "isGuestTeacher": (boolean),
    "isWorkingStudent": (boolean),
    "noSurf": (boolean)
  },
  "externalId": (string),
  "name": (string - required),
  "importLock": (boolean)
}
```

## Docent bijwerken

<mark style="color:green;">`POST`</mark> `https://api-portal.evalytics.nl/teacher/:id`

#### Path Parameters

| Name | Type   | Description                        |
| ---- | ------ | ---------------------------------- |
| id   | string | intern of externalId van de docent |

{% tabs %}
{% tab title="200 " %}

```
{
  "data": {
    "firstName": "Example",
    "lastName": "Teacher",
    "code": "et",
    "emailAddress": "teacher@evalytics.nl"
  },
  "name": "Example teacher update",
  "importLock": false,
  "type": 2,
  "organisation": 101,
  "topOrganisation": 100,
  "id": 123
}

```

{% endtab %}
{% endtabs %}

```
{
  "noSurf":(boolean),
  "data":{
    "title": "(string)",
    "firstName":"(string)",
    "lastName":"(string)",
    "prefix":"(string)",
    "code":"(string - required)",
    "emailAddress": (string - required),
    "phoneNumber":(string),
    "isGuestTeacher": (boolean),
    "isWorkingStudent": (boolean),
    "noSurf": (boolean)
  },
  "externalId": (string),
  "name": (string - required),
  "importLock": (boolean)
}
```

## Docent archiveren

<mark style="color:green;">`POST`</mark> `https://api-portal.evalytics.nl/topic/:id/archive`

Het is mogelijk om een docent te archiveren. Een docent die gearchiveerd is, wordt niet meer getoond als je zoekt naar een docent in alle schermen waar je een docent kunt selecteren

#### Path Parameters

| Name | Type   | Description                        |
| ---- | ------ | ---------------------------------- |
| id   | string | Intern of externalid van de docent |

#### Query Parameters

| Name | Type    | Description                         |
| ---- | ------- | ----------------------------------- |
| undo | boolean | Maakt de archiveringsactie ongedaan |

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

## Docent verwijderen

<mark style="color:red;">`DELETE`</mark> `https://api-portal.evalytics.nl/topic/:id`

Een docent kan verwijderd worden via het topic endpoint. \
\
De gekoppelde gebruiker zal niet direct permanent verwijderd worden. En deze delete kan dus nog (voor een bepaalde tijd) terug gedraait met behulp van de undo parameter.

#### Path Parameters

| Name | Type   | Description                           |
| ---- | ------ | ------------------------------------- |
| id   | string | Intern id of externalid van de docent |

#### Query Parameters

| Name | Type    | Description                          |
| ---- | ------- | ------------------------------------ |
| undo | boolean | Maakt de verwijderingsactie ongedaan |

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}
