94 lines
2.0 KiB
Go
94 lines
2.0 KiB
Go
|
|
package cli
|
||
|
|
|
||
|
|
import (
|
||
|
|
"fmt"
|
||
|
|
"strconv"
|
||
|
|
)
|
||
|
|
|
||
|
|
func (a *App) handleAdd() {
|
||
|
|
name := a.readLine("Nome do produto: ")
|
||
|
|
category := a.readLine("Categoria do produto: ")
|
||
|
|
priceStr := a.readLine("Preço: ")
|
||
|
|
|
||
|
|
price, err := strconv.ParseFloat(priceStr, 64)
|
||
|
|
|
||
|
|
if err != nil {
|
||
|
|
fmt.Println("Preço inválido.")
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
qtyStr := a.readLine("Quantidade: ")
|
||
|
|
qty, err := strconv.Atoi(qtyStr)
|
||
|
|
|
||
|
|
if err != nil {
|
||
|
|
fmt.Println("Quantidade inválida.")
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
product, err := a.service.CreateProduct(name, category, price, qty)
|
||
|
|
|
||
|
|
if err != nil {
|
||
|
|
fmt.Println("Erro ao adicionar:", err)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
fmt.Printf("Produto adicionado: #%d %s\n", product.ID, product.Name)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (a *App) handleList() {
|
||
|
|
products := a.service.ListProducts()
|
||
|
|
|
||
|
|
if len(products) == 0 {
|
||
|
|
fmt.Println("Nenhum produto cadastrado.")
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
for _, p := range products {
|
||
|
|
fmt.Printf(
|
||
|
|
"==============================================="+"\n"+
|
||
|
|
"ID PRODUTO: %d"+"\n"+
|
||
|
|
"NOME: %s"+"\n"+
|
||
|
|
"CATEGORIA: %s"+"\n"+
|
||
|
|
"PREÇO: %.2f"+"\n"+
|
||
|
|
"QUANTIDADE: %d"+"\n"+
|
||
|
|
"==============================================="+"\n",
|
||
|
|
p.ID, p.Name, p.Category, p.Price, p.Quantity)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (a *App) handleUpdate() {
|
||
|
|
idStr := a.readLine("Informe o Id do produto que deseja atualizar: ")
|
||
|
|
id, err := strconv.Atoi(idStr)
|
||
|
|
if err != nil {
|
||
|
|
fmt.Println("ID inválido.")
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
field := a.readLine("Informe o campo que deseja atualizar (nome, categoria, preco, quantidade): ")
|
||
|
|
value := a.readLine(fmt.Sprintf("Informe o novo valor para %s: ", field))
|
||
|
|
|
||
|
|
product, err := a.service.UpdateProduct(id, field, value)
|
||
|
|
if err != nil {
|
||
|
|
fmt.Println("Erro ao atualizar:", err)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
fmt.Printf("Produto %d atualizado com sucesso!\n", product.ID)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (a *App) handleDelete() {
|
||
|
|
idStr := a.readLine("Informe o Id do produto que deseja deletar: ")
|
||
|
|
id, err := strconv.Atoi(idStr)
|
||
|
|
if err != nil {
|
||
|
|
fmt.Println("ID inválido.")
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
if err := a.service.DeleteProduct(id); err != nil {
|
||
|
|
fmt.Println("Erro ao deletar:", err)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
fmt.Printf("Produto %d deletado com sucesso!\n", id)
|
||
|
|
}
|