# Desafio da Festa (Party Challenge)

<p align="right">Credits to: <img src="/files/IlExwlwEk7y4dYL0JoUn" alt="" data-size="line"></p>

Neste desafio, é-lhe pedido que crie um **serviço de decisão** que ajude o anfitrião de uma festa a decidir se um convidado pode ou não participar.

{% hint style="info" %} <img src="/files/wmqi1MayT2ojSPXEqOnQ" alt="" data-size="line">

Durante o desenvolvimento deste desafio irá praticar **FEEL**, manipulação de **Strings**, manipulação de **listas**, operadores **temporais**, **Tipos de Dados**, diferentes opções de decisão e muito mais.
{% endhint %}

***

#### Objetivo

Devolver **verdadeiro** ou **falso**, consoante o facto de um **Convidado** poder participar numa festa numa determinada **Data Planeada**.

***

#### Regras da Festa

Para decidir se um convidado específico **pode participar na festa**, o anfitrião deve indicar:

* Um **Convidado**, com **nome** (texto) e **data de nascimento** (formato `"AAAA-MM-DD"`).
* Uma **Data Planeada** para a festa (formato `"AAAA-MM-DD"`).

Critérios:

* Apenas convidados com **18 anos ou mais** podem participar.
* Existe uma **lista de convidados banidos**, que define que **"Chucky"** e **"Carrie"** não podem participar.

***

#### Exemplo de Entrada

Exemplo de input para validar se **Karina V**, nascida a **1 de janeiro de 1980**, pode participar numa festa que ocorrerá a **25 de outubro de 2021**:

```json
{
    "Guest": {
        "birthdate": "1980-01-01",
        "name": "Karina V"
    },
    "Planned date": "2021-10-25"
}
```

#### Automatizar a validação com testes unitários

O anfitrião da festa quer poder **ler e acrescentar testes automatizados** depois de a sua solução lhe ser entregue.

Inicialmente, é necessário implementar testes automatizados para validar que:

* O convidado **"Chucky"** **não pode** participar na festa.
* A convidada **"Karina"** **pode** participar.
* Convidados com **menos de 18 anos** **não podem** participar.
* Convidados com **mais de 18 anos** **podem** participar.
* Um convidado que **ainda não tem 18 anos**, mas que os fará na **data planeada da festa**, **pode** participar.

{% columns %}
{% column width="91.66666666666666%" %} <sub>Próxima Aula</sub>&#x20;

{% content-ref url="/spaces/UZT2xo75TkCSsqIsO9Cc/pages/MdrWeRtBiNmPOHY6qUZG" %}
[Lab 12 — Aula de apoio / Revisão do Projeto](/fundamentals-of-information-systems/lab-12/lab-12-aula-de-apoio-revisao-do-projeto.md)
{% endcontent-ref %}
{% endcolumn %}

{% column width="8.333333333333343%" %}

{% endcolumn %}
{% endcolumns %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ulht-jcb.gitbook.io/fundamentals-of-information-systems/lab-11/lab-11.2-dmn-and-low-code-exercicios-praticos-guiados/desafio-da-festa-party-challenge.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
