UC-01
sequenceDiagram
actor Cliente
participant Sistema
participant EmailService as "Serviço de Email"
Cliente->>+Sistema: inserirEmail()
Sistema->>+EmailService: enviarCodigoConfirmacao(email)
EmailService-->>-Cliente: receberCodigo()
deactivate Sistema
Cliente->>+Sistema: confirmarCodigo(codigo)
alt Código válido
Sistema-->>Cliente: solicitarDadosPessoais()
Cliente->>Sistema: enviarDados(nome, cpf, etc)
activate Sistema
Sistema->>Sistema: verificarDadosValidos()
alt Dados válidos e únicos
Sistema-->>Cliente: cadastroConfirmado()
else Email ou CPF já existente
Sistema-->>Cliente: informarContaExistente()
end
deactivate Sistema
else Código inválido
Sistema-->>Cliente: erroCodigo()
end
deactivate Sistema
UC-02
sequenceDiagram
actor Cliente
participant Sistema
actor SistemaPagamento as "Sistema de Pagamento"
participant EmailService as "Serviço de Email"
Cliente->>+Sistema: acessarAreaFidelidade()
deactivate Sistema
Cliente->>+Sistema: clicarAderir()
deactivate Sistema
Cliente->>+Sistema: inserirDadosCartao()
Sistema->>+SistemaPagamento: enviarDadosCartao()
alt Cartão válido e com limite
SistemaPagamento-->>Sistema: assinaturaAprovada()
Sistema->>+EmailService: enviarEmailConfirmacao()
EmailService-->>-Cliente: detalhesContratacao()
Sistema-->>Cliente: confirmarCadastroFidelidade()
else Dados inválidos
SistemaPagamento-->>Sistema: erroDadosCartao()
Sistema-->>Cliente: informarErroDados()
else Sem limite disponível
SistemaPagamento-->>Sistema: limiteInsuficiente()
Sistema-->>Cliente: informarLimiteInsuficiente()
end
deactivate SistemaPagamento
deactivate Sistema
UC-03
sequenceDiagram
actor Cliente
participant Sistema
actor SistemaPagamento as "Sistema de Pagamento"
actor Validador as "Validador de Documentos"
Cliente->>+Sistema: realizarLogin()
Sistema->>Sistema: verificarClienteFidelidade()
alt Cliente fidelidade
Sistema-->>Cliente: liberarMelhoresAssentos()
else Cliente comum
Sistema-->>Cliente: mostrarAssentosDisponiveis()
end
deactivate Sistema
Cliente->>+Sistema: escolherCinema()
Cliente->>Sistema: escolherFilme()
Cliente->>Sistema: escolherSessao()
Cliente->>Sistema: escolherAssentos()
Cliente->>Sistema: informarCPF()
Cliente->>Sistema: escolherTipoIngresso()
alt Meia entrada
Sistema-->>Cliente: solicitarDocumento()
Cliente->>Sistema: enviarDocumento()
Sistema->>+Validador: validarDocumento()
Validador-->>-Sistema: resultadoValidacao()
alt Documento aprovado
Sistema-->>Cliente: continuarReserva()
else Documento rejeitado
Sistema-->>Cliente: cancelarReserva()
end
end
Cliente->>Sistema: inserirDadosCartao()
Sistema->>+SistemaPagamento: enviarDadosCartao()
alt Pagamento aprovado
SistemaPagamento-->>Sistema: confirmarPagamento()
Sistema-->>Cliente: disponibilizarIngressos()
else Pagamento recusado
SistemaPagamento-->>Sistema: pagamentoRecusado()
Sistema-->>Cliente: solicitarOutroPagamento()
end
deactivate SistemaPagamento
deactivate Sistema
UC-04
sequenceDiagram
participant Sistema
actor SistemaPagamento
Sistema->>+SistemaPagamento: enviarDadosCartao(dadosCartao)
activate SistemaPagamento
SistemaPagamento->>SistemaPagamento: validarCartao(dadosCartao)
alt Cartão válido
SistemaPagamento->>SistemaPagamento: processarPagamento(valor)
alt Saldo/limite suficiente
SistemaPagamento-->>Sistema: confirmarTransacao()
else Sem saldo/limite
SistemaPagamento-->>Sistema: transacaoNaoAprovada()
end
else Cartão inválido
SistemaPagamento-->>Sistema: erroCartaoInvalido()
end
deactivate SistemaPagamento
deactivate SistemaPagamento
UC-05
sequenceDiagram
actor Cliente
participant Sistema
participant Ingresso
actor SistemaPagamento as "Sistema de Pagamento"
Cliente->>+Sistema: acessarMeusIngressos()
Sistema->>+Ingresso: buscarIngressosCliente()
Ingresso-->>-Sistema: listaIngressos()
Sistema-->>Cliente: mostrarIngressos()
deactivate Sistema
alt Cliente deseja pagar ingresso pendente
Cliente->>+Sistema: selecionarIngressoPendente()
Sistema->>+SistemaPagamento: enviarDadosPagamento()
alt Pagamento aprovado
SistemaPagamento-->>Sistema: confirmarTransacao()
Sistema->>+Ingresso: atualizarStatusPagamento()
deactivate Ingresso
Sistema-->>Cliente: ingressoConfirmado()
else Sem saldo ou limite
SistemaPagamento-->>Sistema: pagamentoNaoAprovado()
Sistema-->>Cliente: informarFalhaPagamento()
end
deactivate SistemaPagamento
deactivate Sistema
end
alt Cliente deseja exportar ingresso
Cliente->>+Sistema: selecionarIngressoPago()
Sistema->>+Ingresso: gerarArquivoIngresso()
Ingresso-->>-Sistema: arquivo
Sistema-->>Cliente: exportarIngresso()
deactivate Sistema
end
UC-06
sequenceDiagram
actor Admin as Administrador
participant App as Interface Admin.
participant Sistema as Sistema
participant DB as Banco de Dados
Admin->>App: Acessa "Cadastrar Administrador"
App->>Sistema: Solicita formulário de cadastro
Sistema-->>App: Retorna formulário
Admin->>App: Preenche dados (CPF, Nome, etc.) e confirma
App->>Sistema: Envia dados para validação (CPF único)
alt Dados Válidos
Sistema->>DB: Salva novo Administrador
DB-->>Sistema: Confirma gravação
Sistema-->>App: Exibe mensagem de sucesso
App-->>Admin: Cadastro realizado com sucesso
else CPF Inválido ou Já Cadastrado
Sistema-->>App: Notifica erro (CPF duplicado/inválido)
App-->>Admin: Exibe mensagem de erro e retorna ao formulário
end
UC-07
sequenceDiagram
actor Admin as Administrador
participant App as Interface Admin.
participant Sistema as Sistema
Admin->>App: Seleciona "Cadastrar Cinema"
App->>Sistema: Solicita formulário de cinema
Admin->>App: Preenche Nome e Endereço
Admin->>App: Confirma cadastro
App->>Sistema: Valida informações e verifica duplicidade
Sistema->>Sistema: Armazena dados do cinema
Sistema-->>Admin: Confirmação de cinema cadastrado
UC-08
sequenceDiagram
actor Admin as Administrador
participant App as Interface Admin.
participant Sistema as Sistema
participant Ancine as AncineAPI
Admin->>App: Seleciona "Gerenciar Filme"
App->>Sistema: Solicita lista de filmes
Sistema->>Ancine: Consulta lista oficial de títulos
Ancine-->>Sistema: Retorna títulos disponíveis
Sistema-->>App: Exibe lista de filmes
Admin->>App: Escolhe ação (Cadastrar/Editar/Remover)
Admin->>App: Informa/Confirma dados do filme
App->>Sistema: Valida dados
Sistema->>Sistema: Realiza operação (CRUD)
Sistema-->>Admin: Mensagem de confirmação de sucesso
UC-09
sequenceDiagram
actor Admin as Administrador
participant App as Interface Admin.
participant Sistema as Sistema
Admin->>App: Seleciona "Gerenciar Sessão"
App->>Sistema: Solicita lista de sessões
Sistema-->>App: Exibe sessões cadastradas
Admin->>App: Seleciona ação e informa dados (Filme, Sala, Horário)
App->>Sistema: Envia dados para validação
critical Validação de Conflito
Sistema->>Sistema: Verifica disponibilidade da Sala no horário
end
alt Sem Conflitos
Sistema->>Sistema: Salva/Atualiza Sessão
Sistema-->>Admin: Alterações salvas com sucesso
else Conflito de Horário ou Dados Inválidos
Sistema-->>App: Notifica erro de conflito
App-->>Admin: Exibe erro e retorna ao início
end
UC-10
sequenceDiagram
actor Admin as Administrador
participant App as Interface Admin.
participant Sistema as Sistema
participant Sala as Sala / Sessão
Admin->>App: Seleciona "Gerenciar Melhores Assentos"
App->>Sistema: Solicita mapa de assentos da sessão
Sistema->>Sala: Consulta disponibilidade física
Sala-->>App: Retorna mapa de assentos
Admin->>App: Ajusta assentos preferenciais
App->>Sistema: Solicita gravação da configuração
Sistema->>Sistema: Valida disponibilidade dos assentos escolhidos
Sistema-->>Admin: Exibe confirmação de salvamento
UC-11
sequenceDiagram
actor Admin as Administrador
participant App as Interface Admin.
participant Sistema as Sistema
participant Relatorio as Relatorio (Classe)
Admin->>App: Seleciona "Emitir Relatório Consolidado"
App->>Sistema: Solicita consolidação de dados (Período/Tipo)
Sistema->>Sistema: Reúne dados de Vendas, Renda e Ingressos
Sistema->>Relatorio: Instancia e gera relatório específico
Relatorio-->>Sistema: Retorna documento/dados formatados
Sistema-->>App: Exibe relatório consolidado
App-->>Admin: Apresenta resultados na tela
UC-12
sequenceDiagram
participant Sistema as Sistema
participant Ancine as AncineAPI
Sistema->>Ancine: Solicita lista oficial de filmes cadastrados
alt Filmes Disponíveis
Ancine-->>Sistema: Envia lista de filmes (Títulos e Registros)
Sistema->>Sistema: Exibe/Disponibiliza lista para o Administrador
else Sem Filmes
Ancine-->>Sistema: Retorna lista vazia
Sistema->>Sistema: Informa ausência de títulos e encerra fluxo
end
UC-13
sequenceDiagram
participant Sistema
participant Relatorio
participant AncineAPI
actor Ancine
Sistema->>+Relatorio: gerarRelatorio()
alt Relatório gerado com sucesso
Relatorio-->>-Sistema: sucesso
activate Sistema
Sistema->>+AncineAPI: enviarRelatorio(relatorio)
AncineAPI->>+Ancine: enviarRelatorio(relatorio)
Ancine-->>-AncineAPI: confirmarRecebimento()
AncineAPI-->>-Sistema: confirmação
deactivate Sistema
else Erro ao gerar relatório
Relatorio-->>Sistema: erro
end