📌 Objetivo

Modelar as interações entre os componentes do sistema (View, Controller, Service, RepositoryFactory, Repository e Persistência) para os principais casos de uso do Sistema de Gestão para Rede de Padarias, validando o funcionamento conforme a arquitetura em camadas definida no projeto.

Todos os diagramas seguem o fluxo arquitetural adotado:

View
 ↓
Controller
 ↓
Service
 ↓
RepositoryFactory
 ↓
Repository
 ↓
Persistência (Memória ou SQLite)

A RepositoryFactory fornece a implementação adequada dos repositórios, permitindo utilizar persistência em memória ou banco de dados SQLite sem impactar as demais camadas da aplicação.

1️⃣ Diagrama de Sequência – Cadastrar Unidade

sequenceDiagram
actor Usuario
participant View
participant UnidadeController
participant UnidadeService
participant RepositoryFactory
participant UnidadeRepository
participant Persistencia

Usuario->>View: Informar dados da unidade
View->>UnidadeController: cadastrar(dados)
UnidadeController->>UnidadeService: cadastrar(dados)

UnidadeService->>RepositoryFactory: getUnidadeRepository()
RepositoryFactory-->>UnidadeService: UnidadeRepository

UnidadeService->>UnidadeRepository: salvar(unidade)
UnidadeRepository->>Persistencia: salvar()
Persistencia-->>UnidadeRepository: confirmação

UnidadeRepository-->>UnidadeService: sucesso
UnidadeService-->>UnidadeController: sucesso
UnidadeController-->>View: confirmação
View-->>Usuario: Unidade cadastrada

Descrição do fluxo: o usuário realiza o cadastro de uma nova unidade da rede de padarias.

2️⃣ Diagrama de Sequência – Cadastrar Insumo

Descrição do fluxo: o usuário realiza o cadastro de um novo insumo.

sequenceDiagram
actor Usuario
participant View
participant InsumoController
participant InsumoService
participant RepositoryFactory
participant InsumoRepository
participant Persistencia

Usuario->>View: Informar dados do insumo
View->>InsumoController: cadastrar(dados)
InsumoController->>InsumoService: cadastrar(dados)

InsumoService->>RepositoryFactory: getInsumoRepository()
RepositoryFactory-->>InsumoService: InsumoRepository

InsumoService->>InsumoRepository: salvar(insumo)
InsumoRepository->>Persistencia: salvar()
Persistencia-->>InsumoRepository: confirmação

InsumoRepository-->>InsumoService: sucesso
InsumoService-->>InsumoController: sucesso
InsumoController-->>View: confirmação
View-->>Usuario: Insumo cadastrado**3️⃣ Diagrama de Sequência – Registrar Movimentação de Estoque**

3️⃣ Diagrama de Sequência – Registrar Movimentação de Estoque

Descrição do fluxo: o usuário registra uma movimentação de entrada ou saída de um insumo no estoque.

sequenceDiagram
actor Usuario
participant View
participant EstoqueController
participant EstoqueService
participant RepositoryFactory
participant InsumoRepository
participant Persistencia

Usuario->>View: Registrar movimentação
View->>EstoqueController: registrarMovimentacao()
EstoqueController->>EstoqueService: registrarMovimentacao()

EstoqueService->>RepositoryFactory: getInsumoRepository()
RepositoryFactory-->>EstoqueService: InsumoRepository

EstoqueService->>InsumoRepository: atualizarQuantidade()
InsumoRepository->>Persistencia: atualizar()
Persistencia-->>InsumoRepository: confirmação

InsumoRepository-->>EstoqueService: sucesso
EstoqueService-->>EstoqueController: sucesso
EstoqueController-->>View: confirmação
View-->>Usuario: Movimentação registrada

4️⃣ Diagrama de Sequência – Listar Unidades

Descrição do fluxo: o usuário solicita a listagem de todas as unidades cadastradas na rede de padarias.

sequenceDiagram
actor Usuario
participant View
participant UnidadeController
participant UnidadeService
participant RepositoryFactory
participant UnidadeRepository
participant Persistencia

Usuario->>View: Listar unidades
View->>UnidadeController: listarUnidades()
UnidadeController->>UnidadeService: listarTodos()

UnidadeService->>RepositoryFactory: getUnidadeRepository()
RepositoryFactory-->>UnidadeService: UnidadeRepository

UnidadeService->>UnidadeRepository: listarTodos()
UnidadeRepository->>Persistencia: buscarTodas()
Persistencia-->>UnidadeRepository: lista

UnidadeRepository-->>UnidadeService: lista
UnidadeService-->>UnidadeController: lista
UnidadeController-->>View: lista
View-->>Usuario: Exibir unidades

5️⃣ Diagrama de Sequência – Listar Insumos

Descrição do fluxo: o usuário solicita a listagem de todos os insumos cadastrados no sistema.

sequenceDiagram
actor Usuario
participant View
participant InsumoController
participant InsumoService
participant RepositoryFactory
participant InsumoRepository
participant Persistencia

Usuario->>View: Listar insumos
View->>InsumoController: listarInsumos()
InsumoController->>InsumoService: listarTodos()

InsumoService->>RepositoryFactory: getInsumoRepository()
RepositoryFactory-->>InsumoService: InsumoRepository

InsumoService->>InsumoRepository: listarTodos()
InsumoRepository->>Persistencia: buscarTodos()
Persistencia-->>InsumoRepository: lista

InsumoRepository-->>InsumoService: lista
InsumoService-->>InsumoController: lista
InsumoController-->>View: lista
View-->>Usuario: Exibir insumos