package com.example.doctor


import android.annotation.SuppressLint
import android.icu.text.SimpleDateFormat
import android.icu.util.Calendar
import android.os.Bundle
import android.os.SystemClock
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Observer
//import androidx.navigation.fragment.findNavController
import com.example.doctor.Appeals.AppealsFragment
import com.example.doctor.Home.HomeFragment
import com.example.doctor.Patients.PatientsListFragment
import com.example.doctor.Pref.ConclusionPref
import com.example.doctor.Pref.SavePref
import com.example.doctor.Setting.SettingFragment
import com.example.doctor.databinding.FragmentMainBinding
import java.util.Date


class MainFragment : Fragment() {
    private lateinit var binding: FragmentMainBinding
    private val dataModel: DataModel by activityViewModels()//Для передачи данных
    val prefDoctorSave = SavePref()
    val prefDoctorConclusion = ConclusionPref()

    private var Token = ""
    var sdf: SimpleDateFormat = SimpleDateFormat("EEEE")
    var d: Date = Date()
    var dayOfTheWeek: String = sdf.format(d)
    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = FragmentMainBinding.inflate(layoutInflater, container, false)
        return binding.root
    }

    @SuppressLint("ResourceType")
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        //MainAndAuth()
        dataModel.fragmentMenu.observe(viewLifecycleOwner, Observer {
            binding.buttonNavigation.selectedItemId = it
        })

        addDate()

        fragment_inicializ()


    }

    private fun addDate() {
        val calendar: Calendar = Calendar.getInstance()
        val sdf: SimpleDateFormat = SimpleDateFormat("EEEE")
        val d: Date = Date()
        val DayOfTheWeek: String = sdf.format(d)
        val Day = calendar.get(Calendar.DATE)
        val Month = calendar.get(Calendar.MONTH).plus(1)
        var day = Day.toString()
        var month = ""
        var date_of_the_week = ""

        when (Month) {
            1 -> month = "Январь"
            2 -> month = "Февраль"
            3 -> month = "Март"
            4 -> month = "Апрель"
            5 -> month = "Май"
            6 -> month = "Июнь"
            7 -> month = "Июль"
            8 -> month = "Август"
            9 -> month = "Сентябрь"
            10 -> month = "Октябрь"
            11 -> month = "Ноябрь"
            12 -> month = "Декабрь"
            else -> { // обратите внимание на блок
                month = ""
            }
        }

        when (dayOfTheWeek) {
            "Monday" -> date_of_the_week = "Пн"
            "Tuesday" -> date_of_the_week = "Вт"
            "Wednesday" -> date_of_the_week = "Ср"
            "Thursday" -> date_of_the_week = "Чт"
            "Friday" -> date_of_the_week = "Пт"
            "Saturday" -> date_of_the_week = "Сб"
            "Sunday" -> date_of_the_week = "Вс"
            "Понедельник" -> date_of_the_week = "Пн"
            "Вторник" -> date_of_the_week = "Вт"
            "Стреда" -> date_of_the_week = "Ср"
            "Четверг" -> date_of_the_week = "Чт"
            "Пятница" -> date_of_the_week = "Пт"
            "Суббота" -> date_of_the_week = "Сб"
            "Воскресенье" -> date_of_the_week = "Вс"
            else -> {
                date_of_the_week = ""
            }
        }

        System.out.println(calendar.get(Calendar.DATE))
        binding.txtDate.setText("${day}" + " " + "${month}")
    }

//    fun MainAndAuth(){
//
//        //Token = prefDoctorConclusion.conclusionToken()
//        if(Token == ""){
//            Auth()
//        }
//        else{
//            Main()
//        }
//    }

//    fun Auth(){
//        val intetn = Intent(requireContext(), AuthActivity::class.java)
//        startActivity(intetn)
//        activity?.finish()
//    }
//    fun Main(){
//        fragment_inicializ()
//    }


    //Инициализация фрагментов
    fun fragment_inicializ() {

        Token = prefDoctorConclusion.conclusionToken(requireContext())
        //Вывод фрагмента на активити при первоначальной загрузке
        activity?.supportFragmentManager?.beginTransaction()
            ?.replace(R.id.CLMainFragment, HomeFragment.newInstance())
            ?.commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем


        //Эран который будет выбран по умолчанию(кнопка которая будет прожата по умолчанию)
        binding.buttonNavigation.selectedItemId =
            R.id.home//По умолчанию и так первая, но на всякий случай выберу еще програмным путем первую ячейку

        //Нажатие на bottom navigation
        binding.buttonNavigation.setOnItemSelectedListener {

            when (it.itemId) {//it.itemId - это id нажатого элемента
                R.id.home -> {
                    if (!isClickRecently()) {
                        activity?.supportFragmentManager?.beginTransaction()
                            ?.replace(R.id.CLMainFragment, HomeFragment.newInstance())
                            ?.commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
                    }
                }

                R.id.patient -> {
                    if (!isClickRecently()) {
                        activity?.supportFragmentManager?.beginTransaction()
                            ?.replace(R.id.CLMainFragment, PatientsListFragment.newInstance())
                            ?.commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
                    }
                }

                R.id.list_check -> {//Если вы не авторизованный пользваотель то вам не будет доступен доступ к данном фрагменту
                    if (!isClickRecently()) {
                        activity?.supportFragmentManager?.beginTransaction()
                            ?.replace(R.id.CLMainFragment, AppealsFragment.newInstance())
                            ?.commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
                    }
                }

                R.id.setting -> {//Если вы не авторизованный пользваотель то вам не будет доступен доступ к данном фрагменту
                    if (!isClickRecently()) {
                        activity?.supportFragmentManager?.beginTransaction()
                            ?.replace(R.id.CLMainFragment, SettingFragment.newInstance())
                            ?.commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
                    }
                }

            }
            true
        }
    }

    var mLastClickTime = 0L
    fun isClickRecently(): Boolean {
        if (SystemClock.elapsedRealtime() - mLastClickTime < 500) {
            return true
        }
        mLastClickTime = SystemClock.elapsedRealtime()
        return false
    }





    companion object {

        fun newInstance() = MainFragment()
    }
}