diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index c2779f7..3e1e7f3 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -7,11 +7,11 @@ - + - + \ No newline at end of file diff --git a/app/release/app-release.apk b/app/release/app-release.apk new file mode 100644 index 0000000..bcaf906 Binary files /dev/null and b/app/release/app-release.apk differ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dff9da2..63f9d44 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -30,9 +30,7 @@ android:theme="@style/Theme.Rehabilitation" android:usesCleartextTraffic="true" tools:targetApi="31"> - + - - @@ -60,6 +50,24 @@ android:screenOrientation="portrait" android:value="" /> + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Adapter/VpAdapter.kt b/app/src/main/java/com/example/rehabilitation/Adapter/VpAdapter.kt new file mode 100644 index 0000000..e7a3c8e --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Adapter/VpAdapter.kt @@ -0,0 +1,17 @@ +package com.example.rehabilitation.Adapter + +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentActivity +import androidx.viewpager2.adapter.FragmentStateAdapter + +class VpAdapter(fr_act:FragmentActivity, private val list:List):FragmentStateAdapter(fr_act) {//private val list:List - список с фрагментами сюда передастся, тоесть с двумя фрагментами + //Возврощаем для createFragment количество элементов(фрагментов) в листе(List) + override fun getItemCount(): Int { + return list.size//возврощаем количество фрагметов + } + + //Позиция фрагмента или 1 или 2, то есть 0 или 1. И по позиции будут выводится фрагмент. + override fun createFragment(position: Int): Fragment { + return list[position]//Возврощаем фрагмент из листа по позиции + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Appeals/AppealsFragment.kt b/app/src/main/java/com/example/rehabilitation/Appeals/AppealsFragment.kt new file mode 100644 index 0000000..363a4ff --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Appeals/AppealsFragment.kt @@ -0,0 +1,245 @@ +package com.example.rehabilitation.Appeals + +import android.content.Intent +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.FragmentActivity +import androidx.fragment.app.activityViewModels +import com.example.rehabilitation.Adapter.VpAdapter +import com.example.rehabilitation.Appeals.TabLayout.NewAppealsFragment +import com.example.rehabilitation.Appeals.TabLayout.OldAppealsFragment +import com.example.rehabilitation.Auth.AuthorizationActivity +import com.example.rehabilitation.CodeError.Code429Activity +import com.example.rehabilitation.CodeError.Code500Activity +import com.example.rehabilitation.Enternet.EnternetActivity +import com.example.rehabilitation.Enternet.EnternetCheck +import com.example.rehabilitation.PatientViewModel +import com.example.rehabilitation.Pref.ConclusionPref +import com.example.rehabilitation.R +import com.example.rehabilitation.Retrofit.PatientApi +import com.example.rehabilitation.databinding.FragmentAppealsBinding +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.util.Timer +import kotlin.concurrent.fixedRateTimer + + +class AppealsFragment : Fragment() { + private lateinit var binding: FragmentAppealsBinding + + private val modelPatient: PatientViewModel by activityViewModels() + private lateinit var patientApi: PatientApi + private lateinit var timer: Timer + + val prefPatientConclusion = ConclusionPref() + + //Класс проверки интеренета + val enternetCheck = EnternetCheck() + + private val tList = listOf( + "новые", + "обработанные", + ) + + //Список с фрагментами для переключения + private val flist = listOf( + NewAppealsFragment.newInstance(), + OldAppealsFragment.newInstance(), + ) + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentAppealsBinding.inflate(layoutInflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + init() + + binding.btnAddMessage.setOnClickListener { + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.CLAppeals, CreateMessageFragment.newInstance())?.commit() + binding.ConstrainLayoutProductEdit.visibility = View.GONE + binding.CLAppeals.visibility = View.VISIBLE + } + +// fixedRateTimer("timer", false, 0, 10000) { +// activity?.runOnUiThread { +// +// } +// } + } + + + private fun getOldAppeals() { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val listAppeals = patientApi.GetAppealsPatientOld("Bearer $Tokens") + requireActivity().runOnUiThread { + + //Фиксируем полученные данные + val List = listAppeals.body() + val Nice = listAppeals.isSuccessful + val Code = listAppeals.code() + if(Code==429){ + val intetn = Intent(requireContext(), Code429Activity::class.java) + + startActivity(intetn) + } + else if(Code==200) { + //Если нету ошибок + if (Nice) { + //Если нету ошибок + if (List != null) { + if(List.appeals_old != null){ + modelPatient.appealsOldList.value = List.appeals_old + } + } + + } + getNewAppeals() + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + + startActivity(intetn) + } + else if (Code == 401) { + val intetn = Intent(requireContext(), AuthorizationActivity::class.java) + activity?.finish() + startActivity(intetn) + } + + } + + } + } + + //Получение необработанных сообщений + private fun getNewAppeals() { + if (enternetCheck.isOnline(requireContext())) { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val listAppeals = patientApi.GetAppealsPatientNew("Bearer $Tokens") + requireActivity().runOnUiThread { + + //Фиксируем полученные данные + val List = listAppeals.body() + val Nice = listAppeals.isSuccessful + val Code = listAppeals.code() + if(Code==429){ + val intetn = Intent(requireContext(), Code429Activity::class.java) + + startActivity(intetn) + } + else if(Code==200) { + //Если нету ошибок + if (Nice) { + //Если нету ошибок + if (List != null) { + if(List.appeals_new != null){ + modelPatient.appealsNewList.value = List.appeals_new + } + } + } + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + + startActivity(intetn) + } + else if (Code == 401) { + val intetn = Intent(requireContext(), AuthorizationActivity::class.java) + activity?.finish() + startActivity(intetn) + } + } + + } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + activity?.finish() + startActivity(intetn) + } + + } + + //Инициализируем Retrofit + private fun initRetrofit() { + val interceptor = HttpLoggingInterceptor() + interceptor.level = HttpLoggingInterceptor.Level.BODY + + val client = OkHttpClient + .Builder() + .addInterceptor(interceptor) + .build() + + val retrofit = Retrofit.Builder() + .baseUrl("http://mobileapp.vmeda.org/api/") + .client(client) + .addConverterFactory(GsonConverterFactory.create()) + .build() + + patientApi = retrofit.create(PatientApi::class.java) + + } + + //Функция подключения переключения + private fun init() = with(binding) { + val adapter = VpAdapter(activity as FragmentActivity, flist) + vpProduct.adapter = adapter + + //Переключения (связываем таблаяут(переключатель) с viewpager, чтобы переключать фрагменты) + TabLayoutMediator(tabLayoutProduct, vpProduct) { tab, pos -> + tab.text = + tList[pos]//tab - нажатая кнопка, pos - позиция кнопки, tList[pos] - передаем название по полученной позиции + }.attach()// attach() - чтобы все переключалось, а не вывадило постоянно один экран + + //Изменения цвета в зависомости на каком из tabLayout вы находитесь + binding.tabLayoutProduct.setTabTextColors(getResources().getColor(R.color.black), + getResources().getColor(R.color.white)); + } + + companion object { + + fun newInstance() = AppealsFragment() + } + + + override fun onResume() { + super.onResume() + checkForUpdates(true) + } + + override fun onStop() { + super.onStop() + timer.cancel() + timer.purge() + } + + private fun checkForUpdates(daemonIsTrue: Boolean) { + + timer = fixedRateTimer("default", daemonIsTrue, 0, 15000) { + activity?.runOnUiThread { + getOldAppeals() + + } + } + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Appeals/AppealsNewAdapter.kt b/app/src/main/java/com/example/rehabilitation/Appeals/AppealsNewAdapter.kt new file mode 100644 index 0000000..b38ee1a --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Appeals/AppealsNewAdapter.kt @@ -0,0 +1,118 @@ +package com.example.rehabilitation.Appeals + +import android.annotation.SuppressLint +import android.os.Handler +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.ListAdapter +import androidx.recyclerview.widget.RecyclerView +import com.example.rehabilitation.Appeals.TabLayout.Model.AppealsNewModel +import com.example.rehabilitation.R +import com.example.rehabilitation.databinding.ItemAppealsNewBinding + + +class AppealsNewAdapter(val listener_check_apeals: Listener, val listener_patient_apeals: Listener2) : + ListAdapter( + Comparator() + ) {//Productitem - по этой форме будем заполнять.//ProductAdapter.holder - это создаваемый holder который хранит логику как нужно заполнять карточку + + + //В holder создаетс код с помошью которого мы будем заполнять и сохронять разметку + class Holder(view: View, val listener_check_apeals: Listener, val listener_patient_apeals: Listener2) : + RecyclerView.ViewHolder(view) {//Класс который будет хранить сссылки на элементы, и отвечает за один элемент за 1 раз, то есть сначсало нулевой элемент заполнит, потом первый, потом второй и т.д. + //Для передачи данных + + val binding = + ItemAppealsNewBinding.bind(view)//view - здесь храянтся элементы и мы их bind заполним в ListItemBinding//ListItemBinding - это клласс даннйо разметки(карточки) которую мы будем заполнять, а нужна дання переменная(binding), чтобы мжно было при заполнение обращатся к элементам карточки + + var itemTemp: AppealsNewModel? = + null//Глобальная переменная для нашего item, чтобы можно было передать данные для нажатия + + //init - дает возможность внутри адаптера обращаться к элементам экрана + init { + binding.btnAdd.setOnClickListener {//Нажатие на ячейку//itemView - это весь элемент карточки из списка + //itemView.setEnabled(false) + itemTemp?.let { it1 -> listener_check_apeals.onClickAppeals(it1) } + } + binding.btnPatient.setOnClickListener {//Нажатие на ячейку//itemView - это весь элемент карточки из списка + //itemView.setEnabled(false) + itemTemp?.let { it2 -> listener_check_apeals.onClickAppeals(it2) } + } + } + + @SuppressLint("SuspiciousIndentation") + fun bind(item: AppealsNewModel) = with(binding) {//Productitem - перпедаем данные + itemTemp = item + txtNumber.text = item.number.toString()+"." + txtAppeals.text = item.text + txtLoginPatient.text = item.login + + + if (item.expand) { + txtAppeals.maxLines = 30 + } else { + txtAppeals.maxLines = 1 + } + + CardViewNew.setOnClickListener { + if (item.expand == false) { + txtAppeals.maxLines = 100 + + item.expand = true + } else { + txtAppeals.maxLines = 1 + item.expand = false + } + } + + + } + } + + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.item_appeals_new, parent, false)//Создаем(надуваем) list_item + return Holder(view, listener_check_apeals,listener_patient_apeals)//Через Holder возврощаем view + } + + override fun onBindViewHolder(holder: Holder, position: Int) { + val view = holder.bind(getItem(position))//Заполняем по позиции карточку + } + + + //Comparator - сравнивает старый список и новый и если что-то изменилось, то работает с конкретным изменением списке, а не весь список переписывает + class Comparator : DiffUtil.ItemCallback() { + override fun areItemsTheSame( + oldItem: AppealsNewModel, + newItem: AppealsNewModel + ): Boolean {//Тут лучше всего сравнивать по id//oldItem - элементы старого списка, newItem - элементы нового списка//Возврощает Boolean, тоесть есть изменения или нет + return oldItem.id == newItem.id//Сравниваем полностью весь список новы и старый, по очередно по одной карточке и по элементно, то есть нулевой элемент, первый, второй и т.д.. Но лучше сравнивать по id списки, а не просто весь список, так как это эфективнее, так как id уникальный(oldItem.id == newItem.id) + } + + override fun areContentsTheSame( + oldItem: AppealsNewModel, + newItem: AppealsNewModel + ): Boolean {//Утут нужно сравнивать весь спсок старых элементов и новых + return oldItem == newItem//Сравниваем полностью весь список новы и старый + } + } + + + interface Listener { + fun onClickAppeals(item: AppealsNewModel) + } + + + interface Listener2 { + fun onClickAppealsPatient(item: AppealsNewModel) + } + + +} + + + + diff --git a/app/src/main/java/com/example/rehabilitation/Appeals/AppealsOldAdapter.kt b/app/src/main/java/com/example/rehabilitation/Appeals/AppealsOldAdapter.kt new file mode 100644 index 0000000..64cb0be --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Appeals/AppealsOldAdapter.kt @@ -0,0 +1,110 @@ +package com.example.rehabilitation.Appeals + +import android.annotation.SuppressLint +import android.opengl.Visibility +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.ListAdapter +import androidx.recyclerview.widget.RecyclerView +import com.example.rehabilitation.Appeals.TabLayout.Model.AppealsOldModel +import com.example.rehabilitation.R +import com.example.rehabilitation.databinding.ItemAppealsOldBinding + + +class AppealsOldAdapter(val listener_zakaz: Listener) : + ListAdapter( + Comparator() + ) {//Productitem - по этой форме будем заполнять.//ProductAdapter.holder - это создаваемый holder который хранит логику как нужно заполнять карточку + + + //В holder создаетс код с помошью которого мы будем заполнять и сохронять разметку + class Holder(view: View, val listener_zakaz: Listener) : + RecyclerView.ViewHolder(view) {//Класс который будет хранить сссылки на элементы, и отвечает за один элемент за 1 раз, то есть сначсало нулевой элемент заполнит, потом первый, потом второй и т.д. + //Для передачи данных + + val binding = + ItemAppealsOldBinding.bind(view)//view - здесь храянтся элементы и мы их bind заполним в ListItemBinding//ListItemBinding - это клласс даннйо разметки(карточки) которую мы будем заполнять, а нужна дання переменная(binding), чтобы мжно было при заполнение обращатся к элементам карточки + + var itemTemp: AppealsOldModel? = + null//Глобальная переменная для нашего item, чтобы можно было передать данные для нажатия + + //init - дает возможность внутри адаптера обращаться к элементам экрана + init { + itemView.setOnClickListener {//Нажатие на ячейку//itemView - это весь элемент карточки из списка + itemView.setEnabled(false) + itemTemp?.let { it1 -> listener_zakaz.onClickAppeals(it1) } + } + } + + @SuppressLint("SuspiciousIndentation") + fun bind(item: AppealsOldModel) = with(binding) {//Productitem - перпедаем данные + itemTemp = item + txtNumber.text = item.number.toString()+"." + txtAppeals.text = item.text + txtLoginPatient.text = item.login + + if (item.expand) { + binding.txtAppeals.maxLines = 100 + + } else { + binding.txtAppeals.maxLines = 1 + + } + + binding.CardViewOld.setOnClickListener { + if (item.expand == false) { + binding.txtAppeals.maxLines = 100 + item.expand = true + } else { + binding.txtAppeals.maxLines = 1 + item.expand = false + } + } + + } + + + } + + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.item_appeals_old, parent, false)//Создаем(надуваем) list_item + return Holder(view, listener_zakaz)//Через Holder возврощаем view + } + + override fun onBindViewHolder(holder: Holder, position: Int) { + val view = holder.bind(getItem(position))//Заполняем по позиции карточку + } + + + //Comparator - сравнивает старый список и новый и если что-то изменилось, то работает с конкретным изменением списке, а не весь список переписывает + class Comparator : DiffUtil.ItemCallback() { + override fun areItemsTheSame( + oldItem: AppealsOldModel, + newItem: AppealsOldModel + ): Boolean {//Тут лучше всего сравнивать по id//oldItem - элементы старого списка, newItem - элементы нового списка//Возврощает Boolean, тоесть есть изменения или нет + return oldItem.id == newItem.id//Сравниваем полностью весь список новы и старый, по очередно по одной карточке и по элементно, то есть нулевой элемент, первый, второй и т.д.. Но лучше сравнивать по id списки, а не просто весь список, так как это эфективнее, так как id уникальный(oldItem.id == newItem.id) + } + + override fun areContentsTheSame( + oldItem: AppealsOldModel, + newItem: AppealsOldModel + ): Boolean {//Утут нужно сравнивать весь спсок старых элементов и новых + return oldItem == newItem//Сравниваем полностью весь список новы и старый + } + } + + //Интерфейс нажатия на кнопку удалить товар из корзины + interface Listener { + fun onClickAppeals(item: AppealsOldModel) + } + + +} + + + + diff --git a/app/src/main/java/com/example/rehabilitation/Appeals/CreateMessageFragment.kt b/app/src/main/java/com/example/rehabilitation/Appeals/CreateMessageFragment.kt new file mode 100644 index 0000000..3d5f51d --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Appeals/CreateMessageFragment.kt @@ -0,0 +1,153 @@ +package com.example.rehabilitation.Appeals + +import android.content.Intent +import android.os.Bundle +import android.transition.TransitionInflater +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Toast +import androidx.fragment.app.activityViewModels +import com.example.admin.Toast.showCustomInfoToast +import com.example.rehabilitation.Auth.AuthorizationActivity +import com.example.rehabilitation.CodeError.Code429Activity +import com.example.rehabilitation.CodeError.Code500Activity +import com.example.rehabilitation.Enternet.EnternetActivity +import com.example.rehabilitation.Enternet.EnternetCheck +import com.example.rehabilitation.Pref.ClearPref +import com.example.rehabilitation.Pref.ConclusionPref +import com.example.rehabilitation.R +import com.example.rehabilitation.Retrofit.PatientApi +import com.example.rehabilitation.databinding.FragmentCreateMessageBinding +import com.example.rehabilitation.model_adapter.DataModel +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 + + +class CreateMessageFragment : Fragment() { + private lateinit var binding: FragmentCreateMessageBinding + private val dataModel: DataModel by activityViewModels()//Для передачи данных + private lateinit var patientApi: PatientApi + val prefDoctorConclusion = ConclusionPref() + val prefDoctorClear = ClearPref() + + //Класс проверки интеренета + val enternetCheck = EnternetCheck() + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentCreateMessageBinding.inflate(layoutInflater,container,false) + return binding.root + + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + val inflater = TransitionInflater.from(requireContext()) + enterTransition = inflater.inflateTransition(R.transition.slide_right) + exitTransition = inflater.inflateTransition(R.transition.slide_right) + + + binding.btnAddMessagePatient.setOnClickListener{ + val text = binding.edTextMessagePatient.text.toString() + if(text!=""){ + AddMessageDoctor() + } + else{ + Toast(requireContext()).showCustomInfoToast("Поле пустое", requireActivity()) + + } + } + + binding.btnExit.setOnClickListener{ + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.placeHolderFragment, AppealsFragment.newInstance()) + //?.addToBackStack(null) + ?.commit() + } + } + + + //Отправка сообщения + fun AddMessageDoctor() { + if (enternetCheck.isOnline(requireContext())) { + initRetrofit() + val Tokens = prefDoctorConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val message = patientApi.AddMessagePatient("Bearer $Tokens",binding.edTextMessagePatient.text.toString()) + requireActivity().runOnUiThread { + + //Фиксируем полученные данные + val List = message.body() + val Nice = message.isSuccessful + val Code = message.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 (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + + startActivity(intetn) + } + else if (Code == 401) { + val intetn = Intent(requireContext(), AuthorizationActivity::class.java) + activity?.finish() + startActivity(intetn) + } + } + + } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + activity?.finish() + startActivity(intetn) + } + + } + + + //Инициализируем 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() + + patientApi = retrofit.create(PatientApi::class.java) + + } + + companion object { + + fun newInstance() = CreateMessageFragment() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Appeals/TabLayout/Model/AppealsNewListModel.kt b/app/src/main/java/com/example/rehabilitation/Appeals/TabLayout/Model/AppealsNewListModel.kt new file mode 100644 index 0000000..323469a --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Appeals/TabLayout/Model/AppealsNewListModel.kt @@ -0,0 +1,6 @@ +package com.example.rehabilitation.Appeals.TabLayout.Model + +data class AppealsNewListModel( + val appeals_new: List +) + diff --git a/app/src/main/java/com/example/rehabilitation/Appeals/TabLayout/Model/AppealsNewModel.kt b/app/src/main/java/com/example/rehabilitation/Appeals/TabLayout/Model/AppealsNewModel.kt new file mode 100644 index 0000000..6777bd8 --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Appeals/TabLayout/Model/AppealsNewModel.kt @@ -0,0 +1,16 @@ +package com.example.rehabilitation.Appeals.TabLayout.Model + +data class AppealsNewModel( + val id: Int, + val number: Int, + val text: String, + val id_patient: Int, + val id_doctor: Int, + val check: Int, + val login: String, + val created_at: String, + val updated_at: String, + var expand : Boolean = false, + + ) + diff --git a/app/src/main/java/com/example/rehabilitation/Appeals/TabLayout/Model/AppealsOldListModel.kt b/app/src/main/java/com/example/rehabilitation/Appeals/TabLayout/Model/AppealsOldListModel.kt new file mode 100644 index 0000000..2a0bd3d --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Appeals/TabLayout/Model/AppealsOldListModel.kt @@ -0,0 +1,6 @@ +package com.example.rehabilitation.Appeals.TabLayout.Model + +data class AppealsOldListModel( + val appeals_old: List +) + diff --git a/app/src/main/java/com/example/rehabilitation/Appeals/TabLayout/Model/AppealsOldModel.kt b/app/src/main/java/com/example/rehabilitation/Appeals/TabLayout/Model/AppealsOldModel.kt new file mode 100644 index 0000000..4980560 --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Appeals/TabLayout/Model/AppealsOldModel.kt @@ -0,0 +1,16 @@ +package com.example.rehabilitation.Appeals.TabLayout.Model + +data class AppealsOldModel( + val id: Int, + val number: Int, + val text: String, + val id_patient: Int, + val id_doctor: Int, + val check: Int, + val login: String, + val created_at: String, + val updated_at: String, + var expand : Boolean = false, + + ) + diff --git a/app/src/main/java/com/example/rehabilitation/Appeals/TabLayout/NewAppealsFragment.kt b/app/src/main/java/com/example/rehabilitation/Appeals/TabLayout/NewAppealsFragment.kt new file mode 100644 index 0000000..5ecbe32 --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Appeals/TabLayout/NewAppealsFragment.kt @@ -0,0 +1,284 @@ +package com.example.rehabilitation.Appeals.TabLayout + +import android.content.Intent +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Toast +import androidx.fragment.app.activityViewModels +import androidx.recyclerview.widget.GridLayoutManager +import com.example.admin.Toast.showCustomInfoToast +import com.example.rehabilitation.Appeals.AppealsNewAdapter +import com.example.rehabilitation.Appeals.TabLayout.Model.AppealsNewModel +import com.example.rehabilitation.Auth.AuthorizationActivity +import com.example.rehabilitation.CodeError.Code429Activity +import com.example.rehabilitation.CodeError.Code500Activity +import com.example.rehabilitation.Enternet.EnternetActivity +import com.example.rehabilitation.Enternet.EnternetCheck +import com.example.rehabilitation.PatientViewModel +import com.example.rehabilitation.Pref.ConclusionPref +import com.example.rehabilitation.Retrofit.PatientApi +import com.example.rehabilitation.databinding.FragmentNewAppealsBinding +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 + + +class NewAppealsFragment : Fragment(), AppealsNewAdapter.Listener, AppealsNewAdapter.Listener2 { + private lateinit var binding: FragmentNewAppealsBinding + private val modelPatient: PatientViewModel by activityViewModels() + lateinit var adapter: AppealsNewAdapter + private lateinit var patientApi: PatientApi + val prefPatientConclusion = ConclusionPref() + + //Список обрашений новых + var appealsNewList: List? = null + + //Класс проверки интеренета + val enternetCheck = EnternetCheck() + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentNewAppealsBinding.inflate(layoutInflater,container,false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + initRcViewAppeals() + patientListCurrent() + modelPatient.appealsNewList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment + if(appealsNewList != it){ + appealsNewList = it + adapter.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter) + } + } + + getNewAppeals() + } + + //Получение необработанных сообщений + private fun getNewAppeals() { + if (enternetCheck.isOnline(requireContext())) { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val listAppeals = patientApi.GetAppealsPatientNew("Bearer $Tokens") + requireActivity().runOnUiThread { + + //Фиксируем полученные данные + val List = listAppeals.body() + val Nice = listAppeals.isSuccessful + val Code = listAppeals.code() + if(Code==429){ + val intetn = Intent(requireContext(), Code429Activity::class.java) + + startActivity(intetn) + } + else if(Code==200) { + //Если нету ошибок + if (Nice) { + //Если нету ошибок + if (List != null) { + if(List.appeals_new != null){ + binding.txtNull.visibility = View.GONE + modelPatient.appealsNewList.value = List.appeals_new + } + else{ + binding.txtNull.visibility = View.VISIBLE + } + } + else{ + binding.txtNull.visibility = View.VISIBLE + } + } + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + startActivity(intetn) + } + else if (Code == 401) { + val intetn = Intent(requireContext(), AuthorizationActivity::class.java) + activity?.finish() + startActivity(intetn) + } + + + } + + } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + activity?.finish() + startActivity(intetn) + } + + } + + private fun getOldAppeals() { + if (enternetCheck.isOnline(requireContext())) { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val listAppeals = patientApi.GetAppealsPatientOld("Bearer $Tokens") + requireActivity().runOnUiThread { + + //Фиксируем полученные данные + val List = listAppeals.body() + val Nice = listAppeals.isSuccessful + val Code = listAppeals.code() + if(Code==429){ + val intetn = Intent(requireContext(), Code429Activity::class.java) + + startActivity(intetn) + } + else if(Code==200) { + //Если нету ошибок + if (Nice) { + //Если нету ошибок + if (List != null) { + if(List.appeals_old != null){ + // binding.txtNull.visibility = View.GONE + modelPatient.appealsOldList.value = List.appeals_old + } + else{ + // binding.txtNull.visibility = View.VISIBLE + } + }else{ + // binding.txtNull.visibility = View.VISIBLE + } + + } + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + + startActivity(intetn) + } + else if (Code == 401) { + val intetn = Intent(requireContext(), AuthorizationActivity::class.java) + activity?.finish() + startActivity(intetn) + } + + + + } + + } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + activity?.finish() + startActivity(intetn) + } + + } + + //Получение необработанных сообщений + private fun addCheckAppeals(id:Int,id_patient:Int) { + if (enternetCheck.isOnline(requireContext())) { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val listAppeals = patientApi.UpdateMessagePatient("Bearer $Tokens",id) + requireActivity().runOnUiThread { + + //Фиксируем полученные данные + val List = listAppeals.body() + val Nice = listAppeals.isSuccessful + val Code = listAppeals.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()) + getNewAppeals() + getOldAppeals() + } + + } + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + startActivity(intetn) + } + else if (Code == 401) { + val intetn = Intent(requireContext(), AuthorizationActivity::class.java) + activity?.finish() + startActivity(intetn) + } + + } + + } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + activity?.finish() + startActivity(intetn) + } + + } + + + + //Инициализируем 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() + + patientApi = retrofit.create(PatientApi::class.java) + + } + + //Вывод прогресса на один день + private fun patientListCurrent() = with(binding) { +// model.appealsAllCurrent.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment +// +// } + + } + + //Инициализация списка + private fun initRcViewAppeals() = with(binding) { + rcView.layoutManager = GridLayoutManager(requireContext(),1)//По вертикали будет выводить по умолчанию + adapter = AppealsNewAdapter(this@NewAppealsFragment,this@NewAppealsFragment) + rcView.adapter = adapter + } + + companion object { + + fun newInstance() = NewAppealsFragment() + } + + override fun onClickAppeals(item: AppealsNewModel) { + addCheckAppeals(item.id,item.id_patient) + } + + override fun onClickAppealsPatient(item: AppealsNewModel) { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Appeals/TabLayout/OldAppealsFragment.kt b/app/src/main/java/com/example/rehabilitation/Appeals/TabLayout/OldAppealsFragment.kt new file mode 100644 index 0000000..ddddd57 --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Appeals/TabLayout/OldAppealsFragment.kt @@ -0,0 +1,168 @@ +package com.example.rehabilitation.Appeals.TabLayout + +import android.annotation.SuppressLint +import android.content.Intent +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.activityViewModels +import androidx.recyclerview.widget.GridLayoutManager +import com.example.rehabilitation.Appeals.AppealsOldAdapter +import com.example.rehabilitation.Appeals.TabLayout.Model.AppealsNewModel +import com.example.rehabilitation.Appeals.TabLayout.Model.AppealsOldModel +import com.example.rehabilitation.Auth.AuthorizationActivity +import com.example.rehabilitation.CodeError.Code429Activity +import com.example.rehabilitation.CodeError.Code500Activity +import com.example.rehabilitation.Enternet.EnternetActivity +import com.example.rehabilitation.Enternet.EnternetCheck +import com.example.rehabilitation.PatientViewModel +import com.example.rehabilitation.Pref.ConclusionPref +import com.example.rehabilitation.Retrofit.PatientApi +import com.example.rehabilitation.databinding.FragmentOldAppealsBinding +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 + + +class OldAppealsFragment : Fragment(), AppealsOldAdapter.Listener { + private lateinit var binding: FragmentOldAppealsBinding + private val model: PatientViewModel by activityViewModels() + lateinit var adapter: AppealsOldAdapter + private lateinit var patientApi: PatientApi + val prefPatientConclusion = ConclusionPref() + + //Класс проверки интеренета + val enternetCheck = EnternetCheck() + + //Список обрашений старых + var appealsOldList: List? = null + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentOldAppealsBinding.inflate(layoutInflater,container,false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + initRcViewAppeals() + appealsAllCurrent() + model.appealsOldList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment + if(appealsOldList != it){ + appealsOldList = it + adapter.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter) + } + } + + getOldAppeals() + } + + @SuppressLint("SuspiciousIndentation") + private fun getOldAppeals() { + if (enternetCheck.isOnline(requireContext())) { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val listAppeals = patientApi.GetAppealsPatientOld("Bearer $Tokens") + requireActivity().runOnUiThread { + + //Фиксируем полученные данные + val List = listAppeals.body() + val Nice = listAppeals.isSuccessful + val Code = listAppeals.code() + if(Code==429){ + val intetn = Intent(requireContext(), Code429Activity::class.java) + + startActivity(intetn) + } + else if(Code==200) { + //Если нету ошибок + if (Nice) { + //Если нету ошибок + if (List != null) { + if(List.appeals_old != null){ + binding.txtNull.visibility = View.GONE + model.appealsOldList.value = List.appeals_old + } + else{ + binding.txtNull.visibility = View.VISIBLE + } + }else{ + binding.txtNull.visibility = View.VISIBLE + } + + } + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + + startActivity(intetn) + } + else if (Code == 401) { + val intetn = Intent(requireContext(), AuthorizationActivity::class.java) + activity?.finish() + startActivity(intetn) + } + + + } + + } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + activity?.finish() + startActivity(intetn) + } + } + + //Инициализируем 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() + + patientApi = retrofit.create(PatientApi::class.java) + + } + + //Вывод прогресса на один день + private fun appealsAllCurrent() = with(binding) { +// model.appealsAllCurrent.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment +// +// } + + } + + //Инициализация списка + private fun initRcViewAppeals() = with(binding) { + rcView.layoutManager = GridLayoutManager(requireContext(),1)//По вертикали будет выводить по умолчанию + adapter = AppealsOldAdapter(this@OldAppealsFragment) + rcView.adapter = adapter + } + companion object { + + fun newInstance() = OldAppealsFragment() + } + + override fun onClickAppeals(item: AppealsOldModel) { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Auth/AuthFragment.kt b/app/src/main/java/com/example/rehabilitation/Auth/AuthFragment.kt index 6dac35a..2e7a06d 100644 --- a/app/src/main/java/com/example/rehabilitation/Auth/AuthFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Auth/AuthFragment.kt @@ -1,38 +1,37 @@ package com.example.rehabilitation.Auth -import android.content.Context import android.content.Intent import android.os.Bundle -import android.util.Log import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Toast import androidx.fragment.app.activityViewModels -import com.example.admin.Toast.showCustomDangerToast import com.example.admin.Toast.showCustomInfoToast import com.example.rehabilitation.Auth.Model.AuthModel +import com.example.rehabilitation.CodeError.Code429Activity +import com.example.rehabilitation.CodeError.Code500Activity import com.example.rehabilitation.MainActivity import com.example.rehabilitation.databinding.FragmentAuthBinding import com.example.rehabilitation.UserPatientToken -import com.example.rehabilitation.Auth.Model.PatientModel +import com.example.rehabilitation.Enternet.EnternetActivity +import com.example.rehabilitation.Enternet.EnternetCheck import com.example.rehabilitation.MainFragment import com.example.rehabilitation.PatientViewModel +import com.example.rehabilitation.Pref.ClearPref import com.example.rehabilitation.Pref.ConclusionPref import com.example.rehabilitation.Pref.SavePref import com.example.rehabilitation.Questionnaire.Model.BeforeQuestionnaireModel import com.example.rehabilitation.R import com.example.rehabilitation.Retrofit.PatientApi import com.example.rehabilitation.Sport.SceduleFragment -import com.example.rehabilitation.prefUserPatientToken import com.example.sqlitework.dip.MainViewModel import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor -import org.json.JSONObject import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory @@ -47,7 +46,9 @@ class AuthFragment : Fragment() { private var Token = "" val prefPatientSave = SavePref() val prefPatientConclusion = ConclusionPref() - + val prefPatientClear = ClearPref() + //Класс проверки интеренета + val enternetCheck = EnternetCheck() override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -60,6 +61,7 @@ class AuthFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding.txtError.text = "" +// prefPatientClear.clearToken(requireContext()) Token = prefPatientConclusion.conclusionToken(requireContext()) //Авиризация пациента @@ -81,16 +83,16 @@ class AuthFragment : Fragment() { } } - //Если пользователь решил зайти в аккаунт врача и не подумал о том что не сможет вернуться со страницы авторизации, то он может нажать данную кнопку, и в случае если он был авторизован, то его вернет в приложение - binding.btnBack.setOnClickListener { - if (UserPatientToken != "") { - activity?.supportFragmentManager?.beginTransaction() - ?.replace(R.id.CLMain, MainFragment.newInstance()) - ?.commit() - } else { - Toast(requireContext()).showCustomInfoToast("Авторизуйтесь", requireActivity()) - } - } +// //Если пользователь решил зайти в аккаунт врача и не подумал о том что не сможет вернуться со страницы авторизации, то он может нажать данную кнопку, и в случае если он был авторизован, то его вернет в приложение +// binding.btnBack.setOnClickListener { +// if (UserPatientToken != "") { +// activity?.supportFragmentManager?.beginTransaction() +// ?.replace(R.id.CLMain, MainFragment.newInstance()) +// ?.commit() +// } else { +// Toast(requireContext()).showCustomInfoToast("Авторизуйтесь", requireActivity()) +// } +// } } @@ -106,7 +108,7 @@ class AuthFragment : Fragment() { .build() val retrofit = Retrofit.Builder() - .baseUrl("http://mobileapp.vmeda.org/api/") + .baseUrl("https://rehabilitation.vmeda.org/api/") .client(client) .addConverterFactory(GsonConverterFactory.create()) .build() @@ -115,60 +117,100 @@ class AuthFragment : Fragment() { } - //Получения списка пациентов - fun BeforeQuestionnaire(item: BeforeQuestionnaireModel) { - initRetrofit() - val Tokens = prefPatientConclusion.conclusionToken(requireContext()) - CoroutineScope(Dispatchers.IO).launch { - val QA = patientApi.AddBeforeQuestionnaire2("Bearer $Tokens",item) - requireActivity().runOnUiThread { - - //Фиксируем полученные данные - val AQList = QA.body() - - //Если нету ошибок - if (AQList != null) { - Toast(requireContext()).showCustomInfoToast(AQList.message, requireActivity()) - } - else{ - Toast(requireContext()).showCustomInfoToast("Ошибка при отправке", requireActivity()) - - } - - //Вывод фрагмента на активити при первоначальной загрузке - activity?.supportFragmentManager?.beginTransaction() - ?.replace(R.id.CLMain, SceduleFragment.newInstance())?.commit() - } - - } - } +// //Получения списка пациентов +// fun BeforeQuestionnaire(item: BeforeQuestionnaireModel) { +// if (enternetCheck.isOnline(requireContext())) { +// initRetrofit() +// val Tokens = prefPatientConclusion.conclusionToken(requireContext()) +// CoroutineScope(Dispatchers.IO).launch { +// val QA = patientApi.AddBeforeQuestionnaire2("Bearer $Tokens",item) +// requireActivity().runOnUiThread { +// +// //Фиксируем полученные данные +// val AQList = QA.body() +// +// //Если нету ошибок +// if (AQList != null) { +// Toast(requireContext()).showCustomInfoToast(AQList.message, requireActivity()) +// } +// else{ +// Toast(requireContext()).showCustomInfoToast("Ошибка при отправке", requireActivity()) +// +// } +// +// //Вывод фрагмента на активити при первоначальной загрузке +// activity?.supportFragmentManager?.beginTransaction() +// ?.replace(R.id.CLMain, SceduleFragment.newInstance())?.commit() +// } +// +// } +// } else { +// activity?.finish() +// val intetn = Intent(requireContext(), EnternetActivity::class.java) +// startActivity(intetn) +// } +// +// } private fun AuthorizationPatient(authModel: AuthModel) { - initRetrofit() - CoroutineScope(Dispatchers.IO).launch { + if (enternetCheck.isOnline(requireContext())) { + initRetrofit() + CoroutineScope(Dispatchers.IO).launch { - val response = patientApi.LoginPatient(authModel) - requireActivity().runOnUiThread { - val user = response.body() - //Если есть такой пользователь - if (user != null) { + val response = patientApi.LoginPatient(authModel) + requireActivity().runOnUiThread { - //PatientVewModel.token.value = user.token - prefPatientSave.saveToken(requireContext(),user.token) - val intetn = Intent(requireContext(), MainActivity::class.java) - startActivity(intetn) - activity?.finish() - } - else{ - Toast(requireContext()).showCustomInfoToast( - "Такого пользователя нету", - requireActivity() - ) + //Фиксируем полученные данные + val List = response.body() + val Nice = response.isSuccessful + val Code = response.code() + if(Code==429){ + val intetn = Intent(requireContext(), Code429Activity::class.java) + + startActivity(intetn) + } + else if(Code==200) { + //Если нету ошибок + if (Nice) { + //Если есть такой пользователь + if (List != null) { + + //PatientVewModel.token.value = user.token + prefPatientSave.saveToken(requireContext(),List.token) + val intetn = Intent(requireContext(), MainActivity::class.java) + startActivity(intetn) + + } + else{ + 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(), AuthorizationActivity::class.java) +// activity?.finish() +// startActivity(intetn) +// } } } + } else { + + val intetn = Intent(requireContext(), EnternetActivity::class.java) + activity?.finish() + startActivity(intetn) } + } diff --git a/app/src/main/java/com/example/rehabilitation/Auth/AuthorizationActivity.kt b/app/src/main/java/com/example/rehabilitation/Auth/AuthorizationActivity.kt index be26faa..5695cfe 100644 --- a/app/src/main/java/com/example/rehabilitation/Auth/AuthorizationActivity.kt +++ b/app/src/main/java/com/example/rehabilitation/Auth/AuthorizationActivity.kt @@ -16,13 +16,15 @@ class AuthorizationActivity : AppCompatActivity() { binding = ActivityAuthorizationBinding.inflate(layoutInflater) setContentView(binding.root) + //Вывод фрагмента на активити при первоначальной загрузке + supportFragmentManager.beginTransaction() + .replace(R.id.CLAuth, AuthFragment.newInstance()) + .commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем + + } - override fun onDestroy() { - super.onDestroy() - finish() - } } \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Calendare/CalendarFragment.kt b/app/src/main/java/com/example/rehabilitation/Calendare/CalendarFragment.kt index a9497b1..daa3124 100644 --- a/app/src/main/java/com/example/rehabilitation/Calendare/CalendarFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Calendare/CalendarFragment.kt @@ -1,44 +1,26 @@ package com.example.rehabilitation.Calendare import android.annotation.SuppressLint -import android.graphics.Typeface +import android.content.Intent import android.os.Bundle -import android.os.Handler import android.util.Log -import android.util.TypedValue import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView -import androidx.core.view.children import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.GridLayoutManager -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import com.example.rehabilitation.Calendare.Calendare.CalendareAdapter -import com.example.rehabilitation.Calendare.Calendare.getColorCompat -import com.example.rehabilitation.Calendare.Calendare.setTextColorRes -import com.example.rehabilitation.Calendare.Calendare.shared.displayText -import com.example.rehabilitation.Calendare.Calendare.shared.generateFlights +import com.example.rehabilitation.Auth.AuthorizationActivity +import com.example.rehabilitation.CodeError.Code429Activity +import com.example.rehabilitation.CodeError.Code500Activity +import com.example.rehabilitation.Enternet.EnternetActivity +import com.example.rehabilitation.Enternet.EnternetCheck +import com.example.rehabilitation.PatientViewModel import com.example.rehabilitation.Pref.ConclusionPref -import com.example.rehabilitation.R import com.example.rehabilitation.Retrofit.PatientApi import com.example.rehabilitation.Sport.DayAdapter -import com.example.rehabilitation.databinding.Example5CalendarDayBinding -import com.example.rehabilitation.databinding.Example5CalendarHeaderBinding import com.example.rehabilitation.databinding.FragmentCalendarBinding -import com.example.rehabilitation.listCalendare import com.example.sqlitework.dip.MainViewModel -import com.kizitonwose.calendar.core.CalendarDay -import com.kizitonwose.calendar.core.CalendarMonth -import com.kizitonwose.calendar.core.DayPosition -import com.kizitonwose.calendar.core.daysOfWeek -import com.kizitonwose.calendar.core.nextMonth -import com.kizitonwose.calendar.core.previousMonth -import com.kizitonwose.calendar.view.MonthDayBinder -import com.kizitonwose.calendar.view.MonthHeaderFooterBinder -import com.kizitonwose.calendar.view.ViewContainer import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -46,29 +28,36 @@ import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory -import java.time.DayOfWeek import java.time.LocalDate -import java.time.YearMonth import java.util.Timer +import kotlin.concurrent.fixedRateTimer import kotlin.concurrent.timerTask -class CalendarFragment : Fragment() { +class CalendarFragment : Fragment(),CalendareListAdapter.Listener { private lateinit var binding: FragmentCalendarBinding - lateinit var adapterDay: DayAdapter - private val model: MainViewModel by activityViewModels()//Инициализировали класс + lateinit var adapterCalendare: CalendareListAdapter + private val modelPatient: PatientViewModel by activityViewModels()//Инициализировали класс private lateinit var patientApi: PatientApi - private var selectedDate: LocalDate? = null + private lateinit var timer: Timer + val prefPatientConclusion = ConclusionPref() - private val flightsAdapter = CalendareAdapter() - //Для разрешения проверки количества дней - var lookDateSportMax = false + + + + //Календарь + var listCalendare:List? = null @SuppressLint("NewApi") //Загрузка данных для календаря var calendare = false + //Класс проверки интеренета + val enternetCheck = EnternetCheck() + + var infoVisibleCalendare = false + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -81,14 +70,44 @@ class CalendarFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + if(isAdded) { - calendare = false - initRcViewCalendareMoment() + visibleLoad() + initRcView() + initRetrofit() APIliveCountCalendareCurrent() + + + modelPatient.calendareList.observe(viewLifecycleOwner){ + if(listCalendare != it){ + listCalendare = it + adapterCalendare.submitList(it) + } + visibleCalendare() + } + +// fixedRateTimer("timer", false, 0, 10000) { +// activity?.runOnUiThread { +// +// } +// } } + binding.btnInfoCalendare.setOnClickListener{ + if(infoVisibleCalendare == false){ + infoVisibleCalendare = true + binding.CVInfoCalendare.visibility = View.VISIBLE + } + else{ + infoVisibleCalendare = false + binding.CVInfoCalendare.visibility = View.GONE + } + + } } + + fun visibleCalendare(){ binding.CLCalendare.visibility = View.VISIBLE binding.CLLoad.visibility = View.GONE @@ -102,55 +121,15 @@ class CalendarFragment : Fragment() { - @SuppressLint("NotifyDataSetChanged") - private fun calendareTwoAdd() { - if(calendare == false) { - calendare = true -// binding.exFiveRv.apply { -// layoutManager = LinearLayoutManager(requireContext(), RecyclerView.VERTICAL, false) -// adapter = flightsAdapter -// } - Log.i("listCalendare1", listCalendare.toString()) - flightsAdapter.notifyDataSetChanged() - val daysOfWeek = daysOfWeek() - val currentMonth = YearMonth.now() - val startMonth = currentMonth.minusMonths(200) - val endMonth = currentMonth.plusMonths(200) - configureBinders(daysOfWeek) - binding.exFiveCalendar.setup(startMonth, endMonth, daysOfWeek.first()) - binding.exFiveCalendar.scrollToMonth(currentMonth) - - binding.exFiveCalendar.monthScrollListener = { month -> - binding.exFiveMonthYearText.text = month.yearMonth.displayText() - - selectedDate?.let { - // Clear selection if we scroll to a new month. - selectedDate = null - binding.exFiveCalendar.notifyDateChanged(it) - updateAdapterForDate(null) - } - } - - binding.exFiveNextMonthImage.setOnClickListener { - binding.exFiveCalendar.findFirstVisibleMonth()?.let { - binding.exFiveCalendar.smoothScrollToMonth(it.yearMonth.nextMonth) - } - } - - binding.exFivePreviousMonthImage.setOnClickListener { - binding.exFiveCalendar.findFirstVisibleMonth()?.let { - binding.exFiveCalendar.smoothScrollToMonth(it.yearMonth.previousMonth) - } - } - visibleCalendare() - } + //Инициализация списка + private fun initRcView() = with(binding) { + rcView.layoutManager = GridLayoutManager(requireContext(), 1)//По вертикали будет выводить по умолчанию + adapterCalendare = CalendareListAdapter(this@CalendarFragment) + rcView.adapter = adapterCalendare + //binding.rcVIewDayList.smoothScrollToPosition(0); } - private fun initRcViewCalendareMoment() = with(binding) { - exFiveRv.layoutManager = GridLayoutManager(requireContext(), 1)//По вертикали будет выводить по умолчанию - exFiveRv.adapter = flightsAdapter - } //Инициализация запроса @@ -165,7 +144,8 @@ class CalendarFragment : Fragment() { //Базовая ссылка val retrofit = Retrofit.Builder() - .baseUrl("http://mobileapp.vmeda.org/api/").client(client) + .baseUrl("https://rehabilitation.vmeda.org/api/") + .client(client) .addConverterFactory(GsonConverterFactory.create()) .build() patientApi = retrofit.create(PatientApi::class.java)//Экземпляр @@ -173,137 +153,92 @@ class CalendarFragment : Fragment() { //Функция получения данных для заполнения календаря private fun APIliveCountCalendareCurrent() { - visibleLoad() - initRetrofit() + if (enternetCheck.isOnline(requireContext())) { - val Tokens = prefPatientConclusion.conclusionToken(requireContext()) - CoroutineScope(Dispatchers.IO).launch { - val Calendare = patientApi.PatientCalendareDay("Bearer $Tokens") + initRetrofit() - activity?.runOnUiThread { - //Фиксируем полученные данные - val CalendareList = Calendare.body() - Log.i("1111111111111111111",CalendareList.toString()) - //Если нету ошибок - if (CalendareList != null) { - Log.i("2222","2222") - listCalendare = CalendareList.сalendare - Log.i("listCalendare",listCalendare.toString()) - calendareTwoAdd() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val Calendare = patientApi.GetCalendare("Bearer $Tokens") - } - else{ - timerCalendare() - } - } - } - } - private fun timerCalendare() { - Log.i("asdasdasdasd444444444", "23231x2wswqxsxsas") - calendare = false - CoroutineScope(Dispatchers.IO).launch { - Timer().schedule(timerTask { activity?.runOnUiThread { - APIliveCountCalendareCurrent() - } - }, 15000) - } - - } - private fun updateAdapterForDate(date: LocalDate?) { - val flightss = generateFlights().groupBy { it.time.toLocalDate() } - flightsAdapter.flights.clear() - flightsAdapter.flights.addAll(flightss[date].orEmpty()) - flightsAdapter.notifyDataSetChanged() - } + //Фиксируем полученные данные + val List = Calendare.body() + val Nice = Calendare.isSuccessful + val Code = Calendare.code() + if(Code==429){ + val intetn = Intent(requireContext(), Code429Activity::class.java) - private fun configureBinders(daysOfWeek: List) { - class DayViewContainer(view: View) : ViewContainer(view) { - lateinit var day: CalendarDay // Will be set when this container is bound. - val binding = Example5CalendarDayBinding.bind(view) - - init { - view.setOnClickListener { - if (day.position == DayPosition.MonthDate) { - if (selectedDate != day.date) { - val oldDate = selectedDate - selectedDate = day.date - val binding = this@CalendarFragment.binding - binding.exFiveCalendar.notifyDateChanged(day.date) - oldDate?.let { binding.exFiveCalendar.notifyDateChanged(it) } - updateAdapterForDate(day.date) - } + startActivity(intetn) } - } - } - } - binding.exFiveCalendar.dayBinder = object : MonthDayBinder { - override fun create(view: View) = DayViewContainer(view) - - @SuppressLint("NewApi") - override fun bind(container: DayViewContainer, data: CalendarDay) { - container.day = data - val context = container.binding.root.context - val textView = container.binding.exFiveDayText - val layout = container.binding.exFiveDayLayout - textView.text = data.date.dayOfMonth.toString() - - val flightTopView = container.binding.exFiveDayFlightTop - val flightBottomView = container.binding.exFiveDayFlightBottom - flightTopView.background = null - flightBottomView.background = null - - if (data.position == DayPosition.MonthDate) { - textView.setTextColorRes(R.color.black) - layout.setBackgroundResource(if (selectedDate == data.date) R.drawable.example_5_selected_bg else 0) - val flightss = generateFlights().groupBy { it.time.toLocalDate() } - val flights = flightss[data.date] - if (flights != null) { - if (flights.count() == 1) { - flightBottomView.setBackgroundColor(context.getColorCompat(flights[0].color)) - } else { - flightTopView.setBackgroundColor(context.getColorCompat(flights[0].color)) - flightBottomView.setBackgroundColor(context.getColorCompat(flights[1].color)) - } - } - } else { - textView.setTextColorRes(R.color.blue) - layout.background = null - } - } - } - - class MonthViewContainer(view: View) : ViewContainer(view) { - val legendLayout = Example5CalendarHeaderBinding.bind(view).legendLayout.root - } - - val typeFace = Typeface.create("sans-serif-light", Typeface.NORMAL) - binding.exFiveCalendar.monthHeaderBinder = - object : MonthHeaderFooterBinder { - override fun create(view: View) = MonthViewContainer(view) - override fun bind(container: MonthViewContainer, data: CalendarMonth) { - // Setup each header day text if we have not done that already. - if (container.legendLayout.tag == null) { - container.legendLayout.tag = data.yearMonth - container.legendLayout.children.map { it as TextView } - .forEachIndexed { index, tv -> - tv.text = daysOfWeek[index].displayText(uppercase = true) - tv.setTextColorRes(R.color.black) - tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12f) - tv.typeface = typeFace + else if(Code==200) { + //Если нету ошибок + if (Nice) { + //Если нету ошибок + if (List != null) { + Log.i("CalendareList_calendare_day", List.calendare_day.toString()) + modelPatient.calendareList.value = List.calendare_day } + + } + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + + startActivity(intetn) + } + else if (Code == 401) { + val intetn = Intent(requireContext(), AuthorizationActivity::class.java) + activity?.finish() + startActivity(intetn) } } } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + activity?.finish() + startActivity(intetn) + } } + + + + + companion object { fun newInstance() = CalendarFragment() } + override fun onClickCalendare(item: CalendareModel) { + + } + + + override fun onResume() { + super.onResume() + checkForUpdates(true) + } + + override fun onStop() { + super.onStop() + timer.cancel() + timer.purge() + } + + private fun checkForUpdates(daemonIsTrue: Boolean) { + + timer = fixedRateTimer("default", daemonIsTrue, 0, 15000) { + activity?.runOnUiThread { + APIliveCountCalendareCurrent() + } + } + + } + } \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Calendare/Calendare/Utils.kt b/app/src/main/java/com/example/rehabilitation/Calendare/Calendare/Utils.kt deleted file mode 100644 index 9551c1a..0000000 --- a/app/src/main/java/com/example/rehabilitation/Calendare/Calendare/Utils.kt +++ /dev/null @@ -1,59 +0,0 @@ -package com.example.rehabilitation.Calendare.Calendare - -import android.content.Context -import android.graphics.drawable.Drawable -import android.util.TypedValue -import android.view.LayoutInflater -import android.view.View -import android.view.inputmethod.InputMethodManager -import android.widget.TextView -import androidx.annotation.ColorRes -import androidx.annotation.DrawableRes -import androidx.core.content.ContextCompat -import androidx.fragment.app.Fragment -import androidx.lifecycle.findViewTreeLifecycleOwner -import com.example.rehabilitation.Calendare.Calendare.shared.StatusBarColorLifecycleObserver - - -fun View.makeVisible() { - visibility = View.VISIBLE -} - -fun View.makeInVisible() { - visibility = View.INVISIBLE -} - -fun View.makeGone() { - visibility = View.GONE -} - -fun dpToPx(dp: Int, context: Context): Int = - TypedValue.applyDimension( - TypedValue.COMPLEX_UNIT_DIP, - dp.toFloat(), - context.resources.displayMetrics, - ).toInt() - -internal val Context.layoutInflater: LayoutInflater - get() = LayoutInflater.from(this) - -internal val Context.inputMethodManager - get() = this.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager - -internal fun Context.getDrawableCompat(@DrawableRes drawable: Int): Drawable = - requireNotNull(ContextCompat.getDrawable(this, drawable)) - -internal fun Context.getColorCompat(@ColorRes color: Int) = - ContextCompat.getColor(this, color) - -internal fun TextView.setTextColorRes(@ColorRes color: Int) = - setTextColor(context.getColorCompat(color)) - -fun Fragment.addStatusBarColorUpdate(@ColorRes colorRes: Int) { - view?.findViewTreeLifecycleOwner()?.lifecycle?.addObserver( - StatusBarColorLifecycleObserver( - requireActivity(), - requireContext().getColorCompat(colorRes), - ), - ) -} diff --git a/app/src/main/java/com/example/rehabilitation/Calendare/Calendare/shared/Flight.kt b/app/src/main/java/com/example/rehabilitation/Calendare/Calendare/shared/Flight.kt deleted file mode 100644 index 0d90212..0000000 --- a/app/src/main/java/com/example/rehabilitation/Calendare/Calendare/shared/Flight.kt +++ /dev/null @@ -1,67 +0,0 @@ -package com.example.rehabilitation.Calendare.Calendare.shared - -import android.annotation.SuppressLint -import android.icu.text.SimpleDateFormat -import android.util.Log -import androidx.annotation.ColorRes -import com.example.rehabilitation.R -import com.example.rehabilitation.listCalendare -import java.time.LocalDate -import java.time.LocalDateTime -import java.time.Month -import java.time.YearMonth -import java.time.format.DateTimeFormatter -import kotlin.time.Duration.Companion.days - - -data class Flight( - val time: LocalDateTime, - val item: String, - @ColorRes val color: Int, -) { - data class Airport(val city: String, val code: String) -} - -@SuppressLint("NewApi") -fun generateFlights(): List = buildList { - //val currentMonth = LocalDate.now() - Log.i("listCalendare.size",listCalendare.size.toString()) - Log.i("listCalendare.toString()",listCalendare.toString()) - if(listCalendare.size>0){ - for (i in 0..listCalendare.size-1) { - Log.i("listCalendare[i-1].date",listCalendare[0].day.toString()) -// val day = "${date[3]}"+"${date[4]}"//День -// val mount = "${date[0]}"+"${date[1]}"//Месяц - var date = listCalendare[i].date - var dateDay = date[8]+""+date[9] - var dateMonth = date[5]+""+date[6] - var dateYear = date[0]+""+date[1]+""+date[2]+""+date[3] - Log.i("dateDay",dateDay) - - - LocalDate.of(dateYear.toInt(), dateMonth.toInt(), dateDay.toInt()).plusMonths(0).also { date -> - if(listCalendare[i].block != null){ - Log.i("listCalendare[i].block",listCalendare[i].block) - add(Flight(date.atTime(0, 0), "Блокировка", R.color.red_800)) - } - else if(listCalendare[i].pause != null){ - add(Flight(date.atTime(0, 0), "Пауза", R.color.example_7_yellow)) - } - if(listCalendare[i].id_after_questionnaire != null){ - add(Flight(date.atTime(0, 0), "Выполнена тренировка", R.color.green_700)) - } - else{ - if(listCalendare[i].block == null){ - add(Flight(date.atTime(0, 0), "День комплекса", R.color.blue_800)) - } - } - - - } - } - } -} - -@SuppressLint("NewApi") -val flightDateTimeFormatter: DateTimeFormatter = - DateTimeFormatter.ofPattern("EEE'\n'dd MMM'\n'HH:mm") diff --git a/app/src/main/java/com/example/rehabilitation/Calendare/Calendare/shared/StatusBarColorLifecycleObserver.kt b/app/src/main/java/com/example/rehabilitation/Calendare/Calendare/shared/StatusBarColorLifecycleObserver.kt deleted file mode 100644 index 2852497..0000000 --- a/app/src/main/java/com/example/rehabilitation/Calendare/Calendare/shared/StatusBarColorLifecycleObserver.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.example.rehabilitation.Calendare.Calendare.shared - -import android.annotation.SuppressLint -import android.app.Activity -import android.graphics.Color -import android.os.Build -import android.view.View -import androidx.annotation.ColorInt -import androidx.core.content.ContextCompat -import androidx.core.graphics.ColorUtils -import androidx.lifecycle.DefaultLifecycleObserver -import androidx.lifecycle.LifecycleOwner -import com.example.rehabilitation.R - -import java.lang.ref.WeakReference - -class StatusBarColorLifecycleObserver( - activity: Activity, - @ColorInt private val color: Int, -) : DefaultLifecycleObserver { - private val isLightColor = ColorUtils.calculateLuminance(color) > 0.5 - private val defaultStatusBarColor = R.color.colorPrimaryDark - private val activity = WeakReference(activity) - - override fun onStart(owner: LifecycleOwner) { - activity.get()?.window?.apply { - statusBarColor = color - if (isLightColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR - } - } - } - - @SuppressLint("ResourceAsColor") - override fun onStop(owner: LifecycleOwner) { - activity.get()?.window?.apply { - statusBarColor = defaultStatusBarColor - if (isLightColor) decorView.systemUiVisibility = 0 - } - } - - override fun onDestroy(owner: LifecycleOwner) = activity.clear() -} diff --git a/app/src/main/java/com/example/rehabilitation/Calendare/Calendare/shared/Utils.kt b/app/src/main/java/com/example/rehabilitation/Calendare/Calendare/shared/Utils.kt deleted file mode 100644 index 5ccf09a..0000000 --- a/app/src/main/java/com/example/rehabilitation/Calendare/Calendare/shared/Utils.kt +++ /dev/null @@ -1,57 +0,0 @@ -package com.example.rehabilitation.Calendare.Calendare.shared - -import android.annotation.SuppressLint -import android.app.Activity -import android.content.Context -import android.content.ContextWrapper -import com.kizitonwose.calendar.core.Week -import com.kizitonwose.calendar.core.yearMonth -import java.time.DayOfWeek -import java.time.Month -import java.time.YearMonth -import java.time.format.TextStyle -import java.util.* - -@SuppressLint("NewApi") -fun YearMonth.displayText(short: Boolean = false): String { - return "${this.month.displayText(short = short)} ${this.year}" -} - -@SuppressLint("NewApi") -fun Month.displayText(short: Boolean = true): String { - val style = if (short) TextStyle.SHORT else TextStyle.FULL - return getDisplayName(style, Locale.ENGLISH) -} - -@SuppressLint("NewApi") -fun DayOfWeek.displayText(uppercase: Boolean = false): String { - return getDisplayName(TextStyle.SHORT, Locale.ENGLISH).let { value -> - if (uppercase) value.uppercase(Locale.ENGLISH) else value - } -} - -fun Context.findActivity(): Activity { - var context = this - while (context is ContextWrapper) { - if (context is Activity) return context - context = context.baseContext - } - throw IllegalStateException("no activity") -} - -@SuppressLint("NewApi") -fun getWeekPageTitle(week: Week): String { - val firstDate = week.days.first().date - val lastDate = week.days.last().date - return when { - firstDate.yearMonth == lastDate.yearMonth -> { - firstDate.yearMonth.displayText() - } - firstDate.year == lastDate.year -> { - "${firstDate.month.displayText(short = false)} - ${lastDate.yearMonth.displayText()}" - } - else -> { - "${firstDate.yearMonth.displayText()} - ${lastDate.yearMonth.displayText()}" - } - } -} diff --git a/app/src/main/java/com/example/rehabilitation/Calendare/CalendareAdapter.kt b/app/src/main/java/com/example/rehabilitation/Calendare/CalendareAdapter.kt deleted file mode 100644 index 456a0f3..0000000 --- a/app/src/main/java/com/example/rehabilitation/Calendare/CalendareAdapter.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.example.rehabilitation.Calendare.Calendare - -import android.annotation.SuppressLint -import android.view.ViewGroup -import androidx.recyclerview.widget.RecyclerView -import com.example.rehabilitation.Calendare.Calendare.getColorCompat -import com.example.rehabilitation.Calendare.Calendare.layoutInflater -import com.example.rehabilitation.Calendare.Calendare.shared.Flight -import com.example.rehabilitation.Calendare.Calendare.shared.flightDateTimeFormatter -import com.example.rehabilitation.databinding.Example5EventItemViewv2Binding - - -class CalendareAdapter : - RecyclerView.Adapter() { - - val flights = mutableListOf() - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Example5FlightsViewHolder { - return Example5FlightsViewHolder( - Example5EventItemViewv2Binding.inflate(parent.context.layoutInflater, parent, false), - ) - } - - override fun onBindViewHolder(viewHolder: Example5FlightsViewHolder, position: Int) { - viewHolder.bind(flights[position]) - } - - override fun getItemCount(): Int = flights.size - - inner class Example5FlightsViewHolder(val binding: Example5EventItemViewv2Binding) : - RecyclerView.ViewHolder(binding.root) { - - @SuppressLint("NewApi") - fun bind(flight: Flight) { - binding.itemFlightDateText.apply { - text = flightDateTimeFormatter.format(flight.time) - setBackgroundColor(itemView.context.getColorCompat(flight.color)) - } - - binding.txtItem.text = flight.item - } - } -} diff --git a/app/src/main/java/com/example/rehabilitation/Calendare/CalendareListAdapter.kt b/app/src/main/java/com/example/rehabilitation/Calendare/CalendareListAdapter.kt new file mode 100644 index 0000000..94c957c --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Calendare/CalendareListAdapter.kt @@ -0,0 +1,123 @@ +package com.example.rehabilitation.Calendare + +import android.annotation.SuppressLint +import android.graphics.Color +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.ListAdapter +import androidx.recyclerview.widget.RecyclerView +import com.example.rehabilitation.R +import com.example.rehabilitation.databinding.ItemCalendareBinding +import java.time.LocalDate + + +class CalendareListAdapter(val listener: Listener) : + ListAdapter( + Comparator() + ) {//Productitem - по этой форме будем заполнять.//ProductAdapter.holder - это создаваемый holder который хранит логику как нужно заполнять карточку + + + //В holder создаетс код с помошью которого мы будем заполнять и сохронять разметку + class Holder(view: View, val listener: Listener) : + RecyclerView.ViewHolder(view) {//Класс который будет хранить сссылки на элементы, и отвечает за один элемент за 1 раз, то есть сначсало нулевой элемент заполнит, потом первый, потом второй и т.д. + //Для передачи данных + + val binding = ItemCalendareBinding.bind(view)//view - здесь храянтся элементы и мы их bind заполним в ListItemBinding//ListItemBinding - это клласс даннйо разметки(карточки) которую мы будем заполнять, а нужна дання переменная(binding), чтобы мжно было при заполнение обращатся к элементам карточки + + var itemTemp: CalendareModel? = + null//Глобальная переменная для нашего item, чтобы можно было передать данные для нажатия + + //init - дает возможность внутри адаптера обращаться к элементам экрана + init { + itemView.setOnClickListener {//Нажатие на ячейку//itemView - это весь элемент карточки из списка + //itemView.setEnabled(false) + itemTemp?.let { it1 -> listener.onClickCalendare(it1) } + + } + } + + @SuppressLint("SuspiciousIndentation", "SetTextI18n") + fun bind(item: CalendareModel) = with(binding) {//Productitem - перпедаем данные + itemTemp = item + txtDay.text = item.day + val date1 = item.date[8]; + val date2 = item.date[9]; + val date3 = item.date[5]; + val date4 = item.date[6]; + val date5 = item.date[0]; + val date6 = item.date[1]; + val date7 = item.date[2]; + val date8 = item.date[3]; + txtDate.text = date1+""+date2+"."+date3+""+date4+"."+date5+""+date6+""+date7+""+date8 + + + + + if(item.block != null){ + binding.CVBlock.setCardBackgroundColor(Color.parseColor("#FF0000")) + } + else if(item.pause != null){ + binding.CVPause.setCardBackgroundColor(Color.parseColor("#FFA355")) + } + if(item.id_after_questionnaire != null){ + binding.CVDay.setCardBackgroundColor(Color.parseColor("#7FE668")) + } + else{ + if(item.block == null){ + if(item.date >= LocalDate.now().toString()){ + binding.CVDay.setCardBackgroundColor(Color.parseColor("#55B6FF")) + } + else{ + binding.CVDay.setCardBackgroundColor(Color.parseColor("#9C9C9C")) + + } + } + } + } + + + } + + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.item_calendare, parent, false)//Создаем(надуваем) list_item + return Holder(view, listener)//Через Holder возврощаем view + } + + override fun onBindViewHolder(holder: Holder, position: Int) { + val view = holder.bind(getItem(position))//Заполняем по позиции карточку + } + + + //Comparator - сравнивает старый список и новый и если что-то изменилось, то работает с конкретным изменением списке, а не весь список переписывает + class Comparator : DiffUtil.ItemCallback() { + override fun areItemsTheSame( + oldItem: CalendareModel, + newItem: CalendareModel + ): Boolean {//Тут лучше всего сравнивать по id//oldItem - элементы старого списка, newItem - элементы нового списка//Возврощает Boolean, тоесть есть изменения или нет + return oldItem.id == newItem.id//Сравниваем полностью весь список новы и старый, по очередно по одной карточке и по элементно, то есть нулевой элемент, первый, второй и т.д.. Но лучше сравнивать по id списки, а не просто весь список, так как это эфективнее, так как id уникальный(oldItem.id == newItem.id) + } + + override fun areContentsTheSame( + oldItem: CalendareModel, + newItem: CalendareModel + ): Boolean {//Утут нужно сравнивать весь спсок старых элементов и новых + return oldItem == newItem//Сравниваем полностью весь список новы и старый + } + } + + //Интерфейс нажатия на кнопку удалить товар из корзины + interface Listener { + fun onClickCalendare(item: CalendareModel) + } + + +} + + + + diff --git a/app/src/main/java/com/example/rehabilitation/Calendare/CalendareListModel.kt b/app/src/main/java/com/example/rehabilitation/Calendare/CalendareListModel.kt index 4179e58..70937c9 100644 --- a/app/src/main/java/com/example/rehabilitation/Calendare/CalendareListModel.kt +++ b/app/src/main/java/com/example/rehabilitation/Calendare/CalendareListModel.kt @@ -1,5 +1,5 @@ package com.example.rehabilitation.Calendare data class CalendareListModel( - val сalendare: List + val calendare_day: List ) diff --git a/app/src/main/java/com/example/rehabilitation/CodeError/Code429Activity.kt b/app/src/main/java/com/example/rehabilitation/CodeError/Code429Activity.kt new file mode 100644 index 0000000..8b4eecb --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/CodeError/Code429Activity.kt @@ -0,0 +1,161 @@ +package com.example.rehabilitation.CodeError + +import android.annotation.SuppressLint +import android.content.Intent +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.os.CountDownTimer +import android.util.Log +import com.example.rehabilitation.Auth.AuthorizationActivity +import com.example.rehabilitation.Enternet.EnternetActivity +import com.example.rehabilitation.Enternet.EnternetCheck +import com.example.rehabilitation.MainActivity +import com.example.rehabilitation.Pref.ClearPref +import com.example.rehabilitation.Pref.ConclusionPref +import com.example.rehabilitation.Pref.SavePref +import com.example.rehabilitation.Retrofit.PatientApi +import com.example.rehabilitation.databinding.ActivityCode429Binding +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.util.Timer +import kotlin.concurrent.fixedRateTimer + + +class Code429Activity : AppCompatActivity() { + private lateinit var binding:ActivityCode429Binding + private lateinit var patientApi: PatientApi + private lateinit var timer: Timer + + + val prefPatientConclusion = ConclusionPref() + val prefPatientClear = ClearPref() + val prefPatientSave = SavePref() + + //Класс проверки интеренета + val enternetCheck = EnternetCheck() + + var checkClose = false + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityCode429Binding.inflate(layoutInflater) + setContentView(binding.root) + +// binding.apply { +// btnBack.isEnabled = false +// btnBack.isClickable = false +// val timer = object: CountDownTimer(20000, 1000) { +// override fun onTick(millisUntilFinished: Long) { +// txtTime.setText( "${(millisUntilFinished / 1000)} сек"); +// } +// +// override fun onFinish() { +// btnBack.isEnabled = true +// btnBack.isClickable = true +// } +// } +// timer.start() + +// binding.btnBack.setOnClickListener{ +// Log.i("clogon1232222","clogon1232222") +// finish() +// } + // } + } + + + @SuppressLint("SuspiciousIndentation") + fun CheckToken()=with(binding){ + if (enternetCheck.isOnline(this@Code429Activity)) { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(this@Code429Activity) + CoroutineScope(Dispatchers.IO).launch { + val list = patientApi.CheckToken("Bearer $Tokens") + runOnUiThread { + + + //Фиксируем полученные данные + val List = list.body() + val Nice = list.isSuccessful + val Code = list.code() + if(Code==500){ + val intetn = Intent(this@Code429Activity, Code500Activity::class.java) + finish() + startActivity(intetn) + } + else if(Code==200) { + //Если нету ошибок + if (Nice) { + //Если нету ошибок + if (List != null) { + + Log.i("clogon1231111","clogon1231111") + finish() + } + + } + } + else if (Code == 401) { + val intetn = Intent(this@Code429Activity, AuthorizationActivity::class.java) + finish() + startActivity(intetn) + } + } + } + } else { + + val intetn = Intent(this@Code429Activity, EnternetActivity::class.java) + finish() + startActivity(intetn) + } + + } + + //Инициализируем 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() + + patientApi = retrofit.create(PatientApi::class.java) + + } + + + override fun onResume() { + super.onResume() + checkForUpdates(true) + } + + override fun onStop() { + super.onStop() + timer.cancel() + timer.purge() + } + + private fun checkForUpdates(daemonIsTrue: Boolean) { + + timer = fixedRateTimer("default", daemonIsTrue, 0, 15000) { + this@Code429Activity.runOnUiThread { + CheckToken() + } + } + + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/CodeError/Code500Activity.kt b/app/src/main/java/com/example/rehabilitation/CodeError/Code500Activity.kt new file mode 100644 index 0000000..1a8aeb7 --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/CodeError/Code500Activity.kt @@ -0,0 +1,160 @@ +package com.example.rehabilitation.CodeError + +import android.annotation.SuppressLint +import android.content.Intent +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.os.CountDownTimer +import android.util.Log +import android.view.View +import android.widget.Toast +import androidx.core.content.ContentProviderCompat.requireContext +import com.example.rehabilitation.Auth.AuthorizationActivity +import com.example.rehabilitation.Enternet.EnternetActivity +import com.example.rehabilitation.Enternet.EnternetCheck +import com.example.rehabilitation.MainActivity +import com.example.rehabilitation.Pref.ClearPref +import com.example.rehabilitation.Pref.ConclusionPref +import com.example.rehabilitation.Pref.SavePref +import com.example.rehabilitation.Retrofit.PatientApi +import com.example.rehabilitation.databinding.ActivityCode500Binding +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.util.Timer +import kotlin.concurrent.fixedRateTimer + +class Code500Activity : AppCompatActivity() { + private lateinit var binding: ActivityCode500Binding + private lateinit var patientApi: PatientApi + private lateinit var timer: Timer + + + val prefPatientConclusion = ConclusionPref() + val prefPatientClear = ClearPref() + val prefPatientSave = SavePref() + + //Класс проверки интеренета + val enternetCheck = EnternetCheck() + + var checkClose = false + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityCode500Binding.inflate(layoutInflater) + setContentView(binding.root) + + + + binding.apply { + + val timer = object: CountDownTimer(30000, 1000) { + override fun onTick(millisUntilFinished: Long) { + + } + + override fun onFinish() { + val intetn = Intent(this@Code500Activity, AuthorizationActivity::class.java) + finish() + startActivity(intetn) + } + } + timer.start() + + } + } + + + @SuppressLint("SuspiciousIndentation") + fun CheckToken()=with(binding){ + if (enternetCheck.isOnline(this@Code500Activity)) { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(this@Code500Activity) + CoroutineScope(Dispatchers.IO).launch { + val list = patientApi.CheckToken("Bearer $Tokens") + runOnUiThread { + + + //Фиксируем полученные данные + val List = list.body() + val Nice = list.isSuccessful + val Code = list.code() + if(Code==429){ + val intetn = Intent(this@Code500Activity, Code429Activity::class.java) + finish() + startActivity(intetn) + } + else if(Code==200) { + //Если нету ошибок + if (Nice) { + //Если нету ошибок + if (List != null) { + + Log.i("clogon1231111","clogon1231111") + finish() + } + + } + } + else if (Code == 401) { + val intetn = Intent(this@Code500Activity, AuthorizationActivity::class.java) + finish() + startActivity(intetn) + } + } + } + } else { + + val intetn = Intent(this@Code500Activity, EnternetActivity::class.java) + finish() + startActivity(intetn) + } + + } + + //Инициализируем 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() + + patientApi = retrofit.create(PatientApi::class.java) + + } + + + override fun onResume() { + super.onResume() + checkForUpdates(true) + } + + override fun onStop() { + super.onStop() + timer.cancel() + timer.purge() + } + + private fun checkForUpdates(daemonIsTrue: Boolean) { + + timer = fixedRateTimer("default", daemonIsTrue, 0, 10000) { + this@Code500Activity.runOnUiThread { + CheckToken() + } + } + + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Enternet/EnternetActivity.kt b/app/src/main/java/com/example/rehabilitation/Enternet/EnternetActivity.kt new file mode 100644 index 0000000..5b66731 --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Enternet/EnternetActivity.kt @@ -0,0 +1,23 @@ +package com.example.rehabilitation.Enternet + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import com.example.rehabilitation.R +import com.example.rehabilitation.databinding.ActivityEnternetBinding + + +class EnternetActivity : AppCompatActivity() { + private lateinit var binding: ActivityEnternetBinding + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityEnternetBinding.inflate(layoutInflater) + setContentView(binding.root) + + supportFragmentManager.beginTransaction() + .replace(R.id.CLEnternet, EnternetFragment.newInstance()) + .commit() + } + + + +} \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Enternet/EnternetCheck.kt b/app/src/main/java/com/example/rehabilitation/Enternet/EnternetCheck.kt new file mode 100644 index 0000000..30a9135 --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Enternet/EnternetCheck.kt @@ -0,0 +1,41 @@ +package com.example.rehabilitation.Enternet + +import android.content.Context +import android.net.ConnectivityManager +import android.net.NetworkCapabilities +import android.os.Build + +class EnternetCheck() { + + //Проверка интернета + fun isOnline(context: Context): Boolean { + if (context == null) return false + val connectivityManager = + context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + val capabilities = + connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork) + if (capabilities != null) { + when { + capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> { + return true + } + + capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> { + return true + } + + capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> { + return true + } + } + } + } else { + val activeNetworkInfo = connectivityManager.activeNetworkInfo + if (activeNetworkInfo != null && activeNetworkInfo.isConnected) { + return true + } + } + return false + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Enternet/EnternetFragment.kt b/app/src/main/java/com/example/rehabilitation/Enternet/EnternetFragment.kt new file mode 100644 index 0000000..29f09b7 --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Enternet/EnternetFragment.kt @@ -0,0 +1,38 @@ +package com.example.rehabilitation.Enternet + +import android.content.Intent +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.example.rehabilitation.MainActivity +import com.example.rehabilitation.databinding.FragmentEnternetBinding + + +class EnternetFragment : Fragment() { + private lateinit var binding: FragmentEnternetBinding + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentEnternetBinding.inflate(layoutInflater,container,false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + binding.btnEnternet.setOnClickListener{ + val intetn = Intent(requireContext(), MainActivity::class.java) + activity?.finish() + startActivity(intetn) + } + + } + + companion object { + + fun newInstance() = EnternetFragment() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Feedback/FeedbackFragment.kt b/app/src/main/java/com/example/rehabilitation/Feedback/FeedbackFragment.kt new file mode 100644 index 0000000..26ce897 --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Feedback/FeedbackFragment.kt @@ -0,0 +1,81 @@ +package com.example.rehabilitation.Feedback + +import android.content.Intent +import android.net.Uri +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.example.rehabilitation.R +import com.example.rehabilitation.Setting.SettingFragment +import com.example.rehabilitation.databinding.FragmentFeedbackBinding + + +class FeedbackFragment : Fragment() { + private lateinit var binding: FragmentFeedbackBinding + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentFeedbackBinding.inflate(layoutInflater,container,false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + if(isAdded()) { + //Выход + binding.btnExit.setOnClickListener { + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.CLMain, SettingFragment.newInstance()) + ?.commit() + } + + //Переход по ссылке на сайт + binding.txtUrlVmeda.setOnClickListener { + val i = Intent(Intent.ACTION_VIEW, Uri.parse("https://www.vmeda.org/")) + startActivity(i) + } +// +// //Переход на почту +// binding.txtEmailDoctor.setOnClickListener{ +// val intent = Intent(Intent.ACTION_SEND) +// intent.data = Uri.parse("mailto:") +// intent.type = "text/plain" +// intent.putExtra(Intent.EXTRA_EMAIL, arrayOf(binding.txtEmailDoctor.text.toString()))// herer adresses is already string +// +// try{ +// startActivity(Intent.createChooser(intent,"Choose Email Client...")) +// } +// catch (e:Exception){ +// Toast.makeText(this,e.message, Toast.LENGTH_LONG).show() +// } +// } + +// //Номер врача +// binding.txtNumberDoctor.setOnClickListener{ +// val intent = Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + binding.txtNumberDoctor.text.toString())) +// startActivity(intent) +// } + + //Номер регистратуры + binding.txtNumberRegister.setOnClickListener { + val intent = Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + "+78122923286")) + startActivity(intent) + } + + //Номер ДМС + binding.txtNumberDMS.setOnClickListener { + val intent = Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + "+78122923412")) + startActivity(intent) + } + } + } + + companion object { + + fun newInstance() = FeedbackFragment() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Hranilihe.kt b/app/src/main/java/com/example/rehabilitation/Hranilihe.kt index 1f817c5..637713f 100644 --- a/app/src/main/java/com/example/rehabilitation/Hranilihe.kt +++ b/app/src/main/java/com/example/rehabilitation/Hranilihe.kt @@ -137,7 +137,6 @@ var fileUri2: FileOutputStream? =null //Переменная для хранения дня, чтобы при нажатие на главной тсранице или в календаре var dateHomeCalendare:String = "" -//Календарь -var listCalendare:List = listOf() + class Hranilihe { } \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/CommonInfoFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/CommonInfoFragment.kt index 57f2027..9153ef7 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/CommonInfoFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/CommonInfoFragment.kt @@ -26,7 +26,7 @@ class CommonInfoFragment : Fragment() { binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InformationFragment.newInstance())?.addToBackStack(null)?.commit() } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MedicalReabilitationFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MedicalReabilitationFragment.kt index 173203d..d29e7b4 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MedicalReabilitationFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MedicalReabilitationFragment.kt @@ -24,7 +24,7 @@ class MedicalReabilitationFragment : Fragment() { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InformationFragment.newInstance())?.addToBackStack(null)?.commit() } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/BreathingExercisesFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/BreathingExercisesFragment.kt index a18fc0e..1f36dfc 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/BreathingExercisesFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/BreathingExercisesFragment.kt @@ -1,11 +1,13 @@ package com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod import android.os.Bundle +import android.transition.TransitionInflater import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import com.example.rehabilitation.R +import com.example.rehabilitation.R as R_P +import android.R import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment import com.example.rehabilitation.databinding.FragmentBreathingExercisesBinding @@ -23,16 +25,19 @@ class BreathingExercisesFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R_P.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit() } - + val inflater = TransitionInflater.from(requireContext()) binding.DecongestantTherapy.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + exitTransition = inflater.inflateTransition(R.transition.slide_top) + activity?.supportFragmentManager?.beginTransaction()?.replace(R_P.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.DecongestantTherapyFragment.Companion.newInstance() )?.addToBackStack(null)?.commit() } + //enterTransition = inflater.inflateTransition(R_P.transition.slide_bottom) + } companion object { diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/ContourPreventionFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/ContourPreventionFragment.kt index 6d5d5a0..0d8fb72 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/ContourPreventionFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/ContourPreventionFragment.kt @@ -24,12 +24,12 @@ class ContourPreventionFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnPhantomPains.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.PhantomPainsFragment.Companion.newInstance() )?.addToBackStack(null)?.commit() } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/DecongestantTherapyFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/DecongestantTherapyFragment.kt index 782c4e5..f323fb6 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/DecongestantTherapyFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/DecongestantTherapyFragment.kt @@ -23,12 +23,12 @@ class DecongestantTherapyFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnContracturesPrevention.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.ContourPreventionFragment.Companion.newInstance() )?.addToBackStack(null)?.commit() } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/FormationOfTheStumpFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/FormationOfTheStumpFragment.kt index 84f6142..3e69089 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/FormationOfTheStumpFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/FormationOfTheStumpFragment.kt @@ -25,11 +25,11 @@ class FormationOfTheStumpFragment : Fragment() { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnPhysicalExercises.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.PhysicalExercisesFragment.Companion.newInstance() )?.addToBackStack(null)?.commit() } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/MotorModeFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/MotorModeFragment.kt index 11665a2..409d598 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/MotorModeFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/MotorModeFragment.kt @@ -1,6 +1,7 @@ package com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod import android.os.Bundle +import android.transition.TransitionInflater import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View @@ -24,12 +25,13 @@ class MotorModeFragment : Fragment() { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit() } - +// val inflater = TransitionInflater.from(requireContext()) +// exitTransition = inflater.inflateTransition(R.transition.slide_bottom) binding.btnStumpCare.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.StumpCareFragment.Companion.newInstance() )?.addToBackStack(null)?.commit() } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/OrganizationOfTheDailyRoutineAfterSurgeryFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/OrganizationOfTheDailyRoutineAfterSurgeryFragment.kt index f93e177..dd1cf10 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/OrganizationOfTheDailyRoutineAfterSurgeryFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/OrganizationOfTheDailyRoutineAfterSurgeryFragment.kt @@ -23,11 +23,11 @@ class OrganizationOfTheDailyRoutineAfterSurgeryFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnOrganizationOfTheDayRegimeOfTheSecondWeekAfterAmputation.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.OrganizationOfTheDayRegimeOfTheSecondWeekAfterAmputationFragment.Companion.newInstance() )?.addToBackStack(null)?.commit() } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/OrganizationOfTheDayRegimeOfTheSecondWeekAfterAmputationFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/OrganizationOfTheDayRegimeOfTheSecondWeekAfterAmputationFragment.kt index 2c06856..21a7063 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/OrganizationOfTheDayRegimeOfTheSecondWeekAfterAmputationFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/OrganizationOfTheDayRegimeOfTheSecondWeekAfterAmputationFragment.kt @@ -23,7 +23,7 @@ class OrganizationOfTheDayRegimeOfTheSecondWeekAfterAmputationFragment : Fragmen override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit() } } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/PhantomPainsFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/PhantomPainsFragment.kt index ba7415c..0bec47d 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/PhantomPainsFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/PhantomPainsFragment.kt @@ -23,11 +23,11 @@ class PhantomPainsFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnSurfaceSensitivity.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.SurfaceSensitivityFragment.Companion.newInstance() )?.addToBackStack(null)?.commit() } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/PhysicalExercisesFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/PhysicalExercisesFragment.kt index afc5dbb..8de1a6c 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/PhysicalExercisesFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/PhysicalExercisesFragment.kt @@ -23,11 +23,11 @@ class PhysicalExercisesFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnOrganizationOfTheDailyRoutineAfterSurgery.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.OrganizationOfTheDailyRoutineAfterSurgeryFragment.Companion.newInstance() )?.addToBackStack(null)?.commit() } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/StumpCareFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/StumpCareFragment.kt index a1f6924..bf00eff 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/StumpCareFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/StumpCareFragment.kt @@ -24,12 +24,12 @@ class StumpCareFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnBreathingExercises.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.BreathingExercisesFragment.Companion.newInstance() )?.addToBackStack(null)?.commit() } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/SurfaceSensitivityFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/SurfaceSensitivityFragment.kt index 39b1606..20f2648 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/SurfaceSensitivityFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriod/SurfaceSensitivityFragment.kt @@ -24,11 +24,11 @@ class SurfaceSensitivityFragment : Fragment() { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnFormationOfTheStump.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.FormationOfTheStumpFragment.Companion.newInstance() )?.addToBackStack(null)?.commit() } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriodFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriodFragment.kt index 6905177..a5f15df 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriodFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/EarlyPostoperativePeriodFragment.kt @@ -35,68 +35,68 @@ class EarlyPostoperativePeriodFragment : Fragment() { super.onViewCreated(view, savedInstanceState) binding.btnMotorMode.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.MotorModeFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnStumpCare.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.StumpCareFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnBreathingExercises.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.BreathingExercisesFragment.newInstance())?.addToBackStack(null)?.commit() } binding.DecongestantTherapy.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.DecongestantTherapyFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnContracturesPrevention.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.ContourPreventionFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnPhantomPains.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.PhantomPainsFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendationsFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnFurther.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment.Companion.newInstance() )?.addToBackStack(null)?.commit() } binding.btnSurfaceSensitivity.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.SurfaceSensitivityFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnFormationOfTheStump.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.FormationOfTheStumpFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnPhysicalExercises.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.PhysicalExercisesFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnOrganizationOfTheDailyRoutineAfterSurgery.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.OrganizationOfTheDailyRoutineAfterSurgeryFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnOrganizationOfTheDayRegimeOfTheSecondWeekAfterAmputation.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.OrganizationOfTheDayRegimeOfTheSecondWeekAfterAmputationFragment.newInstance())?.addToBackStack(null)?.commit() } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/DecongestantTherapyLateFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/DecongestantTherapyLateFragment.kt index 01e2dde..521065d 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/DecongestantTherapyLateFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/DecongestantTherapyLateFragment.kt @@ -24,14 +24,15 @@ class DecongestantTherapyLateFragment : Fragment() { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { activity?.supportFragmentManager?.beginTransaction()?.replace( - R.id.CLInformation, + R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnMassageTechniqueLate.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.MassageTechniqueLateFragment.Companion.newInstance() )?.addToBackStack(null)?.commit() } + } companion object { diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/MassageTechniqueLateFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/MassageTechniqueLateFragment.kt index 5f89062..32c3105 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/MassageTechniqueLateFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/MassageTechniqueLateFragment.kt @@ -24,11 +24,11 @@ class MassageTechniqueLateFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnPreventionOfContracturesLate.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.PreventionOfContracturesLateFragment.Companion.newInstance() )?.addToBackStack(null)?.commit() } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/PhantomPainsLateFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/PhantomPainsLateFragment.kt index 9a88986..a91100b 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/PhantomPainsLateFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/PhantomPainsLateFragment.kt @@ -25,7 +25,7 @@ class PhantomPainsLateFragment : Fragment() { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { activity?.supportFragmentManager?.beginTransaction()?.replace( - R.id.CLInformation, + R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit() } } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/PreparationForProstheticsLateFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/PreparationForProstheticsLateFragment.kt index bc10cfd..6773678 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/PreparationForProstheticsLateFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/PreparationForProstheticsLateFragment.kt @@ -25,11 +25,11 @@ class PreparationForProstheticsLateFragment : Fragment() { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { activity?.supportFragmentManager?.beginTransaction()?.replace( - R.id.CLInformation, + R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnDecongestantTherapyLate.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.DecongestantTherapyLateFragment.Companion.newInstance() )?.addToBackStack(null)?.commit() } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/PreventionOfContracturesLateFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/PreventionOfContracturesLateFragment.kt index cac380f..aadf962 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/PreventionOfContracturesLateFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriod/PreventionOfContracturesLateFragment.kt @@ -23,11 +23,11 @@ class PreventionOfContracturesLateFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnPhantomPainsLate.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.PhantomPainsLateFragment.Companion.newInstance() )?.addToBackStack(null)?.commit() } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriodFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriodFragment.kt index 9627728..59c1a4f 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriodFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendations/LatePostoperativePeriodFragment.kt @@ -29,28 +29,28 @@ class LatePostoperativePeriodFragment : Fragment() { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendationsFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnPreparationForProstheticsLate.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.PreparationForProstheticsLateFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnDecongestantTherapyLate.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.DecongestantTherapyLateFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnMassageTechniqueLate.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.MassageTechniqueLateFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnPreventionOfContracturesLate.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.PreventionOfContracturesLateFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnPhantomPainsLate.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.PhantomPainsLateFragment.newInstance())?.addToBackStack(null)?.commit() } } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendationsFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendationsFragment.kt index 943275a..611267a 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendationsFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/MethodologicalRecommendationsFragment.kt @@ -25,17 +25,17 @@ class MethodologicalRecommendationsFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InformationFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnEarlyPostoperativePeriod.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit() } binding.btnLatePostoperativePeriod.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit() } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/faqFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/faqFragment.kt index efbc690..a7c793c 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/faqFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InfoFragment/faqFragment.kt @@ -26,7 +26,7 @@ class faqFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding.btnExit.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformation, + activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain, com.example.rehabilitation.Information.InformationFragment.newInstance())?.addToBackStack(null)?.commit() } diff --git a/app/src/main/java/com/example/rehabilitation/Information/InformationActivity.kt b/app/src/main/java/com/example/rehabilitation/Information/InformationActivity.kt deleted file mode 100644 index 2265942..0000000 --- a/app/src/main/java/com/example/rehabilitation/Information/InformationActivity.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.example.rehabilitation.Information - -import android.content.Intent -import androidx.appcompat.app.AppCompatActivity -import android.os.Bundle -import com.example.rehabilitation.MainActivity -import com.example.rehabilitation.R -import com.example.rehabilitation.databinding.ActivityInformationBinding - -class InformationActivity : AppCompatActivity() { - var backPressedTime: Long = 0 - private lateinit var binding: ActivityInformationBinding - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = ActivityInformationBinding.inflate(layoutInflater) - setContentView(binding.root) - - supportFragmentManager.beginTransaction() - .replace(R.id.CLInformation, InformationFragment.newInstance()) - .commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем - } - - override fun onBackPressed() { - val intetn = Intent(this, MainActivity::class.java) - startActivity(intetn) - finish() - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Information/InformationFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InformationFragment.kt index 0cdb1ac..24a1556 100644 --- a/app/src/main/java/com/example/rehabilitation/Information/InformationFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Information/InformationFragment.kt @@ -7,6 +7,7 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import com.example.rehabilitation.Enternet.EnternetCheck import com.example.rehabilitation.MainActivity import com.example.rehabilitation.R import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendationsFragment @@ -20,6 +21,9 @@ import com.example.rehabilitation.fragment.InfoFragment.faqFragment class InformationFragment : Fragment() { private lateinit var binding: FragmentInformationBinding + + //Класс проверки интеренета + val enternetCheck = EnternetCheck() override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -36,41 +40,50 @@ class InformationFragment : Fragment() { activity?.supportFragmentManager?.beginTransaction() ?.replace(R.id.CLMain, MainFragment.newInstance()) ?.commit() + } binding.methodologicalRecommendationsButton.setOnClickListener { - val infoFrag = activity?.supportFragmentManager?.beginTransaction() - infoFrag?.replace( - R.id.CLInformation, - com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendationsFragment.newInstance() - ) - infoFrag?.addToBackStack(null) - infoFrag?.commit() +// val infoFrag = activity?.supportFragmentManager?.beginTransaction() +// infoFrag?.replace( +// R.id.CLInformation,MethodologicalRecommendationsFragment.newInstance() +// ) +// infoFrag?.addToBackStack(null) +// infoFrag?.commit() + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.CLInformationMain, MethodologicalRecommendationsFragment.newInstance()) + ?.commit() } binding.commonInformationButton.setOnClickListener { - val infoFrag = activity?.supportFragmentManager?.beginTransaction() - infoFrag?.replace(R.id.CLInformation, CommonInfoFragment.newInstance()) - infoFrag?.addToBackStack(null) - infoFrag?.commit() - +// val infoFrag = activity?.supportFragmentManager?.beginTransaction() +// infoFrag?.replace(R.id.CLInformation, CommonInfoFragment.newInstance()) +// infoFrag?.addToBackStack(null) +// infoFrag?.commit() + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.CLInformationMain, CommonInfoFragment.newInstance()) + ?.commit() } binding.frequentlyAskedQuestionsButton.setOnClickListener { - val infoFrag = activity?.supportFragmentManager?.beginTransaction() - infoFrag?.replace(R.id.CLInformation, faqFragment.newInstance()) - infoFrag?.addToBackStack(null) - infoFrag?.commit() - +// val infoFrag = activity?.supportFragmentManager?.beginTransaction() +// infoFrag?.replace(R.id.CLInformation, faqFragment.newInstance()) +// infoFrag?.addToBackStack(null) +// infoFrag?.commit() + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.CLInformationMain, faqFragment.newInstance()) + ?.commit() } binding.medicalReabilitationButton.setOnClickListener { - val infoFrag = activity?.supportFragmentManager?.beginTransaction() - infoFrag?.replace(R.id.CLInformation, MedicalReabilitationFragment.newInstance()) - infoFrag?.addToBackStack(null) - infoFrag?.commit() - +// val infoFrag = activity?.supportFragmentManager?.beginTransaction() +// infoFrag?.replace(R.id.CLInformation, MedicalReabilitationFragment.newInstance()) +// infoFrag?.addToBackStack(null) +// infoFrag?.commit() + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.CLInformationMain, MedicalReabilitationFragment.newInstance()) + ?.commit() } binding.fondButton.setOnClickListener { diff --git a/app/src/main/java/com/example/rehabilitation/Information/InformationMainFragment.kt b/app/src/main/java/com/example/rehabilitation/Information/InformationMainFragment.kt new file mode 100644 index 0000000..06fa5f5 --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Information/InformationMainFragment.kt @@ -0,0 +1,33 @@ +package com.example.rehabilitation.Information + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.example.rehabilitation.R +import com.example.rehabilitation.databinding.FragmentInformationMainBinding + + +class InformationMainFragment : Fragment() { + private lateinit var binding: FragmentInformationMainBinding + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentInformationMainBinding.inflate(layoutInflater,container,false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.CLInformationMain, InformationFragment.newInstance()) + ?.commit() + } + + companion object { + fun newInstance() = InformationMainFragment() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/MainActivity.kt b/app/src/main/java/com/example/rehabilitation/MainActivity.kt index efec030..70dd1cb 100644 --- a/app/src/main/java/com/example/rehabilitation/MainActivity.kt +++ b/app/src/main/java/com/example/rehabilitation/MainActivity.kt @@ -1,14 +1,22 @@ package com.example.rehabilitation import android.annotation.SuppressLint +import android.content.Intent import android.os.Bundle import android.util.Log -import androidx.appcompat.app.AlertDialog +import android.view.View +import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import com.example.rehabilitation.Auth.AuthFragment +import com.example.rehabilitation.Auth.AuthorizationActivity +import com.example.rehabilitation.CodeError.Code429Activity +import com.example.rehabilitation.CodeError.Code500Activity +import com.example.rehabilitation.Enternet.EnternetActivity +import com.example.rehabilitation.Enternet.EnternetCheck import com.example.rehabilitation.Pref.ConclusionPref import com.example.rehabilitation.Retrofit.PatientApi import com.example.rehabilitation.databinding.ActivityMainBinding +import com.example.sqlitework.dip.MainViewModel import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -21,12 +29,16 @@ import retrofit2.converter.gson.GsonConverterFactory class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding private lateinit var patientApi: PatientApi + private val modelPatient: PatientViewModel by viewModels()//Инициализировали класс + private val model: MainViewModel by viewModels()//Инициализировали класс //Токен private var Token = "" val prefPatientConclusion = ConclusionPref() var backPressedTime: Long = 0 + //Класс проверки интеренета + val enternetCheck = EnternetCheck() @SuppressLint("DiscouragedApi") override fun onCreate(savedInstanceState: Bundle?) { @@ -34,16 +46,13 @@ class MainActivity : AppCompatActivity() { binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) - - initRetrofit() - MainAndAuth() - } + } fun MainAndAuth() { Token = prefPatientConclusion.conclusionToken(this) - Log.i("sadasdsadsd",Token) + Log.i("sadasdsadsd", Token) //CheckTokenAuth(Token) if (Token == "") { Auth() @@ -53,6 +62,7 @@ class MainActivity : AppCompatActivity() { } fun Auth() { + binding.CLLoad.visibility = View.GONE //Вывод фрагмента на активити при первоначальной загрузке supportFragmentManager.beginTransaction() .replace(R.id.CLMain, AuthFragment.newInstance()) @@ -61,26 +71,62 @@ class MainActivity : AppCompatActivity() { } fun Main() { + binding.CLLoad.visibility = View.GONE fragment_inicializ() + +// fixedRateTimer("timer", false, 0, 10000) { +// this@MainActivity.runOnUiThread { +// GetVisibleViewList() +// ProgressPatientCourses() +// APIliveCountCalendareCurrent() +// getNewAppeals() +// getOldAppeals() +// } +// } } @SuppressLint("SuspiciousIndentation") private fun CheckTokenAuth(token: String) { - CoroutineScope(Dispatchers.IO).launch { - val response = patientApi.CheckToken("Bearer $token") - runOnUiThread { - val checkToken = response.body() - val user1 = response.code() - val userCode = response.isSuccessful() - Log.i("12213213213", user1.toString()) + if (enternetCheck.isOnline(this)) { + initRetrofit() + CoroutineScope(Dispatchers.IO).launch { + val response = patientApi.CheckToken("Bearer $token") + runOnUiThread { - if (userCode) { - Main() - } else { - Auth() + //Фиксируем полученные данные + val List = response.body() + val Nice = response.isSuccessful + val Code = response.code() + if(Code==429){ + val intetn = Intent(this@MainActivity, Code429Activity::class.java) + + startActivity(intetn) + } + else if(Code==200) { + //Если нету ошибок + if (Nice) { + Main() + } else { + Auth() + } + + } + else if (Code == 500) { + val intetn = Intent(this@MainActivity, Code500Activity::class.java) + + startActivity(intetn) + } + else if (Code == 401) { + val intetn = Intent(this@MainActivity, AuthorizationActivity::class.java) + finish() + startActivity(intetn) + } } } - + } else { + val intetn = Intent(this, Code500Activity::class.java) + finish() + startActivity(intetn) } } @@ -97,7 +143,7 @@ class MainActivity : AppCompatActivity() { .build() val retrofit = Retrofit.Builder() - .baseUrl("http://mobileapp.vmeda.org/api/") + .baseUrl("https://rehabilitation.vmeda.org/api/") .client(client) .addConverterFactory(GsonConverterFactory.create()) .build() @@ -132,6 +178,139 @@ class MainActivity : AppCompatActivity() { // backPressedTime = System.currentTimeMillis() // } +// //Получения экрана +// fun GetVisibleViewList() { +// if (enternetCheck.isOnline(this)) { +// initRetrofit() +// val Tokens = prefPatientConclusion.conclusionToken(this) +// CoroutineScope(Dispatchers.IO).launch { +// val listProduct = patientApi.VisibleView3("Bearer $Tokens") +// +// runOnUiThread { +// +// //Фиксируем полученные данные +// val visibleviewList = listProduct.body() +// val visibleviewListCode = listProduct.isSuccessful() +// //Если нету ошибок +// if (visibleviewListCode) { +// modelPatient.viewCurrent.value = visibleviewList +// } +// } +// } +// } else { +//// val intetn = Intent(this, EnternetActivity::class.java) +//// finish() +//// startActivity(intetn) +// } +// +// } + +// //Вывод прогресса пациента +// fun ProgressPatientCourses() { +// if (enternetCheck.isOnline(this)) { +// initRetrofit() +// val Tokens = prefPatientConclusion.conclusionToken(this) +// CoroutineScope(Dispatchers.IO).launch { +// val progress = patientApi.ProgressPatientCourses("Bearer $Tokens") +// +// runOnUiThread { +// //Фиксируем полученные данные +// val progressMes = progress.body() +// val progressMesCode = progress.isSuccessful() +// //Если нету ошибок +// if (progressMesCode) { +// model.liveProgressCheckList.value = progressMes?.search_check_sport +// } +// } +// } +// } else { +//// val intetn = Intent(this, EnternetActivity::class.java) +//// finish() +//// startActivity(intetn) +// } +// +// } + +// //Функция получения данных для заполнения календаря +// private fun APIliveCountCalendareCurrent() { +// if (enternetCheck.isOnline(this)) { +// val Tokens = prefPatientConclusion.conclusionToken(this) +// CoroutineScope(Dispatchers.IO).launch { +// val Calendare = patientApi.GetCalendare("Bearer $Tokens") +// +// this@MainActivity?.runOnUiThread { +// //Фиксируем полученные данные +// val CalendareList = Calendare.body() +// //Если нету ошибок +// if (CalendareList != null) { +// modelPatient.calendareList.value = CalendareList.calendare_day +// } +// } +// } +// } else { +// val intetn = Intent(this, EnternetActivity::class.java) +// finish() +// startActivity(intetn) +// } +// } + +//ввыапваыапыва +// //Получение необработанных сообщений +// private fun getNewAppeals() { +// if (enternetCheck.isOnline(this)) { +// initRetrofit() +// val Tokens = prefPatientConclusion.conclusionToken(this) +// CoroutineScope(Dispatchers.IO).launch { +// val listAppeals = patientApi.GetAppealsPatientNew("Bearer $Tokens") +// runOnUiThread { +// +// //Фиксируем полученные данные +// val AppealsMes = listAppeals.body() +// +// //Если нету ошибок +// if (AppealsMes != null) { +// if (AppealsMes.appeals_new != null) { +// modelPatient.appealsNewList.value = AppealsMes.appeals_new +// } +// } +// } +// } +// } else { +//// val intetn = Intent(this, EnternetActivity::class.java) +//// finish() +//// startActivity(intetn) +// } +// +// } + +// //Получение обработанных сообщений +// private fun getOldAppeals() { +// if (enternetCheck.isOnline(this)) { +// initRetrofit() +// val Tokens = prefPatientConclusion.conclusionToken(this) +// CoroutineScope(Dispatchers.IO).launch { +// val listAppeals = patientApi.GetAppealsPatientOld("Bearer $Tokens") +// runOnUiThread { +// +// //Фиксируем полученные данные +// val AppealsMes = listAppeals.body() +// +// //Если нету ошибок +// if (AppealsMes != null) { +// if (AppealsMes.appeals_old != null) { +// modelPatient.appealsOldList.value = AppealsMes.appeals_old +// } +// } +// } +// } +// } else { +//// val intetn = Intent(this, EnternetActivity::class.java) +//// finish() +//// startActivity(intetn) +// } +// +// } + override fun onDestroy() { super.onDestroy() @@ -143,8 +322,4 @@ class MainActivity : AppCompatActivity() { } - - - - } \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/MainFragment.kt b/app/src/main/java/com/example/rehabilitation/MainFragment.kt index d3d2775..567e43c 100644 --- a/app/src/main/java/com/example/rehabilitation/MainFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/MainFragment.kt @@ -1,53 +1,101 @@ package com.example.rehabilitation import android.annotation.SuppressLint +import android.content.Intent import android.icu.text.SimpleDateFormat import android.icu.util.Calendar import android.os.Bundle +import android.os.SystemClock +import android.util.Log import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Toast +import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.Observer +import com.example.admin.Toast.showCustomInfoToast +import com.example.rehabilitation.Appeals.AppealsFragment +import com.example.rehabilitation.Auth.AuthorizationActivity import com.example.rehabilitation.Calendare.CalendarFragment +import com.example.rehabilitation.CodeError.Code429Activity +import com.example.rehabilitation.CodeError.Code500Activity +import com.example.rehabilitation.Enternet.EnternetActivity +import com.example.rehabilitation.Enternet.EnternetCheck import com.example.rehabilitation.Information.InformationFragment +import com.example.rehabilitation.Information.InformationMainFragment +import com.example.rehabilitation.Pref.ConclusionPref import com.example.rehabilitation.Progress.ProgresFragment +import com.example.rehabilitation.Retrofit.PatientApi import com.example.rehabilitation.Setting.SettingFragment import com.example.rehabilitation.Sport.SceduleFragment import com.example.rehabilitation.databinding.FragmentMainBinding import com.example.rehabilitation.model_adapter.DataModel +import com.example.sqlitework.dip.MainViewModel +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.util.Date +import java.util.Timer +import kotlin.concurrent.fixedRateTimer class MainFragment : Fragment() { private lateinit var binding: FragmentMainBinding private val dataModel: DataModel by viewModels()//Для передачи данных + private val model: MainViewModel by activityViewModels()//Инициализировали класс + private val modelPatient: PatientViewModel by activityViewModels()//Инициализировали класс + + private lateinit var patientApi: PatientApi + private lateinit var timer: Timer + + val prefPatientConclusion = ConclusionPref() + + //Класс проверки интеренета + val enternetCheck = EnternetCheck() + @SuppressLint("SimpleDateFormat") 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) + binding = FragmentMainBinding.inflate(layoutInflater, container, false) return binding.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - if(isAdded) { + + Log.d("5645546564","5645546564") + if (isAdded) { main_inicializ() + //MainAndAuth() } + dataModel.fragmentMenu.observe(viewLifecycleOwner, Observer { + binding.buttonNavigation.selectedItemId = it + }) + +// fixedRateTimer("timer", false, 0, 10000) { +// activity?.runOnUiThread { +// +// } +// } } - fun main_inicializ(){ + fun main_inicializ() { dataModel.fragmentMenu.observe(this as LifecycleOwner, { binding.buttonNavigation.selectedItemId = it @@ -65,7 +113,7 @@ class MainFragment : Fragment() { binding.btnInformation.setOnClickListener { activity?.supportFragmentManager?.beginTransaction() - ?.replace(R.id.CLMain, InformationFragment.newInstance()) + ?.replace(R.id.CLMain, InformationMainFragment.newInstance()) //?.addToBackStack(null) ?.commit() } @@ -75,8 +123,6 @@ class MainFragment : Fragment() { } - - //Инициализация фрагментов fun fragment_inicializ() { //Вывод фрагмента на активити при первоначальной загрузке @@ -86,22 +132,59 @@ class MainFragment : Fragment() { //Эран который будет выбран по умолчанию(кнопка которая будет прожата по умолчанию) - binding.buttonNavigation.selectedItemId = R.id.schedule//По умолчанию и так первая, но на всякий случай выберу еще програмным путем первую ячейку + binding.buttonNavigation.selectedItemId = + R.id.schedule//По умолчанию и так первая, но на всякий случай выберу еще програмным путем первую ячейку //Нажатие на bottom navigation binding.buttonNavigation.setOnItemSelectedListener { when (it.itemId) {//it.itemId - это id нажатого элемента R.id.schedule -> { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.placeHolderFragment, SceduleFragment.newInstance())?.commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем + if (!isClickRecently()) { + + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.placeHolderFragment, SceduleFragment.newInstance()) + ?.commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем + } } + R.id.calendar -> { - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.placeHolderFragment, CalendarFragment.newInstance())?.commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем + val view = prefPatientConclusion.conclusionView(requireContext()) + Log.i("dasda2",view.toString()) + if(view.toInt()==1 || view.toInt()==2){ + Toast(requireContext()).showCustomInfoToast("У вас отсутсвует курс", requireActivity()) + } + else{ + Log.i("dasda22",view.toString()) + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.placeHolderFragment, CalendarFragment.newInstance()) + ?.commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем + } } + R.id.progress -> {//Если вы не авторизованный пользваотель то вам не будет доступен доступ к данном фрагменту - activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.placeHolderFragment, ProgresFragment.newInstance())?.commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем + val view = prefPatientConclusion.conclusionView(requireContext()) + Log.i("dasda2",view.toString()) + if(view.toInt()==1 || view.toInt()==2){ + Toast(requireContext()).showCustomInfoToast("У вас отсутсвует курс", requireActivity()) + } + else{ + Log.i("dasda22",view.toString()) + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.placeHolderFragment, ProgresFragment.newInstance()) + ?.commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем + } } + R.id.chat -> {//Если вы не авторизованный пользваотель то вам не будет доступен доступ к данном фрагменту + if (!isClickRecently()) { + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.placeHolderFragment, AppealsFragment.newInstance()) + ?.commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем + } + } + + } true } @@ -120,49 +203,229 @@ class MainFragment : Fragment() { 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="Декабрь" + 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="" + 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="Вс" + "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="" + date_of_the_week = "" } } System.out.println(calendar.get(Calendar.DATE)) - binding.txtDate.setText("${day}" +" "+ "${month}") + binding.txtDate.setText("${day}" + " " + "${month}") + } + + //Получения экрана + fun GetVisibleViewListTimer() { + if (enternetCheck.isOnline(requireContext())) { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val listProduct = patientApi.VisibleView3("Bearer $Tokens") + + activity?.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) { + modelPatient.viewCurrent.value = List + } + } + + //Следующий по счету + GetSportDay() + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + + startActivity(intetn) + } + + } + } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + activity?.finish() + startActivity(intetn) + } + } + + //Получения списка упражнений + fun GetSportDay() { + + if (enternetCheck.isOnline(requireContext())) { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val sportDay = patientApi.GetSportDay("Bearer $Tokens") + requireActivity().runOnUiThread { + + //Фиксируем полученные данные + val List = sportDay.body() + val Nice = sportDay.isSuccessful + val Code = sportDay.code() + if(Code==429){ + val intetn = Intent(requireContext(), Code429Activity::class.java) + + startActivity(intetn) + } + else if(Code==200) { + //Если нету ошибок + if (Nice) { + //Если нету ошибок + if (List != null) { + model.liveDayList.value = List?.sport_for_day + + } + + } + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + + startActivity(intetn) + } + + +// else{ +// Log.i("asdasdasdasd22222222","23231x2wswqxsxsas") +// Handler().postDelayed({ +// GetSportDay() +// }, 5000) +// } + } + } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + activity?.finish() + startActivity(intetn) + } + + } + +// fun ProgressPatientCourses() { +// if (enternetCheck.isOnline(requireContext())) { +// initRetrofit() +// val Tokens = prefPatientConclusion.conclusionToken(requireContext()) +// CoroutineScope(Dispatchers.IO).launch { +// val progress = patientApi.ProgressPatientCourses("Bearer $Tokens") +// +// activity?.runOnUiThread { +// +// //Фиксируем полученные данные +// val progressMes = progress.body() +// val progressMesCode = progress.isSuccessful() +// //Если нету ошибок +// if (progressMesCode) { +// model.liveProgressCheckList.value = progressMes?.search_check_sport +// } +// } +// } +// } else { +// val intetn = Intent(requireContext(), EnternetActivity::class.java) +// activity?.finish() +// startActivity(intetn) +// } +// +// } + //Инициализация подлючения к серверу + 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() + + patientApi = retrofit.create(PatientApi::class.java) + + } + + //Задержка нажатия + var mLastClickTime = 0L + fun isClickRecently(): Boolean { + if (SystemClock.elapsedRealtime() - mLastClickTime < 500) { + return true + } + mLastClickTime = SystemClock.elapsedRealtime() + return false } companion object { fun newInstance() = MainFragment() } + + + override fun onResume() { + super.onResume() + checkForUpdates(true) + } + + override fun onPause() { + super.onPause() + timer.cancel() + timer.purge() + } + + private fun checkForUpdates(daemonIsTrue: Boolean) { + + timer = fixedRateTimer("default", daemonIsTrue, 0, 15000) { + activity?.runOnUiThread { + GetVisibleViewListTimer() + + } + } + + } + + + } \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Message/MessageChatFragment.kt b/app/src/main/java/com/example/rehabilitation/Message/MessageChatFragment.kt new file mode 100644 index 0000000..ada7a5d --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Message/MessageChatFragment.kt @@ -0,0 +1,27 @@ +package com.example.rehabilitation.Message + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.example.rehabilitation.R as R_P +import android.R +import com.example.rehabilitation.databinding.FragmentMessageChatBinding + +class MessageChatFragment : Fragment() { + private lateinit var binding:FragmentMessageChatBinding + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentMessageChatBinding.inflate(layoutInflater,container,false) + return binding.root + } + + companion object { + + fun newInstance() = MessageChatFragment() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Mysorka/HomeFragment.kt b/app/src/main/java/com/example/rehabilitation/Mysorka/HomeFragment.kt deleted file mode 100644 index 0256235..0000000 --- a/app/src/main/java/com/example/rehabilitation/Mysorka/HomeFragment.kt +++ /dev/null @@ -1,141 +0,0 @@ -package com.example.rehabilitation.Mysorka - -import android.os.Bundle -import android.util.Log -import androidx.fragment.app.Fragment -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.activityViewModels -import androidx.lifecycle.asLiveData -import androidx.recyclerview.widget.GridLayoutManager -import com.example.rehabilitation.R -import com.example.rehabilitation.databinding.FragmentHomeBinding -import com.example.rehabilitation.dateHomeCalendare -import com.example.rehabilitation.model_adapter.DataModel -import com.example.rehabilitation.Sport.DayAdapter -import com.example.rehabilitation.Sport.DayListModel -import com.example.rehabilitation.Sport.SportForDayModel -import com.example.rehabilitation.model_adapter.modelCount.CountDayModel -import com.example.sqlitework.dip.MainViewModel -import java.time.LocalDate - -class HomeFragment : Fragment()/*, DayAdapter.Listener*/ { - private lateinit var binding: FragmentHomeBinding -// private val model: MainViewModel by activityViewModels()//Инициализировали класс -// lateinit var adapterDay: DayAdapter -// //private val dataModel: DataModel by activityViewModels()//Для передачи данных -// private val dataModel: DataModel by activityViewModels()//Для передачи данных - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - binding = FragmentHomeBinding.inflate(layoutInflater,container,false) - return binding.root - } -// -// override fun onViewCreated(view: View, savedInstanceState: Bundle?) { -// super.onViewCreated(view, savedInstanceState) -// initRcViewDay() -// -// model.liveDayList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment -// adapterDay.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter) -// } -// -// progresMonthAndDay() -// liveCountDayCurrent() -// addListModelCardsDay(LocalDate.now().toString()) -// } -// -// //Инициализация экрана уведобляющего о том что курса нету -// fun viewSportNo(){ -// -// } -// -// -// //Заполнения модели и списка -// private fun addListModelCardsDay(day:String){ -// -//// val db = MainDB.getDB(requireContext()) -//// val list = ArrayList() -//// db.getDaoDaySport().getAllItemDaySport(day).asLiveData().observe(requireActivity()){itList-> -//// var number = 1; -//// -//// itList.forEach{ -//// Log.d("123",it.category) -//// //db.getDaoSportCategory().getAllItemsSportCategory(it.category).asLiveData().observe(requireActivity()){itSport-> -//// val itemDay = DayListModel( -//// it.id.toString(), -//// number++.toString(), -//// day, -//// it.category.toString(), -//// it.check.toString(), -//// ) -//// list.add(itemDay)//Передали заполненый список -//// model.liveDayList.value = list -//// //} -//// } -//// -//// Log.d("sadas",list.toString()) -//// } -// } -// private fun progresMonthAndDay() { -//// val db = MainDB.getDB(requireContext()) -//// val data= LocalDate.now().toString() -//// -//// var listDayDown =0 -//// var listDayAll =0 -//// var name = "" -//// //Прогрес за в течение данного дня -//// db.getDaoDaySport().getAllItemDaySport(LocalDate.now().toString()).asLiveData().observe(requireActivity()){itList-> -//// var number = 1; -//// -//// itList.forEach{ -//// -//// if(it.check ==1){ -//// listDayDown=listDayDown+1 -//// listDayAll=listDayAll+1 -//// } -//// else{ -//// listDayAll=listDayAll+1 -//// } -//// } -//// val item = CountDayModel( -//// listDayDown, -//// listDayAll -//// ) -//// model.liveCountDayCurrent.value = item -//// -//// } -// } -// -// //Вывод прогресса на один день -// private fun liveCountDayCurrent() = with(binding) { -// model.liveCountDayCurrent.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment -// binding.txtSportToday.setText(it.countDown.toString()) -// binding.txtSportTodayAll.setText(it.countAll.toString()) -// } -// -// } -// -// -// //Инициализация списка -// private fun initRcViewDay() = with(binding) { -// rcVIewDayList.layoutManager = GridLayoutManager(requireContext(),1)//По вертикали будет выводить по умолчанию -// adapterDay = DayAdapter(this@HomeFragment) -// rcVIewDayList.adapter = adapterDay -// } - companion object { - - fun newInstance() = HomeFragment() - } -// -// override fun onClickDay(item: SportForDayModel) { -// //Передаем фрагмент на вывод(это фрагмент страницы с продукцией) -// //parentFragmentManager.beginTransaction() .replace(R.id.placeHolderFragment, SceduleFragment()).commit() -// dataModel.fragmentMenu.value = R.id.schedule -// // dateHomeCalendare = item.day -// } - - -} \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/PatientViewModel.kt b/app/src/main/java/com/example/rehabilitation/PatientViewModel.kt index 5bb9656..8abb755 100644 --- a/app/src/main/java/com/example/rehabilitation/PatientViewModel.kt +++ b/app/src/main/java/com/example/rehabilitation/PatientViewModel.kt @@ -2,13 +2,36 @@ package com.example.rehabilitation import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import com.example.rehabilitation.Appeals.TabLayout.Model.AppealsNewModel +import com.example.rehabilitation.Appeals.TabLayout.Model.AppealsOldModel +import com.example.rehabilitation.Calendare.CalendareModel +import com.example.rehabilitation.Questionnaire.Model.AfterLookModel +import com.example.rehabilitation.Questionnaire.Model.BeforeLookModel import com.example.rehabilitation.Sport.SportDayOneModel +import com.example.rehabilitation.Sport.ViewVisibleModel class PatientViewModel: ViewModel() { val token = MutableLiveData() val liveDaySportOne = MutableLiveData() - // val productList = MutableLiveData>() + + //Обращения необработанные + val appealsNewCurrent = MutableLiveData() + val appealsNewList= MutableLiveData>() + + //Обращения обработанные + val appealsOldCurrent = MutableLiveData() + val appealsOldList= MutableLiveData>() + + //Экраны + val viewCurrent = MutableLiveData() + + //Календарь + val calendareList = MutableLiveData>() + + val afterLook = MutableLiveData() + val beforeLook = MutableLiveData() + // val productList = MutableLiveData>() } \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Pref/.idea/.gitignore b/app/src/main/java/com/example/rehabilitation/Pref/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Pref/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/app/src/main/java/com/example/rehabilitation/Pref/.idea/misc.xml b/app/src/main/java/com/example/rehabilitation/Pref/.idea/misc.xml new file mode 100644 index 0000000..639900d --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Pref/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Pref/.idea/modules.xml b/app/src/main/java/com/example/rehabilitation/Pref/.idea/modules.xml new file mode 100644 index 0000000..07ef4d6 --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Pref/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Pref/.idea/vcs.xml b/app/src/main/java/com/example/rehabilitation/Pref/.idea/vcs.xml new file mode 100644 index 0000000..07117e4 --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Pref/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Pref/ConclusionPref.kt b/app/src/main/java/com/example/rehabilitation/Pref/ConclusionPref.kt index 3065f47..0c70a24 100644 --- a/app/src/main/java/com/example/rehabilitation/Pref/ConclusionPref.kt +++ b/app/src/main/java/com/example/rehabilitation/Pref/ConclusionPref.kt @@ -10,4 +10,10 @@ class ConclusionPref() { val token = prefDoctor.getString("token", "") return token.toString() } + + fun conclusionView(context: Context):String { + val prefDoctor: SharedPreferences = context.getSharedPreferences("VIEW", Context.MODE_PRIVATE) + val view = prefDoctor.getString("view","") + return view.toString() + } } \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Pref/SavePref.kt b/app/src/main/java/com/example/rehabilitation/Pref/SavePref.kt index b86a730..7f0d8fa 100644 --- a/app/src/main/java/com/example/rehabilitation/Pref/SavePref.kt +++ b/app/src/main/java/com/example/rehabilitation/Pref/SavePref.kt @@ -11,4 +11,10 @@ class SavePref (){ prefPatient.edit().putString("token", token).apply() } + fun saveView(context: Context,view: String) { + val prefPatient: SharedPreferences = context.getSharedPreferences("VIEW", Context.MODE_PRIVATE) + val edit = prefPatient.edit() + prefPatient.edit().putString("view", view).apply() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Progress/ProgresFragment.kt b/app/src/main/java/com/example/rehabilitation/Progress/ProgresFragment.kt index 11cab48..3a20ddd 100644 --- a/app/src/main/java/com/example/rehabilitation/Progress/ProgresFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Progress/ProgresFragment.kt @@ -1,6 +1,7 @@ package com.example.rehabilitation.Progress import android.content.Context +import android.content.Intent import android.content.SharedPreferences import android.os.Bundle import android.util.Log @@ -10,20 +11,25 @@ import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.LinearLayoutManager +import com.example.rehabilitation.Auth.AuthorizationActivity +import com.example.rehabilitation.CodeError.Code429Activity +import com.example.rehabilitation.CodeError.Code500Activity +import com.example.rehabilitation.Enternet.EnternetActivity +import com.example.rehabilitation.Enternet.EnternetCheck import com.example.rehabilitation.Pref.ConclusionPref +import com.example.rehabilitation.R import com.example.rehabilitation.Retrofit.PatientApi +import com.example.rehabilitation.Sport.SceduleFragment import com.example.rehabilitation.databinding.FragmentProgresBinding -import com.example.rehabilitation.listCalendare -import com.example.rehabilitation.listProgressCheck import com.example.sqlitework.dip.MainViewModel import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor -import org.json.JSONObject import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory +import kotlin.concurrent.fixedRateTimer class ProgresFragment : Fragment() { private lateinit var binding: FragmentProgresBinding @@ -38,6 +44,10 @@ class ProgresFragment : Fragment() { val prefPatientConclusion = ConclusionPref() + var progresList : List? = null + + //Класс проверки интеренета + val enternetCheck = EnternetCheck() override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -52,14 +62,37 @@ class ProgresFragment : Fragment() { Token = prefToken?.getString("token", "")!! model.liveProgressCheckList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment - adapterProgress.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter) - visible1() + if(progresList != it){ + progresList = it + if(it.isEmpty()){ + binding.txtLoadProgres.visibility = View.VISIBLE + visible1() + initRCView() + } + else{ + adapterProgress.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter) + binding.txtLoadProgres.visibility = View.GONE + visible1() + } + } + } initRetrofit() initRCView() visibleLoad() - AddProgresSportDayList() + ProgressPatientCourses() + +// fixedRateTimer("timer", false, 0, 10000) { +// activity?.runOnUiThread { +// ProgressPatientCourses() +// } +// } + + binding.button7.setOnClickListener { + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.placeHolderFragment, SceduleFragment.newInstance())?.commit() + } } @@ -75,7 +108,7 @@ class ProgresFragment : Fragment() { .build() val retrofit = Retrofit.Builder() - .baseUrl("http://mobileapp.vmeda.org/api/") + .baseUrl("https://rehabilitation.vmeda.org/api/") .client(client) .addConverterFactory(GsonConverterFactory.create()) .build() @@ -86,33 +119,60 @@ class ProgresFragment : Fragment() { - //Инициализация подлючения к серверу - fun AddProgresSportDayList() { - if (view_progress == false) { - view_progress = true - visibleLoad() - initRetrofit() - val Tokens = prefPatientConclusion.conclusionToken(requireContext()) - CoroutineScope(Dispatchers.IO).launch { - val progress = patientApi.ProgressPatientCourses("Bearer $Tokens") + //Вывод прогресса пациента + fun ProgressPatientCourses() { + if (enternetCheck.isOnline(requireContext())) { + Log.i("sdasd2312","312ewqds") + if (view_progress == false) { + view_progress = true + visibleLoad() + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val progress = patientApi.ProgressPatientCourses("Bearer $Tokens") - activity?.runOnUiThread { + activity?.runOnUiThread { + //Фиксируем полученные данные + val List = progress.body() + val Nice = progress.isSuccessful + val Code = progress.code() + if(Code==429){ + val intetn = Intent(requireContext(), Code429Activity::class.java) + startActivity(intetn) + } + else if(Code==200) { + //Если нету ошибок + if (Nice) { + //Если нету ошибок + if (List != null) { + model.liveProgressCheckList.value = List?.search_check_sport + binding.txtLoadProgres.visibility = View.GONE + } + } + else{ + binding.txtLoadProgres.visibility = View.VISIBLE + visible1() + } + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) - //Фиксируем полученные данные - val progressMes = progress.body() - val progressMesCode = progress.isSuccessful() - //Если нету ошибок - if (progressMesCode) { - model.liveProgressCheckList.value = progressMes?.search_check_sport - binding.txtLoadProgres.visibility = View.GONE - } - else{ - binding.txtLoadProgres.visibility = View.VISIBLE - visible1() + startActivity(intetn) + } + else if (Code == 401) { + val intetn = Intent(requireContext(), AuthorizationActivity::class.java) + activity?.finish() + startActivity(intetn) + } } } } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + activity?.finish() + startActivity(intetn) } + } private fun initRCView() = with(binding) { rcViewProgress.layoutManager = LinearLayoutManager( diff --git a/app/src/main/java/com/example/rehabilitation/Progress/ProgressAdapter.kt b/app/src/main/java/com/example/rehabilitation/Progress/ProgressAdapter.kt index 87ad10c..22a5f0d 100644 --- a/app/src/main/java/com/example/rehabilitation/Progress/ProgressAdapter.kt +++ b/app/src/main/java/com/example/rehabilitation/Progress/ProgressAdapter.kt @@ -29,8 +29,9 @@ class ProgressAdapter() : ListAdapter(Com @SuppressLint("SuspiciousIndentation", "SetTextI18n") fun bind(item: ProgressModel) = with(binding) {//Productitem - перпедаем данные itemTemp = item - txtDate.text = item.id.toString() + ". " + item.day + ": " - txtProgress.text = item.count.toString() + "/" + item.count_workout_max.toString() + txtNumber.text = item.number.toString()+ ". " + txtDate.text = item.day + " - " +item.count.toString() + "/" + item.count_workout_max.toString() + //txtProgress.text = if (item.count_workout_max != item.count) { CardViewDay.setCardBackgroundColor(Color.parseColor("#1993FF")) } else { diff --git a/app/src/main/java/com/example/rehabilitation/Questionnaire/Model/AfterLookModel.kt b/app/src/main/java/com/example/rehabilitation/Questionnaire/Model/AfterLookModel.kt new file mode 100644 index 0000000..9a1fa26 --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Questionnaire/Model/AfterLookModel.kt @@ -0,0 +1,6 @@ +package com.example.rehabilitation.Questionnaire.Model + +data class AfterLookModel( + val after_look: Int, +) + diff --git a/app/src/main/java/com/example/rehabilitation/Questionnaire/Model/BeforeLookModel.kt b/app/src/main/java/com/example/rehabilitation/Questionnaire/Model/BeforeLookModel.kt new file mode 100644 index 0000000..bc124f5 --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Questionnaire/Model/BeforeLookModel.kt @@ -0,0 +1,6 @@ +package com.example.rehabilitation.Questionnaire.Model + +data class BeforeLookModel( + val before_look: Int, +) + diff --git a/app/src/main/java/com/example/rehabilitation/Questionnaire/QuestionnaireFragment/QAfterFragment.kt b/app/src/main/java/com/example/rehabilitation/Questionnaire/QuestionnaireFragment/QAfterFragment.kt index 7f8fc54..6c7e54d 100644 --- a/app/src/main/java/com/example/rehabilitation/Questionnaire/QuestionnaireFragment/QAfterFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Questionnaire/QuestionnaireFragment/QAfterFragment.kt @@ -1,6 +1,8 @@ package com.example.rehabilitation.Questionnaire.QuestionnaireFragment +import android.app.Activity import android.app.AlertDialog +import android.content.Intent import android.graphics.Color import android.os.Bundle import android.util.Log @@ -9,9 +11,15 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Toast -import com.example.admin.Toast.showCustomDangerToast +import androidx.fragment.app.activityViewModels import com.example.admin.Toast.showCustomInfoToast +import com.example.rehabilitation.CodeError.Code429Activity +import com.example.rehabilitation.CodeError.Code500Activity +import com.example.rehabilitation.Enternet.EnternetActivity +import com.example.rehabilitation.Enternet.EnternetCheck +import com.example.rehabilitation.PatientViewModel import com.example.rehabilitation.Pref.ConclusionPref +import com.example.rehabilitation.Questionnaire.Model.AfterLookModel import com.example.rehabilitation.Questionnaire.Model.AfterQuestionnaireModel import com.example.rehabilitation.R import com.example.rehabilitation.Retrofit.PatientApi @@ -22,21 +30,23 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor -import org.json.JSONObject import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory - -import java.time.LocalDate +import java.util.Timer +import kotlin.concurrent.fixedRateTimer class QAfterFragment : Fragment() { private lateinit var binding: FragmentQAfterBinding private lateinit var patientApi: PatientApi + private lateinit var timer: Timer + val prefPatientConclusion = ConclusionPref() + private val modelPatient: PatientViewModel by activityViewModels()//Инициализировали класс var one = 100 var two = 100 - var thee = 100 + var three = 100 var four =100 var five =100 var six =100 @@ -47,7 +57,10 @@ class QAfterFragment : Fragment() { var eleven = 100 var twelve = 100 + //Класс проверки интеренета + val enternetCheck = EnternetCheck() + var AfterLook: AfterLookModel? = null override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -62,11 +75,30 @@ class QAfterFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + viewVisible() + if (isAdded()) { + LookAfter() + modelPatient.afterLook.observe(viewLifecycleOwner) { + if( AfterLook != it){ + if(it.after_look == 1){ + AfterLook = it + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.placeHolderFragment, SceduleFragment.newInstance())?.commit() + } + else{ + AfterLook = it + After() + } + } + } + } + } + private fun After() { + viewMainAfter() buttenAdd() - //Выход binding.btnBack.setOnClickListener { activity?.supportFragmentManager?.beginTransaction() @@ -75,7 +107,7 @@ class QAfterFragment : Fragment() { //Сохраняем результат binding.btnSaveQuestionnaire.setOnClickListener { - if (one != 100 && two != 100 && thee != 100 && four != 100 && five != 100 && six != 100 && seven != 100 && eight != 100 && nine != 100 && ten != 100 && eleven != 100 && twelve != 100) { + if (one != 100 && two != 100 && three != 100 && four != 100 && five != 100 && six != 100 && seven != 100 && eight != 100 && nine != 100 && ten != 100 && eleven != 100 && twelve != 100) { if(nine == 1){ AlertDialog.Builder(requireContext()) @@ -89,7 +121,7 @@ class QAfterFragment : Fragment() { } .show() } - else if(one >=6 && thee == 0 && six == 1 && eight == 1 && eleven == 1){ + else if(one >=6 && three == 0 && six == 1 && eight == 1 && eleven == 1){ AlertDialog.Builder(requireContext()) .setTitle("Анкета") .setMessage("Уверены ли Вы в выбранных ответах на вопросы анкеты? Халатное отношение к вопросам анкеты приведет к паузе комплекса") @@ -111,6 +143,55 @@ class QAfterFragment : Fragment() { ) } } +// fixedRateTimer("timer", false, 0, 10000) { +// activity?.runOnUiThread { +// +// } +// } + } + + //Проверка анкеты ПОСЛЕ + fun LookAfter() { + if (enternetCheck.isOnline(requireActivity())) { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val listAfter = patientApi.LookAfter("Bearer $Tokens") + + activity?.runOnUiThread { + + //Фиксируем полученные данные + val List = listAfter.body() + val Nice = listAfter.isSuccessful + val Code = listAfter.code() + if(Code==429){ + val intetn = Intent(requireContext(), Code429Activity::class.java) + activity?.finish() + startActivity(intetn) + } + else if(Code==200) { + //Если нету ошибок + if (Nice) { + //Если нету ошибок + if (List != null) { + modelPatient.afterLook.value = List + } + + } + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + activity?.finish() + startActivity(intetn) + } + } + } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + activity?.finish() + startActivity(intetn) + } + } fun addQuestionAfter() { @@ -118,7 +199,7 @@ class QAfterFragment : Fragment() { val item = AfterQuestionnaireModel( one, two, - thee, + three, four, five, six, @@ -144,7 +225,7 @@ class QAfterFragment : Fragment() { .build() val retrofit = Retrofit.Builder() - .baseUrl("http://mobileapp.vmeda.org/api/") + .baseUrl("https://rehabilitation.vmeda.org/api/") .client(client) .addConverterFactory(GsonConverterFactory.create()) .build() @@ -153,35 +234,67 @@ class QAfterFragment : Fragment() { } - //Получения списка пациентов + //Отправка анкеты ПОСЛЕ fun AfterQuestionnaire(item:AfterQuestionnaireModel) { - initRetrofit() - val Tokens = prefPatientConclusion.conclusionToken(requireContext()) - CoroutineScope(Dispatchers.IO).launch { - val QA = patientApi.AddAfterQuestionnaire2("Bearer $Tokens",item) - requireActivity().runOnUiThread { + if (enternetCheck.isOnline(requireContext())) { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val QA = patientApi.AddAfterQuestionnaire2("Bearer $Tokens",item) + requireActivity().runOnUiThread { - //Фиксируем полученные данные - val AQList = QA.body() - //Если нету ошибок - if (AQList != null) { - Toast(requireContext()).showCustomInfoToast(AQList.message, requireActivity()) - } - else{ - if (AQList != null) { - Toast(requireContext()).showCustomInfoToast(AQList.message, requireActivity()) + + //Фиксируем полученные данные + val List = QA.body() + val Nice = QA.isSuccessful + val Code = QA.code() + if(Code==429){ + val intetn = Intent(requireContext(), Code429Activity::class.java) + activity?.finish() + startActivity(intetn) } + else if(Code==200) { + //Если нету ошибок + if (Nice) { + //Если нету ошибок + if (List != null) { + Toast(requireContext()).showCustomInfoToast(List.message, requireActivity()) + viewVisible() + } + else{ + if (List != null) { + Toast(requireContext()).showCustomInfoToast(List.message, requireActivity()) + } + } + } + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + activity?.finish() + startActivity(intetn) + } } - activity?.supportFragmentManager?.beginTransaction() - ?.replace(R.id.placeHolderFragment, SceduleFragment.newInstance())?.commit() - } + } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + activity?.finish() + startActivity(intetn) } + } + fun viewMainAfter(){ + binding.CLLoad.visibility = View.GONE + binding.CLMainAfter.visibility = View.VISIBLE + } + fun viewVisible(){ + binding.CLLoad.visibility = View.VISIBLE + binding.CLMainAfter.visibility = View.GONE + } private fun buttenAdd() { buttenAdd1() @@ -370,12 +483,12 @@ class QAfterFragment : Fragment() { Log.d("CVQyes3", "CVQyes3") binding.CVQyes3.setCardBackgroundColor(Color.parseColor("#3AB0FF")) binding.CVQno3.setCardBackgroundColor(Color.parseColor("#A8A8A8")) - thee = 1 + three = 1 } binding.CVQno3.setOnClickListener { binding.CVQyes3.setCardBackgroundColor(Color.parseColor("#A8A8A8")) binding.CVQno3.setCardBackgroundColor(Color.parseColor("#3AB0FF")) - thee = 0 + three = 0 } } @@ -497,6 +610,27 @@ class QAfterFragment : Fragment() { } + override fun onStart() { + super.onStart() + checkForUpdates(true) + } + + override fun onStop() { + super.onStop() + timer.cancel() + timer.purge() + } + + private fun checkForUpdates(daemonIsTrue: Boolean) { + + timer = fixedRateTimer("default", daemonIsTrue, 0, 15000) { + activity?.runOnUiThread { + LookAfter() + } + } + + } + // fun QBSaveDataA(date: String) { // val QB = questionnaire?.edit() // QB?.putString("QA", date) diff --git a/app/src/main/java/com/example/rehabilitation/Questionnaire/QuestionnaireFragment/QBeforeFragment.kt b/app/src/main/java/com/example/rehabilitation/Questionnaire/QuestionnaireFragment/QBeforeFragment.kt index 36dff5f..1a7e863 100644 --- a/app/src/main/java/com/example/rehabilitation/Questionnaire/QuestionnaireFragment/QBeforeFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Questionnaire/QuestionnaireFragment/QBeforeFragment.kt @@ -1,6 +1,7 @@ package com.example.rehabilitation.Questionnaire.QuestionnaireFragment import android.app.AlertDialog +import android.content.Intent import android.graphics.Color import android.os.Bundle import androidx.fragment.app.Fragment @@ -9,10 +10,15 @@ import android.view.View import android.view.ViewGroup import android.widget.Toast import androidx.fragment.app.activityViewModels -import com.example.admin.Toast.showCustomDangerToast import com.example.admin.Toast.showCustomInfoToast +import com.example.rehabilitation.CodeError.Code429Activity +import com.example.rehabilitation.CodeError.Code500Activity +import com.example.rehabilitation.Enternet.EnternetActivity +import com.example.rehabilitation.Enternet.EnternetCheck +import com.example.rehabilitation.PatientViewModel import com.example.rehabilitation.Pref.ConclusionPref -import com.example.rehabilitation.Questionnaire.Model.AfterQuestionnaireModel +import com.example.rehabilitation.Questionnaire.Model.AfterLookModel +import com.example.rehabilitation.Questionnaire.Model.BeforeLookModel import com.example.rehabilitation.Questionnaire.Model.BeforeQuestionnaireModel import com.example.rehabilitation.R import com.example.rehabilitation.Retrofit.PatientApi @@ -24,20 +30,25 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor -import org.json.JSONObject import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory +import java.util.Timer +import kotlin.concurrent.fixedRateTimer class QBeforeFragment : Fragment() { private lateinit var binding: FragmentQBeforeBinding private val model: MainViewModel by activityViewModels()//Инициализировали класс + private val modelPatient: PatientViewModel by activityViewModels()//Инициализировали класс + private lateinit var patientApi: PatientApi + private lateinit var timer: Timer + val prefPatientConclusion = ConclusionPref() var one = 100 var two = 100 - var thee = 100 + var three = 100 var four = 100 var five = 100 var six = 100 @@ -52,6 +63,11 @@ class QBeforeFragment : Fragment() { //Для разрешения проверки количества дней var lookDateSportMax = false + //Класс проверки интеренета + val enternetCheck = EnternetCheck() + + var BeforeLook: BeforeLookModel? = null + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -68,9 +84,26 @@ class QBeforeFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - buttenAdd() + if (isAdded()) { + LookBefore() + modelPatient.beforeLook.observe(viewLifecycleOwner) { + if( BeforeLook != it){ + if(it.before_look == 1){ + BeforeLook = it + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.placeHolderFragment, SceduleFragment.newInstance())?.commit() + } + else{ + BeforeLook = it + Before() + } + } + } + } + } + private fun Before() { //Выход binding.btnExitQB.setOnClickListener { activity?.supportFragmentManager?.beginTransaction() @@ -80,7 +113,7 @@ class QBeforeFragment : Fragment() { //Сохраняем результат binding.btnSaveQuestionnaire.setOnClickListener { - if (one != 100 && two != 100 && thee != 100 && four != 100 && five != 100 && six != 100 && seven != 100 && eight != 100 && nine != 100) { + if (one != 100 && two != 100 && three != 100 && four != 100 && five != 100 && six != 100 && seven != 100 && eight != 100 && nine != 100) { if(one >= 6) { AlertDialog.Builder(requireContext()) .setTitle("Анкета") @@ -112,6 +145,12 @@ class QBeforeFragment : Fragment() { ) } } + +// fixedRateTimer("timer", false, 0, 10000) { +// activity?.runOnUiThread { +// +// } +// } } //Функция @@ -119,7 +158,7 @@ class QBeforeFragment : Fragment() { val item = BeforeQuestionnaireModel( one, two, - thee, + three, four, five, six, @@ -142,7 +181,7 @@ class QBeforeFragment : Fragment() { .build() val retrofit = Retrofit.Builder() - .baseUrl("http://mobileapp.vmeda.org/api/") + .baseUrl("https://rehabilitation.vmeda.org/api/") .client(client) .addConverterFactory(GsonConverterFactory.create()) .build() @@ -151,32 +190,102 @@ class QBeforeFragment : Fragment() { } - //Получения списка пациентов + //Отправка запроса fun BeforeQuestionnaire(item: BeforeQuestionnaireModel) { - initRetrofit() - val Tokens = prefPatientConclusion.conclusionToken(requireContext()) - CoroutineScope(Dispatchers.IO).launch { - val QA = patientApi.AddBeforeQuestionnaire2("Bearer $Tokens",item) - requireActivity().runOnUiThread { + if (enternetCheck.isOnline(requireContext())) { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val QA = patientApi.AddBeforeQuestionnaire2("Bearer $Tokens",item) + requireActivity().runOnUiThread { - //Фиксируем полученные данные - val AQList = QA.body() - //Если нету ошибок - if (AQList != null) { - Toast(requireContext()).showCustomInfoToast(AQList.message, requireActivity()) - } - else{ - Toast(requireContext()).showCustomInfoToast("Ошибка при отправке", requireActivity()) + + //Фиксируем полученные данные + val List = QA.body() + val Nice = QA.isSuccessful + val Code = QA.code() + if(Code==429){ + val intetn = Intent(requireContext(), Code429Activity::class.java) + activity?.finish() + startActivity(intetn) + } + else if(Code==200) { + //Если нету ошибок + if (Nice) { + //Если нету ошибок + if (List != null) { + Toast(requireContext()).showCustomInfoToast(List.message, requireActivity()) + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.placeHolderFragment, SceduleFragment.newInstance())?.commit() + } + else{ + Toast(requireContext()).showCustomInfoToast("Ошибка при отправке", requireActivity()) + } + + } + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + activity?.finish() + startActivity(intetn) + } } - activity?.supportFragmentManager?.beginTransaction() - ?.replace(R.id.placeHolderFragment, SceduleFragment.newInstance())?.commit() + } - + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + activity?.finish() + startActivity(intetn) } + } + //Проверка анкеты ПОСЛЕ + fun LookBefore() { + if (enternetCheck.isOnline(requireActivity())) { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val listBefore = patientApi.LookBefore("Bearer $Tokens") + + activity?.runOnUiThread { + + //Фиксируем полученные данные + val List = listBefore.body() + val Nice = listBefore.isSuccessful + val Code = listBefore.code() + if(Code==429){ + val intetn = Intent(requireContext(), Code429Activity::class.java) + activity?.finish() + startActivity(intetn) + } + else if(Code==200) { + //Если нету ошибок + if (Nice) { + //Если нету ошибок + if (List != null) { + modelPatient.beforeLook.value = List + } + + } + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + activity?.finish() + startActivity(intetn) + } + } + + } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + activity?.finish() + startActivity(intetn) + } + + } private fun buttenAdd() { buttenAdd1() @@ -192,6 +301,16 @@ class QBeforeFragment : Fragment() { } + fun viewMainBefore(){ + binding.CLLoad.visibility = View.GONE + binding.CLMainBefore.visibility = View.VISIBLE + } + + fun viewVisible(){ + binding.CLLoad.visibility = View.VISIBLE + binding.CLMainBefore.visibility = View.GONE + } + private fun buttenAdd1() { binding.CVQyes1.setOnClickListener { @@ -380,12 +499,12 @@ class QBeforeFragment : Fragment() { binding.CVQyes3.setOnClickListener { binding.CVQyes3.setCardBackgroundColor(Color.parseColor("#3AB0FF")) binding.CVQno3.setCardBackgroundColor(Color.parseColor("#A8A8A8")) - thee = 1 + three = 1 } binding.CVQno3.setOnClickListener { binding.CVQyes3.setCardBackgroundColor(Color.parseColor("#A8A8A8")) binding.CVQno3.setCardBackgroundColor(Color.parseColor("#3AB0FF")) - thee = 0 + three = 0 } } @@ -468,4 +587,26 @@ class QBeforeFragment : Fragment() { } + + override fun onStart() { + super.onStart() + checkForUpdates(true) + } + + override fun onStop() { + super.onStop() + timer.cancel() + timer.purge() + } + + private fun checkForUpdates(daemonIsTrue: Boolean) { + + timer = fixedRateTimer("default", daemonIsTrue, 0, 15000) { + activity?.runOnUiThread { + LookBefore() + } + } + + } + } \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Retrofit/PatientApi.kt b/app/src/main/java/com/example/rehabilitation/Retrofit/PatientApi.kt index c4d1eb8..e5230e7 100644 --- a/app/src/main/java/com/example/rehabilitation/Retrofit/PatientApi.kt +++ b/app/src/main/java/com/example/rehabilitation/Retrofit/PatientApi.kt @@ -1,14 +1,19 @@ package com.example.rehabilitation.Retrofit +import com.example.rehabilitation.Appeals.TabLayout.Model.AppealsNewListModel +import com.example.rehabilitation.Appeals.TabLayout.Model.AppealsOldListModel import com.example.rehabilitation.Auth.Model.AuthModel import com.example.rehabilitation.Auth.Model.CheckTokenModel import com.example.rehabilitation.Auth.Model.UserModel import com.example.rehabilitation.Calendare.CalendareListModel +import com.example.rehabilitation.Calendare.CalendareModel import com.example.rehabilitation.MessageModel import com.example.rehabilitation.Progress.ProgressListModel import com.example.rehabilitation.Progress.ProgressModel +import com.example.rehabilitation.Questionnaire.Model.AfterLookModel import com.example.rehabilitation.Questionnaire.Model.AfterQuestionnaireMessage import com.example.rehabilitation.Questionnaire.Model.AfterQuestionnaireModel +import com.example.rehabilitation.Questionnaire.Model.BeforeLookModel import com.example.rehabilitation.Questionnaire.Model.BeforeQuestionnaireMessage import com.example.rehabilitation.Questionnaire.Model.BeforeQuestionnaireModel import com.example.rehabilitation.Questionnaire.Model.QuestionnaireModel @@ -35,7 +40,7 @@ interface PatientApi { //Проверка токена @Headers("Content-Type: application/json") @GET("CheckTokenPatient") - suspend fun CheckToken(@Header("Authorization") token:String): Response + suspend fun CheckToken(@Header("Authorization") token:String) :Response //Авторизация @Headers("Content-Type: application/json") @@ -96,4 +101,78 @@ interface PatientApi { @Headers("Content-Type: application/json") @GET("ProgressPatientCourses") suspend fun ProgressPatientCourses(@Header("Authorization") token:String):Response -} \ No newline at end of file + + //Вывод необработанных сообщений + @Headers("Content-Type: application/json") + @GET("GetAppealsPatientNew") + suspend fun GetAppealsPatientNew(@Header("Authorization") token:String) :Response + + //Вывод необработанных сообщений + @Headers("Content-Type: application/json") + @GET("GetAppealsPatientOld") + suspend fun GetAppealsPatientOld(@Header("Authorization") token:String) :Response + + + //Подтверждение необработанных сообщений + @Headers("Content-Type: application/json") + @PUT("UpdateMessagePatient") + suspend fun UpdateMessagePatient(@Header("Authorization") token:String,@Query("id") id:Int) :Response + + //Отправка сообщения пациенту + @Headers("Content-Type: application/json") + @POST("AddMessagePatient") + suspend fun AddMessagePatient(@Header("Authorization") token:String, @Query("text") text:String) :Response + + //Вывод есть ли анкета ДО + @Headers("Content-Type: application/json") + @GET("LookBefore") + suspend fun LookBefore(@Header("Authorization") token:String) :Response + + //Вывод есть ли анкета ПОСЛЕ + @Headers("Content-Type: application/json") + @GET("LookAfter") + suspend fun LookAfter(@Header("Authorization") token:String) :Response + + + //Вывод есть ли анкета ПОСЛЕ + @Headers("Content-Type: application/json") + @GET("GetCalendare") + suspend fun GetCalendare(@Header("Authorization") token:String) :Response + +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/example/rehabilitation/Setting/SettingFragment.kt b/app/src/main/java/com/example/rehabilitation/Setting/SettingFragment.kt index e572735..a0e54bd 100644 --- a/app/src/main/java/com/example/rehabilitation/Setting/SettingFragment.kt +++ b/app/src/main/java/com/example/rehabilitation/Setting/SettingFragment.kt @@ -2,7 +2,6 @@ package com.example.rehabilitation.Setting import android.content.Intent import android.os.Bundle -import android.util.Log import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View @@ -12,6 +11,10 @@ import androidx.appcompat.app.AlertDialog import com.example.admin.Toast.showCustomInfoToast import com.example.rehabilitation.Auth.AuthFragment import com.example.rehabilitation.Auth.AuthorizationActivity +import com.example.rehabilitation.CodeError.Code429Activity +import com.example.rehabilitation.CodeError.Code500Activity +import com.example.rehabilitation.Enternet.EnternetActivity +import com.example.rehabilitation.Enternet.EnternetCheck import com.example.rehabilitation.Feedback.FeedbackFragment import com.example.rehabilitation.MainFragment import com.example.rehabilitation.Pref.ClearPref @@ -34,6 +37,9 @@ class SettingFragment : Fragment() { val prefPatientClear = ClearPref() val prefPatientConclusion = ConclusionPref() private lateinit var patientApi: PatientApi + + //Класс проверки интеренета + val enternetCheck = EnternetCheck() override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -94,7 +100,7 @@ class SettingFragment : Fragment() { .build() val retrofit = Retrofit.Builder() - .baseUrl("http://mobileapp.vmeda.org/api/") + .baseUrl("https://rehabilitation.vmeda.org/api/") .client(client) .addConverterFactory(GsonConverterFactory.create()) .build() @@ -105,28 +111,58 @@ class SettingFragment : Fragment() { //Получения списка пациентов fun Logout() { - initRetrofit() - val Tokens = prefPatientConclusion.conclusionToken(requireContext()) - CoroutineScope(Dispatchers.IO).launch { - val listProduct = patientApi.LogoutPatient("Bearer $Tokens") + if (enternetCheck.isOnline(requireContext())) { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val listProduct = patientApi.LogoutPatient("Bearer $Tokens") - activity?.runOnUiThread { - - //Фиксируем полученные данные - val visibleviewList = listProduct.body() - val visibleviewListCode = listProduct.isSuccessful() - //Если нету ошибок - if (visibleviewListCode) { - Toast(requireContext()).showCustomInfoToast(visibleviewList?.message.toString(), requireActivity()) - prefPatientClear.clearToken(requireContext()) - activity?.supportFragmentManager?.beginTransaction() - ?.replace(R.id.CLMain, AuthFragment.newInstance()) - ?.commit() + activity?.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) { + Toast(requireContext()).showCustomInfoToast(List?.message.toString(), requireActivity()) + prefPatientClear.clearToken(requireContext()) + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.CLMain, AuthFragment.newInstance()) + ?.commit() + + + } + + } + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + + startActivity(intetn) + } + else if (Code == 401) { + val intetn = Intent(requireContext(), AuthorizationActivity::class.java) + activity?.finish() + startActivity(intetn) + } } } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + activity?.finish() + startActivity(intetn) } + } companion object { diff --git a/app/src/main/java/com/example/rehabilitation/Sport/Image/ImageSportAdapter.kt b/app/src/main/java/com/example/rehabilitation/Sport/Image/ImageSportAdapter.kt index b2edc58..8b688dc 100644 --- a/app/src/main/java/com/example/rehabilitation/Sport/Image/ImageSportAdapter.kt +++ b/app/src/main/java/com/example/rehabilitation/Sport/Image/ImageSportAdapter.kt @@ -13,6 +13,7 @@ import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.ViewHolder import com.example.rehabilitation.R import com.example.rehabilitation.databinding.ImageSportCardsBinding +import com.squareup.picasso.Picasso class ImageSportAdapter(val contextF:Context) : ListAdapter( @@ -40,8 +41,8 @@ class ImageSportAdapter(val contextF:Context) : ListAdapter? = null + + //Класс проверки интеренета + val enternetCheck = EnternetCheck() + + //Для анкеты ДО + var oneB = 100 + var twoB = 100 + var threeB = 100 + var fourB = 100 + var fiveB = 100 + var sixB = 100 + var sevenB = 100 + var eightB = 100 + var nineB = 100 + + + var oneA = 100 + var twoA = 100 + var threeA = 100 + var fourA =100 + var fiveA =100 + var sixA =100 + var sevenA = 100 + var eightA = 100 + var nineA = 100 + var tenA =100 + var elevenA = 100 + var twelveA = 100 override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -108,65 +133,126 @@ class SceduleFragment() : Fragment(), override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + //visibleLoadYes() if (isAdded()) { - prefToken = activity?.getSharedPreferences("token", Context.MODE_PRIVATE) - Token = prefToken?.getString("token", "")!! + binding.also { - binding.button2.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction() - ?.replace(R.id.placeHolderFragment, QBeforeFragment.newInstance())?.commit() - } - - binding.button3.setOnClickListener { - activity?.supportFragmentManager?.beginTransaction() - ?.replace(R.id.placeHolderFragment, QAfterFragment.newInstance())?.commit() - } - - initRcViewDay() - initRcViewImage() - liveReadOrderCurrent() - liveDaySportOne() - - model.liveDayList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment - adapterDay.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter) - } - - model.liveImageList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment - adapterImage.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter) - binding.LoadImage.visibility = View.GONE - listImageSport = it - } - - - //Включение звука тиканья - binding.btnMp3.setOnClickListener { - if (metronom == true) { - metronom = false - stopSound() - binding.btnMp3.setBackgroundResource(android.R.drawable.ic_media_play) - } else { - metronom = true - playSound() - binding.btnMp3.setBackgroundResource(android.R.drawable.ic_media_pause) + binding.txtNullSportList.visibility = View.VISIBLE + binding.button4.setOnClickListener{ + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.placeHolderFragment, QAfterFragment.newInstance())?.commit() } + prefToken = activity?.getSharedPreferences("token", Context.MODE_PRIVATE) + Token = prefToken?.getString("token", "")!! + + binding.button2.setOnClickListener { + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.placeHolderFragment, QBeforeFragment.newInstance())?.commit() + } + + binding.button3.setOnClickListener { + activity?.supportFragmentManager?.beginTransaction() + ?.replace(R.id.placeHolderFragment, QAfterFragment.newInstance())?.commit() + } + + initRcViewDay() + initRcViewImage() + liveReadOrderCurrent() + liveDaySportOne() + + model.liveDayList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment + if(daySportList != it){ + initRcViewDay() + daySportList = it + adapterDay.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter) + //binding.rcVIewDayList.smoothScrollToPosition(lus); + binding.txtNullSportList.visibility = View.GONE + } + } + + model.liveImageList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment + adapterImage.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter) + binding.LoadImage.visibility = View.GONE + //listImageSport = it + } + + + + //Включение звука тиканья + binding.btnMp3.setOnClickListener { + if (metronom == true) { + metronom = false + stopSound() + binding.btnMp3.setBackgroundResource(android.R.drawable.ic_media_play) + } else { + metronom = true + playSound() + binding.btnMp3.setBackgroundResource(android.R.drawable.ic_media_pause) + } + } + + //Функция в которой расположены кнопки + addButton() + + binding.button5.setOnClickListener { + ClearRCView() + } + + binding.CLLoad.setOnClickListener{ + + } + + + //APIliveCountViewCurrent() + // view_visible = false + GetVisibleViewList() + + + modelPatient.viewCurrent.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment + if(viewVisible != it.view){ + + viewVisible = it.view + prefPatientSave.saveView(requireContext(),viewVisible.toString()) + VisibleView(it.view,it.text) + } + } + + clButton() +// fixedRateTimer("timer", false, 0, 10000) { +// activity?.runOnUiThread { +// GetVisibleViewListTimer() +// GetSportDay() +// } +// } + } - //Функция в которой расположены кнопки - addButton() - - binding.button5.setOnClickListener { - ClearRCView() - } - - - //APIliveCountViewCurrent() - view_visible = false - GetVisibleViewList() - - } + + //Кнопки анкеты ДО + Before() + + //Кнопки анкеты GJCKT + After() } + private fun clButton() = with(binding) { + CLFinal.setOnClickListener{} +// CL7day.setOnClickListener{} +// CL15day.setOnClickListener{} + CLPaus.setOnClickListener{} + CLBlock.setOnClickListener{} + CLYesNoSport.setOnClickListener{} + CLFinalDay.setOnClickListener{} + CLFinal.setOnClickListener{} + //CLMainAfter.setOnClickListener{} + // CLMainBefore.setOnClickListener{} + } + + override fun onResume() { + super.onResume() + GetVisibleViewList() + } //Инициализация подлючения к серверу private fun initRetrofit() { @@ -179,7 +265,7 @@ class SceduleFragment() : Fragment(), .build() val retrofit = Retrofit.Builder() - .baseUrl("http://mobileapp.vmeda.org/api/") + .baseUrl("https://rehabilitation.vmeda.org/api/") .client(client) .addConverterFactory(GsonConverterFactory.create()) .build() @@ -190,49 +276,89 @@ class SceduleFragment() : Fragment(), - //Получения списка пациентов + //Получения экрана fun GetVisibleViewList() { - if (view_visible == false) { - view_visible = true - visibleLoad() - initRetrofit() - val Tokens = prefPatientConclusion.conclusionToken(requireContext()) - CoroutineScope(Dispatchers.IO).launch { - val listProduct = patientApi.VisibleView3("Bearer $Tokens") + if (enternetCheck.isOnline(requireActivity())) { + visibleLoadYes() + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val listProduct = patientApi.VisibleView3("Bearer $Tokens") - activity?.runOnUiThread { + activity?.runOnUiThread { - //Фиксируем полученные данные - val visibleviewList = listProduct.body() - val visibleviewListCode = listProduct.isSuccessful() - //Если нету ошибок - if (visibleviewListCode) { - VisibleView(visibleviewList!!.view) - Log.i("asdasdasdasd111111111", "23231x2wswqxsxsas") - } else { - Log.i("asdasdasdasd22222222", "23231x2wswqxsxsas") - timerVisibleView() + //Фиксируем полученные данные + 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) { + modelPatient.viewCurrent.value = List + visibleLoadNo() + } + + } + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + + startActivity(intetn) + } + else if (Code == 401) { + val intetn = Intent(requireContext(), AuthorizationActivity::class.java) + activity?.finish() + startActivity(intetn) + } + } - } + // } } - } - } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) - private fun timerVisibleView() { - Log.i("asdasdasdasd444444444", "23231x2wswqxsxsas") - view_visible = false - CoroutineScope(Dispatchers.IO).launch { - Timer().schedule(timerTask { - activity?.runOnUiThread { - GetVisibleViewList() - } - }, 15000) + startActivity(intetn) } } +// +// //Получения экрана +// fun GetVisibleViewListTimer() { +// if (enternetCheck.isOnline(requireContext())) { +// initRetrofit() +// val Tokens = prefPatientConclusion.conclusionToken(requireContext()) +// CoroutineScope(Dispatchers.IO).launch { +// val listProduct = patientApi.VisibleView3("Bearer $Tokens") +// +// activity?.runOnUiThread { +// +// //Фиксируем полученные данные +// val visibleviewList = listProduct.body() +// val visibleviewListCode = listProduct.isSuccessful() +// //Если нету ошибок +// if (visibleviewListCode) { +// modelPatient.viewCurrent.value = visibleviewList +// } +// } +// } +// } else { +// val intetn = Intent(requireContext(), EnternetActivity::class.java) +// activity?.finish() +// startActivity(intetn) +// } +// } - private fun VisibleView(view: Int) { + + private fun VisibleView(view: Int, text:String) { + Log.i("123asda213s","a123sdasd123") when (view) { 1 -> visibleNoSport() 2 -> visibleFinel() @@ -242,11 +368,16 @@ class SceduleFragment() : Fragment(), 6 -> visibleFinalDay() 7 -> visibleAfterQ() 8 -> visibleBeforeQ() - 9 -> visibleBlock() - 10 -> visiblePause() + 9 -> visibleBlock(text) + 10 -> visiblePause(text) //616-> + else ->{ + visibleLoadYes() + } + } + } @@ -301,34 +432,35 @@ class SceduleFragment() : Fragment(), //Выводим экран с фразой готовы ли вы начать тренировку private fun visibleYesNoSport() { binding.CLListSport.visibility = View.GONE - binding.CLDayList.visibility = View.GONE + binding.CLDayList.visibility = View.VISIBLE binding.CLCardSport.visibility = View.GONE binding.CLLoad.visibility = View.GONE binding.CLYesNoSport.visibility = View.VISIBLE binding.CLPaus.visibility = View.GONE binding.CLBlock.visibility = View.GONE - binding.CL7day.visibility = View.GONE - binding.CL15day.visibility = View.GONE + //binding.CL7day.visibility = View.GONE + // binding.CL15day.visibility = View.GONE binding.CLFinal.visibility = View.GONE binding.CLNoSport.visibility = View.GONE binding.CLFinalDay.visibility = View.GONE + binding.CLBefore.visibility = View.GONE + binding.CLAfter.visibility = View.GONE binding.btnYesStartSport.setOnClickListener { - if (SportUserTrue == 0) { - Toast(requireContext()).showCustomInfoToast( - "Попросите врача создать вам курс", - requireActivity() - ) - } else { - activity?.supportFragmentManager?.beginTransaction() - ?.replace(R.id.placeHolderFragment, QBeforeFragment.newInstance())?.commit() - } +// if (SportUserTrue == 0) { +// Toast(requireContext()).showCustomInfoToast( +// "Попросите врача создать вам курс", +// requireActivity() +// ) +// } else { + visibleBeforeQ() + // } } } //Выводим списка тренировок private fun visibleDayList() { - + GetSportDay() binding.CLListSport.visibility = View.GONE binding.CLDayList.visibility = View.VISIBLE binding.CLCardSport.visibility = View.GONE @@ -336,15 +468,17 @@ class SceduleFragment() : Fragment(), binding.CLYesNoSport.visibility = View.GONE binding.CLPaus.visibility = View.GONE binding.CLBlock.visibility = View.GONE - binding.CL7day.visibility = View.GONE - binding.CL15day.visibility = View.GONE + // binding.CL7day.visibility = View.GONE + //binding.CL15day.visibility = View.GONE binding.CLFinal.visibility = View.GONE binding.CLNoSport.visibility = View.GONE binding.CLFinalDay.visibility = View.GONE + binding.CLBefore.visibility = View.GONE + binding.CLAfter.visibility = View.GONE - GetSportDay() - binding.rcVIewDayList.smoothScrollToPosition(0); + + // binding.rcVIewDayList.smoothScrollToPosition(0); } @@ -358,192 +492,264 @@ class SceduleFragment() : Fragment(), binding.CLYesNoSport.visibility = View.GONE binding.CLPaus.visibility = View.GONE binding.CLBlock.visibility = View.GONE - binding.CL7day.visibility = View.GONE - binding.CL15day.visibility = View.GONE + // binding.CL7day.visibility = View.GONE + // binding.CL15day.visibility = View.GONE binding.CLFinal.visibility = View.GONE binding.CLNoSport.visibility = View.GONE binding.CLFinalDay.visibility = View.GONE + binding.CLBefore.visibility = View.GONE + binding.CLAfter.visibility = View.GONE + } - private fun visibleLoad() { - binding.CLListSport.visibility = View.GONE - binding.CLDayList.visibility = View.GONE - binding.CLCardSport.visibility = View.GONE - binding.CLLoad.visibility = View.VISIBLE - binding.CLYesNoSport.visibility = View.GONE - binding.CLPaus.visibility = View.GONE - binding.CLBlock.visibility = View.GONE - binding.CL7day.visibility = View.GONE - binding.CL15day.visibility = View.GONE - binding.CLFinal.visibility = View.GONE - binding.CLNoSport.visibility = View.GONE - binding.CLFinalDay.visibility = View.GONE - } - - private fun visibleLoadNo() { - binding.CLLoad.visibility = View.GONE - } +// private fun visibleLoadYes() { +// binding.CLLoad.visibility = View.VISIBLE +// } +// +// private fun visibleLoadNo() { +// binding.CLLoad.visibility = View.GONE +// } //Выводим экран паузы - private fun visiblePause() { + private fun visiblePause(text:String) { binding.CLListSport.visibility = View.GONE - binding.CLDayList.visibility = View.GONE + binding.CLDayList.visibility = View.VISIBLE binding.CLCardSport.visibility = View.GONE binding.CLLoad.visibility = View.GONE binding.CLYesNoSport.visibility = View.GONE binding.CLPaus.visibility = View.VISIBLE binding.CLBlock.visibility = View.GONE - binding.txtDatePause.setText("${PauseDay}") - binding.CL7day.visibility = View.GONE - binding.CL15day.visibility = View.GONE + binding.txtDatePause.setText("${text}") + // binding.CL7day.visibility = View.GONE + // binding.CL15day.visibility = View.GONE binding.CLFinal.visibility = View.GONE binding.CLNoSport.visibility = View.GONE binding.CLFinalDay.visibility = View.GONE + binding.CLBefore.visibility = View.GONE + binding.CLAfter.visibility = View.GONE } //Выводим экран блока - private fun visibleBlock() { + private fun visibleBlock(text:String) { binding.CLListSport.visibility = View.GONE - binding.CLDayList.visibility = View.GONE + binding.CLDayList.visibility = View.VISIBLE binding.CLCardSport.visibility = View.GONE binding.CLLoad.visibility = View.GONE binding.CLYesNoSport.visibility = View.GONE binding.CLPaus.visibility = View.GONE - binding.txtDateBlock.setText("${Block}") + binding.txtDateBlock.setText("${text}") binding.CLBlock.visibility = View.VISIBLE - binding.CL7day.visibility = View.GONE - binding.CL15day.visibility = View.GONE + // binding.CL7day.visibility = View.GONE + // binding.CL15day.visibility = View.GONE binding.CLFinal.visibility = View.GONE binding.CLNoSport.visibility = View.GONE binding.CLFinalDay.visibility = View.GONE + binding.CLBefore.visibility = View.GONE + binding.CLAfter.visibility = View.GONE + } //Выводим сообщенеи от отправке отчета на 7 день private fun visible7day() { binding.CLListSport.visibility = View.GONE - binding.CLDayList.visibility = View.GONE + binding.CLDayList.visibility = View.VISIBLE binding.CLCardSport.visibility = View.GONE binding.CLLoad.visibility = View.GONE binding.CLYesNoSport.visibility = View.GONE binding.CLPaus.visibility = View.GONE binding.CLBlock.visibility = View.GONE - binding.CL7day.visibility = View.VISIBLE - binding.CL15day.visibility = View.GONE + // binding.CL7day.visibility = View.VISIBLE + // binding.CL15day.visibility = View.GONE binding.CLFinal.visibility = View.GONE binding.CLNoSport.visibility = View.GONE binding.CLFinalDay.visibility = View.GONE + binding.CLBefore.visibility = View.GONE + binding.CLAfter.visibility = View.GONE } //Выводим сообщенеи от отправке отчета на 15 день private fun visible15day() { binding.CLListSport.visibility = View.GONE - binding.CLDayList.visibility = View.GONE + binding.CLDayList.visibility = View.VISIBLE binding.CLCardSport.visibility = View.GONE binding.CLLoad.visibility = View.GONE binding.CLYesNoSport.visibility = View.GONE binding.CLPaus.visibility = View.GONE binding.CLBlock.visibility = View.GONE - binding.CL7day.visibility = View.GONE - binding.CL15day.visibility = View.VISIBLE + // binding.CL7day.visibility = View.GONE + // binding.CL15day.visibility = View.VISIBLE binding.CLFinal.visibility = View.GONE binding.CLNoSport.visibility = View.GONE binding.CLFinalDay.visibility = View.GONE + binding.CLBefore.visibility = View.GONE + binding.CLAfter.visibility = View.GONE } //Выводим экрана окончания курса private fun visibleFinel() { binding.CLListSport.visibility = View.GONE - binding.CLDayList.visibility = View.GONE + binding.CLDayList.visibility = View.VISIBLE binding.CLCardSport.visibility = View.GONE binding.CLLoad.visibility = View.GONE binding.CLYesNoSport.visibility = View.GONE binding.CLPaus.visibility = View.GONE binding.CLBlock.visibility = View.GONE - binding.CL7day.visibility = View.GONE - binding.CL15day.visibility = View.GONE + // binding.CL7day.visibility = View.GONE + // binding.CL15day.visibility = View.GONE binding.CLFinal.visibility = View.VISIBLE binding.CLNoSport.visibility = View.GONE binding.CLFinalDay.visibility = View.GONE + binding.CLBefore.visibility = View.GONE + binding.CLAfter.visibility = View.GONE } //Выводим экрана о том что курса нету private fun visibleNoSport() { binding.CLListSport.visibility = View.GONE - binding.CLDayList.visibility = View.GONE + binding.CLDayList.visibility = View.VISIBLE binding.CLCardSport.visibility = View.GONE binding.CLLoad.visibility = View.GONE binding.CLYesNoSport.visibility = View.GONE binding.CLPaus.visibility = View.GONE binding.CLBlock.visibility = View.GONE - binding.CL7day.visibility = View.GONE - binding.CL15day.visibility = View.GONE + // binding.CL7day.visibility = View.GONE + // binding.CL15day.visibility = View.GONE binding.CLFinal.visibility = View.GONE binding.CLNoSport.visibility = View.VISIBLE binding.CLFinalDay.visibility = View.GONE + binding.CLBefore.visibility = View.GONE + binding.CLAfter.visibility = View.GONE } //Выводим финал дня тренировок private fun visibleFinalDay() { binding.CLListSport.visibility = View.GONE - binding.CLDayList.visibility = View.GONE + binding.CLDayList.visibility = View.VISIBLE binding.CLCardSport.visibility = View.GONE binding.CLLoad.visibility = View.GONE binding.CLYesNoSport.visibility = View.GONE binding.CLPaus.visibility = View.GONE binding.CLBlock.visibility = View.GONE - binding.CL7day.visibility = View.GONE - binding.CL15day.visibility = View.GONE + // binding.CL7day.visibility = View.GONE + // binding.CL15day.visibility = View.GONE binding.CLFinal.visibility = View.GONE binding.CLNoSport.visibility = View.GONE binding.CLFinalDay.visibility = View.VISIBLE + binding.CLBefore.visibility = View.GONE + binding.CLAfter.visibility = View.GONE } //Переход на накету ДО private fun visibleBeforeQ() { - activity?.supportFragmentManager?.beginTransaction() - ?.replace(R.id.placeHolderFragment, QBeforeFragment.newInstance())?.commit() + binding.CLListSport.visibility = View.GONE + binding.CLDayList.visibility = View.VISIBLE + binding.CLCardSport.visibility = View.GONE + binding.CLLoad.visibility = View.GONE + binding.CLYesNoSport.visibility = View.GONE + binding.CLPaus.visibility = View.GONE + binding.CLBlock.visibility = View.GONE + // binding.CL7day.visibility = View.GONE + // binding.CL15day.visibility = View.GONE + binding.CLFinal.visibility = View.GONE + binding.CLNoSport.visibility = View.GONE + binding.CLFinalDay.visibility = View.GONE + binding.CLBefore.visibility = View.VISIBLE + binding.CLAfter.visibility = View.GONE } + + //Переход на накету ПОСЛЕ private fun visibleAfterQ() { - activity?.supportFragmentManager?.beginTransaction() - ?.replace(R.id.placeHolderFragment, QAfterFragment.newInstance())?.commit() + binding.CLListSport.visibility = View.GONE + binding.CLDayList.visibility = View.VISIBLE + binding.CLCardSport.visibility = View.GONE + binding.CLLoad.visibility = View.GONE + binding.CLYesNoSport.visibility = View.GONE + binding.CLPaus.visibility = View.GONE + binding.CLBlock.visibility = View.GONE + // binding.CL7day.visibility = View.GONE + // binding.CL15day.visibility = View.GONE + binding.CLFinal.visibility = View.GONE + binding.CLNoSport.visibility = View.GONE + binding.CLFinalDay.visibility = View.GONE + binding.CLBefore.visibility = View.GONE + binding.CLAfter.visibility = View.VISIBLE } - //Получения списка пациентов + //Включение загрузки + private fun visibleLoadYes() { + viewVisible = 100 + binding.CLLoad.visibility = View.VISIBLE + } + //Отключение загрузки + private fun visibleLoadNo() { + binding.CLLoad.visibility = View.GONE + } + + + //Получения списка упражнений fun GetSportDay() { - //initRcViewDay() - initRetrofit() - val Tokens = prefPatientConclusion.conclusionToken(requireContext()) - CoroutineScope(Dispatchers.IO).launch { - val sportDay = patientApi.GetSportDay("Bearer $Tokens") - requireActivity().runOnUiThread { + if (enternetCheck.isOnline(requireContext())) { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val sportDay = patientApi.GetSportDay("Bearer $Tokens") + requireActivity().runOnUiThread { - //Фиксируем полученные данные - val sportDayList = sportDay.body() - val sportDayListCode = sportDay.isSuccessful() - //Если нету ошибок - if (sportDayList != null) { - model.liveDayList.value = sportDayList?.sport_for_day - Log.i("asdasdasdasd11111111", "23231x2wswqxsxsas") - } + //Фиксируем полученные данные + val List = sportDay.body() + val Nice = sportDay.isSuccessful + val Code = sportDay.code() + if(Code==429){ + val intetn = Intent(requireContext(), Code429Activity::class.java) + + startActivity(intetn) + } + else if(Code==200) { + //Если нету ошибок + if (Nice) { + //Если нету ошибок + if (List != null) { + model.liveDayList.value = List?.sport_for_day + } + + } + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + + startActivity(intetn) + } + else if (Code == 401) { + val intetn = Intent(requireContext(), AuthorizationActivity::class.java) + activity?.finish() + startActivity(intetn) + } // else{ // Log.i("asdasdasdasd22222222","23231x2wswqxsxsas") // Handler().postDelayed({ // GetSportDay() // }, 5000) // } + } } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + + startActivity(intetn) } + } //Подтверждение упражнения fun AddCheckView(id: Int, check: Int) { - visibleLoad() + if (enternetCheck.isOnline(requireContext())) { + visibleLoadYes() initRetrofit() val Tokens = prefPatientConclusion.conclusionToken(requireContext()) CoroutineScope(Dispatchers.IO).launch { @@ -552,21 +758,48 @@ class SceduleFragment() : Fragment(), activity?.runOnUiThread { //Фиксируем полученные данные - val checkSportMes = checkSport.body() - val checkSportMesCode = checkSport.isSuccessful() - //Если нету ошибок - if (checkSportMesCode) { - if(check == 1){ - addCheckYes() - } - else if(check == 2){ - addCheckNo() + val List = checkSport.body() + val Nice = checkSport.isSuccessful + val Code = checkSport.code() + if(Code==429){ + val intetn = Intent(requireContext(), Code429Activity::class.java) + + startActivity(intetn) + } + else if(Code==200) { + //Если нету ошибок + if (Nice) { + //Если нету ошибок + if (List != null) { + if(check == 1){ + addCheckYes() + } + else if(check == 2){ + addCheckNo() + } + visibleDayList() + visibleLoadNo() + } + } } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + startActivity(intetn) + } + else if (Code == 401) { + val intetn = Intent(requireContext(), AuthorizationActivity::class.java) + activity?.finish() + startActivity(intetn) + } } } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + startActivity(intetn) + } } //Функция активации кнпок @@ -585,11 +818,14 @@ class SceduleFragment() : Fragment(), binding.btnAddDayCategoryCheck.setOnClickListener { AddCheckView(idCheckDay,1) Log.i("btnAddDayCategoryCheck1","btnAddDayCategoryCheck1") + + } binding.btnNoAddDayCategoryCheck.setOnClickListener { AddCheckView(idCheckDay,2) Log.i("btnAddDayCategoryCheck2","btnAddDayCategoryCheck2") + } } @@ -597,7 +833,7 @@ class SceduleFragment() : Fragment(), stopSound() binding.btnMp3.setBackgroundResource(android.R.drawable.ic_media_play) - visibleLoad() + visibleLoadYes() binding.btnNoAddDayCategoryCheck.isEnabled = false binding.btnNoAddDayCategoryCheck.isClickable = false @@ -624,7 +860,7 @@ class SceduleFragment() : Fragment(), stopSound() binding.btnMp3.setBackgroundResource(android.R.drawable.ic_media_play) - visibleLoad() + visibleLoadYes() binding.btnAddDayCategoryCheck.isEnabled = false @@ -648,31 +884,7 @@ class SceduleFragment() : Fragment(), visibleDayList() } -// //Заполнения модели и списка -// private fun addListModelCardsDay(day: String) { -// -// val db = MainDB.getDB(requireContext()) -// val list = ArrayList() -// db.getDaoDaySport().getAllItemDaySport(day).asLiveData() -// .observe(requireActivity()) { itList -> -// var number = 1; -// -// itList.forEach { -// Log.d("123", it.category) -// val itemDay = DayListModel( -// it.id.toString(), -// number++.toString(), -// day, -// it.category, -// it.check.toString(), -// ) -// list.add(itemDay)//Передали заполненый список -// } -// model.liveDayList.value = list -// Log.d("sadas", list.toString()) -// } -// visibleDayList() -// } + companion object { fun newInstance() = SceduleFragment() @@ -693,7 +905,7 @@ class SceduleFragment() : Fragment(), GridLayoutManager(requireContext(), 1)//По вертикали будет выводить по умолчанию adapterDay = DayAdapter(this@SceduleFragment) rcVIewDayList.adapter = adapterDay - binding.rcVIewDayList.smoothScrollToPosition(0); + //binding.rcVIewDayList.smoothScrollToPosition(0); } //Инициализация списка для фотографий @@ -754,38 +966,70 @@ class SceduleFragment() : Fragment(), mMediaPlayer!!.release() mMediaPlayer = null } + println("super.onStop triggered") + } override fun onClickSport(item: SportForDayModel) { GetSportDayOne(item.id) idCheckDay=item.id + Log.i("GetSportDayOne", item.id.toString()) Log.i("111111111", "12312312312321312312") } //Получения списка пациентов fun GetSportDayOne(id: Int) { - initRetrofit() - val Tokens = prefPatientConclusion.conclusionToken(requireContext()) - CoroutineScope(Dispatchers.IO).launch { - val sportDayOne = patientApi.GetSportDayOne("Bearer $Tokens", id) - requireActivity().runOnUiThread { + if (enternetCheck.isOnline(requireContext())) { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val sportDayOne = patientApi.GetSportDayOne("Bearer $Tokens", id) + requireActivity().runOnUiThread { - //Фиксируем полученные данные - val sportDayOneList = sportDayOne.body() + //Фиксируем полученные данные + val List = sportDayOne.body() + val Nice = sportDayOne.isSuccessful + val Code = sportDayOne.code() + if(Code==429){ + val intetn = Intent(requireContext(), Code429Activity::class.java) - //Если нету ошибок - if (sportDayOneList != null) { - modelPatient.liveDaySportOne.value = sportDayOneList + startActivity(intetn) + } + else if(Code==200) { + //Если нету ошибок + if (Nice) { + //Если нету ошибок + if (List != null) { + modelPatient.liveDaySportOne.value = List + } + + } + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + + startActivity(intetn) + } + else if (Code == 401) { + val intetn = Intent(requireContext(), AuthorizationActivity::class.java) + activity?.finish() + startActivity(intetn) + } } - } + } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + + startActivity(intetn) } + } private fun liveDaySportOne() = with(binding) { modelPatient.liveDaySportOne.observe(viewLifecycleOwner) { - visibleLoad() + visibleLoadYes() //Фиксируем id idDaySport = it.id.toInt() @@ -826,7 +1070,882 @@ class SceduleFragment() : Fragment(), //Выводим экран visibleDayCard() + } } + + + //АНКЕТА ДО + + private fun Before() { + //Выход +// binding.btnExitQB.setOnClickListener { +// activity?.supportFragmentManager?.beginTransaction() +// ?.replace(R.id.placeHolderFragment, SceduleFragment.newInstance())?.commit() +// } + buttenAddBefore() + //Сохраняем результат + binding.btnSaveQuestionnaireB.setOnClickListener { + + if (oneB != 100 && twoB != 100 && threeB != 100 && fourB != 100 && fiveB != 100 && sixB != 100 && sevenB != 100 && eightB != 100 && nineB != 100) { + if(oneB >= 6) { + AlertDialog.Builder(requireContext()) + .setTitle("Анкета") + .setMessage("Уверены ли Вы в выбранных ответах на вопросы анкеты? Халатное отношение к вопросам анкеты приведет к блокировке комплекса") + .setNeutralButton("Подтвердить") { dialog, whichButton -> + addQuestionnaireB() + } + .setNegativeButton("Отмена") { dialog, whichButton -> + }.show() + } + else if(fourB == 1 && fiveB == 1 && sixB == 1 && sevenB == 1 && nineB == 1){ + AlertDialog.Builder(requireContext()) + .setTitle("Анкета") + .setMessage("Уверены ли Вы в выбранных ответах на вопросы анкеты? Халатное отношение к вопросам анкеты приведет к паузе комплекса") + .setNeutralButton("Подтвердить") { dialog, whichButton -> + addQuestionnaireB() + } + .setNegativeButton("Отмена") { dialog, whichButton -> + }.show() + } + else{ + addQuestionnaireB() + } + + } else { + Toast(requireContext()).showCustomInfoToast( + "Не все пункты выбраны", + requireActivity() + ) + } + } + +// fixedRateTimer("timer", false, 0, 10000) { +// activity?.runOnUiThread { +// +// } +// } + } + + //Функция + fun addQuestionnaireB(){ + + val item = BeforeQuestionnaireModel( + oneB, + twoB, + threeB, + fourB, + fiveB, + sixB, + sevenB, + eightB, + nineB, + ) + BeforeQuestionnaire(item) + + } + + private fun buttenAddBefore() { + + buttenAdd1B() + buttenAdd1_2B() + buttenAdd2B() + buttenAdd3B() + buttenAdd4B() + buttenAdd5B() + buttenAdd6B() + buttenAdd7B() + buttenAdd8B() + buttenAdd9B() + + } + + //Отправка запроса + fun BeforeQuestionnaire(item: BeforeQuestionnaireModel) { + if (enternetCheck.isOnline(requireContext())) { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val QA = patientApi.AddBeforeQuestionnaire2("Bearer $Tokens",item) + requireActivity().runOnUiThread { + + + + //Фиксируем полученные данные + val List = QA.body() + val Nice = QA.isSuccessful + val Code = QA.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()) +// activity?.supportFragmentManager?.beginTransaction() +// ?.replace(R.id.placeHolderFragment, SceduleFragment.newInstance())?.commit() + // GetVisibleViewList() + + visibleLoadYes() + } + else{ + Toast(requireContext()).showCustomInfoToast("Ошибка при отправке", requireActivity()) + // GetVisibleViewList() + visibleLoadYes() + } + + } + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + + startActivity(intetn) + } + else if (Code == 401) { + val intetn = Intent(requireContext(), AuthorizationActivity::class.java) + activity?.finish() + startActivity(intetn) + } + + } + + } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + + startActivity(intetn) + } + + } + + private fun buttenAdd1B() { + binding.CVQyes1B.setOnClickListener { + binding.CLQ112B.visibility = View.VISIBLE + binding.CVQyes1B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno1B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + + } + binding.CVQno1B.setOnClickListener { + binding.CLQ112B.visibility = View.GONE + binding.CVQyes1B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno1B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + oneB = 0 + } + } + + + private fun buttenAdd1_2B() { + binding.CVQ10B.setOnClickListener { + binding.CVQ10B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ11B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneB = 0 + } + binding.CVQ11B.setOnClickListener { + binding.CVQ10B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ12B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneB = 1 + } + binding.CVQ12B.setOnClickListener { + binding.CVQ10B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ13B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneB = 2 + } + binding.CVQ13B.setOnClickListener { + binding.CVQ10B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ14B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneB = 3 + } + binding.CVQ14B.setOnClickListener { + binding.CVQ10B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ15B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ110B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneB = 4 + + } + binding.CVQ15B.setOnClickListener { + binding.CVQ10B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ16B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ110B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneB = 5 + } + binding.CVQ16B.setOnClickListener { + binding.CVQ10B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ17B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ110B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneB = 6 + } + binding.CVQ17B.setOnClickListener { + binding.CVQ10B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ18B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ110B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneB = 7 + } + binding.CVQ18B.setOnClickListener { + binding.CVQ10B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ19B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ110B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneB = 8 + } + binding.CVQ19B.setOnClickListener { + binding.CVQ10B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ110B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneB = 9 + } + binding.CVQ110B.setOnClickListener { + binding.CVQ10B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ110B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + oneB = 10 + } + } + + private fun buttenAdd2B() { + binding.CVQyes2B.setOnClickListener { + binding.CVQyes2B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno2B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + twoB = 1 + } + binding.CVQno2B.setOnClickListener { + binding.CVQyes2B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno2B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + twoB = 0 + } + } + + private fun buttenAdd3B() { + binding.CVQyes3B.setOnClickListener { + binding.CVQyes3B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno3B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + threeB = 1 + } + binding.CVQno3B.setOnClickListener { + binding.CVQyes3B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno3B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + threeB = 0 + } + } + + private fun buttenAdd4B() { + binding.CVQyes4B.setOnClickListener { + binding.CVQyes4B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno4B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + fourB = 1 + } + binding.CVQno4B.setOnClickListener { + binding.CVQyes4B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno4B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + fourB = 0 + } + } + + private fun buttenAdd5B() { + binding.CVQyes5B.setOnClickListener { + binding.CVQyes5B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno5B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + fiveB = 1 + } + binding.CVQno5B.setOnClickListener { + binding.CVQyes5B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno5B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + fiveB = 0 + } + } + + private fun buttenAdd6B() { + binding.CVQyes6B.setOnClickListener { + binding.CVQyes6B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno6B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + sixB = 1 + } + binding.CVQno6B.setOnClickListener { + binding.CVQyes6B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno6B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + sixB = 0 + } + } + + private fun buttenAdd7B() { + binding.CVQyes7B.setOnClickListener { + binding.CVQyes7B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno7B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + sevenB = 1 + } + binding.CVQno7B.setOnClickListener { + binding.CVQyes7B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno7B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + sevenB = 0 + } + } + + private fun buttenAdd8B() { + binding.CVQyes8B.setOnClickListener { + binding.CVQyes8B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno8B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + eightB = 1 + } + binding.CVQno8B.setOnClickListener { + binding.CVQyes8B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno8B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + eightB = 0 + } + } + + private fun buttenAdd9B() { + binding.CVQyes9B.setOnClickListener { + binding.CVQyes9B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno9B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + nineB = 1 + } + binding.CVQno9B.setOnClickListener { + binding.CVQyes9B.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno9B.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + nineB = 0 + } + } + + + //Анкета ПОСЛЕ + private fun After() { + buttenAddAfter() + //Выход +// binding.btnBackA.setOnClickListener { +// activity?.supportFragmentManager?.beginTransaction() +// ?.replace(R.id.placeHolderFragment, SceduleFragment.newInstance())?.commit() +// } + + //Сохраняем результат + binding.btnSaveQuestionnaireA.setOnClickListener { + if (oneA != 100 && twoA != 100 && threeA != 100 && fourA != 100 && fiveA != 100 && sixA != 100 && sevenA != 100 && eightA != 100 && nineA != 100 && tenA != 100 && elevenA != 100 && twelveA != 100) { + + if(nineA == 1){ + AlertDialog.Builder(requireContext()) + .setTitle("Анкета") + .setMessage("Уверены ли Вы в выбранных ответах на вопросы анкеты? Халатное отношение к вопросам анкеты приведет к блокировке комплекса") + .setNeutralButton("Подтвердить") { dialog, whichButton -> + addQuestionAfter() + } + .setNegativeButton("Отмена") { dialog, whichButton -> + + } + .show() + } + else if(oneA >=6 && threeA == 0 && sixA == 1 && eightA == 1 && elevenA == 1){ + AlertDialog.Builder(requireContext()) + .setTitle("Анкета") + .setMessage("Уверены ли Вы в выбранных ответах на вопросы анкеты? Халатное отношение к вопросам анкеты приведет к паузе комплекса") + .setNeutralButton("Подтвердить") { dialog, whichButton -> + addQuestionAfter() + } + .setNegativeButton("Отмена") { dialog, whichButton -> + + } + .show() + } + else{ + addQuestionAfter() + } + } else { + Toast(requireContext()).showCustomInfoToast( + "Не все пункты выбраны", + requireActivity() + ) + } + } +// fixedRateTimer("timer", false, 0, 10000) { +// activity?.runOnUiThread { +// +// } +// } + } + fun addQuestionAfter() { + + + val item = AfterQuestionnaireModel( + oneA, + twoA, + threeA, + fourA, + fiveA, + sixA, + sevenA, + eightA, + nineA, + tenA, + elevenA, + twelveA, + ) + + AfterQuestionnaire(item) + } + + //Отправка анкеты ПОСЛЕ + fun AfterQuestionnaire(item:AfterQuestionnaireModel) { + if (enternetCheck.isOnline(requireContext())) { + initRetrofit() + val Tokens = prefPatientConclusion.conclusionToken(requireContext()) + CoroutineScope(Dispatchers.IO).launch { + val QA = patientApi.AddAfterQuestionnaire2("Bearer $Tokens",item) + requireActivity().runOnUiThread { + + + + //Фиксируем полученные данные + val List = QA.body() + val Nice = QA.isSuccessful + val Code = QA.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()) + //viewVisible() + //GetVisibleViewList() + visibleLoadYes() + } + else{ + if (List != null) { + Toast(requireContext()).showCustomInfoToast(List.message, requireActivity()) + // GetVisibleViewList() + visibleLoadYes() + } + } + + } + } + else if (Code == 500) { + val intetn = Intent(requireContext(), Code500Activity::class.java) + + startActivity(intetn) + } + else if (Code == 401) { + val intetn = Intent(requireContext(), AuthorizationActivity::class.java) + activity?.finish() + startActivity(intetn) + } + } + + } + } else { + val intetn = Intent(requireContext(), EnternetActivity::class.java) + + startActivity(intetn) + } + + } + + private fun buttenAddAfter() { + buttenAdd1A() + buttenAdd2A() + buttenAdd3A() + buttenAdd4A() + buttenAdd5A() + buttenAdd6A() + buttenAdd7A() + buttenAdd8A() + buttenAdd9A() + buttenAdd10A() + buttenAdd11A() + buttenAdd12A() + } + + private fun buttenAdd1A() { + binding.CVQ10A.setOnClickListener { + binding.CVQ10A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ11A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneA = 0 + } + binding.CVQ11A.setOnClickListener { + binding.CVQ10A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ12A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneA = 1 + } + binding.CVQ12A.setOnClickListener { + binding.CVQ10A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ13A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneA = 2 + } + binding.CVQ13A.setOnClickListener { + binding.CVQ10A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ14A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneA = 3 + } + binding.CVQ14A.setOnClickListener { + binding.CVQ10A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ15A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ110A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneA = 4 + + } + binding.CVQ15A.setOnClickListener { + binding.CVQ10A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ16A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ110A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneA = 5 + } + binding.CVQ16A.setOnClickListener { + binding.CVQ10A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ17A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ110A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneA = 6 + } + binding.CVQ17A.setOnClickListener { + binding.CVQ10A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ18A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ110A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneA = 7 + } + binding.CVQ18A.setOnClickListener { + binding.CVQ10A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ19A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ110A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneA = 8 + } + binding.CVQ19A.setOnClickListener { + binding.CVQ10A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQ110A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + oneA = 9 + } + binding.CVQ110A.setOnClickListener { + binding.CVQ10A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ11A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ12A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ13A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ14A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ15A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ16A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ17A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ18A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ19A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQ110A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + oneA = 10 + } + } + + private fun buttenAdd2A() { + binding.CVQyes2A.setOnClickListener { + binding.CVQyes2A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno2A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + twoA = 1 + } + binding.CVQno2A.setOnClickListener { + binding.CVQyes2A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno2A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + twoA = 0 + } + } + + private fun buttenAdd3A() { + binding.CVQyes3A.setOnClickListener { + Log.d("CVQyes3", "CVQyes3") + binding.CVQyes3A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno3A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + threeA = 1 + } + binding.CVQno3A.setOnClickListener { + binding.CVQyes3A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno3A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + threeA = 0 + } + } + + private fun buttenAdd4A() { + binding.CVQyes4A.setOnClickListener { + binding.CVQyes4A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno4A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + fourA = 1 + } + binding.CVQno4A.setOnClickListener { + binding.CVQyes4A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno4A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + fourA = 0 + } + } + + private fun buttenAdd5A() { + binding.CVQyes5A.setOnClickListener { + binding.CVQyes5A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno5A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + fiveA = 1 + } + binding.CVQno5A.setOnClickListener { + binding.CVQyes5A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno5A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + fiveA = 0 + } + } + + private fun buttenAdd6A() { + binding.CVQyes6A.setOnClickListener { + binding.CVQyes6A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno6A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + sixA = 1 + } + binding.CVQno6A.setOnClickListener { + binding.CVQyes6A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno6A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + sixA =0 + } + } + + private fun buttenAdd7A() { + binding.CVQyes7A.setOnClickListener { + binding.CVQyes7A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno7A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + sevenA = 1 + } + binding.CVQno7A.setOnClickListener { + binding.CVQyes7A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno7A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + sevenA =0 + } + } + + private fun buttenAdd8A() { + binding.CVQyes8A.setOnClickListener { + binding.CVQyes8A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno8A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + eightA = 1 + } + binding.CVQno8A.setOnClickListener { + binding.CVQyes8A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno8A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + eightA = 0 + } + } + + private fun buttenAdd9A() { + binding.CVQyes9A.setOnClickListener { + binding.CVQyes9A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno9A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + nineA = 1 + } + binding.CVQno9A.setOnClickListener { + binding.CVQyes9A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno9A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + nineA = 0 + } + } + + private fun buttenAdd10A() { + binding.CVQyes10A.setOnClickListener { + binding.CVQyes10A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno10A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + tenA = 1 + } + binding.CVQno10A.setOnClickListener { + binding.CVQyes10A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno10A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + tenA = 0 + } + } + + private fun buttenAdd11A() { + binding.CVQyes11A.setOnClickListener { + binding.CVQyes11A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno11A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + elevenA = 1 + } + binding.CVQno11A.setOnClickListener { + binding.CVQyes11A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno11A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + elevenA = 0 + } + } + + private fun buttenAdd12A() { + binding.CVQyes12A.setOnClickListener { + binding.CVQyes12A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + binding.CVQno12A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + twelveA = 1 + } + binding.CVQno12A.setOnClickListener { + binding.CVQyes12A.setCardBackgroundColor(Color.parseColor("#A8A8A8")) + binding.CVQno12A.setCardBackgroundColor(Color.parseColor("#3AB0FF")) + twelveA = 0 + } + } + + + } \ No newline at end of file diff --git a/app/src/main/java/com/example/rehabilitation/Sport/ViewModel.kt b/app/src/main/java/com/example/rehabilitation/Sport/ViewModel.kt new file mode 100644 index 0000000..a49995f --- /dev/null +++ b/app/src/main/java/com/example/rehabilitation/Sport/ViewModel.kt @@ -0,0 +1,8 @@ +package com.example.rehabilitation.Sport + +data class ViewModel( + val view: Int, + val text: String, + +) + diff --git a/app/src/main/java/com/example/rehabilitation/model_adapter/Calendare/CalendareAdapter.kt b/app/src/main/java/com/example/rehabilitation/model_adapter/Calendare/CalendareAdapter.kt deleted file mode 100644 index 89b0a40..0000000 --- a/app/src/main/java/com/example/rehabilitation/model_adapter/Calendare/CalendareAdapter.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.example.rehabilitation.model_adapter.Calendare - -import android.annotation.SuppressLint -import android.view.ViewGroup -import androidx.recyclerview.widget.RecyclerView -import com.example.rehabilitation.Calendare.Calendare.getColorCompat -import com.example.rehabilitation.Calendare.Calendare.layoutInflater -import com.example.rehabilitation.Calendare.Calendare.shared.Flight -import com.example.rehabilitation.Calendare.Calendare.shared.flightDateTimeFormatter -import com.example.rehabilitation.databinding.Example5EventItemViewv2Binding - - -class CalendareAdapter : - RecyclerView.Adapter() { - - val flights = mutableListOf() - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Example5FlightsViewHolder { - return Example5FlightsViewHolder( - Example5EventItemViewv2Binding.inflate(parent.context.layoutInflater, parent, false), - ) - } - - override fun onBindViewHolder(viewHolder: Example5FlightsViewHolder, position: Int) { - viewHolder.bind(flights[position]) - } - - override fun getItemCount(): Int = flights.size - - inner class Example5FlightsViewHolder(val binding: Example5EventItemViewv2Binding) : - RecyclerView.ViewHolder(binding.root) { - - @SuppressLint("NewApi") - fun bind(flight: Flight) { - binding.itemFlightDateText.apply { - text = flightDateTimeFormatter.format(flight.time) - setBackgroundColor(itemView.context.getColorCompat(flight.color)) - } - - binding.txtItem.text = flight.item - } - } -} diff --git a/app/src/main/res/drawable/add1.png b/app/src/main/res/drawable/add1.png new file mode 100644 index 0000000..515d45e Binary files /dev/null and b/app/src/main/res/drawable/add1.png differ diff --git a/app/src/main/res/drawable/arrow_24.xml b/app/src/main/res/drawable/arrow_24.xml new file mode 100644 index 0000000..8452791 --- /dev/null +++ b/app/src/main/res/drawable/arrow_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/b1_1.png b/app/src/main/res/drawable/b1_1.png deleted file mode 100644 index 38d7f95..0000000 Binary files a/app/src/main/res/drawable/b1_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/b1_2.png b/app/src/main/res/drawable/b1_2.png deleted file mode 100644 index 5b0a40e..0000000 Binary files a/app/src/main/res/drawable/b1_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/b2_1.png b/app/src/main/res/drawable/b2_1.png deleted file mode 100644 index a21f50d..0000000 Binary files a/app/src/main/res/drawable/b2_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/b2_2.png b/app/src/main/res/drawable/b2_2.png deleted file mode 100644 index cc2e245..0000000 Binary files a/app/src/main/res/drawable/b2_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/b3_1.png b/app/src/main/res/drawable/b3_1.png deleted file mode 100644 index 71bd281..0000000 Binary files a/app/src/main/res/drawable/b3_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/b3_2.png b/app/src/main/res/drawable/b3_2.png deleted file mode 100644 index 7f4d88b..0000000 Binary files a/app/src/main/res/drawable/b3_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/b3_3.png b/app/src/main/res/drawable/b3_3.png deleted file mode 100644 index 96da2a8..0000000 Binary files a/app/src/main/res/drawable/b3_3.png and /dev/null differ diff --git a/app/src/main/res/drawable/b4_1.png b/app/src/main/res/drawable/b4_1.png deleted file mode 100644 index f273f74..0000000 Binary files a/app/src/main/res/drawable/b4_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/b4_2.png b/app/src/main/res/drawable/b4_2.png deleted file mode 100644 index 4e5cc96..0000000 Binary files a/app/src/main/res/drawable/b4_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/c10_1.png b/app/src/main/res/drawable/c10_1.png deleted file mode 100644 index 3c1f1bf..0000000 Binary files a/app/src/main/res/drawable/c10_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/c10_2.png b/app/src/main/res/drawable/c10_2.png deleted file mode 100644 index 7ce21b7..0000000 Binary files a/app/src/main/res/drawable/c10_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/c10_3.png b/app/src/main/res/drawable/c10_3.png deleted file mode 100644 index 307174e..0000000 Binary files a/app/src/main/res/drawable/c10_3.png and /dev/null differ diff --git a/app/src/main/res/drawable/c11_1.png b/app/src/main/res/drawable/c11_1.png deleted file mode 100644 index b558e6e..0000000 Binary files a/app/src/main/res/drawable/c11_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/c12_1.png b/app/src/main/res/drawable/c12_1.png deleted file mode 100644 index fde0a57..0000000 Binary files a/app/src/main/res/drawable/c12_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/c12_2.png b/app/src/main/res/drawable/c12_2.png deleted file mode 100644 index 79e34fb..0000000 Binary files a/app/src/main/res/drawable/c12_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/c13_1.png b/app/src/main/res/drawable/c13_1.png deleted file mode 100644 index bbb38f0..0000000 Binary files a/app/src/main/res/drawable/c13_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/c13_2.png b/app/src/main/res/drawable/c13_2.png deleted file mode 100644 index e1c1277..0000000 Binary files a/app/src/main/res/drawable/c13_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/c14_1.png b/app/src/main/res/drawable/c14_1.png deleted file mode 100644 index de3ec55..0000000 Binary files a/app/src/main/res/drawable/c14_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/c14_2.png b/app/src/main/res/drawable/c14_2.png deleted file mode 100644 index f8204ac..0000000 Binary files a/app/src/main/res/drawable/c14_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/c15_1.png b/app/src/main/res/drawable/c15_1.png deleted file mode 100644 index 9156b9a..0000000 Binary files a/app/src/main/res/drawable/c15_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/c15_2.png b/app/src/main/res/drawable/c15_2.png deleted file mode 100644 index 6139efd..0000000 Binary files a/app/src/main/res/drawable/c15_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/c16_1.png b/app/src/main/res/drawable/c16_1.png deleted file mode 100644 index 90dd73b..0000000 Binary files a/app/src/main/res/drawable/c16_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/c16_2.png b/app/src/main/res/drawable/c16_2.png deleted file mode 100644 index d1d05bb..0000000 Binary files a/app/src/main/res/drawable/c16_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/c17_1.png b/app/src/main/res/drawable/c17_1.png deleted file mode 100644 index 284f249..0000000 Binary files a/app/src/main/res/drawable/c17_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/c17_2.png b/app/src/main/res/drawable/c17_2.png deleted file mode 100644 index 5d3741d..0000000 Binary files a/app/src/main/res/drawable/c17_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/c18_1.png b/app/src/main/res/drawable/c18_1.png deleted file mode 100644 index 8ab9c86..0000000 Binary files a/app/src/main/res/drawable/c18_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/c18_2.png b/app/src/main/res/drawable/c18_2.png deleted file mode 100644 index 283ec72..0000000 Binary files a/app/src/main/res/drawable/c18_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/c18_3.png b/app/src/main/res/drawable/c18_3.png deleted file mode 100644 index 1af0652..0000000 Binary files a/app/src/main/res/drawable/c18_3.png and /dev/null differ diff --git a/app/src/main/res/drawable/c1_1.png b/app/src/main/res/drawable/c1_1.png deleted file mode 100644 index db596c4..0000000 Binary files a/app/src/main/res/drawable/c1_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/c1_2.png b/app/src/main/res/drawable/c1_2.png deleted file mode 100644 index 2f37975..0000000 Binary files a/app/src/main/res/drawable/c1_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/c2_1.png b/app/src/main/res/drawable/c2_1.png deleted file mode 100644 index 195ab42..0000000 Binary files a/app/src/main/res/drawable/c2_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/c2_2.png b/app/src/main/res/drawable/c2_2.png deleted file mode 100644 index bbfdf70..0000000 Binary files a/app/src/main/res/drawable/c2_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/c3_1.png b/app/src/main/res/drawable/c3_1.png deleted file mode 100644 index 6b1cec2..0000000 Binary files a/app/src/main/res/drawable/c3_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/c3_2.png b/app/src/main/res/drawable/c3_2.png deleted file mode 100644 index be3a522..0000000 Binary files a/app/src/main/res/drawable/c3_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/c4_1.png b/app/src/main/res/drawable/c4_1.png deleted file mode 100644 index 2e9d4f4..0000000 Binary files a/app/src/main/res/drawable/c4_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/c4_2.png b/app/src/main/res/drawable/c4_2.png deleted file mode 100644 index c14b7d3..0000000 Binary files a/app/src/main/res/drawable/c4_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/c5_1.png b/app/src/main/res/drawable/c5_1.png deleted file mode 100644 index 54c6668..0000000 Binary files a/app/src/main/res/drawable/c5_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/c5_2.png b/app/src/main/res/drawable/c5_2.png deleted file mode 100644 index 28d6fee..0000000 Binary files a/app/src/main/res/drawable/c5_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/c6_1.png b/app/src/main/res/drawable/c6_1.png deleted file mode 100644 index 4c8122d..0000000 Binary files a/app/src/main/res/drawable/c6_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/c6_2.png b/app/src/main/res/drawable/c6_2.png deleted file mode 100644 index 5c837e9..0000000 Binary files a/app/src/main/res/drawable/c6_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/c6_3.png b/app/src/main/res/drawable/c6_3.png deleted file mode 100644 index 859a503..0000000 Binary files a/app/src/main/res/drawable/c6_3.png and /dev/null differ diff --git a/app/src/main/res/drawable/c7_1.png b/app/src/main/res/drawable/c7_1.png deleted file mode 100644 index ac9d45f..0000000 Binary files a/app/src/main/res/drawable/c7_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/c8_1.png b/app/src/main/res/drawable/c8_1.png deleted file mode 100644 index bb72bf6..0000000 Binary files a/app/src/main/res/drawable/c8_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/c8_2.png b/app/src/main/res/drawable/c8_2.png deleted file mode 100644 index f29a960..0000000 Binary files a/app/src/main/res/drawable/c8_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/c9_1.png b/app/src/main/res/drawable/c9_1.png deleted file mode 100644 index 4e95b28..0000000 Binary files a/app/src/main/res/drawable/c9_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/c9_2.png b/app/src/main/res/drawable/c9_2.png deleted file mode 100644 index 4abd1dc..0000000 Binary files a/app/src/main/res/drawable/c9_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/c9_3.png b/app/src/main/res/drawable/c9_3.png deleted file mode 100644 index 3e27358..0000000 Binary files a/app/src/main/res/drawable/c9_3.png and /dev/null differ diff --git a/app/src/main/res/drawable/check.png b/app/src/main/res/drawable/check.png new file mode 100644 index 0000000..ede32da Binary files /dev/null and b/app/src/main/res/drawable/check.png differ diff --git a/app/src/main/res/drawable/folder.png b/app/src/main/res/drawable/folder.png new file mode 100644 index 0000000..a7f15a2 Binary files /dev/null and b/app/src/main/res/drawable/folder.png differ diff --git a/app/src/main/res/drawable/j10_1.png b/app/src/main/res/drawable/j10_1.png deleted file mode 100644 index d77adb2..0000000 Binary files a/app/src/main/res/drawable/j10_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/j10_2.png b/app/src/main/res/drawable/j10_2.png deleted file mode 100644 index f8e0ab4..0000000 Binary files a/app/src/main/res/drawable/j10_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/j10_3.png b/app/src/main/res/drawable/j10_3.png deleted file mode 100644 index 49bf3d0..0000000 Binary files a/app/src/main/res/drawable/j10_3.png and /dev/null differ diff --git a/app/src/main/res/drawable/j11_1.png b/app/src/main/res/drawable/j11_1.png deleted file mode 100644 index b675fdc..0000000 Binary files a/app/src/main/res/drawable/j11_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/j11_2.png b/app/src/main/res/drawable/j11_2.png deleted file mode 100644 index 09261db..0000000 Binary files a/app/src/main/res/drawable/j11_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/j11_3.png b/app/src/main/res/drawable/j11_3.png deleted file mode 100644 index 2ff5526..0000000 Binary files a/app/src/main/res/drawable/j11_3.png and /dev/null differ diff --git a/app/src/main/res/drawable/j11_4.png b/app/src/main/res/drawable/j11_4.png deleted file mode 100644 index a721360..0000000 Binary files a/app/src/main/res/drawable/j11_4.png and /dev/null differ diff --git a/app/src/main/res/drawable/j12_1.png b/app/src/main/res/drawable/j12_1.png deleted file mode 100644 index d754974..0000000 Binary files a/app/src/main/res/drawable/j12_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/j12_2.png b/app/src/main/res/drawable/j12_2.png deleted file mode 100644 index 03c6d9a..0000000 Binary files a/app/src/main/res/drawable/j12_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/j1_1.png b/app/src/main/res/drawable/j1_1.png deleted file mode 100644 index 93f4c68..0000000 Binary files a/app/src/main/res/drawable/j1_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/j1_2.png b/app/src/main/res/drawable/j1_2.png deleted file mode 100644 index be7b521..0000000 Binary files a/app/src/main/res/drawable/j1_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/j2_1.png b/app/src/main/res/drawable/j2_1.png deleted file mode 100644 index 85742d8..0000000 Binary files a/app/src/main/res/drawable/j2_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/j2_2.png b/app/src/main/res/drawable/j2_2.png deleted file mode 100644 index a86f139..0000000 Binary files a/app/src/main/res/drawable/j2_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/j3_1.png b/app/src/main/res/drawable/j3_1.png deleted file mode 100644 index 3d991f8..0000000 Binary files a/app/src/main/res/drawable/j3_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/j3_2.png b/app/src/main/res/drawable/j3_2.png deleted file mode 100644 index b16c802..0000000 Binary files a/app/src/main/res/drawable/j3_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/j4_1.png b/app/src/main/res/drawable/j4_1.png deleted file mode 100644 index 71558be..0000000 Binary files a/app/src/main/res/drawable/j4_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/j4_2.png b/app/src/main/res/drawable/j4_2.png deleted file mode 100644 index 3e6ddb8..0000000 Binary files a/app/src/main/res/drawable/j4_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/j4_3.png b/app/src/main/res/drawable/j4_3.png deleted file mode 100644 index 336caf8..0000000 Binary files a/app/src/main/res/drawable/j4_3.png and /dev/null differ diff --git a/app/src/main/res/drawable/j5_1.png b/app/src/main/res/drawable/j5_1.png deleted file mode 100644 index a1fabd8..0000000 Binary files a/app/src/main/res/drawable/j5_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/j6_1.png b/app/src/main/res/drawable/j6_1.png deleted file mode 100644 index f823a96..0000000 Binary files a/app/src/main/res/drawable/j6_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/j6_2.png b/app/src/main/res/drawable/j6_2.png deleted file mode 100644 index eee4957..0000000 Binary files a/app/src/main/res/drawable/j6_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/j6_3.png b/app/src/main/res/drawable/j6_3.png deleted file mode 100644 index 464122a..0000000 Binary files a/app/src/main/res/drawable/j6_3.png and /dev/null differ diff --git a/app/src/main/res/drawable/j6_4.png b/app/src/main/res/drawable/j6_4.png deleted file mode 100644 index 24e63bc..0000000 Binary files a/app/src/main/res/drawable/j6_4.png and /dev/null differ diff --git a/app/src/main/res/drawable/j7_1.png b/app/src/main/res/drawable/j7_1.png deleted file mode 100644 index 75769dc..0000000 Binary files a/app/src/main/res/drawable/j7_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/j7_2.png b/app/src/main/res/drawable/j7_2.png deleted file mode 100644 index 4d951d8..0000000 Binary files a/app/src/main/res/drawable/j7_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/j7_3.png b/app/src/main/res/drawable/j7_3.png deleted file mode 100644 index f3e2fee..0000000 Binary files a/app/src/main/res/drawable/j7_3.png and /dev/null differ diff --git a/app/src/main/res/drawable/j7_4.png b/app/src/main/res/drawable/j7_4.png deleted file mode 100644 index 2c60264..0000000 Binary files a/app/src/main/res/drawable/j7_4.png and /dev/null differ diff --git a/app/src/main/res/drawable/j7_5.png b/app/src/main/res/drawable/j7_5.png deleted file mode 100644 index f773ce3..0000000 Binary files a/app/src/main/res/drawable/j7_5.png and /dev/null differ diff --git a/app/src/main/res/drawable/j7_6.png b/app/src/main/res/drawable/j7_6.png deleted file mode 100644 index 8d6d4b2..0000000 Binary files a/app/src/main/res/drawable/j7_6.png and /dev/null differ diff --git a/app/src/main/res/drawable/j7_7.png b/app/src/main/res/drawable/j7_7.png deleted file mode 100644 index 7928aa0..0000000 Binary files a/app/src/main/res/drawable/j7_7.png and /dev/null differ diff --git a/app/src/main/res/drawable/j8_1.png b/app/src/main/res/drawable/j8_1.png deleted file mode 100644 index 3514aa2..0000000 Binary files a/app/src/main/res/drawable/j8_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/j8_2.png b/app/src/main/res/drawable/j8_2.png deleted file mode 100644 index d4f43c6..0000000 Binary files a/app/src/main/res/drawable/j8_2.png and /dev/null differ diff --git a/app/src/main/res/drawable/j8_3.png b/app/src/main/res/drawable/j8_3.png deleted file mode 100644 index 3d34487..0000000 Binary files a/app/src/main/res/drawable/j8_3.png and /dev/null differ diff --git a/app/src/main/res/drawable/j9_1.png b/app/src/main/res/drawable/j9_1.png deleted file mode 100644 index 31f97b5..0000000 Binary files a/app/src/main/res/drawable/j9_1.png and /dev/null differ diff --git a/app/src/main/res/drawable/patient.png b/app/src/main/res/drawable/patient.png new file mode 100644 index 0000000..d225a6d Binary files /dev/null and b/app/src/main/res/drawable/patient.png differ diff --git a/app/src/main/res/drawable/tab_indicator.xml b/app/src/main/res/drawable/tab_indicator.xml new file mode 100644 index 0000000..c88a992 --- /dev/null +++ b/app/src/main/res/drawable/tab_indicator.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_authorization.xml b/app/src/main/res/layout/activity_authorization.xml index be77ee7..6eef837 100644 --- a/app/src/main/res/layout/activity_authorization.xml +++ b/app/src/main/res/layout/activity_authorization.xml @@ -2,7 +2,7 @@ diff --git a/app/src/main/res/layout/activity_code429.xml b/app/src/main/res/layout/activity_code429.xml new file mode 100644 index 0000000..297b844 --- /dev/null +++ b/app/src/main/res/layout/activity_code429.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_code500.xml b/app/src/main/res/layout/activity_code500.xml new file mode 100644 index 0000000..679a5d4 --- /dev/null +++ b/app/src/main/res/layout/activity_code500.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_information.xml b/app/src/main/res/layout/activity_enternet.xml similarity index 70% rename from app/src/main/res/layout/activity_information.xml rename to app/src/main/res/layout/activity_enternet.xml index eeab682..d2b6e93 100644 --- a/app/src/main/res/layout/activity_information.xml +++ b/app/src/main/res/layout/activity_enternet.xml @@ -2,9 +2,9 @@ + tools:context=".Enternet.EnternetActivity"> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index fa5d2d0..41ad239 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -9,5 +9,54 @@ tools:context=".MainActivity"> + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/example_5_event_item_viewv2.xml b/app/src/main/res/layout/example_5_event_item_viewv2.xml index 11e4b4f..22ade44 100644 --- a/app/src/main/res/layout/example_5_event_item_viewv2.xml +++ b/app/src/main/res/layout/example_5_event_item_viewv2.xml @@ -23,7 +23,7 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintWidth_default="percent" app:layout_constraintWidth_percent="0.143" - tools:text="THU\nJUN 30\n14:00" /> + tools:text="THU\nJUN 30" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_auth.xml b/app/src/main/res/layout/fragment_auth.xml index 198de2c..6e14587 100644 --- a/app/src/main/res/layout/fragment_auth.xml +++ b/app/src/main/res/layout/fragment_auth.xml @@ -24,6 +24,7 @@ android:layout_marginStart="16dp" android:layout_marginTop="32dp" android:layout_marginEnd="16dp" + android:visibility="gone" app:cardBackgroundColor="#000000" app:cardCornerRadius="50dp" app:cardElevation="0dp" diff --git a/app/src/main/res/layout/fragment_breathing_exercises.xml b/app/src/main/res/layout/fragment_breathing_exercises.xml index 617064e..f45228d 100644 --- a/app/src/main/res/layout/fragment_breathing_exercises.xml +++ b/app/src/main/res/layout/fragment_breathing_exercises.xml @@ -4,6 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="#FFFFFF" tools:context=".Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.StumpCareFragment">