# -*- coding: utf-8 -*-
"""
Web Dashboard - Modelhane Üretim Takip Sistemi
Route bazlı web arayüzü
"""

import sys
import json
from datetime import datetime, timedelta
from typing import Dict, List, Optional, Any
from dataclasses import dataclass, asdict
import random

from PyQt6.QtWidgets import (
    QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,
    QGridLayout, QLabel, QPushButton, QFrame, QScrollArea,
    QProgressBar, QStackedWidget, QSplitter, QTextEdit,
    QSpinBox, QDoubleSpinBox, QComboBox, QLineEdit, QCheckBox,
    QSlider, QGroupBox, QTableWidget, QTableWidgetItem,
    QHeaderView, QAbstractItemView, QMenu, QMenuBar,
    QStatusBar, QToolBar, QToolButton, QButtonGroup,
    QRadioButton, QTabWidget, QTreeWidgetItem, QTreeWidget
)
from PyQt6.QtCore import (
    Qt, QTimer, QThread, pyqtSignal, QPropertyAnimation,
    QEasingCurve, QParallelAnimationGroup, QSequentialAnimationGroup,
    QRect, QPointF, QSize, pyqtProperty, QUrl
)
from PyQt6.QtGui import (
    QFont, QColor, QPalette, QLinearGradient, QRadialGradient,
    QPen, QBrush, QPainter, QPixmap, QIcon, QCursor,
    QPolygonF, QFontDatabase, QHoverEvent, QEnterEvent,
    QMouseEvent, QResizeEvent, QShowEvent
)


@dataclass
class Proje:
    """Proje veri yapısı"""
    id: str
    ad: str
    musteri: str
    durum: str
    baslangic: datetime
    bitis: datetime
    bütce: float
    harcanan: float
    ilerleme: float
    sorumlu: str
    takim_uyeleri: List[str]
    oncelik: str
    risk_seviyesi: str


@dataclass
class Siparis:
    """Sipariş veri yapısı"""
    id: str
    proje_id: str
    musteri: str
    urun_kodu: str
    urun_adi: str
    miktar: int
    birim_fiyat: float
    toplam_tutar: float
    siparis_tarihi: datetime
    teslim_tarihi: datetime
    durum: str
    odeme_durumu: str
    kargo_takip: str


@dataclass
class Teklif:
    """Teklif veri yapısı"""
    id: str
    musteri: str
    proje_adi: str
    konu: str
    tarih: datetime
    gecerlilik_tarihi: datetime
    durum: str
    toplam_tutar: float
    kdv: float
    indirim: float
    net_tutar: float
    temsilci: str
    ihtimal: float
    notlar: str


class WebStyleButton(QPushButton):
    """Web tarzı buton sınıfı"""

    def __init__(self, text, hover_color="#4CAF50", normal_color="#45a049"):
        super().__init__(text)
        self.hover_color = QColor(hover_color)
        self.normal_color = QColor(normal_color)
        self.setupStyle()

    def setupStyle(self):
        self.setStyleSheet(f"""
            QPushButton {{
                background-color: {self.normal_color.name()};
                color: white;
                border: none;
                padding: 12px 24px;
                text-align: center;
                font-size: 14px;
                font-weight: bold;
                border-radius: 6px;
                cursor: pointer;
                transition: all 0.3s ease;
            }}
            QPushButton:hover {{
                background-color: {self.hover_color.name()};
                transform: translateY(-2px);
                box-shadow: 0 4px 8px rgba(0,0,0,0.2);
            }}
            QPushButton:pressed {{
                background-color: {self.normal_color.darker(110).name()};
                transform: translateY(1px);
            }}
        """)


class DashboardCard(QFrame):
    """Dashboard kartı widget"""

    def __init__(self, title, value, subtitle="", icon="📊", color="#2196F3"):
        super().__init__()
        self.color = QColor(color)
        self.setupUI(title, value, subtitle, icon)

    def setupUI(self, title, value, subtitle, icon):
        self.setFrameStyle(QFrame.Shape.NoFrame)
        self.setStyleSheet(f"""
            DashboardCard {{
                background-color: white;
                border-radius: 12px;
                padding: 20px;
                box-shadow: 0 4px 12px rgba(0,0,0,0.1);
                transition: all 0.3s ease;
            }}
            DashboardCard:hover {{
                box-shadow: 0 8px 24px rgba(0,0,0,0.15);
                transform: translateY(-2px);
            }}
        """)

        layout = QVBoxLayout()

        # Başlık ve icon
        header = QHBoxLayout()
        icon_label = QLabel(icon)
        icon_label.setStyleSheet(f"font-size: 24px; color: {self.color.name()};")
        header.addWidget(icon_label)

        header.addStretch()

        title_label = QLabel(title)
        title_label.setStyleSheet("""
            color: #666666;
            font-size: 14px;
            font-weight: 500;
            text-transform: uppercase;
        """)
        header.addWidget(title_label)
        layout.addLayout(header)

        # Değer
        value_label = QLabel(value)
        value_label.setStyleSheet(f"""
            color: {self.color.name()};
            font-size: 32px;
            font-weight: bold;
            margin: 10px 0;
        """)
        layout.addWidget(value_label)

        # Alt başlık
        if subtitle:
            subtitle_label = QLabel(subtitle)
            subtitle_label.setStyleSheet("color: #888888; font-size: 12px;")
            layout.addWidget(subtitle_label)

        self.setLayout(layout)


