Categorias

Esgotado
chapeu chapeu
chapeu

seller

(0)
Produto esgotado
Kz 10.000
Em Stock
Test live produto Test live produto
Test live produto

Gdffggghhhhhhhhhhh Gdffggghhhhhhhhhhh Gdffggghhhhhhhhhhh

(0)
46 unidades disponíveis
Kz 45.000
Esgotado
produto 2 produto 2
produto 2

ipad.png

(0)
Produto esgotado
Kz 100.000
Esgotado
Tabaco Collection Rich Warm Addictive Tabaco Collection Rich Warm Addictive
Tabaco Collection Rich Warm Addictive

Eau de toilette oriental. A pirâmide olfativa inclui notas de rum, peônia branca e baunilha bourbon. É uma fragrância quente, intensa e luminosa. Volume (ML) : 100ml Concentração : Eua De Toilet ( EDT)

(2)
Produto esgotado
Kz 28.000
Esgotado
Humma 2 Humma 2
Humma 2

Djsjdjdjdndndn

(0)
Produto esgotado
Kz 20.009
-10%
Esgotado
Oculos de sol Oculos de sol
Oculos de sol

ddfghjcdklhhdjdjdjjdjdjdjjjdjjdjdjdjdjdjjdjdddddddd

(0)
Produto esgotado
Kz 22.500 Kz 25.000
Esgotado
BLUSA COM GOLA BORDADA ZW COLLECTION BLUSA COM GOLA BORDADA ZW COLLECTION
BLUSA COM GOLA BORDADA ZW COLLECTION

Blusa Confeccionada em Fiação com Mistura de Lyocell Decote em V com gola detalhada com babados e bordados no tom. Manga comprida com abertura e linha evasê para um toque sofisticado e fluido.

(0)
Produto esgotado
Kz 21.000
Esgotado
Orchid EDP Orchid EDP
Orchid EDP

Eau de parfum. Uma fragrância encantadora que revela as notas florais frescas e cristalinas de rosa e lírio-do-vale. Acordes frutados de pêssego e maçã se mesclam na base com notas de musk, madeira e âmbar, criando um rastro sensual.

(1)
Produto esgotado
Kz 23.500
-1%
Esgotado
CALÇAS CARGO RELAXED FIT CALÇAS CARGO RELAXED FIT
CALÇAS CARGO RELAXED FIT

Calças relaxed fit. Bolsos frontais e detalhe de bolsos traseiros de vivo. Aplicação de bolsos de chapa com lapela nas pernas. Efeito lavado. Fecho frontal com fecho éclair e botão.

(0)
Produto esgotado
Kz 20.790 Kz 21.000
Esgotado
Novo from seller Novo from seller
Novo from seller

{"success":true,"productId":"68e0c5840c8cc183ad0db472","productTitle":"Test Product 1759561092723","sellerId":"68dfe088d1b27ae04248c90b","canFind":true}

(0)
Produto esgotado
Kz 20.000
-10%
Em Stock
Perfume test now Perfume test now
Perfume test now

sbdhdhdjdkdhdhdhdhdhdhdhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh 5234

(0)
1 unidades disponíveis
Kz 450.000 Kz 500.000
Em Stock
test live product test live product
test live product

router.post("/add", sellerAuth(true), upload.array("images", 5), async (req, res) => { try { const seller = req.user; console.log("🛒 Creating product for seller:", { sellerId: seller._id, sellerName: `${seller.firstName} ${seller.lastName}`, sellerEmail: seller.email }); // Capturar campos do formulário const { title, description, category, subcategory, price, stock, size, color, ml, numero, promoprice, promoPercentage, promo } = req.body; // 🧩 Corrigir tipo do campo promo (evita CastError) let promoFlag = false; if ( promo === "on" || promo === "true" || (promoprice && parseFloat(promoprice) > 0) || (promoPercentage && parseInt(promoPercentage) > 0) ) { promoFlag = true; } // Validação de campos obrigatórios if (!title || !description || !category || !price || !subcategory || !req.files.length || !stock) { return res.redirect("/seller/products/add?error=" + encodeURIComponent("Preencha todos os campos obrigatórios")); } // Validação da categoria const categoryRegex = /^[a-zA-Z0-9\s]*$/; if (!categoryRegex.test(category)) { return res.redirect("/seller/products/add?error=" + encodeURIComponent("Categoria inválida. Use apenas letras, números e espaços.")); } const images = req.files.map(f => f.path); // Processar valores de promoção const promoPriceValue = promoprice ? parseFloat(promoprice) : 0; const promoPercentageValue = promoPercentage ? parseInt(promoPercentage) : 0; // Criar novo produto const novoProduto = new Product({ title: title.trim(), description: description.trim(), category: category.trim().toLowerCase(), subcategory: subcategory.trim(), price: parseFloat(price), images, sellerId: seller._id, isFromSeller: true, StockAvailible: parseInt(stock) || 0, // Campos opcionais size: size ? size.trim() : undefined, color: color ? color.trim().toLowerCase() : undefined, ml: ml ? ml.trim() : undefined, numero: numero ? numero.trim() : undefined, // Campos de promoção promo: promoFlag, promoprice: promoPriceValue, promoPercentage: promoPercentageValue, // Valores padrão rating: 0, totalReviews: 0, soldCount: 0, status: "active", dateOfCreation: new Date() }); await novoProduto.save(); console.log("✅ PRODUCT CREATED SUCCESSFULLY:"); console.log({ id: novoProduto._id, title: novoProduto.title, category: novoProduto.category, subcategory: novoProduto.subcategory, price: novoProduto.price, stock: novoProduto.StockAvailible, promo: novoProduto.promo, promoPrice: novoProduto.promoprice, }); // ✅ Adicionar produto à loja do vendedor try { let store = await Store.findOne({ owner: seller._id }); if (!store) { store = new Store({ name: `${seller.firstName} ${seller.lastName}'s Store`, description: `Loja de ${seller.firstName} ${seller.lastName}`, owner: seller._id, products: [novoProduto._id], }); console.log("🏪 New store created for seller"); } else { store.products.push(novoProduto._id); console.log("📦 Product added to existing store"); } await store.save(); console.log("✅ PRODUCT ADDED TO STORE SUCCESSFULLY"); } catch (storeError) { console.error("⚠️ Error adding product to store:", storeError); } res.redirect("/seller/products/management?success=" + encodeURIComponent("Produto adicionado com sucesso!")); } catch (err) { console.error("❌ Erro ao adicionar produto:", err); res.redirect("/seller/products/add?error=" + encodeURIComponent("Erro ao adicionar produto: " + err.message)); } });

(0)
14 unidades disponíveis
Kz 50.000