package com.example.doctor.Patients.Reports

import android.graphics.Color
import android.os.Bundle
import android.transition.TransitionInflater
import android.util.Log
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.Menu
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.appcompat.widget.PopupMenu
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.GridLayoutManager
import com.example.doctor.DoctorViewModel
import com.example.doctor.Patients.PatientsListFragment
import com.example.doctor.Patients.Reports.Edit.EditSportFragment
import com.example.doctor.Pref.ConclusionPref
import com.example.doctor.R as R_D
import android.R
import android.content.Intent
import androidx.fragment.app.FragmentActivity
import com.example.doctor.Adapter.VpAdapter
import com.example.doctor.Auth.AuthActivity
import com.example.doctor.CodeError.Code429Activity
import com.example.doctor.CodeError.Code500Activity
import com.example.doctor.Enternet.EnternetActivity
import com.example.doctor.Enternet.EnternetCheck
import com.example.doctor.Patients.Model.PatientAllModel
import com.example.doctor.Patients.Reports.Courses.TabLayout.CoursesAllFragment
import com.example.doctor.Patients.Reports.Courses.TabLayout.CoursesYouFragment
import com.example.doctor.Pref.ClearPref
import com.example.doctor.Pref.SavePref
import com.example.doctor.Retrofit.DoctorApi
import com.example.doctor.Setting.Courses.EditCourses.TabLayoutEditCourses.AllSportCoursesDoctorFragment
import com.example.doctor.Setting.Courses.EditCourses.TabLayoutEditCourses.YourSportCoursesDoctorFragment
import com.example.doctor.Toast.showCustomInfoToast
import com.example.doctor.Toast.showCustomNiceToast
import com.example.doctor.databinding.FragmentPatientsBinding
import com.example.doctor.databinding.ItemQuestionnaireAfterBinding
import com.google.android.material.tabs.TabLayoutMediator
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import java.time.LocalDate


class PatientFragment : Fragment() {
    private lateinit var binding: FragmentPatientsBinding
    private val modelDoctor: DoctorViewModel by activityViewModels()
    lateinit var adapter: QBBAdapter
    lateinit var adapterCours: CoursesListAdapter
    private lateinit var doctorApi: DoctorApi
    val prefDoctorConclusion = ConclusionPref()
    val prefDoctorClear = ClearPref()
    val prefDoctorSave = SavePref()
    var id: Int? = null
    var block = ""
    var pause = ""
    var id_sport = ""

    var btnSC = 0;

    var idPatient = 0;

    //Класс проверки интеренета
    val enternetCheck = EnternetCheck()

    //Для 10 сек обновления
    var qba:List<QBAModel>?=null
    var patientAll:PatientAllModel?=null

    private val tList = listOf(
        "Все",
        "Ваши",
    )

