Diagrama de Sequência - JnSGoncalves/Modelagem-de-Software GitHub Wiki

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