class SidebarMenu(QWidget):
    """Kenar menü widget"""

    menuItemSelected = pyqtSignal(str)

    def __init__(self):
        super().__init__()
        self.selected_item = "dashboard"
        self.setupUI()

    def setupUI(self):
        self.setFixedWidth(250)
        self.setStyleSheet("""
            QWidget {
                background: linear-gradient(180deg, #1a1a2e 0%, #16213e 100%);
                color: white;
            }
        """)

        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        # Logo
        logo_frame = QFrame()
        logo_frame.setFixedHeight(80)
        logo_frame.setStyleSheet("""
            QFrame {
                background-color: rgba(255,255,255,0.1);
                border-bottom: 1px solid rgba(255,255,255,0.1);
            }
        """)
        logo_layout = QHBoxLayout()
        logo_label = QLabel("🏭")
        logo_label.setStyleSheet("font-size: 32px;")
        logo_layout.addWidget(logo_label)

        title_label = QLabel("Fikatia")
        title_label.setStyleSheet("""
            font-size: 24px;
            font-weight: bold;
            color: white;
        """)
        logo_layout.addWidget(title_label)
        logo_layout.addStretch()

        logo_frame.setLayout(logo_layout)
        layout.addWidget(logo_frame)

        # Menü öğeleri
        menu_items = [
            ("dashboard", "📊 Ana Dashboard", "#FF6B6B"),
            ("cnc", "🔧 CNC Takip", "#4ECDC4"),
            ("uretim", "📦 Üretim", "#45B7D1"),
            ("projeler", "📁 Projeler", "#96CEB4"),
            ("siparisler", "💰 Siparişler", "#FFEAA7"),
            ("teklifler", "💼 Teklifler", "#DDA0DD"),
            ("analiz", "📈 Analiz", "#98D8C8"),
            ("admin", "⚙️ Admin Paneli", "#FFA07A"),
        ]

        self.menu_buttons = QButtonGroup()
        for item_id, text, color in menu_items:
            btn = QPushButton(text)
            btn.setCheckable(True)
            btn.setStyleSheet(f"""
                QPushButton {{
                    background-color: transparent;
                    border: none;
                    padding: 15px 20px;
                    text-align: left;
                    font-size: 14px;
                    color: rgba(255,255,255,0.8);
                }}
                QPushButton:hover {{
                    background-color: rgba(255,255,255,0.1);
                    color: white;
                }}
                QPushButton:checked {{
                    background-color: {color};
                    color: white;
                    font-weight: bold;
                    border-left: 4px solid white;
                }}
            """)
            btn.setProperty("menu_id", item_id)
            btn.clicked.connect(lambda checked, mid=item_id: self.onMenuClick(mid))
            self.menu_buttons.addButton(btn)
            layout.addWidget(btn)

        layout.addStretch()

        # Kullanıcı bilgisi
        user_frame = QFrame()
        user_frame.setStyleSheet("""
            QFrame {
                background-color: rgba(255,255,255,0.1);
                border-top: 1px solid rgba(255,255,255,0.1);
                padding: 15px;
            }
        """)
        user_layout = QHBoxLayout()
        user_icon = QLabel("👤")
        user_icon.setStyleSheet("font-size: 20px;")
        user_layout.addWidget(user_icon)

        user_info = QVBoxLayout()
        user_name = QLabel("Admin Kullanıcı")
        user_name.setStyleSheet("font-weight: bold; font-size: 12px;")
        user_info.addWidget(user_name)

        user_role = QLabel("Sistem Yöneticisi")
        user_role.setStyleSheet("font-size: 10px; color: rgba(255,255,255,0.7);")
        user_info.addWidget(user_role)

        user_layout.addLayout(user_info)
        user_frame.setLayout(user_layout)
        layout.addWidget(user_frame)

        self.setLayout(layout)

        # İlk öğeyi seç
        self.menu_buttons.buttons()[0].setChecked(True)

    def onMenuClick(self, menu_id):
        self.selected_item = menu_id
        self.menuItemSelected.emit(menu_id)


