migration-reference · implemented
Migration 12B — granting_party_registration_requests
Solicitações tipadas de cadastro de parte concedente feitas durante a abertura.
| Campo | Regra |
|---|---|
id | bigint, chave primária Laravel. |
campus_id | bigint obrigatório, FK para campuses.id com RESTRICT e índice; escopo imutável após criação. |
document_type / document_number | tipo CPF/CNPJ e número validado pelo cast correspondente, normalizado sem pontuação; nulos em Draft, obrigatórios nos demais estados. |
name | nome ou razão social, obrigatório fora de Draft. |
street, number, neighborhood, city, uf, zip_code | endereço proposto em colunas próprias; obrigatórios fora de Draft. UF usa BrazilianState; CEP guarda oito dígitos. |
representative_name / representative_role | representante e cargo, obrigatórios fora de Draft. |
phone / email | opcionais; telefone validado e normalizado por PhoneCast, e-mail validado. |
field_of_activity | obrigatório fora de Draft. |
professional_council, council_registration_number, credentialing_process_number | opcionais. |
status | RegistrationRequestStatus, obrigatório. |
granting_party_id | FK nullable com exclusão restrita para granting_parties; obrigatória em Approved. |
reviewed_at | instante opcional da análise. |
decision_reason | motivo obrigatório em Rejected e Cancelled; opcional nos demais estados. |
| timestamps | created_at e updated_at nativos. |
A tabela registra a proposta enviada e sua decisão; granting_parties e addresses guardam o cadastro atual. Não há submitted_by_affiliation_id, reviewed_by_affiliation_id nem submission_snapshot. O Model participa do Activity Log Eloquent e registra atores e alterações; as Actions e Policies da análise ainda estão pendentes. A exclusão física pelo Model é bloqueada; não há deleted_at. Há índice secundário em campus_id, sem unicidade de documento ou constraints CHECK. O Model valida o campus e impede sua alteração após a criação.
A aprovação selecionará ou criará granting_parties em transação, sempre no campus preservado pelo pedido, e associará a concedente resultante ao pedido; o Model já rejeita concedente resultante de outro campus. CPF/CNPJ repetidos em outros campi não tornam o cadastro compartilhável. Ao criar uma concedente, criará também uma nova linha de addresses exclusiva dela; não reutilizará o endereço de outro cadastro, mesmo que seja idêntico. O pedido mantém o endereço proposto em colunas próprias para aceitar rascunhos incompletos e preservar o que foi enviado. CNPJ repetido não impede unidades distintas. A solicitação de estágio só poderá ser aceita após substituir a referência pendente pela concedente aprovada.