import React, { useState } from "react"; import { View } from "../types"; import DashboardDayView from "../components/dashboard/DashboardDayView"; import DashboardSellerView from "../components/dashboard/DashboardSellerView"; import OrdersView from "../components/dashboard/OrdersView"; import ProductsSoldView from "../components/dashboard/ProductsSoldView"; import PreorderView from "../components/dashboard/PreorderView"; import ConfirmDialog from "../components/ConfirmDialog"; import { shoppingService } from "../src/services/shopping.service"; interface SalesDashboardViewProps { onNavigate: (view: View) => void; onNewOrder?: () => void; } const SalesDashboardView: React.FC = ({ onNavigate, onNewOrder, }) => { const [activeTab, setActiveTab] = useState("dashboard"); const [showNewOrderDialog, setShowNewOrderDialog] = useState(false); const [showContinueOrNewDialog, setShowContinueOrNewDialog] = useState(false); const [isSidebarOpen, setIsSidebarOpen] = useState(false); // Verificar se há carrinho (itens no carrinho) const hasCartItems = () => { return localStorage.getItem("cart"); }; // Verificar se há dados do pedido atual const hasOrderData = () => { const hasCart = localStorage.getItem("cart"); const hasCustomer = localStorage.getItem("customer"); const hasAddress = localStorage.getItem("address"); const hasPaymentPlan = localStorage.getItem("paymentPlan"); const hasBilling = localStorage.getItem("billing"); const hasDataDelivery = localStorage.getItem("dataDelivery"); const hasInvoiceStore = localStorage.getItem("invoiceStore"); const hasPartner = localStorage.getItem("partner"); return ( hasCart || hasCustomer || hasAddress || hasPaymentPlan || hasBilling || hasDataDelivery || hasInvoiceStore || hasPartner ); }; const handleNewOrderClick = () => { // Se houver carrinho, perguntar se quer continuar ou iniciar novo if (hasCartItems()) { setShowContinueOrNewDialog(true); return; } // Se não houver carrinho mas houver outros dados, mostrar confirmação normal if (hasOrderData()) { setShowNewOrderDialog(true); return; } // Se não houver nenhum dado, limpar direto sem confirmação if (onNewOrder) { onNewOrder(); } else { // Se não tiver onNewOrder, fazer a limpeza localmente shoppingService.clearShoppingData(); onNavigate(View.PRODUCT_SEARCH); } }; const handleContinueOrder = () => { // Fechar o dialog e navegar para /sales/home (já estamos na dashboard, apenas fechar) setShowContinueOrNewDialog(false); // Se já estamos na dashboard, não precisa navegar, apenas fechar o dialog }; const handleStartNewOrder = () => { // Fechar o dialog de continuar/iniciar e abrir o de confirmação setShowContinueOrNewDialog(false); setShowNewOrderDialog(true); }; const handleConfirmNewOrder = () => { if (onNewOrder) { onNewOrder(); } else { // Se não tiver onNewOrder, fazer a limpeza localmente shoppingService.clearShoppingData(); onNavigate(View.PRODUCT_SEARCH); } setShowNewOrderDialog(false); }; const sidebarItems = [ { id: "new", label: "Novo pedido", primary: true, action: () => onNavigate(View.PRODUCT_SEARCH), }, { id: "dashboard", label: "Dashboard Venda dia", icon: "M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z", }, { id: "dashboardseller", label: "Dashboard Vendedor", icon: "M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z", }, { id: "orders", label: "Pedidos de venda", icon: "M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2", }, { id: "product-order", label: "Produtos Vendidos", icon: "M16 11V7a4 4 0 00-8 0v4M5 9h14l1 12H4L5 9z", }, { id: "preorder", label: "Orçamentos pendentes", icon: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z", primary: false, }, ]; return (
{/* Overlay para mobile quando sidebar está aberto */} {isSidebarOpen && (
setIsSidebarOpen(false)} /> )} {/* Sidebar Modernizada - Drawer em mobile, sidebar em desktop */} {/* Botão para abrir sidebar em mobile */} {/* Área de Conteúdo */}
{activeTab === "dashboard" && } {activeTab === "orders" && } {activeTab === "dashboardseller" && } {activeTab === "product-order" && } {activeTab === "preorder" && }
{/* Dialog - Continuar ou Iniciar Novo Pedido */} Você já possui um carrinho com itens.

Deseja iniciar um novo pedido e limpar todos os dados do pedido atual? } confirmText="Iniciar Novo Pedido" cancelText="Cancelar" /> {/* Dialog de Confirmação - Novo Pedido */} setShowNewOrderDialog(false)} onConfirm={handleConfirmNewOrder} type="warning" title="Novo Pedido" message={ <> Deseja iniciar um novo pedido?

Todos os dados do pedido atual serão perdidos:
  • Itens do carrinho
  • Dados do cliente
  • Endereço de entrega
  • Plano de pagamento
  • Dados financeiros
  • Informações de entrega

Esta ação não pode ser desfeita. } confirmText="Sim, Iniciar Novo Pedido" cancelText="Cancelar" />
); }; export default SalesDashboardView;