class WebDashboard(QMainWindow):
    """Ana Web Dashboard Penceresi"""

    def __init__(self):
        super().__init__()
        self.sample_data = self.createSampleData()
        self.current_page = "dashboard"
        self.setupUI()

    def createSampleData(self):
        """Örnek veriler oluştur"""
        return {
            "projeler": [
                Proje(
                    id="PRJ-001", ad="Otomatik Vites Sistemi", musteri="OtoTek A.Ş.",
                    durum="Üretim", baslangic=datetime.now() - timedelta(days=30),
                    bitis=datetime.now() + timedelta(days=45), bütce=250000,
                    harcanan=125000, ilerleme=65, sorumlu="Ahmet Demir",
                    takim_uyeleri=["Mehmet Kaya", "Ali Yılmaz"], oncelik="Kritik",
                    risk_seviyesi="Orta"
                ),
                Proje(
                    id="PRJ-002", ad="Hidrolik Pres Kalıbı", musteri="PresMak Endüstri",
                    durum="Tasarım", baslangic=datetime.now() - timedelta(days=15),
                    bitis=datetime.now() + timedelta(days=60), bütce=180000,
                    harcanan=45000, ilerleme=25, sorumlu="Mehmet Kaya",
                    takim_uyeleri=["Ali Yılmaz"], oncelik="Yüksek", risk_seviyesi="Düşük"
                ),
            ],
            "siparisler": [
                Siparis(
                    id="SIP-001", proje_id="PRJ-001", musteri="OtoTek A.Ş.",
                    urun_kodu="VTS-001", urun_adi="Vites Dişlisi Seti", miktar=50,
                    birim_fiyat=1250.50, toplam_tutar=62525,
                    siparis_tarihi=datetime.now() - timedelta(days=10),
                    teslim_tarihi=datetime.now() + timedelta(days=20),
                    durum="Üretimde", odeme_durumu="Kısmi Ödeme",
                    kargo_takip="TR123456789"
                ),
                Siparis(
                    id="SIP-002", proje_id="PRJ-002", musteri="PresMak Endüstri",
                    urun_kodu="KLP-002", urun_adi="Pres Kalıbı Üst", miktar=2,
                    birim_fiyat=45000, toplam_tutar=90000,
                    siparis_tarihi=datetime.now() - timedelta(days=5),
                    teslim_tarihi=datetime.now() + timedelta(days=55),
                    durum="Beklemede", odeme_durumu="Ödenmedi", kargo_takip="-"
                ),
            ],
            "teklifler": [
                Teklif(
                    id="TKF-001", musteri="Otomotiv giant A.Ş.",
                    proje_adi="Yeni Nesil Motor Bloğu",
                    konu="500 Adet Premium Motor Bloğu Üretimi",
                    tarih=datetime.now() - timedelta(days=5),
                    gecerlilik_tarihi=datetime.now() + timedelta(days=25),
                    durum="Beklemede", toplam_tutar=850000, kdv=153000,
                    indirim=25000, net_tutar=978000, temsilci="Ahmet Demir",
                    ihtimal=75, notlar="Kritik proje, yüksek kar marjı"
                ),
            ]
        }

    def setupUI(self):
        self.setWindowTitle("Fikatia Modelhane - Web Dashboard")
        self.setGeometry(100, 100, 1400, 900)

        # Ana stil
        self.setStyleSheet("""
            QMainWindow {
                background-color: #f5f5f5;
            }
            QWidget {
                font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto;
            }
        """)

        # Merkezi widget
        central_widget = QWidget()
        self.setCentralWidget(central_widget)

        # Ana layout
        main_layout = QHBoxLayout()
        main_layout.setContentsMargins(0, 0, 0, 0)
        main_layout.setSpacing(0)

        # Sidebar
        self.sidebar = SidebarMenu()
        self.sidebar.menuItemSelected.connect(self.navigateToPage)
        main_layout.addWidget(self.sidebar)

        # İçerik alanı
        self.content_stack = QStackedWidget()
        self.content_stack.setStyleSheet("""
            QStackedWidget {
                background-color: #f5f5f5;
            }
        """)

        # Sayfaları oluştur
        self.createPages()

        main_layout.addWidget(self.content_stack)
        central_widget.setLayout(main_layout)

    def createPages(self):
        """Tüm sayfaları oluştur"""
        # Ana Dashboard
        self.dashboard_page = self.createDashboardPage()
        self.content_stack.addWidget(self.dashboard_page)

        # CNC Takip
        self.cnc_page = self.createCNCPage()
        self.content_stack.addWidget(self.cnc_page)

        # Üretim
        self.uretim_page = self.createUretimPage()
        self.content_stack.addWidget(self.uretim_page)

        # Projeler
        self.projeler_page = self.createProjelerPage()
        self.content_stack.addWidget(self.projeler_page)

        # Siparişler
        self.siparisler_page = self.createSiparislerPage()
        self.content_stack.addWidget(self.siparisler_page)

        # Teklifler
        self.teklifler_page = self.createTekliflerPage()
        self.content_stack.addWidget(self.teklifler_page)

        # Analiz
        self.analiz_page = self.createAnalizPage()
        self.content_stack.addWidget(self.analiz_page)

        # Admin Paneli
        self.admin_page = self.createAdminPage()
        self.content_stack.addWidget(self.admin_page)

    def navigateToPage(self, page_id):
        """Sayfa arasında geçiş"""
        self.current_page = page_id

        # Sayfa indekslerini belirle
        page_map = {
            "dashboard": 0,
            "cnc": 1,
            "uretim": 2,
            "projeler": 3,
            "siparisler": 4,
            "teklifler": 5,
            "analiz": 6,
            "admin": 7
        }

        # İlgili sayfaya geçiş yap
        if page_id in page_map:
            self.content_stack.setCurrentIndex(page_map[page_id])

    def createDashboardPage(self):
        """Ana Dashboard sayfası"""
        page = QWidget()
        layout = QVBoxLayout()

        # Başlık
        header = self.createPageHeader("📊 Ana Dashboard", "Genel bakış ve istatistikler")
        layout.addWidget(header)

        # Kartlar grid
        cards_layout = QGridLayout()

        cards = [
            ("Toplam Proje", "12", "2 Kritik", "📁", "#FF6B6B"),
            ("Aktif Sipariş", "24", "4 Acil", "💰", "#4ECDC4"),
            ("Bekleyen Teklif", "8", "3 Son Gün", "💼", "#45B7D1"),
            ("Verimlilik", "%87.5", "↑ 5.2%", "⚡", "#96CEB4"),
            ("Makine Durumu", "3/4", "1 Bakımda", "🔧", "#FFEAA7"),
            ("Toplam Ciro", "$2.4M", "Bu ay", "💵", "#DDA0DD"),
        ]

        for i, (title, value, subtitle, icon, color) in enumerate(cards):
            card = DashboardCard(title, value, subtitle, icon, color)
            cards_layout.addWidget(card, i // 3, i % 3)

        layout.addLayout(cards_layout)

        # Alt istatistikler
        stats_widget = QWidget()
        stats_widget.setStyleSheet("""
            QWidget {
                background-color: white;
                border-radius: 12px;
                padding: 20px;
            }
        """)
        stats_layout = QHBoxLayout()

        # Son aktiviteler
        aktivite_frame = QFrame()
        aktivite_frame.setStyleSheet("""
            QFrame {
                border: 1px solid #e0e0e0;
                border-radius: 8px;
                padding: 15px;
            }
        """)
        aktivite_layout = QVBoxLayout()
        aktivite_title = QLabel("🔔 Son Aktiviteler")
        aktivite_title.setStyleSheet("font-size: 16px; font-weight: bold; color: #333;")
        aktivite_layout.addWidget(aktivite_title)

        aktiviteler = [
            "Yeni sipariş: SIP-003 - RobotTech",
            "Proje tamamlandı: PRJ-045",
            "Teklif kabul: TKF-012",
            "Makine bakımı: CNC-002",
        ]

        for akt in aktiviteler:
            label = QLabel(f"• {akt}")
            label.setStyleSheet("color: #666; padding: 5px;")
            aktivite_layout.addWidget(label)

        aktivite_frame.setLayout(aktivite_layout)
        stats_layout.addWidget(aktivite_frame)

        # Hızlı erişim
        hizli_frame = QFrame()
        hizli_frame.setStyleSheet("""
            QFrame {
                border: 1px solid #e0e0e0;
                border-radius: 8px;
                padding: 15px;
            }
        """)
        hizli_layout = QVBoxLayout()
        hizli_title = QLabel("⚡ Hızlı Erişim")
        hizli_title.setStyleSheet("font-size: 16px; font-weight: bold; color: #333;")
        hizli_layout.addWidget(hizli_title)

        buttons_layout = QVBoxLayout()
        for text in ["+ Yeni Proje", "+ Yeni Sipariş", "+ Yeni Teklif", "Rapor Oluştur"]:
            btn = WebStyleButton(text, "#4CAF50")
            buttons_layout.addWidget(btn)

        hizli_layout.addLayout(buttons_layout)
        hizli_frame.setLayout(hizli_layout)
        stats_layout.addWidget(hizli_frame)

        stats_widget.setLayout(stats_layout)
        layout.addWidget(stats_widget)

        page.setLayout(layout)
        return page

    def createCNCPage(self):
        """CNC Takip sayfası"""
        page = QWidget()
        layout = QVBoxLayout()

        header = self.createPageHeader("🔧 CNC Takip", "Makine durumu ve üretim takibi")
        layout.addWidget(header)

        # Filtreler
        filter_frame = QFrame()
        filter_frame.setStyleSheet("background-color: white; padding: 15px; border-radius: 8px;")
        filter_layout = QHBoxLayout()

        filter_layout.addWidget(QLabel("Makine:"))
        makine_combo = QComboBox()
        makine_combo.addItems(["Tümü", "CNC-001", "CNC-002", "FRZ-001"])
        filter_layout.addWidget(makine_combo)

        filter_layout.addWidget(QLabel("Durum:"))
        durum_combo = QComboBox()
        durum_combo.addItems(["Tümü", "Çalışıyor", "Boşta", "Bakımda"])
        filter_layout.addWidget(durum_combo)

        filter_layout.addStretch()
        btn_yenile = WebStyleButton("🔄 Yenile", "#2196F3")
        filter_layout.addWidget(btn_yenile)

        filter_frame.setLayout(filter_layout)
        layout.addWidget(filter_frame)

        # Makine grid
        makineler_grid = QGridLayout()
        makineler_grid.setSpacing(15)

        # Örnek makine kartları
        for i in range(4):
            makine_frame = QFrame()
            makine_frame.setStyleSheet("""
                QFrame {
                    background-color: white;
                    border-radius: 12px;
                    padding: 20px;
                }
            """)

            makine_layout = QVBoxLayout()

            # Makine başlık
            header_layout = QHBoxLayout()
            makine_adi = QLabel(f"CNC-00{i+1}")
            makine_adi.setStyleSheet("font-size: 18px; font-weight: bold; color: #333;")
            header_layout.addWidget(makine_adi)

            durum_label = QLabel(["Çalışıyor", "Boşta", "Bakımda", "Arıza"][i])
            durum_renk = ["#4CAF50", "#FFC107", "#FF9800", "#F44336"][i]
            durum_label.setStyleSheet(f"""
                background-color: {durum_renk};
                color: white;
                padding: 5px 15px;
                border-radius: 20px;
                font-weight: bold;
            """)
            header_layout.addWidget(durum_label)
            makine_layout.addLayout(header_layout)

            # Verimlilik
            verim_label = QLabel("Verimlilik: %87")
            verim_label.setStyleSheet("color: #666; font-size: 12px;")
            makine_layout.addWidget(verim_label)

            verim_bar = QProgressBar()
            verim_bar.setValue(87)
            verim_bar.setStyleSheet("""
                QProgressBar {
                    border: 1px solid #ddd;
                    border-radius: 5px;
                    text-align: center;
                    background-color: #f0f0f0;
                }
                QProgressBar::chunk {
                    background-color: #4CAF50;
                    border-radius: 4px;
                }
            """)
            makine_layout.addWidget(verim_bar)

            # Sensör verileri
            sensor_grid = QGridLayout()
            sensor_data = [
                ("Sıcaklık", "42°C", "#FF5722"),
                ("Vibrasyon", "0.8g", "#2196F3"),
                ("Çalışma", "1245h", "#9C27B0"),
            ]

            for j, (label, value, color) in enumerate(sensor_data):
                lbl = QLabel(f"{label}:")
                lbl.setStyleSheet("color: #666; font-size: 11px;")
                sensor_grid.addWidget(lbl, j, 0)

                val_lbl = QLabel(value)
                val_lbl.setStyleSheet(f"color: {color}; font-weight: bold;")
                sensor_grid.addWidget(val_lbl, j, 1)

            makine_layout.addLayout(sensor_grid)

            makine_frame.setLayout(makine_layout)
            makineler_grid.addWidget(makine_frame, i // 2, i % 2)

        layout.addLayout(makineler_grid)
        page.setLayout(layout)
        return page

    def createUretimPage(self):
        """Üretim sayfası"""
        page = QWidget()
        layout = QVBoxLayout()

        header = self.createPageHeader("📦 Üretim Takip", "İş emri yönetimi")
        layout.addWidget(header)

        # Üretim tablosu
        table = QTableWidget()
        table.setColumnCount(8)
        table.setHorizontalHeaderLabels([
            "İş Emri", "Parça", "Miktar", "Tamamlandı", "Durum",
            "Makine", "Operator", "Tarih"
        ])

        # Örnek veriler
        table.setRowCount(10)
        for i in range(10):
            table.setItem(i, 0, QTableWidgetItem(f"PO-2024-{i+1:03d}"))
            table.setItem(i, 1, QTableWidgetItem(f"Parça-{i+1}"))
            table.setItem(i, 2, QTableWidgetItem(str(random.randint(10, 100))))
            table.setItem(i, 3, QTableWidgetItem(str(random.randint(0, 100))))
            table.setItem(i, 4, QTableWidgetItem(random.choice(["Bekliyor", "İşleniyor", "Tamamlandı"])))
            table.setItem(i, 5, QTableWidgetItem(f"CNC-00{random.randint(1,4)}"))
            table.setItem(i, 6, QTableWidgetItem(f"Op-{random.randint(1,8):02d}"))
            table.setItem(i, 7, QTableWidgetItem((datetime.now() - timedelta(days=random.randint(0,30))).strftime("%d.%m.%Y")))

        table.setStyleSheet("""
            QTableWidget {
                background-color: white;
                border-radius: 8px;
                gridline-color: #e0e0e0;
            }
            QTableWidget::item {
                padding: 10px;
            }
            QHeaderView::section {
                background-color: #f5f5f5;
                padding: 12px;
                font-weight: bold;
                border: none;
            }
        """)

        layout.addWidget(table)
        page.setLayout(layout)
        return page

    def createProjelerPage(self):
        """Projeler sayfası"""
        page = QWidget()
        layout = QVBoxLayout()

        header = self.createPageHeader("📁 Proje Yönetimi", "Tüm projeler ve detayları")
        layout.addWidget(header)

        # Proje kartları
        scroll = QScrollArea()
        scroll.setWidgetResizable(True)
        scroll.setStyleSheet("QScrollArea { background-color: transparent; }")

        projeler_widget = QWidget()
        projeler_layout = QGridLayout()
        projeler_layout.setSpacing(20)

        for i, proje in enumerate(self.sample_data["projeler"]):
            proje_card = QFrame()
            proje_card.setStyleSheet("""
                QFrame {
                    background-color: white;
                    border-radius: 12px;
                    padding: 25px;
                    border: 1px solid #e0e0e0;
                }
                QFrame:hover {
                    box-shadow: 0 8px 24px rgba(0,0,0,0.1);
                }
            """)

            card_layout = QVBoxLayout()

            # Proje başlık
            header_layout = QHBoxLayout()
            proje_id = QLabel(proje.id)
            proje_id.setStyleSheet("font-size: 12px; color: #999; font-weight: bold;")
            header_layout.addWidget(proje_id)

            header_layout.addStretch()

            oncelik_label = QLabel(proje.oncelik)
            oncelik_renk = "#F44336" if proje.oncelik == "Kritik" else "#FF9800" if proje.oncelik == "Yüksek" else "#4CAF50"
            oncelik_label.setStyleSheet(f"""
                background-color: {oncelik_renk};
                color: white;
                padding: 4px 12px;
                border-radius: 12px;
                font-size: 11px;
                font-weight: bold;
            """)
            header_layout.addWidget(oncelik_label)
            card_layout.addLayout(header_layout)

            # Proje adı
            proje_adi = QLabel(proje.ad)
            proje_adi.setStyleSheet("font-size: 18px; font-weight: bold; color: #333; margin: 10px 0;")
            card_layout.addWidget(proje_adi)

            # Müşteri
            musteri_label = QLabel(f"🏢 {proje.musteri}")
            musteri_label.setStyleSheet("color: #666; margin-bottom: 10px;")
            card_layout.addWidget(musteri_label)

            # Durum ve ilerleme
            durum_label = QLabel(proje.durum)
            durum_renk = "#2196F3"
            durum_label.setStyleSheet(f"""
                background-color: {durum_renk};
                color: white;
                padding: 6px 16px;
                border-radius: 6px;
                font-weight: bold;
                display: inline-block;
                margin-bottom: 15px;
            """)
            card_layout.addWidget(durum_label)

            # İlerleme çubuğu
            ilerleme_bar = QProgressBar()
            ilerleme_bar.setValue(int(proje.ilerleme))
            ilerleme_bar.setStyleSheet("""
                QProgressBar {
                    border: 1px solid #ddd;
                    border-radius: 5px;
                    text-align: center;
                    background-color: #f0f0f0;
                    height: 20px;
                }
                QProgressBar::chunk {
                    background-color: #2196F3;
                    border-radius: 4px;
                }
            """)
            card_layout.addWidget(ilerleme_bar)

            # Detaylar
            details_layout = QHBoxLayout()
            details_layout.addWidget(QLabel(f"📅 {proje.baslangic.strftime('%d.%m.%Y')} - {proje.bitis.strftime('%d.%m.%Y')}"))
            details_layout.addWidget(QLabel(f"💰 ${proje.bütce:,.0f}"))
            details_layout.addWidget(QLabel(f"👤 {proje.sorumlu}"))
            card_layout.addLayout(details_layout)

            proje_card.setLayout(card_layout)
            projeler_layout.addWidget(proje_card, i // 2, i % 2)

        projeler_widget.setLayout(projeler_layout)
        scroll.setWidget(projeler_widget)
        layout.addWidget(scroll)

        page.setLayout(layout)
        return page

    def createSiparislerPage(self):
        """Siparişler sayfası"""
        page = QWidget()
        layout = QVBoxLayout()

        header = self.createPageHeader("💰 Sipariş Yönetimi", "Tüm siparişler ve ödeme takibi")
        layout.addWidget(header)

        # Sipariş tablosu
        table = QTableWidget()
        table.setColumnCount(9)
        table.setHorizontalHeaderLabels([
            "Sipariş No", "Müşteri", "Ürün", "Miktar", "Birim Fiyat",
            "Toplam", "Durum", "Ödeme", "Teslim Tarihi"
        ])

        table.setRowCount(len(self.sample_data["siparisler"]))

        for i, siparis in enumerate(self.sample_data["siparisler"]):
            table.setItem(i, 0, QTableWidgetItem(siparis.id))
            table.setItem(i, 1, QTableWidgetItem(siparis.musteri))
            table.setItem(i, 2, QTableWidgetItem(siparis.urun_adi))
            table.setItem(i, 3, QTableWidgetItem(str(siparis.miktar)))
            table.setItem(i, 4, QTableWidgetItem(f"${siparis.birim_fiyat:.2f}"))
            table.setItem(i, 5, QTableWidgetItem(f"${siparis.toplam_tutar:,.2f}"))

            durum_item = QTableWidgetItem(siparis.durum)
            durum_color = "#4CAF50" if siparis.durum == "Teslim Edildi" else "#2196F3" if siparis.durum == "Üretimde" else "#FF9800"
            durum_item.setBackground(QColor(durum_color))
            durum_item.setForeground(QColor("white"))
            table.setItem(i, 6, durum_item)

            odeme_item = QTableWidgetItem(siparis.odeme_durumu)
            odeme_color = "#F44336" if siparis.odeme_durumu == "Ödenmedi" else "#FF9800" if siparis.odeme_durumu == "Kısmi Ödeme" else "#4CAF50"
            odeme_item.setBackground(QColor(odeme_color))
            odeme_item.setForeground(QColor("white"))
            table.setItem(i, 7, odeme_item)

            table.setItem(i, 8, QTableWidgetItem(siparis.teslim_tarihi.strftime("%d.%m.%Y")))

        table.setStyleSheet("""
            QTableWidget {
                background-color: white;
                border-radius: 8px;
                gridline-color: #e0e0e0;
            }
        """)

        layout.addWidget(table)
        page.setLayout(layout)
        return page

    def createTekliflerPage(self):
        """Teklifler sayfası"""
        page = QWidget()
        layout = QVBoxLayout()

        header = self.createPageHeader("💼 Teklif Yönetimi", "Teklifler ve kazanma oranları")
        layout.addWidget(header)

        # Teklif kartları
        cards_layout = QGridLayout()
        cards_layout.setSpacing(20)

        for i, teklif in enumerate(self.sample_data["teklifler"]):
            teklif_card = QFrame()
            teklif_card.setStyleSheet("""
                QFrame {
                    background-color: white;
                    border-radius: 12px;
                    padding: 20px;
                    border-left: 4px solid #FFD700;
                }
            """)

            card_layout = QVBoxLayout()

            # Teklif başlık
            header_layout = QHBoxLayout()
            teklif_id = QLabel(teklif.id)
            teklif_id.setStyleSheet("font-size: 14px; color: #999; font-weight: bold;")
            header_layout.addWidget(teklif_id)

            header_layout.addStretch()

            durum_label = QLabel(teklif.durum)
            durum_renk = "#4CAF50" if teklif.durum == "Kabul" else "#FF9800" if teklif.durum == "Beklemede" else "#2196F3"
            durum_label.setStyleSheet(f"""
                background-color: {durum_renk};
                color: white;
                padding: 4px 12px;
                border-radius: 12px;
                font-size: 11px;
                font-weight: bold;
            """)
            header_layout.addWidget(durum_label)
            card_layout.addLayout(header_layout)

            # Müşteri ve proje
            musteri_label = QLabel(f"🏢 {teklif.musteri}")
            musteri_label.setStyleSheet("font-size: 16px; font-weight: bold; color: #333;")
            card_layout.addWidget(musteri_label)

            proje_label = QLabel(f"📋 {teklif.proje_adi}")
            proje_label.setStyleSheet("color: #666; font-size: 14px; margin-bottom: 10px;")
            card_layout.addWidget(proje_label)

            # Konu
            konu_label = QLabel(teklif.konu)
            konu_label.setStyleSheet("color: #888; margin-bottom: 15px;")
            konu_label.setWordWrap(True)
            card_layout.addWidget(konu_label)

            # Fiyat bilgisi
            fiyat_layout = QHBoxLayout()
            fiyat_layout.addWidget(QLabel("Toplam:"))
            toplam_label = QLabel(f"${teklif.toplam_tutar:,.0f}")
            toplam_label.setStyleSheet("font-size: 20px; font-weight: bold; color: #333;")
            fiyat_layout.addWidget(toplam_label)
            fiyat_layout.addStretch()
            card_layout.addLayout(fiyat_layout)

            # Kazanma ihtimali
            ihtimal_bar = QProgressBar()
            ihtimal_bar.setValue(int(teklif.ihtimal))
            ihtimal_bar.setStyleSheet("""
                QProgressBar {
                    border: 1px solid #ddd;
                    border-radius: 5px;
                    text-align: center;
                    background-color: #f0f0f0;
                    height: 20px;
                }
                QProgressBar::chunk {
                    background-color: #4CAF50;
                    border-radius: 4px;
                }
            """)
            card_layout.addWidget(QLabel(f"Kazanma İhtimali: %{teklif.ihtimal:.0f}"))
            card_layout.addWidget(ihtimal_bar)

            # Temsilci ve tarih
            footer_layout = QHBoxLayout()
            footer_layout.addWidget(QLabel(f"👤 {teklif.temsilci}"))
            footer_layout.addStretch()
            footer_layout.addWidget(QLabel(f"📅 {teklif.tarih.strftime('%d.%m.%Y')}"))
            card_layout.addLayout(footer_layout)

            teklif_card.setLayout(card_layout)
            cards_layout.addWidget(teklif_card, i // 2, i % 2)

        layout.addLayout(cards_layout)
        page.setLayout(layout)
        return page

    def createAnalizPage(self):
        """Analiz sayfası"""
        page = QWidget()
        layout = QVBoxLayout()

        header = self.createPageHeader("📈 Analiz ve Raporlama", "Performans grafikleri ve istatistikler")
        layout.addWidget(header)

        # Grafik alanları
        charts_layout = QGridLayout()

        # Grafik placeholder'ları
        charts = [
            ("Aylık Ciro", "$500K", "📈", "#4CAF50"),
            ("Proje Tamamlanma", "85%", "✅", "#2196F3"),
            ("Müşteri Memnuniyeti", "4.8/5", "⭐", "#FF9800"),
            ("Verimlilik Artışı", "+12%", "⚡", "#9C27B0"),
        ]

        for i, (title, value, icon, color) in enumerate(charts):
            chart_frame = QFrame()
            chart_frame.setStyleSheet("""
                QFrame {
                    background-color: white;
                    border-radius: 12px;
                    padding: 20px;
                }
            """)

            chart_layout = QVBoxLayout()

            # Başlık
            chart_header = QHBoxLayout()
            icon_label = QLabel(icon)
            icon_label.setStyleSheet(f"font-size: 32px; color: {color};")
            chart_header.addWidget(icon_label)

            title_label = QLabel(title)
            title_label.setStyleSheet("font-size: 16px; font-weight: bold; color: #333;")
            chart_header.addWidget(title_label)
            chart_header.addStretch()
            chart_layout.addLayout(chart_header)

            # Değer
            value_label = QLabel(value)
            value_label.setStyleSheet(f"font-size: 36px; font-weight: bold; color: {color};")
            value_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
            chart_layout.addWidget(value_label)

            # Grafik placeholder
            graph_placeholder = QFrame()
            graph_placeholder.setStyleSheet("""
                QFrame {
                    background-color: #f5f5f5;
                    border: 2px dashed #ddd;
                    border-radius: 8px;
                    height: 100px;
                }
            """)
            chart_layout.addWidget(graph_placeholder)

            chart_frame.setLayout(chart_layout)
            charts_layout.addWidget(chart_frame, i // 2, i % 2)

        layout.addLayout(charts_layout)
        page.setLayout(layout)
        return page

    def createAdminPage(self):
        """Admin paneli sayfası"""
        page = QWidget()
        layout = QVBoxLayout()

        header = self.createPageHeader("⚙️ Admin Paneli", "Sistem yönetimi ve ayarlar")
        layout.addWidget(header)

        # Admin sekmeleri
        admin_tabs = QTabWidget()
        admin_tabs.setStyleSheet("""
            QTabWidget::pane {
                background-color: white;
                border-radius: 8px;
            }
            QTabBar::tab {
                background-color: #f5f5f5;
                padding: 10px 20px;
                margin-right: 2px;
                font-weight: bold;
            }
            QTabBar::tab:selected {
                background-color: white;
                border-bottom: 3px solid #2196F3;
            }
        """)

        # Kullanıcı yönetimi
        users_tab = QWidget()
        users_layout = QVBoxLayout()

        # Yeni kullanıcı butonu
        btn_add_user = WebStyleButton("+ Yeni Kullanıcı Ekle", "#4CAF50")
        users_layout.addWidget(btn_add_user)

        # Kullanıcı tablosu
        users_table = QTableWidget()
        users_table.setColumnCount(5)
        users_table.setHorizontalHeaderLabels(["ID", "Ad Soyad", "E-posta", "Rol", "Durum"])
        users_table.setRowCount(5)

        # Örnek kullanıcılar
        users = [
            ["001", "Ahmet Demir", "ahmet@fikatia.com", "Admin", "Aktif"],
            ["002", "Mehmet Kaya", "mehmet@fikatia.com", "Operatör", "Aktif"],
            ["003", "Ali Yılmaz", "ali@fikatia.com", "Yönetici", "Aktif"],
            ["004", "Veli Can", "veli@fikatia.com", "Operatör", "Pasif"],
            ["005", "Hakan Bülent", "hakan@fikatia.com", "Admin", "Aktif"],
        ]

        for i, user in enumerate(users):
            for j, value in enumerate(user):
                users_table.setItem(i, j, QTableWidgetItem(value))

        users_layout.addWidget(users_table)
        users_tab.setLayout(users_layout)
        admin_tabs.addTab(users_tab, "👥 Kullanıcılar")

        # Sistem ayarları
        settings_tab = QWidget()
        settings_layout = QVBoxLayout()

        settings_groups = [
            ("Genel Ayarlar", [
                ("Şirket Adı", QLineEdit("Fikatia Modelhane")),
                ("Sistem Saati Dilimi", QComboBox()),
                ("Varsayılan Dil", QComboBox()),
                ("Yedekleme Sıklığı", QComboBox()),
            ]),
            ("Bildirimler", [
                ("E-posta Bildirimleri", QCheckBox()),
                ("SMS Bildirimleri", QCheckBox()),
                ("Sistem Bildirimleri", QCheckBox()),
                ("Acil Durum Uyarıları", QCheckBox()),
            ]),
            ("Veritabanı", [
                ("Otomatik Yedekleme", QCheckBox()),
                ("Yedekleme Konumu", QLineEdit()),
                ("Veri Saklama Süresi", QSpinBox()),
                ("Log Seviyesi", QComboBox()),
            ]),
        ]

        for group_title, items in settings_groups:
            group = QGroupBox(group_title)
            group.setStyleSheet("""
                QGroupBox {
                    font-weight: bold;
                    font-size: 14px;
                    padding-top: 15px;
                }
                QGroupBox::title {
                    subcontrol-origin: margin;
                    left: 10px;
                    padding: 0 10px 0 10px;
                }
            """)

            group_layout = QGridLayout()

            for i, (label_text, widget) in enumerate(items):
                label = QLabel(label_text)
                group_layout.addWidget(label, i, 0)

                if isinstance(widget, QComboBox):
                    widget.addItems(["Seçenek 1", "Seçenek 2", "Seçenek 3"])
                elif isinstance(widget, QSpinBox):
                    widget.setRange(1, 365)
                    widget.setValue(30)

                group_layout.addWidget(widget, i, 1)

            group.setLayout(group_layout)
            settings_layout.addWidget(group)

        # Kaydet butonu
        btn_save = WebStyleButton("💾 Ayarları Kaydet", "#2196F3")
        settings_layout.addWidget(btn_save)

        settings_tab.setLayout(settings_layout)
        admin_tabs.addTab(settings_tab, "⚙️ Sistem Ayarları")

        # Raporlar
        reports_tab = QWidget()
        reports_layout = QVBoxLayout()

        # Rapor butonları
        report_buttons_layout = QGridLayout()
        reports = [
            ("📊 Günlük Üretim Raporu", "#4CAF50"),
            ("💰 Finansal Özet", "#2196F3"),
            ("📦 Sipariş Durumu", "#FF9800"),
            ("👥 Performans Analizi", "#9C27B0"),
            ("🔧 Bakım Planı", "#F44336"),
            ("📈 Trend Analizi", "#00BCD4"),
        ]

        for i, (text, color) in enumerate(reports):
            btn = WebStyleButton(text, color)
            report_buttons_layout.addWidget(btn, i // 2, i % 2)

        reports_layout.addLayout(report_buttons_layout)
        reports_tab.setLayout(reports_layout)
        admin_tabs.addTab(reports_tab, "📄 Raporlar")

        layout.addWidget(admin_tabs)
        page.setLayout(layout)
        return page

    def createPageHeader(self, title, subtitle):
        """Sayfa başlığı oluştur"""
        header = QFrame()
        header.setStyleSheet("""
            QFrame {
                background-color: white;
                border-radius: 12px;
                padding: 20px 30px;
                margin-bottom: 20px;
            }
        """)

        header_layout = QVBoxLayout()

        title_label = QLabel(title)
        title_label.setStyleSheet("""
            font-size: 28px;
            font-weight: bold;
            color: #333;
        """)
        header_layout.addWidget(title_label)

        subtitle_label = QLabel(subtitle)
        subtitle_label.setStyleSheet("""
            font-size: 14px;
            color: #666;
        """)
        header_layout.addWidget(subtitle_label)

        header.setLayout(header_layout)
        return header


def main():
    """Ana fonksiyon"""
    app = QApplication(sys.argv)
    app.setStyle('Fusion')

    window = WebDashboard()
    window.show()

    sys.exit(app.exec())


if __name__ == "__main__":
    main()