package com.example.weterynarz

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Text
import androidx.compose.material3.TextField
import androidx.compose.runtime.Composable
import androidx.compose.runtime.*      // remember, mutableStateOf
import androidx.compose.foundation.lazy.LazyColumn  // lista
import androidx.compose.foundation.lazy.items   // lista items
import androidx.compose.foundation.clickable    // lista click
import androidx.compose.foundation.layout.Row
import androidx.compose.material3.Button
import androidx.compose.material3.Slider
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.example.weterynarz.ui.theme.WeterynarzTheme

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //enableEdgeToEdge()
        setContent {
            WeterynarzTheme {
                Wizyta()
            }
        }
    }
}

@Composable
fun Wizyta() {
    var imieNazwisko by remember { mutableStateOf("") }     // imię i nazwisko
    val zwierzeta = listOf("Pies", "Kot", "Swinka morska")  // elementy listy
    var wybraneZwierze by remember { mutableStateOf("") }   // wybrane zwierzę
    var sliderMax by remember { mutableStateOf(20f) }        // max wartość slidera
    var sliderWartosc by remember { mutableStateOf(0f) }     // wartość slidera (slider value wymaga float)
    var celWizyty by remember { mutableStateOf("") }         // cel wizyty

    var godzinaWizyty by remember { mutableStateOf("16:00") }         // wpisany czas
    var isValid by remember { mutableStateOf(true) }         // błąd wpisanego czasu

    var info by remember { mutableStateOf("") }              // informacja końcowa

    val timeRegex = Regex("^(2[0-3]|[01]?[0-9]):([0-5]?[0-9])$") // Wyrażenie regularne dla formatu 24-godzinnego

    Column (
        modifier = Modifier
           .background(Color(0xFF90EE90))
        ){

        Text(
            text = "Wizyta u weterynarza",
            fontSize = 24.sp,
            modifier = Modifier
                .background(Color(0xFF2E8B57))
                .fillMaxWidth()
                .padding(10.dp)
        )
        TextField(
            value = imieNazwisko,
            onValueChange = { imieNazwisko = it },
            label = { Text("Imię i nazwisko właściciela...") },
            modifier = Modifier
                .background(Color(0xFF90EE90))
                //.background(Color.Red, shape = RoundedCornerShape(8.dp))
                .fillMaxWidth()

        )
        Text(
            text = "Gatunek"
        )
        LazyColumn() {
            items(zwierzeta) { item ->
                Text(
                    text = item,
                    modifier = Modifier
                        .clickable {
                            wybraneZwierze = item
                            sliderWartosc = 0f   // reset slidera
                            if (item=="Pies"){
                                sliderMax = 18f
                            }else if (item=="Kot"){
                                sliderMax = 20f
                            }else{
                                sliderMax = 9f
                            }
                        }
                )
            }
        }
        Row{
            Text("Ile ma lat?")
            Text("${sliderWartosc.toInt()}")  // konwersja z float to int
            Slider(
                value = sliderWartosc,
                onValueChange = { sliderWartosc = it },
                valueRange = 0f..sliderMax
            )
        }
        TextField(
            value = celWizyty,
            onValueChange = { celWizyty = it },
            label = { Text("Cel wizyty...") },
            modifier = Modifier
                .fillMaxWidth()
                .background(Color(0xFF90EE90))
        )
        TextField(
            value = godzinaWizyty,
            onValueChange = { newTime ->
                godzinaWizyty = newTime
                isValid = timeRegex.matches(newTime)  // walidacja wpisywanego czasu
            },
            //label = { Text("Wprowadź czas (24h)") },
            isError = !isValid,    // jeśli isError == true label jest czerwony
            textStyle = TextStyle(color = if (!isValid) Color.Red else Color.Black),
            modifier = Modifier
                .fillMaxWidth()
        )
        Button(onClick = {
            info = "${imieNazwisko}, ${wybraneZwierze}, ${sliderWartosc.toInt()}, ${celWizyty}, ${godzinaWizyty}"
        }) {
            Text("OK")
        }
        Text(
            text= if(isValid) info else "wprowadź czas we właściwym formacie"
        )

    }

}

@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
    WeterynarzTheme {
        Wizyta()
    }
}