package com.aistudio.bonjuteri.jwlry.ui.screens import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.LocalShipping import androidx.compose.material.icons.filled.ShoppingBag import androidx.compose.material.icons.outlined.Diamond import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import coil.compose.AsyncImage import coil.request.ImageRequest import com.aistudio.bonjuteri.jwlry.model.Order import com.aistudio.bonjuteri.jwlry.ui.components.EmptyStateView import com.aistudio.bonjuteri.jwlry.ui.theme.GoldPrimary import com.aistudio.bonjuteri.jwlry.ui.theme.GoldSubtle import com.aistudio.bonjuteri.jwlry.ui.theme.LightSurface import com.aistudio.bonjuteri.jwlry.ui.theme.MutedGrey import com.aistudio.bonjuteri.jwlry.ui.theme.OffWhite import com.aistudio.bonjuteri.jwlry.ui.theme.PrimaryBlack import com.aistudio.bonjuteri.jwlry.ui.theme.PureWhite import com.aistudio.bonjuteri.jwlry.ui.theme.SurfaceBorder @OptIn(ExperimentalMaterial3Api::class) @Composable fun OrdersScreen( orders: List, onBackClick: () -> Unit, modifier: Modifier = Modifier ) { Scaffold( topBar = { TopAppBar( title = { Text("Siparişlerim", fontWeight = FontWeight.Bold) }, navigationIcon = { IconButton(onClick = onBackClick) { Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Geri") } }, colors = TopAppBarDefaults.topAppBarColors(containerColor = PureWhite) ) } ) { padding -> if (orders.isEmpty()) { EmptyStateView( icon = Icons.Filled.ShoppingBag, title = "Henüz Siparişiniz Bulunmuyor", description = "Verdiğiniz tüm siparişleri ve kargo takip durumlarını bu ekrandan takip edebilirsiniz.", modifier = Modifier.padding(padding).fillMaxSize() ) } else { LazyColumn( modifier = modifier .fillMaxSize() .padding(padding) .background(OffWhite) .padding(14.dp), verticalArrangement = Arrangement.spacedBy(14.dp) ) { items(orders, key = { it.id }) { order -> Card( modifier = Modifier.fillMaxWidth(), colors = CardDefaults.cardColors(containerColor = PureWhite), shape = RoundedCornerShape(14.dp), elevation = CardDefaults.cardElevation(defaultElevation = 2.dp) ) { Column(modifier = Modifier.padding(16.dp)) { // Order Header Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { Column { Text( text = order.orderNumber, style = MaterialTheme.typography.titleMedium.copy( fontWeight = FontWeight.Bold, color = PrimaryBlack ) ) Text( text = order.formattedDate, style = MaterialTheme.typography.bodySmall.copy(color = MutedGrey) ) } // Status badge val status = order.statusEnum Box( modifier = Modifier .background(Color(status.colorHex).copy(alpha = 0.15f), RoundedCornerShape(12.dp)) .padding(horizontal = 10.dp, vertical = 4.dp) ) { Text( text = status.displayName, color = Color(status.colorHex), fontWeight = FontWeight.Bold, fontSize = 11.sp ) } } HorizontalDivider(modifier = Modifier.padding(vertical = 10.dp), color = SurfaceBorder) // Items in Order Column(verticalArrangement = Arrangement.spacedBy(8.dp)) { order.items.forEach { item -> Row( modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically ) { Box( modifier = Modifier .size(44.dp) .clip(RoundedCornerShape(6.dp)) .background(LightSurface), contentAlignment = Alignment.Center ) { if (item.imageUrl.isNotBlank()) { AsyncImage( model = ImageRequest.Builder(LocalContext.current) .data(item.imageUrl) .crossfade(true) .build(), contentDescription = item.title, modifier = Modifier.fillMaxSize(), contentScale = ContentScale.Crop ) } else { Icon(Icons.Outlined.Diamond, contentDescription = null, tint = GoldPrimary, modifier = Modifier.size(20.dp)) } } Spacer(modifier = Modifier.width(10.dp)) Column(modifier = Modifier.weight(1f)) { Text(text = item.title, style = MaterialTheme.typography.bodyMedium.copy(fontWeight = FontWeight.Medium), maxLines = 1) Text(text = "${item.quantity} adet × ${com.aistudio.bonjuteri.jwlry.model.Product.formatCurrency(item.price)}", style = MaterialTheme.typography.bodySmall.copy(color = MutedGrey)) } Text(text = com.aistudio.bonjuteri.jwlry.model.Product.formatCurrency(item.totalPrice), style = MaterialTheme.typography.titleSmall.copy(fontWeight = FontWeight.Bold)) } } } HorizontalDivider(modifier = Modifier.padding(vertical = 10.dp), color = SurfaceBorder) // Cargo & tracking info if available if (order.trackingNumber.isNotBlank()) { Card( modifier = Modifier.fillMaxWidth(), colors = CardDefaults.cardColors(containerColor = GoldSubtle), shape = RoundedCornerShape(8.dp) ) { Row(modifier = Modifier.padding(10.dp), verticalAlignment = Alignment.CenterVertically) { Icon(Icons.Filled.LocalShipping, contentDescription = null, tint = GoldPrimary, modifier = Modifier.size(18.dp)) Spacer(modifier = Modifier.width(8.dp)) Text( text = "Kargo: ${order.cargoCompany} - Takip No: ${order.trackingNumber}", fontSize = 12.sp, fontWeight = FontWeight.SemiBold, color = PrimaryBlack ) } } Spacer(modifier = Modifier.height(10.dp)) } // Payment status & Total Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { Text( text = "Ödeme: ${order.paymentStatusEnum.displayName}", fontSize = 12.sp, color = MutedGrey ) Text( text = "Toplam: ${order.formattedTotal}", style = MaterialTheme.typography.titleLarge.copy( fontWeight = FontWeight.Black, color = PrimaryBlack, fontSize = 16.sp ) ) } } } } } } } }