package com.example.iplace.main.viewModel.dataView

import android.net.Uri
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
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.width
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material.icons.filled.KeyboardArrowDown
import androidx.compose.material.icons.filled.KeyboardArrowUp
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Card
import androidx.compose.material3.Checkbox
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
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.graphics.asImageBitmap
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.Font
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.em
import androidx.compose.ui.unit.sp
import androidx.navigation.NavHostController
import coil.compose.rememberImagePainter
import com.example.iplace.R
import com.example.iplace.main.viewModel.MainViewModel
import com.example.iplace.main.viewModel.mainView.toBitmap
import com.example.iplace.ui.theme.beige_white
import com.example.iplace.ui.theme.brown_contrast
import java.io.IOException

@Composable
fun PolicyConditionality(navController: NavHostController) {
    val viewModel = MainViewModel()
    val headlinesOswald = FontFamily( //загрузка шрифта
        Font(resId = R.font.headlines_oswald)
    )
    val basicNunitosans = FontFamily(
        Font(resId = R.font.basic_nunitosans)
    )
    var isChecked by remember { mutableStateOf(false) }
    var showError by remember { mutableStateOf(false) }
    Image(
        painter = painterResource(id = R.drawable.pc7),
        contentDescription = "",
        contentScale = ContentScale.FillHeight,
        modifier = Modifier.fillMaxSize()
    )
    Column(
        modifier = Modifier
            .fillMaxSize(),
        verticalArrangement = Arrangement.Top,
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        Spacer(modifier = Modifier.height(60.dp)) //отступ между блоками
        Text(
            text = "I.PLACE",
            fontSize = 45.sp,
            fontWeight = FontWeight.Bold,
            fontFamily = headlinesOswald
        )
        Spacer(modifier = Modifier.height(55.dp))
        Box(
            modifier = Modifier
                .width(350.dp)
                .height(700.dp)
                .clip(RoundedCornerShape(40.dp))
                .background(beige_white.copy(alpha = 0.6f))
//        .alpha(0.8f) //возможная прозрачность формы
        ) {

            Column(
                modifier = Modifier.fillMaxSize(),
                verticalArrangement = Arrangement.Top,
                horizontalAlignment = Alignment.CenterHorizontally
            ) {
                Spacer(modifier = Modifier.height(5.dp)) // Отступ от заголовка

                Row(
                    horizontalArrangement = Arrangement.Start, // Выравнивание по левому краю
                    verticalAlignment = Alignment.CenterVertically,
                    modifier = Modifier.fillMaxWidth()
                ) {
                    IconButton(onClick = { navController.navigate("creatingUser") }) {
                        Icon(
                            imageVector = Icons.Default.ArrowBack,
                            contentDescription = "Назад",
                            modifier = Modifier.padding(top = 20.dp)
                        )
                    }
                    Spacer(modifier = Modifier.width(10.dp)) // Отступ между кнопкой и текстом

                    Text(
                        text = "Политика конденфициальности",
                        fontSize = 18.sp,
                        fontFamily = headlinesOswald,
                        modifier = Modifier
                            .padding(top = 20.dp)
                            .wrapContentSize(Alignment.Center) // Выравнивает текст по центру
                    )
                }
                Spacer(modifier = Modifier.height(10.dp)) // Отступ от заголовка
                Column(
                    modifier = Modifier
                        .fillMaxSize()
                        .verticalScroll(rememberScrollState()) // Добавляем скролл
                        .padding(8.dp) // Отступ от краев экрана
                        ,
                        horizontalAlignment = Alignment.CenterHorizontally,

                    ) {
                    Text(
                        text =  "   В I.Place мы глубоко ценим вашу конфиденциальность и стремимся защитить ваши личные данные. Эта политика конфиденциальности описывает, как мы собираем, используем, раскрываем и защищаем информацию, которую вы предоставляете нам при использовании нашего приложения. \n" +
                                "   Мы можем собирать информацию, которую вы предоставляете нам добровольно, такую как имя пользователя, адрес электронной почты, данные профиля (например, фотография), а также информацию о местах, которые вы сохраняете в свои коллекции. Кроме того, мы можем автоматически собирать данные об использовании приложения, такие как частота использования, посещаемые места, ваш IP-адрес, тип устройства, операционную систему, а также данные о местоположении, если вы разрешили использование функции геолокации. \n" +
                                "   Мы используем собранную информацию для предоставления и улучшения функционала приложения, персонализации контента, улучшения пользовательского опыта, а также для связи с вами – отправки уведомлений о новых функциях, акциях и обновлениях приложения. Мы также анализируем данные об использовании приложения, чтобы понять, как пользователи взаимодействуют с ним, и улучшить его функциональность и удобство.  В дополнение к этому, мы используем собранную информацию для защиты от мошенничества и обеспечения безопасности пользователей.\n" +
                                "   Мы применяем соответствующие меры безопасности для защиты вашей информации от несанкционированного доступа, использования или раскрытия.  Мы не продаем, не обмениваем и не передаем вашу личную информацию третьим лицам без вашего согласия, за исключением случаев, когда это необходимо для предоставления услуг нашими надежными партнерами (например, хостинг, аналитика) или когда это требуется по закону или в связи с судебным разбирательством.\n" +
                                "   Вы имеете право запросить копию информации, которую мы храним о вас, а также запросить исправление неверной или неполной информации. Вы также можете запросить удаление вашей информации из наших систем. \n" +
                                "   Мы можем обновлять эту политику конфиденциальности время от времени. Мы будем публиковать любые изменения на этой странице. \n" +
                                "   Если у вас есть какие-либо вопросы или комментарии по поводу этой политики конфиденциальности, пожалуйста, свяжитесь с нами по адресу lexus0506rus@gmail.com.",
                        fontSize = 16.sp,
                        lineHeight = 1.5.em,
                        fontWeight = FontWeight.Bold,
                        fontFamily = basicNunitosans, //шрифт
                        modifier = Modifier.padding(horizontal = 10.dp) //отступ слева и справа
                    )
                    Spacer(modifier = Modifier.height(20.dp))
                    // Поле "Я соглашаюсь"
                    Row(verticalAlignment = Alignment.CenterVertically) {
                        Checkbox(
                            checked = isChecked,
                            onCheckedChange = { isChecked = it }
                        )
                        Text(
                            text = "Я соглашаюсь с условиями использования",
                            fontSize = 16.sp,
                            fontFamily = basicNunitosans
                        )
                    }

                    // Отображение ошибки, если галочка не установлена
                    if (showError) {
                        Text(
                            text = "Пожалуйста, подтвердите согласие с условиями использования",
                            color = Color.Red,
                            fontSize = 14.sp,
                            fontFamily = basicNunitosans
                        )
                    }

                    Button(
                        onClick = {
                            if (isChecked) {
                                navController.navigate("profile")
                            } else {
                                showError = true
                            }
                        },
                        modifier = Modifier.width(290.dp).height(50.dp),
                        colors = ButtonDefaults.buttonColors(brown_contrast),
                        enabled = isChecked // Отключить кнопку, если галочка не установлена
                    ) {
                        Text(
                            text = "Войти",
                            fontSize = 24.sp,
                            fontFamily = basicNunitosans
                        )
                    }
                    Spacer(modifier = Modifier.height(40.dp))
                }
            }
        }
    }
}