---
tags: Estudos
---
# Análise de inserção de imagens nas duas bandeiras via admin
**Fluxo atual**:
Após fazer upload de uma imagem no admin, quando o usuário clica em "Atualizar", na edição do produto, o método processMedias é chamado.
O fluxo abaixo ilustra o que o método processMedias faz, de forma resumida:
```mermaid
sequenceDiagram
admin->>admin: Identifica imagens para adicionar
admin->>admin: Faz insert na Media
admin->>+image-worker: Informa os hashs das imagens adicionadas
image-worker->>image-worker: Atualiza status para COMPLETED
image-worker-->>-admin:
admin->>admin: Ordena imagens
admin->>admin: Atualiza imagem principal
```
Desta forma, ao inserir uma imagem no admin do Pão de Açúcar, esta imagem estará disponível apenas no Pão de Açúcar.
**Fluxo desejado**:
É desejado que ao inserir uma imagem no admin, independente da bandeira, a imagem seja refletida em ambas bandeiras.
Exemplo: Usuário adicionou uma nova imagem para o produto 1234321 no admin do Pão de Açúcar, o esperado é que esta imagem seja adicionada via sistema no produto de sku 1234321 no Extra também.
Para isso, é necessário remover a lógica de inserção, ordenação e identificação de imagem principal de dentro do admin para o serviço de imagens.
- Lógica de inserção para remover:

- Como os parâmetros extension, fileName, width, height e path não serão mais necessários, será possível remover os trechos de código que estavam salvando estes dados no html e recuperando os dados para passar para controller:
- Na classe ProductImageWorkerService, no método validateAndUploadImage, remover os dados que não serão utilizados

- Na classe _imageScripts.gsp, remover os input hidden:

- Na classe product/edit.gsp, remover a lógica que cria a estrutura de imagens com base nos input hidden e enviar no parâmetro `image.add` a lista de hashs

- Remover a innerClass que foi criada para estrutura de imagens

- Lógica de ordenação para remover

- Lógica de identificação de imagem principal para remover

Será necessário criar um novo endpoint no serviço de imagens, que receba os parâmetros:
- sku do produto
- hashs das imagens que devem ser adicionadas
- id/hash da imagem marcada como principal
Esse serviço deve:
- Consultar na collection media do mongo as imagens a partir do hash e do sku, para obter as informações necessárias para fazer o insert na tabela media (altura, largura, extensão da imagem, nome da imagem, path da imagem) para as duas bandeiras
- Fazer o insert na tabela media para ambas bandeiras
- Logar as imagens adicionadas
- Reordenar as imagens do produto *---> Talvez tenha que ter outro parâmetro que recebe todas as imagens, para que a ordenação seja feita com base na posição das imagens exibidas no admin <---*
- Identificar a imagem principal que foi informada e fazer a atualização na tabela de produto