    //Список с фрагментами для переключения
    private val flist = listOf(
        CoursesAllFragment.newInstance(),
        CoursesYouFragment.newInstance(),
    )

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = FragmentPatientsBinding.inflate(layoutInflater, container, false)
        return binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        initRcViewDay()
        init()
        modelDoctor.qbaList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
            if(qba != it){
                qba = it
                adapter.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter)
               // binding.txtNullQBA.visibility = View.GONE
            }
        }

        idPatient = prefDoctorConclusion.conclusionIdPatient(requireContext())

        modelDoctor.BtnSportCoursDoctorCurrent.observe(viewLifecycleOwner){
            if(it == 1){
                binding.btnClearSportPatient.setCardBackgroundColor(Color.parseColor("#D86767"))
            }
            else if(it == 2){
                binding.btnClearSportPatient.setCardBackgroundColor(Color.parseColor("#A9D867"))
            }
            else{
                binding.btnClearSportPatient.setCardBackgroundColor(Color.parseColor("#D86767"))
            }
        }


        val inflater = TransitionInflater.from(requireContext())
        enterTransition = inflater.inflateTransition(R_D.transition.slide_right)

        binding.btnExit.setOnClickListener {
            exitTransition = inflater.inflateTransition(R_D.transition.slide_right)

            activity?.finish()
        }

        popMenu()

        //Вывод экрана
        viewPatient()

        //Получаем id
        modelDoctor.patientId.observe(viewLifecycleOwner){
            Log.i("adsa","as111111111111dsadasd")
        }

        //Вывод данных
        modelDoctor.patientCurrent.observe(viewLifecycleOwner) {
            if(patientAll !=it){
                patientAll = it
                binding.txtLogin.text = it.login
                id = it.id
                modelDoctor.id_patient.value = id
                block = it.block.toString()
                pause = it.pause.toString()
                id_sport = it.id_sport_patient.toString()
                //Проверка даты, так как если дата уже прошла, то должно выводится что блока нету
                if(block == "null"){
                    block(block)
                }
                else{
                    if(LocalDate.parse(block)<LocalDate.now()){
                        block("null")
                    }
                    else{
                        block(block)
                    }
                }

                //Проверка даты, так как если дата уже прошла, то должно выводится что паузы нету
                if(pause == "null"){
                    pause(pause)
                }
                else{
                    if(LocalDate.parse(pause)<LocalDate.now()){
                        pause("null")
                    }
                    else{
                        pause(pause)
                    }
                }
                Log.i("id_sport","$id_sport")
                Log.i("id_sport123","$it")
                //Проверка есть ли курс
                btnClearSportPatient(id_sport)

                report()
            }
        }

        btnCreate()
    }

    private fun btnCreate() = with(binding) {
        CVEditCard.setOnClickListener {  }
        CVSportCourses.setOnClickListener {  }
        CVReportCard.setOnClickListener {  }
        CVEditSportCard.setOnClickListener {  }

    }


    //Функция подключения переключения
    private fun init() = with(binding) {
        val adapter = VpAdapter(activity as FragmentActivity, flist)
        vpCourses.adapter = adapter

        //Переключения (связываем таблаяут(переключатель) с viewpager, чтобы переключать фрагменты)
        TabLayoutMediator(tabLayoutCourses, vpCourses) { tab, pos ->
            tab.text =
                tList[pos]//tab - нажатая кнопка, pos - позиция кнопки, tList[pos] - передаем название по полученной позиции
        }.attach()// attach() - чтобы все переключалось, а не вывадило постоянно один экран

        //Изменения цвета в зависомости на каком из tabLayout вы находитесь
        binding.tabLayoutCourses.setTabTextColors(
            getResources().getColor(com.example.doctor.R.color.black),
            getResources().getColor(com.example.doctor.R.color.white)
        );


    }

        private fun viewPatient() {
        val viewPatient = prefDoctorConclusion.conclusionViewPatient(requireContext())
        val idPatient = 23412
        Log.i("viewPatient1",viewPatient.toString())
        Log.i("idPatient1",viewPatient.toString())
        if(viewPatient ==1 && idPatient !=0 && idPatient !=null){
            GetPatientID(idPatient)
            prefDoctorClear.clearIdPatient(requireContext())
            prefDoctorClear.clearViewPatient(requireContext())
            Log.i("viewPatient2",viewPatient.toString())
            Log.i("idPatient2",viewPatient.toString())
        }
    }

    //Инициализируем Retrofit
    private fun initRetrofit() {
        val interceptor = HttpLoggingInterceptor()
        interceptor.level = HttpLoggingInterceptor.Level.BODY

        val client = OkHttpClient
            .Builder()
            .addInterceptor(interceptor)
            .build()

        val retrofit = Retrofit.Builder()
            .baseUrl("https://rehabilitation.vmeda.org/api/")
            .client(client)
            .addConverterFactory(GsonConverterFactory.create())
            .build()

        doctorApi = retrofit.create(DoctorApi::class.java)

    }
    private fun GetPatientID(idPatient: Int) {
        if (enternetCheck.isOnline(requireContext())) {
            initRetrofit()
            val Tokens = prefDoctorConclusion.conclusionToken(requireContext())
            CoroutineScope(Dispatchers.IO).launch {
                val listPatient = doctorApi.GetPatientID("Bearer $Tokens", idPatient)
                requireActivity().runOnUiThread {


                    //Фиксируем полученные данные
                    val List = listPatient.body()
                    val Nice = listPatient.isSuccessful
                    val Code = listPatient.code()
                    if(Code==429){
                        val intetn = Intent(requireContext(), Code429Activity::class.java)

                        startActivity(intetn)
                    }
                    else if(Code==200) {
                        //Если нету ошибок
                        if (Nice) {
                            if (List != null) {
                                modelDoctor.patientCurrent.value = List
                            }
                        }
                    }
                    else if (Code == 500) {
                        val intetn = Intent(requireContext(), Code500Activity::class.java)

                        startActivity(intetn)
                    }
                    else if (Code == 401) {
                        val intetn = Intent(requireContext(), AuthActivity::class.java)
                        activity?.finish()
                        startActivity(intetn)
                    }
                }

            }
        } else {
            val intetn = Intent(requireContext(), EnternetActivity::class.java)
            activity?.finish()
            startActivity(intetn)
        }

    }

    private fun popMenu() {
        //Созданиеменю
        val popMenu = PopupMenu(
            requireContext(),
            binding.btnQBA
        )

        //Кнопуи
        popMenu.menu.add(Menu.NONE, 0, 0, "Анкета ДО")
        popMenu.menu.add(Menu.NONE, 1, 1, "Анкета ПОСЛЕ")

        popMenu.setOnMenuItemClickListener {
            val id = it.itemId
            //Ситуции при нажатие на один из пунктов
            if (id == 0) {
                binding.CVQB.visibility = View.VISIBLE
            } else if (id == 1) {
                binding.CVQA.visibility = View.VISIBLE
            } else {
                Toast.makeText(requireContext(), "Ошибка", Toast.LENGTH_SHORT).show()
            }

            false
        }
        binding.btnQBA.setOnClickListener {
            //Активируем меню
            popMenu.show()
        }
    }



    //Получения списка анкет ДО и ПОСЛЕ для пациента
    fun ClearSportPaient(){
        if (enternetCheck.isOnline(requireContext())) {
            initRetrofit()
            val Tokens = prefDoctorConclusion.conclusionToken(requireContext())
            CoroutineScope(Dispatchers.IO).launch {
                val listcsp = doctorApi.ClearPatientSport("Bearer $Tokens",id!!)
                requireActivity().runOnUiThread {



                    //Фиксируем полученные данные
                    val List = listcsp.body()
                    val Nice = listcsp.isSuccessful
                    val Code = listcsp.code()
                    if(Code==429){
                        val intetn = Intent(requireContext(), Code429Activity::class.java)

                        startActivity(intetn)
                    }
                    else if(Code==200) {
                        //Если нету ошибок
                        if (Nice) {
                            if (List != null) {
                                GetAllCoursesSport()
                                GetCoursesDoctor()
                                modelDoctor.BtnSportCoursDoctorCurrent.value = 1

                                Toast(requireContext()).showCustomInfoToast(List.message, requireActivity())
                            }
                            else{
                                Toast(requireContext()).showCustomInfoToast("${List?.message}", requireActivity())
                            }
                        }
                    }
                    else if (Code == 500) {
                        val intetn = Intent(requireContext(), Code500Activity::class.java)

                        startActivity(intetn)
                    }
                    else if (Code == 401) {
                        val intetn = Intent(requireContext(), AuthActivity::class.java)
                        activity?.finish()
                        startActivity(intetn)
                    }
                }
            }
        } else {
            val intetn = Intent(requireContext(), EnternetActivity::class.java)
            activity?.finish()
            startActivity(intetn)
        }

    }

    //Получения списка курсов созданных доктором
    fun GetCoursesDoctor() {
        if (enternetCheck.isOnline(requireContext())) {
            initRetrofit()
            val Tokens = prefDoctorConclusion.conclusionToken(requireContext())
            CoroutineScope(Dispatchers.IO).launch {
                val listCoursesDoctor = doctorApi.GetCoursesDoctorPatient("Bearer $Tokens",id!!)

                requireActivity().runOnUiThread {


                    //Фиксируем полученные данные
                    val List = listCoursesDoctor.body()
                    val Nice = listCoursesDoctor.isSuccessful
                    val Code = listCoursesDoctor.code()
                    if(Code==429){
                        val intetn = Intent(requireContext(), Code429Activity::class.java)

                        startActivity(intetn)
                    }
                    else if(Code==200) {
                        //Если нету ошибок
                        if (Nice) {
                            if (List != null) {
                                modelDoctor.SportCoursDoctorList.value = List.courses_doctor
                            }
                        }
                    }
                    else if (Code == 500) {
                        val intetn = Intent(requireContext(), Code500Activity::class.java)

                        startActivity(intetn)
                    }
                    else if (Code == 401) {
                        val intetn = Intent(requireContext(), AuthActivity::class.java)
                        activity?.finish()
                        startActivity(intetn)
                    }

                }

            }
        } else {
            val intetn = Intent(requireContext(), EnternetActivity::class.java)
            activity?.finish()
            startActivity(intetn)
        }

    }

    //Вывод всех курсов
    fun GetAllCoursesSport(){
        if (enternetCheck.isOnline(requireContext())) {
            initRetrofit()
            val Tokens = prefDoctorConclusion.conclusionToken(requireContext())
            CoroutineScope(Dispatchers.IO).launch {
                val listProduct = doctorApi.GetCoursAllPatient("Bearer $Tokens",id!!)
                requireActivity().runOnUiThread {

                    //Фиксируем полученные данные
                    val List = listProduct.body()
                    val Nice = listProduct.isSuccessful
                    val Code = listProduct.code()
                    if(Code==429){
                        val intetn = Intent(requireContext(), Code429Activity::class.java)

                        startActivity(intetn)
                    }
                    else if(Code==200) {
                        //Если нету ошибок
                        if (Nice) {
                            if (List != null) {
                                modelDoctor.SportCoursList.value = List.courses

                            }
                        }
                    }
                    else if (Code == 500) {
                        val intetn = Intent(requireContext(), Code500Activity::class.java)

                        startActivity(intetn)
                    }
                    else if (Code == 401) {
                        val intetn = Intent(requireContext(), AuthActivity::class.java)
                        activity?.finish()
                        startActivity(intetn)
                    }
                }
            }
        } else {
            val intetn = Intent(requireContext(), EnternetActivity::class.java)
            activity?.finish()
            startActivity(intetn)
        }

    }

    private fun btnClearSportPatient(id_sport:String) {
        if (id_sport == "null") {
            modelDoctor.BtnSportCoursDoctorCurrent.value = 1
        } else {
            modelDoctor.BtnSportCoursDoctorCurrent.value = 2
        }
        binding.btnClearSportPatient.setOnClickListener {

            ClearSportPaient()
        }
    }

    //Получения списка анкет ДО и ПОСЛЕ для пациента
    fun QBAPatientList()=with(binding){
        if (enternetCheck.isOnline(requireContext())) {
            initRetrofit()
            val Tokens = prefDoctorConclusion.conclusionToken(requireContext())
            CoroutineScope(Dispatchers.IO).launch {
                val listProduct = doctorApi.GetPatientBAQiestionar("Bearer $Tokens",id!!)
                requireActivity().runOnUiThread {


                    //Фиксируем полученные данные
                    val List = listProduct.body()
                    val Nice = listProduct.isSuccessful
                    val Code = listProduct.code()
                    if(Code==429){
                        val intetn = Intent(requireContext(), Code429Activity::class.java)

                        startActivity(intetn)
                    }
                    else if(Code==200) {
                        //Если нету ошибок
                        if (Nice) {
                            if (List != null) {
                                if(List.questionnaire !=null){
                                    txtNullQBA.visibility = View.GONE
                                    modelDoctor.qbaList.value = List.questionnaire
                                }
                            }
                        }
                    }
                    else if (Code == 500) {
                        val intetn = Intent(requireContext(), Code500Activity::class.java)

                        startActivity(intetn)
                    }
                    else if (Code == 401) {
                        val intetn = Intent(requireContext(), AuthActivity::class.java)
                        activity?.finish()
                        startActivity(intetn)
                    }
                }

            }
        } else {
            val intetn = Intent(requireContext(), EnternetActivity::class.java)
            activity?.finish()
            startActivity(intetn)
        }

    }



    private fun pause(pause:String) {
        if (pause == "null") {
            binding.CVPause.setCardBackgroundColor(Color.parseColor("#A9D867"))
        } else {
            binding.CVPause.setCardBackgroundColor(Color.parseColor("#D86767"))
        }
        binding.btnPause.setOnClickListener {
            UpdatePausePatient()
        }
    }

    private fun block(block:String) {
        if (block == "null") {
            binding.CVBlock.setCardBackgroundColor(Color.parseColor("#A9D867"))
        } else {
            binding.CVBlock.setCardBackgroundColor(Color.parseColor("#D86767"))
        }
        binding.btnBlock.setOnClickListener {
            UpdateBlockPatient()
        }
    }

    //Блокировка пациента
    fun UpdateBlockPatient(){
        if (enternetCheck.isOnline(requireContext())) {
            initRetrofit()
            val Tokens = prefDoctorConclusion.conclusionToken(requireContext())
            CoroutineScope(Dispatchers.IO).launch {
                val listProduct = doctorApi.UpdateBlockAccountPatient("Bearer $Tokens", id!!)
                requireActivity().runOnUiThread {


                    //Фиксируем полученные данные
                    val List = listProduct.body()
                    val Nice = listProduct.isSuccessful
                    val Code = listProduct.code()
                    if(Code==429){
                        val intetn = Intent(requireContext(), Code429Activity::class.java)

                        startActivity(intetn)
                    }
                    else if(Code==200) {
                        //Если нету ошибок
                        if (Nice) {
                            if (List != null) {
                                if (block == "null") {
                                    block = "true"
                                    binding.CVBlock.setCardBackgroundColor(Color.parseColor("#D86767"))
                                    Toast(requireContext()).showCustomInfoToast("Блок установлен", requireActivity())
                                } else {
                                    block = "null"
                                    binding.CVBlock.setCardBackgroundColor(Color.parseColor("#A9D867"))
                                    Toast(requireContext()).showCustomInfoToast("Блок убран", requireActivity())
                                }
                            }
                        }
                    }
                    else if (Code == 500) {
                        val intetn = Intent(requireContext(), Code500Activity::class.java)

                        startActivity(intetn)
                    }
                    else if (Code == 401) {
                        val intetn = Intent(requireContext(), AuthActivity::class.java)
                        activity?.finish()
                        startActivity(intetn)
                    }
                }

            }
        } else {
            val intetn = Intent(requireContext(), EnternetActivity::class.java)
            activity?.finish()
            startActivity(intetn)
        }

    }

    //Блокировка пациента
    fun UpdatePausePatient(){
        if (enternetCheck.isOnline(requireContext())) {
            initRetrofit()
            val Tokens = prefDoctorConclusion.conclusionToken(requireContext())
            CoroutineScope(Dispatchers.IO).launch {
                val listProduct = doctorApi.UpdatePauseAccountPatient("Bearer $Tokens", id!!)
                requireActivity().runOnUiThread {


                    //Фиксируем полученные данные
                    val List = listProduct.body()
                    val Nice = listProduct.isSuccessful
                    val Code = listProduct.code()
                    if(Code==429){
                        val intetn = Intent(requireContext(), Code429Activity::class.java)

                        startActivity(intetn)
                    }
                    else if(Code==200) {
                        //Если нету ошибок
                        if (Nice) {
                            if (List != null) {
                                if (pause == "null") {
                                    pause = "true"
                                    binding.CVPause.setCardBackgroundColor(Color.parseColor("#D86767"))
                                    Toast(requireContext()).showCustomInfoToast("Пауза установлен", requireActivity())
                                } else {
                                    pause = "null"
                                    binding.CVPause.setCardBackgroundColor(Color.parseColor("#A9D867"))
                                    Toast(requireContext()).showCustomInfoToast("Пауза убран", requireActivity())
                                }
                            }
                        }
                    }
                    else if (Code == 500) {
                        val intetn = Intent(requireContext(), Code500Activity::class.java)

                        startActivity(intetn)
                    }
                    else if (Code == 401) {
                        val intetn = Intent(requireContext(), AuthActivity::class.java)
                        activity?.finish()
                        startActivity(intetn)
                    }
                }
            }
        } else {
            val intetn = Intent(requireContext(), EnternetActivity::class.java)
            activity?.finish()
            startActivity(intetn)
        }

    }



    //Обновленеи логина
    fun UpdatePatientLogin(id:Int,login:String){
        if (enternetCheck.isOnline(requireContext())) {
            initRetrofit()
            val Tokens = prefDoctorConclusion.conclusionToken(requireContext())
            CoroutineScope(Dispatchers.IO).launch {
                val updateLogin = doctorApi.UpdatePatientLogin("Bearer $Tokens",id,login)
                requireActivity().runOnUiThread {



                    //Фиксируем полученные данные
                    val List = updateLogin.body()
                    val Nice = updateLogin.isSuccessful
                    val Code = updateLogin.code()
                    if(Code==429){
                        val intetn = Intent(requireContext(), Code429Activity::class.java)

                        startActivity(intetn)
                    }
                    else if(Code==200) {
                        //Если нету ошибок
                        if (Nice) {
                            if (List != null) {
                                Toast(requireContext()).showCustomInfoToast(List.message, requireActivity())
                            }
                            else{
                                if (List != null) {
                                    Toast(requireContext()).showCustomInfoToast(List.message, requireActivity())
                                }
                            }
                        }
                    }
                    else if (Code == 500) {
                        val intetn = Intent(requireContext(), Code500Activity::class.java)

                        startActivity(intetn)
                    }
                    else if (Code == 401) {
                        val intetn = Intent(requireContext(), AuthActivity::class.java)
                        activity?.finish()
                        startActivity(intetn)
                    }
                }
            }
        } else {
            val intetn = Intent(requireContext(), EnternetActivity::class.java)
            activity?.finish()
            startActivity(intetn)
        }

    }

    //Обновленеи пароля
    fun UpdatePatientPassword(id:Int,password:String){
        if (enternetCheck.isOnline(requireContext())) {
            initRetrofit()
            val Tokens = prefDoctorConclusion.conclusionToken(requireContext())
            CoroutineScope(Dispatchers.IO).launch {
                val updatePassword= doctorApi.UpdatePatientPassword("Bearer $Tokens",id,password)
                requireActivity().runOnUiThread {
//Фиксируем полученные данные
                    val List = updatePassword.body()
                    val Nice = updatePassword.isSuccessful
                    val Code = updatePassword.code()
                    if(Code==429){
                        val intetn = Intent(requireContext(), Code429Activity::class.java)

                        startActivity(intetn)
                    }
                    else if(Code==200) {
                        //Если нету ошибок
                        if (Nice) {
                            if (List != null) {
                                Toast(requireContext()).showCustomInfoToast(List.message, requireActivity())
                            }
                            else{
                                if (List != null) {
                                    Toast(requireContext()).showCustomInfoToast(List.message, requireActivity())
                                }
                            }
                        }
                    }
                    else if (Code == 500) {
                        val intetn = Intent(requireContext(), Code500Activity::class.java)

                        startActivity(intetn)
                    }
                    else if (Code == 401) {
                        val intetn = Intent(requireContext(), AuthActivity::class.java)
                        activity?.finish()
                        startActivity(intetn)
                    }

                }
            }
        } else {
            val intetn = Intent(requireContext(), EnternetActivity::class.java)
            activity?.finish()
            startActivity(intetn)
        }

    }








    private fun sport() {

    }

    private fun report() = with(binding) {



        btnExitPatientFragment.setOnClickListener {
            activity?.supportFragmentManager?.beginTransaction()
                ?.replace(com.example.doctor.R.id.CLMainListPatient, PatientsListFragment.newInstance())
                ?.commit()
            //this@PatientFragment.onDestroy()
        }

        btnReport.setOnClickListener {
            CVReport.visibility = View.VISIBLE
            QBAPatientList()
        }

        btnSport.setOnClickListener {
            binding.CVSport.visibility = View.VISIBLE
        }

        btnCloseReport.setOnClickListener {
            CVReport.visibility = View.GONE
            initRcViewDay()
        }

        btnClouseEditSport.setOnClickListener {
            CVEditSport.visibility = View.GONE
            initRcViewDay()
        }
        CVEditSport.setOnClickListener {
            CVEditSport.visibility = View.GONE
            initRcViewDay()
        }

        CVEditPatient.setOnClickListener{
            CVEditPatient.visibility = View.GONE
            initRcViewDay()
        }
        btnClouseEditPatient.setOnClickListener{
            CVEditPatient.visibility = View.GONE
            initRcViewDay()
        }


        btnCloseReport2.setOnClickListener {
            CVSport.visibility = View.GONE
        }


        btnCloseBefore.setOnClickListener {
            CVQB.visibility = View.GONE
        }
        btnCloseAfter.setOnClickListener {
            CVQA.visibility = View.GONE
        }


        CVReport.setOnClickListener {
            CVReport.visibility = View.GONE
            initRcViewDay()
        }
        CVSport.setOnClickListener {
            CVSport.visibility = View.GONE
        }

        CVReportList.setOnClickListener {
        }

        btnEditPatient.setOnClickListener {
            CVEditPatient.visibility = View.VISIBLE
        }

        //Переход на страницу редактирования курса
        binding.btnEditSport.setOnClickListener{
            binding.CVEditSport.visibility = View.VISIBLE
            //Вывод фрагмента на активити при первоначальной загрузке
            activity?.supportFragmentManager?.beginTransaction()
                ?.replace(com.example.doctor.R.id.CLEditSport, EditSportFragment.newInstance())
                ?.commit()
        }


        //Нажатие на кнопку для обновления логина
        btnUpdateLogin.setOnClickListener{
            val login = edLogin.text.toString()
            if(login.count() != 0){
                if(login.count() > 3){
                    UpdatePatientLogin(id!!,login)
                }
                else{
                    Toast(requireContext()).showCustomInfoToast("Логин слишком короткий", requireActivity())
                }
            }
            else{
                Toast(requireContext()).showCustomInfoToast("Поле пустое", requireActivity())
            }
        }

        //Нажатие на кнопку для обновления пароля
        btnUpdatePassword.setOnClickListener{
            val password = edPassword.text.toString()
            if(password.count() != 0){
                if(password.count() > 10){
                    UpdatePatientPassword(id!!,password)
                }
                else{
                    Toast(requireContext()).showCustomInfoToast("Пароль слишком короткий", requireActivity())
                }
            }
            else{
                Toast(requireContext()).showCustomInfoToast("Поле пустое", requireActivity())
            }
        }
    }

    //Инициализация списка
    private fun initRcViewDay() = with(binding) {
        RCView.layoutManager = GridLayoutManager(requireContext(), 1)//По вертикали будет выводить по умолчанию
        adapter = QBBAdapter()
        RCView.adapter = adapter
    }


    fun closeViewCard() {
        binding.txtLogin.text = ""
        binding.CVReport.visibility = View.GONE
        initRcViewDay()
    }


    override fun onDestroy() {
        super.onDestroy()
        closeViewCard()
    }

    companion object {
        fun newInstance() = PatientFragment()
    }








}