package com.aistudio.bonjuteri.jwlry.ui.screens import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable 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.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowForwardIos import androidx.compose.material.icons.automirrored.filled.ExitToApp import androidx.compose.material.icons.filled.AdminPanelSettings import androidx.compose.material.icons.filled.Info import androidx.compose.material.icons.filled.LocationOn import androidx.compose.material.icons.filled.Person import androidx.compose.material.icons.filled.ShoppingBag import androidx.compose.material.icons.outlined.Diamond import androidx.compose.material.icons.outlined.VerifiedUser import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text 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.vector.ImageVector import androidx.compose.ui.platform.testTag import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.aistudio.bonjuteri.jwlry.model.UserProfile import com.aistudio.bonjuteri.jwlry.model.UserRole import com.aistudio.bonjuteri.jwlry.ui.theme.ErrorRed import com.aistudio.bonjuteri.jwlry.ui.theme.GoldDark 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 @Composable fun ProfileScreen( userProfile: UserProfile?, orderCount: Int, addressCount: Int, onOrdersClick: () -> Unit, onAddressesClick: () -> Unit, onAdminPanelClick: () -> Unit, onSignOutClick: () -> Unit, modifier: Modifier = Modifier ) { val role = userProfile?.userRole ?: UserRole.USER Column( modifier = modifier .fillMaxSize() .background(OffWhite) .verticalScroll(rememberScrollState()) .padding(16.dp), verticalArrangement = Arrangement.spacedBy(16.dp) ) { // User Header Card Card( modifier = Modifier.fillMaxWidth(), colors = CardDefaults.cardColors(containerColor = PureWhite), shape = RoundedCornerShape(16.dp), elevation = CardDefaults.cardElevation(defaultElevation = 2.dp) ) { Column( modifier = Modifier .fillMaxWidth() .padding(20.dp), horizontalAlignment = Alignment.CenterHorizontally ) { Box( modifier = Modifier .size(68.dp) .background(PrimaryBlack, CircleShape), contentAlignment = Alignment.Center ) { Icon( imageVector = Icons.Outlined.Diamond, contentDescription = null, tint = GoldPrimary, modifier = Modifier.size(34.dp) ) } Spacer(modifier = Modifier.height(12.dp)) Text( text = userProfile?.fullName?.ifBlank { "Değerli Müşterimiz" } ?: "Giriş Yapılmadı", style = MaterialTheme.typography.titleLarge.copy( fontWeight = FontWeight.Bold, color = PrimaryBlack, fontSize = 18.sp ) ) Text( text = userProfile?.email ?: "", style = MaterialTheme.typography.bodyMedium.copy( color = MutedGrey, fontSize = 13.sp ) ) Spacer(modifier = Modifier.height(8.dp)) // Role Badge Box( modifier = Modifier .background( if (role.isPrivileged) GoldPrimary else LightSurface, RoundedCornerShape(20.dp) ) .padding(horizontal = 12.dp, vertical = 4.dp) ) { Text( text = role.displayName.uppercase(), color = if (role.isPrivileged) PureWhite else PrimaryBlack, fontSize = 11.sp, fontWeight = FontWeight.Bold, letterSpacing = 0.5.sp ) } } } // Dedicated Admin Panel Card if user is Privileged if (role.isPrivileged) { Card( modifier = Modifier .fillMaxWidth() .clip(RoundedCornerShape(14.dp)) .clickable { onAdminPanelClick() } .testTag("admin_panel_entry_card"), colors = CardDefaults.cardColors(containerColor = PrimaryBlack), elevation = CardDefaults.cardElevation(defaultElevation = 3.dp) ) { Row( modifier = Modifier .fillMaxWidth() .padding(16.dp), verticalAlignment = Alignment.CenterVertically ) { Box( modifier = Modifier .size(44.dp) .background(GoldPrimary, CircleShape), contentAlignment = Alignment.Center ) { Icon( imageVector = Icons.Filled.AdminPanelSettings, contentDescription = "Yönetim Paneli", tint = PureWhite, modifier = Modifier.size(24.dp) ) } Spacer(modifier = Modifier.width(14.dp)) Column(modifier = Modifier.weight(1f)) { Text( text = "BONJUTERİ Yönetim Paneli", color = PureWhite, fontWeight = FontWeight.Bold, fontSize = 15.sp ) Text( text = "Ürünler, Siparişler, Kategoriler & Dashboard", color = GoldSubtle, fontSize = 11.sp ) } Icon( imageVector = Icons.AutoMirrored.Filled.ArrowForwardIos, contentDescription = null, tint = GoldPrimary, modifier = Modifier.size(16.dp) ) } } } // Account Menu Items Card( modifier = Modifier.fillMaxWidth(), colors = CardDefaults.cardColors(containerColor = PureWhite), shape = RoundedCornerShape(12.dp) ) { Column { ProfileMenuItem( icon = Icons.Filled.ShoppingBag, title = "Siparişlerim", subtitle = "$orderCount Sipariş", onClick = onOrdersClick, testTag = "menu_orders" ) HorizontalDivider(color = SurfaceBorder) ProfileMenuItem( icon = Icons.Filled.LocationOn, title = "Kayıtlı Adreslerim", subtitle = "$addressCount Adres", onClick = onAddressesClick, testTag = "menu_addresses" ) HorizontalDivider(color = SurfaceBorder) ProfileMenuItem( icon = Icons.Outlined.VerifiedUser, title = "Güvenlik & Gizlilik", subtitle = "Hesap güvenliği ve sözleşmeler", onClick = { /* Security */ } ) HorizontalDivider(color = SurfaceBorder) ProfileMenuItem( icon = Icons.Filled.Info, title = "Hakkımızda & Müşteri Hizmetleri", subtitle = "info@bonjuteri.com", onClick = { /* About */ } ) } } // Sign Out Card Card( modifier = Modifier .fillMaxWidth() .clip(RoundedCornerShape(12.dp)) .clickable { onSignOutClick() } .testTag("sign_out_button"), colors = CardDefaults.cardColors(containerColor = PureWhite), shape = RoundedCornerShape(12.dp) ) { Row( modifier = Modifier .fillMaxWidth() .padding(16.dp), verticalAlignment = Alignment.CenterVertically ) { Icon( imageVector = Icons.AutoMirrored.Filled.ExitToApp, contentDescription = "Çıkış Yap", tint = ErrorRed, modifier = Modifier.size(22.dp) ) Spacer(modifier = Modifier.width(14.dp)) Text( text = "Güvenli Çıkış Yap", color = ErrorRed, fontWeight = FontWeight.Bold, fontSize = 14.sp ) } } } } @Composable private fun ProfileMenuItem( icon: ImageVector, title: String, subtitle: String, onClick: () -> Unit, testTag: String? = null ) { Row( modifier = Modifier .fillMaxWidth() .clickable { onClick() } .then(if (testTag != null) Modifier.testTag(testTag) else Modifier) .padding(16.dp), verticalAlignment = Alignment.CenterVertically ) { Icon( imageVector = icon, contentDescription = title, tint = PrimaryBlack, modifier = Modifier.size(20.dp) ) Spacer(modifier = Modifier.width(14.dp)) Column(modifier = Modifier.weight(1f)) { Text(text = title, fontWeight = FontWeight.SemiBold, fontSize = 14.sp, color = PrimaryBlack) Text(text = subtitle, color = MutedGrey, fontSize = 11.sp) } Icon( imageVector = Icons.AutoMirrored.Filled.ArrowForwardIos, contentDescription = null, tint = MutedGrey, modifier = Modifier.size(14.dp) ) } }