Compare commits

..

10 Commits

Author SHA1 Message Date
Clogon d73a729b43 patient 1 2024-01-29 10:59:13 +03:00
Clogon 99382de238 исправление ошибки в слове и в базе 2023-11-03 10:17:43 +03:00
Clogon 3310ed1ca6 03.11.2023 2023-11-03 10:10:09 +03:00
Clogon be10c582d1 29.08.2023 calendare 16 57 2023-08-31 16:43:44 +03:00
Clogon c0cd60a9df 29.08.2023 calendare 15 17 2023-08-30 15:17:22 +03:00
Clogon 15e5fd32af 29.08.2023 calendare 2023-08-30 10:24:48 +03:00
Clogon eaac38ae3c 28.08.2023 calendare 2023-08-28 13:44:07 +03:00
Clogon 403fa40ece 28.08.2023 v1Rehab 2023-08-28 12:00:25 +03:00
Clogon 8aeafa4a7f 23.08.2023 v1Rehab 2023-08-23 12:54:49 +03:00
Clogon 6ea44be0cb 123 2023-08-23 08:59:38 +03:00
429 changed files with 29659 additions and 2581 deletions

View File

@ -7,11 +7,11 @@
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="C:\Users\oxsan\.android\avd\Pixel_6_API_33.avd" />
<value value="C:\Users\maksi\.android\avd\Pixel_6_API_29.avd" />
</Key>
</deviceKey>
</Target>
</targetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2023-06-29T21:09:23.650986100Z" />
<timeTargetWasSelectedWithDropDown value="2023-11-28T12:28:18.723737700Z" />
</component>
</project>

View File

@ -8,7 +8,7 @@
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleHome" value="$PROJECT_DIR$/../../../../Gradle/gradle-8.2" />
<option name="gradleJvm" value="Android Studio default JDK" />
<option name="gradleJvm" value="jbr-17" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />

View File

@ -1,9 +1,16 @@
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
<component name="VisualizationToolProject">
<option name="state">
<ProjectState>
<option name="scale" value="0.33" />
</ProjectState>
</option>
</component>
</project>

View File

@ -1,8 +1,8 @@
plugins {
id 'kotlin-kapt'
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
id 'com.google.gms.google-services'
}
android {
@ -41,11 +41,12 @@ dependencies {
implementation 'androidx.room:room-ktx:2.5.2'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1'
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.6.1"
kapt 'androidx.room:room-compiler:2.5.2'
implementation 'androidx.fragment:fragment-ktx:1.5.5'
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.1.17'
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
@ -54,4 +55,28 @@ dependencies {
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
implementation 'org.apache.poi:poi:5.2.3'
implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '5.2.3'
implementation group: 'org.apache.poi', name: 'poi', version: '5.2.3'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3'
implementation 'com.kizitonwose.calendar:view:2.0.0'
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.6.1"
//Retrofit
implementation "com.squareup.retrofit2:retrofit:2.9.0"
implementation "com.squareup.retrofit2:converter-gson:2.9.0"
//OkHttp
implementation "com.squareup.okhttp3:logging-interceptor:4.7.2"
implementation "com.squareup.okhttp3:okhttp:4.7.2"
implementation 'com.squareup.picasso:picasso:2.71828'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3'
implementation 'com.kizitonwose.calendar:view:2.0.0'
}

View File

@ -0,0 +1,69 @@
{
"project_info": {
"project_number": "1027818028999",
"firebase_url": "https://rehabilitationtest-default-rtdb.europe-west1.firebasedatabase.app",
"project_id": "rehabilitationtest",
"storage_bucket": "rehabilitationtest.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:1027818028999:android:a97724d7840d06fdada3e2",
"android_client_info": {
"package_name": "com.example.rehabilitation"
}
},
"oauth_client": [
{
"client_id": "1027818028999-a75qvvvqqb81ber25k6eeq1fqpr60oam.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyAHvjzE2QIaIrCD9NOD1f_rShI4eXPyFVo"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "1027818028999-a75qvvvqqb81ber25k6eeq1fqpr60oam.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:1027818028999:android:1459bab345b4bf66ada3e2",
"android_client_info": {
"package_name": "com.example.user"
}
},
"oauth_client": [
{
"client_id": "1027818028999-a75qvvvqqb81ber25k6eeq1fqpr60oam.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyAHvjzE2QIaIrCD9NOD1f_rShI4eXPyFVo"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "1027818028999-a75qvvvqqb81ber25k6eeq1fqpr60oam.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
}
],
"configuration_version": "1"
}

Binary file not shown.

View File

@ -0,0 +1,20 @@
{
"version": 3,
"artifactType": {
"type": "APK",
"kind": "Directory"
},
"applicationId": "com.example.rehabilitation",
"variantName": "release",
"elements": [
{
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 1,
"versionName": "1.0",
"outputFile": "app-release.apk"
}
],
"elementType": "File"
}

View File

@ -2,32 +2,76 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:icon="@mipmap/ic_launcher_logov2"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_logo_rehabilitation"
android:roundIcon="@mipmap/ic_launcher_logov2"
android:supportsRtl="true"
android:theme="@style/Theme.Rehabilitation"
android:usesCleartextTraffic="true"
tools:targetApi="31">
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
<activity
android:name=".Admin.activityAdmin.FeedbackActivity"
android:exported="false" />
android:name=".Auth.AuthorizationActivity"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:screenOrientation="portrait"
android:value="" />
</activity>
<activity
android:name=".Admin.activityAdmin.StatisticsActivity"
android:exported="false" />
android:name=".CodeError.Code429Activity"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:screenOrientation="portrait"
android:value="" />
</activity>
<activity
android:name=".Admin.activityAdmin.UserSettingActivity"
android:exported="false" />
<activity
android:name=".SettingActivity"
android:exported="false" />
android:name=".CodeError.Code500Activity"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:screenOrientation="portrait"
android:value="" />
</activity>
<activity
android:name=".MainActivity"
android:exported="true"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateAlwaysHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@ -35,6 +79,15 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Enternet.EnternetActivity"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:screenOrientation="portrait"
android:value="" />
</activity>
</application>
</manifest>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 164 KiB

View File

@ -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<Fragment>):FragmentStateAdapter(fr_act) {//private val list:List<Fragment> - список с фрагментами сюда передастся, тоесть с двумя фрагментами
//Возврощаем для createFragment количество элементов(фрагментов) в листе(List)
override fun getItemCount(): Int {
return list.size//возврощаем количество фрагметов
}
//Позиция фрагмента или 1 или 2, то есть 0 или 1. И по позиции будут выводится фрагмент.
override fun createFragment(position: Int): Fragment {
return list[position]//Возврощаем фрагмент из листа по позиции
}
}

View File

@ -1,22 +0,0 @@
package com.example.rehabilitation.Admin.activityAdmin
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.rehabilitation.R
import com.example.rehabilitation.databinding.ActivityFeedbackBinding
import com.example.rehabilitation.databinding.FragmentFeedbackBinding
class FeedbackActivity : AppCompatActivity() {
private lateinit var binding: ActivityFeedbackBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityFeedbackBinding.inflate(layoutInflater)
setContentView(binding.root)
//Выход
binding.btnExit.setOnClickListener{
finish()
}
}
}

View File

@ -1,21 +0,0 @@
package com.example.rehabilitation.Admin.activityAdmin
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.rehabilitation.R
import com.example.rehabilitation.databinding.ActivityFeedbackBinding
import com.example.rehabilitation.databinding.FragmentStatisticsBinding
class StatisticsActivity : AppCompatActivity() {
private lateinit var binding: ActivityFeedbackBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityFeedbackBinding.inflate(layoutInflater)
setContentView(binding.root)
//Выход
binding.btnExit.setOnClickListener{
finish()
}
}
}

View File

@ -1,718 +0,0 @@
package com.example.rehabilitation.Admin.activityAdmin
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import androidx.activity.viewModels
import androidx.lifecycle.asLiveData
import com.example.rehabilitation.R
import com.example.rehabilitation.databinding.ActivityUserSettingBinding
import com.example.rehabilitation.db.Item
import com.example.rehabilitation.db.ItemDaySport
import com.example.rehabilitation.db.ItemImage
import com.example.rehabilitation.db.ItemSportCategory
import com.example.rehabilitation.db.MainDB
import com.example.rehabilitation.dip.Day.DayAdapter
import com.example.rehabilitation.dip.Day.DayModel
import com.example.sqlitework.dip.MainViewModel
import com.example.rehabilitation.dip.Month.MonthModel
import com.example.rehabilitation.dip.Month.MonthAdapter
import java.time.LocalDate
class UserSettingActivity : AppCompatActivity(), MonthAdapter.Listener,DayAdapter.Listener {
private lateinit var binding: ActivityUserSettingBinding
private val model: MainViewModel by viewModels()//Инициализировали класс
lateinit var adapterMonth: MonthAdapter
lateinit var adapterDay: DayAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityUserSettingBinding.inflate(layoutInflater)
setContentView(binding.root)
// initRcView()
// initRcViewDay()
// model.liveListList.observe(lifeCy) {//viewLifecycleOwner - следит за циклом жизни fragment
// adapterMonth.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter)
// }
//
// model.liveDayList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
// adapterDay.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter)
// }
//Выход
binding.btnExit.setOnClickListener{
finish()
}
//Выход из добавленеия
binding.btnExitAdd.setOnClickListener{
binding.CLAdd.visibility = View.GONE
binding.CLCreateDeleteUser.visibility = View.VISIBLE
}
//Выход из добавленеия
binding.btnCreate.setOnClickListener{
binding.CLAdd.visibility = View.VISIBLE
binding.CLCreateDeleteUser.visibility = View.GONE
}
binding.cvClearDayUser.setOnClickListener{
val db = MainDB.getDB(this)
Thread {
db.getDaoDaySport().deleteItemDaySport()
db.getDao().deleteItem()
}.start()
}
//addListModelCards()
//addDayModelCards()
binding.btnImage.setOnClickListener{
createImageBD()
}
binding.btnCategorySport.setOnClickListener {
createSportCategory()
}
binding.btnCardC.setOnClickListener {
val db = MainDB.getDB(this)
for(i in 1..30){
val item = Item(null,
getDateTomorrow(i, "c"),//"11/11/2023",
i.toString(),
0
)
Thread {
db.getDao().insertItem(item)
}.start()
}
}
binding.btnCardB.setOnClickListener {
val db = MainDB.getDB(this)
for(i in 1..30){
val item = Item(null,
getDateTomorrow(i, "b"),//"11/11/2023",
i.toString(),
0
)
Thread {
db.getDao().insertItem(item)
}.start()
}
}
binding.btnCardJ.setOnClickListener {
val db = MainDB.getDB(this)
for(i in 1..30){
val item = Item(null,
getDateTomorrow(i, "j"),//"11/11/2023",
i.toString(),
0
)
Thread {
db.getDao().insertItem(item)
}.start()
}
}
}
private fun createImageBD() {
val db = MainDB.getDB(this)
val itemС1_1 = ItemImage(null, "${R.drawable.c1_1}", "c1","c")
val itemС1_2 = ItemImage(null, "${R.drawable.c1_2}", "c1","c")
val itemС2_1 = ItemImage(null, "${R.drawable.c2_1}", "c2","c")
val itemС2_2 = ItemImage(null, "${R.drawable.c2_2}", "c2","c")
val itemС3_1 = ItemImage(null, "${R.drawable.c3_1}", "c3","c")
val itemС3_2 = ItemImage(null, "${R.drawable.c3_2}", "c3","c")
val itemС4_1 = ItemImage(null, "${R.drawable.c4_1}", "c4","c")
val itemС4_2 = ItemImage(null, "${R.drawable.c4_1}", "c4","c")
val itemС5_1 = ItemImage(null, "${R.drawable.c5_1}", "c5","c")
val itemС5_2 = ItemImage(null, "${R.drawable.c5_2}", "c5","c")
val itemС6_1 = ItemImage(null, "${R.drawable.c6_1}", "c6","c")
val itemС6_2 = ItemImage(null, "${R.drawable.c6_2}", "c6","c")
val itemС6_3 = ItemImage(null, "${R.drawable.c6_3}", "c6","c")
val itemС7_1 = ItemImage(null, "${R.drawable.c7_1}", "c7","c")
val itemС8_1 = ItemImage(null, "${R.drawable.c8_1}", "c8","c")
val itemС8_2 = ItemImage(null, "${R.drawable.c8_2}", "c8","c")
val itemС9_1 = ItemImage(null, "${R.drawable.c9_1}", "c9","c")
val itemС9_2 = ItemImage(null, "${R.drawable.c9_2}", "c9","c")
val itemС9_3 = ItemImage(null, "${R.drawable.c9_3}", "c9","c")
val itemС10_1 = ItemImage(null, "${R.drawable.c10_1}", "c10","c")
val itemС10_2 = ItemImage(null, "${R.drawable.c10_2}", "c10","c")
val itemС10_3 = ItemImage(null, "${R.drawable.c10_3}", "c10","c")
val itemС11_1 = ItemImage(null, "${R.drawable.c11_1}", "c11","c")
val itemС12_1 = ItemImage(null, "${R.drawable.c12_1}", "c12","c")
val itemС12_2 = ItemImage(null, "${R.drawable.c12_2}", "c12","c")
val itemС13_1 = ItemImage(null, "${R.drawable.c13_1}", "c13","c")
val itemС13_2 = ItemImage(null, "${R.drawable.c13_2}", "c13","c")
val itemС14_1 = ItemImage(null, "${R.drawable.c14_1}", "c14","c")
val itemС14_2 = ItemImage(null, "${R.drawable.c14_2}", "c14","c")
val itemС15_1 = ItemImage(null, "${R.drawable.c15_1}", "c15","c")
val itemС15_2 = ItemImage(null, "${R.drawable.c15_2}", "c15","c")
val itemС16_1 = ItemImage(null, "${R.drawable.c16_1}", "c16","c")
val itemС16_2 = ItemImage(null, "${R.drawable.c16_2}", "c16","c")
val itemС17_1 = ItemImage(null, "${R.drawable.c17_1}", "c17","c")
val itemС17_2 = ItemImage(null, "${R.drawable.c17_2}", "c17","c")
val itemС18_1 = ItemImage(null, "${R.drawable.c18_1}", "c18","c")
val itemС18_2 = ItemImage(null, "${R.drawable.c18_2}", "c18","c")
val itemС18_3 = ItemImage(null, "${R.drawable.c18_3}", "c18","c")
val itemB1_1 = ItemImage(null, "${R.drawable.b1_1}", "b1", "b")
val itemB1_2 = ItemImage(null, "${R.drawable.b1_2}", "b1", "b")
val itemB2_1 = ItemImage(null, "${R.drawable.b2_1}", "b2", "b")
val itemB2_2 = ItemImage(null, "${R.drawable.b2_2}", "b2", "b")
val itemB3_1 = ItemImage(null, "${R.drawable.b3_1}", "b3", "b")
val itemB3_2 = ItemImage(null, "${R.drawable.b3_2}", "b3", "b")
val itemB3_3 = ItemImage(null, "${R.drawable.b3_3}", "b3", "b")
val itemB4_1 = ItemImage(null, "${R.drawable.b4_1}", "b4", "b")
val itemB4_2 = ItemImage(null, "${R.drawable.b4_2}", "b4", "b")
val itemJ1_1 = ItemImage(null, "${R.drawable.j1_1}", "j1","j")
val itemJ1_2 = ItemImage(null, "${R.drawable.j1_2}", "j1","j")
val itemJ2_1 = ItemImage(null, "${R.drawable.j2_1}", "j2","j")
val itemJ2_2 = ItemImage(null, "${R.drawable.j2_2}", "j2","j")
val itemJ3_1 = ItemImage(null, "${R.drawable.j3_1}", "j3","j")
val itemJ3_2 = ItemImage(null, "${R.drawable.j3_2}", "j3","j")
val itemJ4_1 = ItemImage(null, "${R.drawable.j4_1}", "j4","j")
val itemJ4_2 = ItemImage(null, "${R.drawable.j4_2}", "j4","j")
val itemJ4_3 = ItemImage(null, "${R.drawable.j4_3}", "j4","j")
val itemJ5_1 = ItemImage(null, "${R.drawable.j5_1}", "j5","j")
val itemJ6_1 = ItemImage(null, "${R.drawable.j6_1}", "j6","j")
val itemJ6_2 = ItemImage(null, "${R.drawable.j6_2}", "j6","j")
val itemJ6_3 = ItemImage(null, "${R.drawable.j6_3}", "j6","j")
val itemJ6_4 = ItemImage(null, "${R.drawable.j6_4}", "j6","j")
val itemJ7_1 = ItemImage(null, "${R.drawable.j7_1}", "j7","j")
val itemJ7_2 = ItemImage(null, "${R.drawable.j7_2}", "j7","j")
val itemJ7_3 = ItemImage(null, "${R.drawable.j7_3}", "j7","j")
val itemJ7_4 = ItemImage(null, "${R.drawable.j7_4}", "j7","j")
val itemJ7_5 = ItemImage(null, "${R.drawable.j7_5}", "j7","j")
val itemJ7_6 = ItemImage(null, "${R.drawable.j7_6}", "j7","j")
val itemJ7_7 = ItemImage(null, "${R.drawable.j7_7}", "j7","j")
val itemJ8_1 = ItemImage(null, "${R.drawable.j8_1}", "j8","j")
val itemJ8_2 = ItemImage(null, "${R.drawable.j8_2}", "j8","j")
val itemJ8_3 = ItemImage(null, "${R.drawable.j8_3}", "j8","j")
val itemJ9_1 = ItemImage(null, "${R.drawable.j9_1}", "j9","j")
val itemJ10_1 = ItemImage(null, "${R.drawable.j10_1}", "j10","j")
val itemJ10_2 = ItemImage(null, "${R.drawable.j10_2}", "j10","j")
val itemJ10_3 = ItemImage(null, "${R.drawable.j10_2}", "j10","j")
val itemJ11_1 = ItemImage(null, "${R.drawable.j11_1}", "j11","j")
val itemJ11_2 = ItemImage(null, "${R.drawable.j11_2}", "j11","j")
val itemJ11_3 = ItemImage(null, "${R.drawable.j11_3}", "j11","j")
val itemJ11_4 = ItemImage(null, "${R.drawable.j11_4}", "j11","j")
val itemJ12_1 = ItemImage(null, "${R.drawable.j12_1}", "j12","j")
val itemJ12_2 = ItemImage(null, "${R.drawable.j12_2}", "j12","j")
Thread {
db.getDaoImage().insertItemImage(itemС1_1)
db.getDaoImage().insertItemImage(itemС1_2)
db.getDaoImage().insertItemImage(itemС2_1)
db.getDaoImage().insertItemImage(itemС2_2)
db.getDaoImage().insertItemImage(itemС3_1)
db.getDaoImage().insertItemImage(itemС3_2)
db.getDaoImage().insertItemImage(itemС4_1)
db.getDaoImage().insertItemImage(itemС4_2)
db.getDaoImage().insertItemImage(itemС5_1)
db.getDaoImage().insertItemImage(itemС5_2)
db.getDaoImage().insertItemImage(itemС6_1)
db.getDaoImage().insertItemImage(itemС6_2)
db.getDaoImage().insertItemImage(itemС6_3)
db.getDaoImage().insertItemImage(itemС7_1)
db.getDaoImage().insertItemImage(itemС8_1)
db.getDaoImage().insertItemImage(itemС8_2)
db.getDaoImage().insertItemImage(itemС9_1)
db.getDaoImage().insertItemImage(itemС9_2)
db.getDaoImage().insertItemImage(itemС9_3)
db.getDaoImage().insertItemImage(itemС10_1)
db.getDaoImage().insertItemImage(itemС10_2)
db.getDaoImage().insertItemImage(itemС10_3)
db.getDaoImage().insertItemImage(itemС11_1)
db.getDaoImage().insertItemImage(itemС12_1)
db.getDaoImage().insertItemImage(itemС12_2)
db.getDaoImage().insertItemImage(itemС13_1)
db.getDaoImage().insertItemImage(itemС13_2)
db.getDaoImage().insertItemImage(itemС14_1)
db.getDaoImage().insertItemImage(itemС14_2)
db.getDaoImage().insertItemImage(itemС15_1)
db.getDaoImage().insertItemImage(itemС15_2)
db.getDaoImage().insertItemImage(itemС16_1)
db.getDaoImage().insertItemImage(itemС16_2)
db.getDaoImage().insertItemImage(itemС17_1)
db.getDaoImage().insertItemImage(itemС17_2)
db.getDaoImage().insertItemImage(itemС18_1)
db.getDaoImage().insertItemImage(itemС18_2)
db.getDaoImage().insertItemImage(itemС18_3)
db.getDaoImage().insertItemImage(itemB1_1)
db.getDaoImage().insertItemImage(itemB1_2)
db.getDaoImage().insertItemImage(itemB2_1)
db.getDaoImage().insertItemImage(itemB2_2)
db.getDaoImage().insertItemImage(itemB3_1)
db.getDaoImage().insertItemImage(itemB3_2)
db.getDaoImage().insertItemImage(itemB3_3)
db.getDaoImage().insertItemImage(itemB4_1)
db.getDaoImage().insertItemImage(itemB4_2)
db.getDaoImage().insertItemImage(itemJ1_1)
db.getDaoImage().insertItemImage(itemJ1_2)
db.getDaoImage().insertItemImage(itemJ2_1)
db.getDaoImage().insertItemImage(itemJ2_2)
db.getDaoImage().insertItemImage(itemJ3_1)
db.getDaoImage().insertItemImage(itemJ3_2)
db.getDaoImage().insertItemImage(itemJ4_1)
db.getDaoImage().insertItemImage(itemJ4_2)
db.getDaoImage().insertItemImage(itemJ4_3)
db.getDaoImage().insertItemImage(itemJ5_1)
db.getDaoImage().insertItemImage(itemJ6_1)
db.getDaoImage().insertItemImage(itemJ6_2)
db.getDaoImage().insertItemImage(itemJ6_3)
db.getDaoImage().insertItemImage(itemJ6_4)
db.getDaoImage().insertItemImage(itemJ7_1)
db.getDaoImage().insertItemImage(itemJ7_2)
db.getDaoImage().insertItemImage(itemJ7_3)
db.getDaoImage().insertItemImage(itemJ7_4)
db.getDaoImage().insertItemImage(itemJ7_5)
db.getDaoImage().insertItemImage(itemJ7_6)
db.getDaoImage().insertItemImage(itemJ7_7)
db.getDaoImage().insertItemImage(itemJ8_1)
db.getDaoImage().insertItemImage(itemJ8_2)
db.getDaoImage().insertItemImage(itemJ8_3)
db.getDaoImage().insertItemImage(itemJ9_1)
db.getDaoImage().insertItemImage(itemJ10_1)
db.getDaoImage().insertItemImage(itemJ10_2)
db.getDaoImage().insertItemImage(itemJ10_3)
db.getDaoImage().insertItemImage(itemJ11_1)
db.getDaoImage().insertItemImage(itemJ11_2)
db.getDaoImage().insertItemImage(itemJ11_3)
db.getDaoImage().insertItemImage(itemJ11_4)
db.getDaoImage().insertItemImage(itemJ12_1)
db.getDaoImage().insertItemImage(itemJ12_2)
}.start()
}
fun createSportCategory(){
getDaySport(1, C1,"c","c1")
getDaySport(2, C2,"c","c2")
getDaySport(3, C3,"c","c3")
getDaySport(4, C4,"c","c4")
getDaySport(5, C5,"c","c5")
getDaySport(6, C6,"c","c6")
getDaySport(7, C7,"c","c7")
getDaySport(8, C8,"c","c8")
getDaySport(9, C9,"c","c9")
getDaySport(10, C10,"c","c10")
getDaySport(11, C11,"c","c11")
getDaySport(12, C12,"c","c12")
getDaySport(13, C13,"c","c13")
getDaySport(14, C14,"c","c14")
getDaySport(15, C15,"c","c15")
getDaySport(16, C16,"c","c16")
getDaySport(17, C17,"c","c17")
getDaySport(18, C18,"c","c18")
getDaySport(19, B1,"b","b1")
getDaySport(20, B2,"b","b2")
getDaySport(21, B3,"b","b3")
getDaySport(22, B4,"b","b4")
getDaySport(23, J1,"j","j1" )
getDaySport(24, J2,"j","j2" )
getDaySport(25, J3,"j","j3" )
getDaySport(26, C4,"j","j4" )
getDaySport(27, J5,"j","j5" )
getDaySport(28, J6,"j","j6" )
getDaySport(29, J7,"j","j7" )
getDaySport(30, J8,"j","j8" )
getDaySport(31, J9,"j","j9" )
getDaySport(32, J10,"j","j10" )
getDaySport(33, J11,"j","j11" )
getDaySport(34, J12,"j","j12" )
}
//Заполнения модели и списка
private fun addListModelCards(){
val db = MainDB.getDB(this)
val list = ArrayList<MonthModel>()
db.getDao().getAllItems().asLiveData().observe(this){itList->
itList.forEach{
//val text = "Id: ${it.id} Name: ${it.name} Proce: ${it.price}"
//binding.txtList.append(text)
val item = MonthModel(
it.id.toString(),
it.day.toString(),
it.date.toString(),
it.check.toString()
)
//model.liveZakazCurrent.value = item//Передаем в liveDataCurrent один из продуктов, чтобы дальше эти данные использовать и передавать их в пробную ячейку
list.add(item)//Передали заполненый список
}
model.liveListList.value = list
}
binding.btnSaveList.setOnClickListener{
// for(i in 1..30){
// val item = Item(null,
// getDateTomorrow(i, ),//"11/11/2023",
// 0
// )
// Thread {
// db.getDao().insertItem(item)
// }.start()
// }
}
}
fun getDaySport(i:Int, description:String, categoryImage:String, categorySport:String): String {
val db = MainDB.getDB(this)
val tomorrow = LocalDate.now().plusDays(i.toLong())
val item = ItemSportCategory(null, i.toString(), description,"3",categoryImage, categorySport)
Thread {
db.getDaoSportCategory().insertItemSportCategory(item)
}.start()
return tomorrow.toString()
}
fun getDateTomorrow(i:Int,categorySport:String): String {
val db = MainDB.getDB(this)
val DATE_PATTERN = "MM/dd/yyyy"
val tomorrow = LocalDate.now().plusDays(i.toLong())
val item = ItemDaySport(null,
tomorrow.toString(),
categorySport,
0
)
Thread {
db.getDaoDaySport().insertItemDaySport(item)
}.start()
return tomorrow.toString()
}
//Заполнения модели и списка
// private fun addDayModelCards(){
// val db = MainDB.getDB(this)
// val list = ArrayList<DayModel>()
// db.getDaoDaySport().getAllItemDaySport().asLiveData().observe(this){itList->
// itList.forEach{
// //val text = "Id: ${it.id} Name: ${it.name} Proce: ${it.price}"
// //binding.txtList.append(text)
// val itemDay = DayModel(
// it.id.toString(),
// it.day.toString(),
// it.category.toString(),
// it.check.toString(),
// )
// //model.liveZakazCurrent.value = item//Передаем в liveDataCurrent один из продуктов, чтобы дальше эти данные использовать и передавать их в пробную ячейку
// list.add(itemDay)//Передали заполненый список
// }
// model.liveDayList.value = list
// }
//
// binding.btnSaveDay.setOnClickListener{
//// val item = ItemDaySport(null,
//// binding.edName.text.toString(),
//// binding.edDesc.text.toString(),
//// binding.edDayCard.text.toString(),
//// binding.edCount.text.toString(),
//// binding.edImage.text.toString(),
//// 0
//// )
//// Thread {
//// db.getDaoDaySport().insertItemDaySport(item)
//// }.start()
// }
// }
// //Инициализация списка
// private fun initRcView() = with(binding) {
// todoListRecycleView.layoutManager = GridLayoutManager(this@UserSettingActivity,1)//По вертикали будет выводить по умолчанию
// adapterMonth = MonthAdapter(this@UserSettingActivity)
// todoListRecycleView.adapter = adapterMonth
// }
//
// //Инициализация списка
// private fun initRcViewDay() = with(binding) {
// todoDayListRecycleView.layoutManager = GridLayoutManager(this@UserSettingActivity,1)//По вертикали будет выводить по умолчанию
// adapterDay = DayAdapter(this@UserSettingActivity)
// todoDayListRecycleView.adapter = adapterDay
// }
override fun onClickDay(item: DayModel) {
}
override fun onClickExceptionOrder(item: MonthModel) {
}
//Спина
val c1 = arrayOf("c1_1", "c1_2")
val c2 = arrayOf("c2_1", "c2_2")
val c3 = arrayOf("c3_1", "c3_2")
val c4 = arrayOf("c4_1", "c4_2")
val c5 = arrayOf("c5_1", "c5_2")
val c6 = arrayOf("c6_1", "c6_2","c6_3")
val c7 = arrayOf("c7_1")
val c8 = arrayOf("c8_1", "c8_2")
val c9 = arrayOf("c9_1", "c9_2", "c9_3")
val c10 = arrayOf("c10_1", "c10_2", "c10_3")
val c11 = arrayOf("c11_1")
val c12 = arrayOf("c12_1", "c12_2")
val c13 = arrayOf("c13_1", "c13_2")
val c14 = arrayOf("c14_1", "c14_2")
val c15 = arrayOf("c15_1", "c15_2")
val c16 = arrayOf("c16_1", "c16_2")
val c17 = arrayOf("c17_1", "c17_2")
val c18 = arrayOf("c18_1", "c18_2", "c18_3")
//Бок
val b1 = arrayOf("b1_1", "b1_2")
val b2 = arrayOf("b2_1", "b2_2")
val b3 = arrayOf("b3_1", "b3_2", "b3_3")
val b4 = arrayOf("b4_1", "b4_2")
//Живот
val j1 = arrayOf("j1_1", "j1_2")
val j2 = arrayOf("j2_1", "j2_2")
val j3 = arrayOf("j3_1", "j3_2")
val j4 = arrayOf("j4_1", "j4_2", "j4_3")
val j5 = arrayOf("j5_1")
val j6 = arrayOf("j6_1", "j6_2", "j6_3", "j6_4")
val j7 = arrayOf("j7_1", "j7_2", "j7_3", "j7_4", "j7_5", "j7_6", "j7_7")
val j8 = arrayOf("j8_1", "j8_2", "j8_3")
val j9 = arrayOf("j9_1")
val j10 = arrayOf("j10_1", "j10_2", "j10_3")
val j11 = arrayOf("j11_1", "j11_2", "j11_3", "j11_4")
val j12 = arrayOf("j12_1", "j12_2")
val C1 = "Исходное положение, положить руки вверх.\n" +
"Счет \n" +
"1-2-3 - потянуться руками вверх, а пятками — в противоположную сторону;\n" +
"4 Расслабиться\n" +
"Повторить 5—6 раз. Дыхание свободное.\n"
val C2 = "Исходное положение, руки лежат под головой или направлены вниз, вдоль туловища.\n" +
"Счет\n" +
"1 - поднять одну прямую ногу на 45°;\n" +
"2-3 - удерживать ее;\n" +
"4 - опустить в исходное положение.\n" +
"То же повторить с другой ноги. С каждой ноги повторить по 4—б раз. Дыхание свободное.\n"
val C3 = "Исходное положение, руки лежат вверху.\n" +
"Счет\n" +
"1 - поднять вперед прямые правую руку и левую ногу; \n" +
"2- опустить их в исходное положение;\n" +
"3 - поднять вперед левую руку и правую ногу;\n" +
"4 - вернуться в исходное положение.\n" +
"Повторить 4-6 раз с каждой стороны, опустить их в исходное положение;\n"
val C4 = "Исходное положение, руки лежат под головой или направлены вниз, вдоль туловища.\n" +
"Счет\n" +
"1 напрячь оба бедра, как при выпрямлении колена;\n" +
"2-3 удерживать в напряжении;\n" +
"4 - расслабиться.\n" +
"Повторить 6-10 раз. Дыхание произвольное. При ампутации на уровне голени можно подложить под нижнюю треть бедра валик, если есть сгибательная контрактура колена, или если пациент так лучше ощущает работу мышц.\n"
val C5 = "Исходное положение, руки лежат вниз вдоль туловища, под культю и под аналогичный сегмент сохранной конечности подложить мячи. \n" +
"Счет\n" +
"1 — опереться на ноги, поднять таз вверх;\n" +
"2-3 — удерживать это положение;\n" +
"4 — опуститься в исходное положение. \n" +
"Повторить 4-8 раз. Дыхание произвольное, или подъем таза осуществлять на выдохе через рот, губы сложены «трубочкой».\n"
val C6 = "Исходное положение, руки лежат вниз вдоль туловища, под культю и под аналогичный сегмент сохранной конечности подложить мячи. \n" +
"Счет\n" +
"1 — опереться на ноги и поднять таз вверх;\n" +
" 2 — поднять одну прямую ногу вверх на 30°—45% \n" +
"3 — опустить ногу на мяч;\n" +
" 4 — опустить таз и вернуться в исходное положение. Повторить упражнение по 4-8 раз с каждой ноги. Дыхание произвольное. При значительных трудностях с удержанием баланса на мячах данное упражнение можно выполнять на валике или любых стабильных опорах.\n"
val C7 = "Дыхательное упражнение — диафрагмальное дыхание. \n" +
"Сохранную ногу поставить согнутую, вторая нога или свободно лежит на полу, или бедро закинуто на другое бедро (фото), одна ладонь лежит на животе, а другая — на груди. На вдох носом надуть животом «шарик», на выдох через рот опустить переднюю стенку живота (и втянуть ее) и расслабиться. \n" +
"Повторить дыхательный цикл не более 4-6 раз. Дышать глубоко, в комфортном темпе.\n"
val C8 = "Исходное положение, руки лежат вниз вдоль туловища, под ноги подложен большой гимнастический мяч.\n" +
"Счет\n" +
"1 упереться ногами в мяч, поднять таз вверх;\n" +
"2-3 — удерживать это положение;\n" +
"4 - опустить таз и вернуться B исходное положение.\n" +
"Дыхание произвольное. Повторить упражнение 6-8 раз.\n"
val C9 = "Исходное положение, руки лежат вниз вдоль туловища, под ноги подложен большой гимнастический мяч. \n" +
"Счет\n" +
"1 - поднять таз с опорой на обе ноги;\n" +
"2 - поднять сохранную ногу вверх от опоры и остаться стоять на одной культе;\n" +
"3 - опустить на опору сохранную ногу;\n" +
"4 - опустить таз и вернуться в исходное положение. Повторить упражнение для каждой ноги по 4—6 раз. Дыхание произвольное.\n"
val C10 = "Исходное положение, руки лежат вниз вдоль туловища или под головой (усложненный вариант). \n" +
"Имитация велосипедных движений. По 6-10 движений сначала одной ногой, затем второй. Усложненный вариант упражнения (фото) — выполнение упражнения одновременно двумя ногами.\n" +
"Сначала движение ногами выполняется в направлении движения вперед, а затем — назад. \n" +
"Следить за дыханием и за тем, чтобы поясница была прижата к полу.\n"
val C11 = "Дыхательное упражнение — диафрагмальное дыхание.\n" +
"Повторить дыхательный цикл не более 4-6 раз. В необходимости повторения дыхательного упражнения — ориентироваться на самочувствие пациента.\n"
val C12 = "Исходное положение, руки вытянуты перед собой, B руках — резиновая лента-амортизатор.\n" +
"Счет\n" +
"1 - развести в стороны прямые руки и коснуться кулачками пола, свести лопатки;\n" +
"2-3 — удерживать это положение;\n" +
"4 — свести руки перед собой и вернуться в исходное положение.\n" +
"При выполнении упражнения акцент делать на сведение лопаток в момент растяжения резинового амортизатора.\n"
val C13 = "Исходное положение, в руках — резиновый амортизатор; одна рука лежит вниз вдоль туловища, вторая согнута в локте на 90° и отведена от туловища (локоть на уровне плеча), ее плечо лежит на полу. \n" +
"Счет\n" +
"1 - не разгибая локтя, разворачивая лопатку, положить кисть согнутой руки на пол;\n" +
"2-3 — удерживать это положение;\n" +
"4 - вернуться в исходное положение. Повторить 10—15-20 раз. Не меняя длины хвата амортизатора, повторить с другой руки. Дыхание произвольное.\n"
val C14 = "Исходное положение, поставить руки B упоре на локти, немного отведя их от туловища.\n" +
"1 - надавить локтями на пол, свести лопатки прогнуть грудную клетку;\n" +
"2-3 — удерживать это напряжение;\n" +
"4 - расслабиться и вернуться в исходное положение \n" +
"Повторить 4-8 раз. Дыхание ровное, без задержек.\n"
val C15 = "Исходное положение, на бедра надета резиновая петля, ногу со стороны ампутации ротировать внутрь (cкосолапить). \n" +
"Счет\n" +
"1 - скользя по поверхности, отвести ногу со стороны ампутации в сторону; \n" +
"2-3 - удерживать ногу в этом положении;\n" +
"4 - вернуть ногу в исходное положение.\n" +
"Повторить упражнение 10-15-20 раз.\n" +
"Повторить 10-15-20 раз. После короткого отдыха сделать второй подход. Дыхание произвольное. Следить, чтобы мышцы плечевого пояса не вовлекались в напряжение, а таз оставался неподвижным. Для улучшения самоконтроля можно руки ставить на пояс и таким 0бразом следить за неподвижностью таза.\n"
val C16 = "Исходное положение, бедрами удерживать мяч.\n" +
"Счет\n" +
"1 - сжать мяч между бедрами; \n" +
"2-3 - удерживать это положение; \n" +
"4 - расслабиться.\n" +
"Повторить упражнение 10-15-20 раз. \n" +
"Со временем возможно усложнение упражнения: удерживать сжатие не на счет 2-3, а на 2-3-4-5-6-7, и только на счет 8 — расслабиться. Дыхание произвольное. Следить, чтобы мышцы плечевого пояса не вовлекались B напряжение, и пациент не затаивал дыхание.\n"
val C17 = "Исходное положение, руки лежат под головой, на ногу со стороны ампутации надета манжета-утяжелитель.\n" +
"Счет\n" +
"1 - поднять прямую ногу на 45°; \n" +
"2-3 - удерживать ногу в этом положении; \n" +
"4 - опустить ногу и вернуться в исходное положение. \n" +
"Повторить 10—15—20 раз.\n" +
"Усложнение упражнения:\n" +
"1 - поднять ногу; \n" +
"2-3-4-5-6-7 - держать ногу; \n" +
"8 - опустить ногу и вернуться в исходное положение.\n" +
"Со временем можно выполнять два подхода к упражнению.\n"
val C18 = "Исходное положение, руки лежат под головой, на ногу со стороны ампутации надета манжета-утяжелитель. \n" +
"Счет\n" +
"1 - поднять прямую ногу на 45°;\n" +
"2 - согнуть ногу в бедре и колене до 90°; \n" +
"3 - выпрямить ногу обратно; \n" +
"4 - опустить ногу и вернуться в исходное положение. \n" +
"Повторить упражнение 10—15 раз. \n" +
"Усложнение упражнения: \n" +
"сгибание и разгибание колена и бедра можно осуществлять не один, а несколько раз подряд, и только потом. опускать ногу. Также можно делать имитацию велосипедных движений вперед, а потом B обратную сторону. \n" +
"Со временем весь комплекс упражнений можно выполнять с утяжелителем в постоянном режиме. Со стороны ампутации делать больше подходов и количество повторений предлагаемых упражнений.\n"
val B1 = "Исходное положение. \n" +
"Счет\n" +
"1 - поднять верхнюю ногу на 10—35° точно в сторону;\n" +
"2-3 - удерживать это положение; \n" +
"4 - опустить ногу в исходное положение. \n" +
"Повторить упражнение 10—15-20 раз и положить согнутую ногу вперед — для растяжки и отдыха мышц. Во время выполнения упражнения следить за точностью направления движения — отведения.\n"
val B2 = "Исходное положение, верхняя нога согнута в колене и лежит впереди. \n" +
"Счет \n" +
"1 - поднять прямую нижнюю ногу точно вверх (приведение), стопу тянуть на себя;\n" +
"2-3 - удерживать ногу в верхней точке.\n" +
"4 - опустить ногу в исходное положение \n" +
"Повторить 10—15-20 раз. Следить за тем, чтобы нога не уходила вперед или назад, колено было всегда выпрямлено. Дыхание произвольное.\n"
val B3 = "Исходное положение. \n" +
"Счет\n" +
"1 — поднять верхнюю ногу на 10—35° точно в сторону; \n" +
"2 — согнуть в колене, не смещая бедро; \n" +
"3 — выпрямить колено, не смещая бедро; \n" +
"4 — опустить ногу в исходное положение. \n" +
"Повторить 10—15—20 раз. Дыхание произвольное. \n" +
"Повторяйте те же упражнения, лежа на другом боку.\n"
val B4 = "Исходное положение, на уровне бедра надета манжета с утяжелителем. \n" +
"Счет \n" +
"1 - поднять верхнюю ногу на 10—35° точно в сторону; \n" +
"2-3 — удерживать это положение \n" +
"4 - опустить ногу в исходное положение.\n" +
"Повторить 10—15-20 раз и положить согнутую ногу вперед для отдыха. Следить за точностью направления движения (отведение). \n" +
"Подобным образом — с утяжелителем — можно выполнять все упражнения в исходном положении лежа на боку.\n"
val J1 = "Исходное положение, руки лежат под головой, опираясь на лоб. \n" +
"1 - поднять плечевой пояс, руки и голову; \n" +
"2-3 - удерживать это положение;\n" +
"4 — опуститься в исходное положение и расслабиться. Повторить упражнение 6-10 раз. Следить за дыханием. \n" +
"Можно при подъеме туловища сводить лопатки, приводя локти к туловищу на все время удержания корпуса.\n"
val J2 = "Исходное положение, руки лежат под головой, голова опирается на лоб. \n" +
"1 - поднять правую прямую ногу вверх;\n" +
"2-3 - удерживать ногу; 4 - опустить ногу в исходное положение. \n" +
"С каждой стороны повторить упражнение по 6-10 раз. Следить за дыханием.\n"
val J3 = "Исходное положение, ноги лежат чуть шире плеч, руки под головой. \n" +
"1 — поднять плечевой пояс, руки и голову, и развести руки в стороны (ладонями вперед); \n" +
"2-3 — удерживать это положение;\n" +
"4 - опуститься в исходное положение. \n" +
"Повторить упражнение 6-10 раз. \n" +
"Усложнение: \n" +
"можно одновременно с подъемом корпуса поднимать поочередно то одну HOTY, то другую, или две ноги одновременно (фото). Следить за дыханием.\n"
val J4 = "Исходное положение, руки лежат наверху, голова опирается на лоб. \n" +
"Счет\n" +
"1 — поднять вверх одновременно прямые правую руку и левую ногу; \n" +
"2-3 - удерживать это положение; \n" +
"4 — опуститься в исходное положение. \n" +
"С каждой стороны повторить упражнение по 4-8 раз. Следить за дыханием.\n"
val J5 = "Дыхательное упражнение. Исходное положение, голова опирается на лоб, руки под толовой. Глубокий вдох HOCOM, долгий выдох через рот, губы сложены «трубочкой». Повторить 4-6 раз.\n"
val J6 = "Исходное положение, голова опирается на лоб. Рисуем ногой медленно букву «П».\n" +
"Счет\n" +
"1 поднять прямую правую ногу вверх;\n" +
"2 отвести eё B сторону на 30°;\n" +
"3 опустить ногу в стороне на пол;\n" +
"4 поднять правую ногу;\n" +
"5 привести ноту к центру;\n" +
"6 опустить ногу в исходное положение;\n" +
"7-12 повторить то же с левой ноги.\n" +
"Упражнение сделать по 4-8 раз на каждую ногу. Следить за дыханием."
val J7 = "Предыдущее упражнение можно немного усложнить. \n" +
"Счет\n" +
"1 — поднять одну ногу; \n" +
"2 — отвести ногу в сторону; \n" +
"3 — опустить ногу в стороне; \n" +
"4 — поднять вверх другую ногу;\n" +
"5 - отвести и ее в сторону; \n" +
"6 - опустить на пол в стороне; \n" +
"7-8 -скользя по опоре, соединить на полу ноги. \n" +
"Повторить упражнение с каждой ноги по 4-6 раз. Следить за дыханием.\n"
val J8 = "Исходное положение, две ноги поднять поочередно вверх. \n" +
"1 - развести ноги в стороны; \n" +
"2 - свести ноги вместе, и повторять 10—15-20 раз. \n" +
"Следить за дыханием. После небольшой паузы, со временем, можно выполнять второй подход. \n" +
"Также возможны следующие варианты:\n" +
"1 - развести ноги в стороны;\n" +
"2 - свести ноги вместе с перекрестом (одна нога выше, и нижнюю ноги. другая ниже);\n" +
"3 - развести ноги в стороны;\n" +
"4 - свести ноги и перекрестить их, поменяв верхнюю и нижнюю ноги.\n" +
"Упражнение сделать по 4-8 раз на каждую ногу. Следить за дыханием.\n"
val J9 = "Дыхательное упражнение. Исходное положение, голова опирается на лоб, руки под головой. Глубокий вдох носом, долгий выдох через POT, губы сложены «трубочкой». Повторить 4-6 раз.\n"
val J10 = "Исходное положение, голова опирается на лоб, руки лежат наверху на ширине, в руках — резиновый амортизатор. \n" +
"1 — поднять туловище, руки и голову вверх; \n" +
"2 — развести руки в стороны так, чтобы амортизатор лег на лопатки; \n" +
"3 — свести руки наверху до ширины плеч; \n" +
"4 — опуститься в исходное положение. \n" +
"Повторить упражнение 6-10 раз. Дыхание произвольное.\n" +
" Со временем можно усложнить упражнение: разводить руки в стороны не один раз, а несколько раз подряд; также можно сделать паузу в момент, когда руки разведены в стороны. Дыхание произвольное. Можно одновременно с подъемом туловища поднимать поочередно то одну, то вторую ногу.\n"
val J11 = "Исходное положение, руки под головой. Поднять плечевой пояс и согнутые к плечам руки. Имитация плавания брассом. Дыхание ровное. \n" +
"Два подхода по 10-15-20 движений. Следить за полным выпрямлением рук наверх, разведением прямых рук B стороны, сведением лопаток B момент приведения плеч, а также за тем, чтобы корпус при выпрямлении рук наверх не опускался. Дыхание произвольное.\n"
val J12 = "Исходное положение, руки лежат под головой, голова опирается на лоб. На ноге со стороны ампутации надета манжета с утяжелителем.\n" +
"Счет\n" +
"1 - поднять ногу с утяжелителем;\n" +
"2-3 — удерживать ногу; \n" +
"4 — опустить ногу в исходное положение. \n" +
"Повторить 10-15-20 раз.\n" +
"Усложнение: можно на счет 2 - отвести ногу в сторону, на счет 3 - вернуть ногу к центру, счет 4 — опуститься в исходное положение. Также можно отводить в сторону не один раз, а несколько раз подряд. Дыхание свободное. \n" +
"Со временем все упражнения можно выполнять с утяжелителем."
}

View File

@ -1,26 +0,0 @@
package com.example.rehabilitation.Admin.fragmrntAdmin
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.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 inflater.inflate(R.layout.fragment_feedback, container, false)
}
companion object {
fun newInstance() = FeedbackFragment()
}
}

View File

@ -1,49 +0,0 @@
package com.example.rehabilitation.Admin.fragmrntAdmin
import android.os.Binder
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.FragmentMainSettingBinding
class MainSettingFragment : Fragment() {
private lateinit var binding: FragmentMainSettingBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentMainSettingBinding.inflate(layoutInflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//Выход на основную часть
binding.btnExitSetting.setOnClickListener {
activity?.finish()
}
binding.cvSettingUser.setOnClickListener{
}
binding.cvFeedback.setOnClickListener{
}
binding.cvStatistics.setOnClickListener{
}
}
companion object {
fun newInstance() = MainSettingFragment()
}
}

View File

@ -1,32 +0,0 @@
package com.example.rehabilitation.Admin.fragmrntAdmin
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.FragmentStatisticsBinding
class StatisticsFragment : Fragment() {
private lateinit var binding: FragmentStatisticsBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentStatisticsBinding.inflate(layoutInflater, container,false)
return binding.root
//ТУТ БОЛЬШЕ НИЧЕГО НЕ ТРОГАЙ
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//ВОТ ТУТ ТЫ ВСТАВЛЯЕШЬ КОД
}
companion object {
fun newInstance() = StatisticsFragment()
}
}

View File

@ -1,26 +0,0 @@
package com.example.rehabilitation.Admin.fragmrntAdmin
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.FragmentUserSettingBinding
class UserSettingFragment : Fragment() {
private lateinit var binding: FragmentUserSettingBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentUserSettingBinding.inflate(layoutInflater,container,false)
return binding.root
}
companion object {
fun newInstance() = UserSettingFragment()
}
}

View File

@ -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()
}
}
}
}

View File

@ -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<AppealsNewModel, AppealsNewAdapter.Holder>(
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<AppealsNewModel>() {
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)
}
}

View File

@ -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<AppealsOldModel, AppealsOldAdapter.Holder>(
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<AppealsOldModel>() {
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)
}
}

View File

@ -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()
}
}

View File

@ -0,0 +1,6 @@
package com.example.rehabilitation.Appeals.TabLayout.Model
data class AppealsNewListModel(
val appeals_new: List<AppealsNewModel>
)

View File

@ -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,
)

View File

@ -0,0 +1,6 @@
package com.example.rehabilitation.Appeals.TabLayout.Model
data class AppealsOldListModel(
val appeals_old: List<AppealsOldModel>
)

View File

@ -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,
)

View File

@ -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<AppealsNewModel>? = 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) {
}
}

View File

@ -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<AppealsOldModel>? = 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) {
}
}

View File

@ -0,0 +1,226 @@
package com.example.rehabilitation.Auth
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 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.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.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
class AuthFragment : Fragment() {
private lateinit var binding: FragmentAuthBinding
private val model: MainViewModel by activityViewModels()//Инициализировали класс
private lateinit var patientApi: PatientApi
private val PatientVewModel: PatientViewModel by activityViewModels()
//Токен
private var Token = ""
val prefPatientSave = SavePref()
val prefPatientConclusion = ConclusionPref()
val prefPatientClear = ClearPref()
//Класс проверки интеренета
val enternetCheck = EnternetCheck()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
binding = FragmentAuthBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.txtError.text = ""
// prefPatientClear.clearToken(requireContext())
Token = prefPatientConclusion.conclusionToken(requireContext())
//Авиризация пациента
binding.buttonAuthorizationPatient.setOnClickListener {
val login = binding.editTextLoginPatient.text.toString()
val password = binding.editTextPasswordPatient.text.toString()
if (login != "" || password != "") {
AuthorizationPatient(
AuthModel(
login,
password,
)
)
} 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())
// }
// }
}
//Инициализация подлючения к серверу
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)
}
// //Получения списка пациентов
// 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) {
if (enternetCheck.isOnline(requireContext())) {
initRetrofit()
CoroutineScope(Dispatchers.IO).launch {
val response = patientApi.LoginPatient(authModel)
requireActivity().runOnUiThread {
//Фиксируем полученные данные
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)
}
}
override fun onDestroy() {
super.onDestroy()
activity?.finish()
}
companion object {
fun newInstance() = AuthFragment()
}
}

View File

@ -0,0 +1,30 @@
package com.example.rehabilitation.Auth
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.rehabilitation.R
import com.example.rehabilitation.databinding.ActivityAuthorizationBinding
class AuthorizationActivity : AppCompatActivity() {
private lateinit var binding: ActivityAuthorizationBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityAuthorizationBinding.inflate(layoutInflater)
setContentView(binding.root)
//Вывод фрагмента на активити при первоначальной загрузке
supportFragmentManager.beginTransaction()
.replace(R.id.CLAuth, AuthFragment.newInstance())
.commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
}
}

View File

@ -0,0 +1,7 @@
package com.example.rehabilitation.Auth.Model
data class AuthModel(
val login: String,
val password: String,
)

View File

@ -0,0 +1,5 @@
package com.example.rehabilitation.Auth.Model
data class CheckTokenModel(
val status:String,
)

View File

@ -0,0 +1,14 @@
package com.example.rehabilitation.Auth.Model
data class PatientModel(
val id: String,
val name:String,
val surname:String,
val patronymic:String,
val diagnosis:String,
val number_of_courses:String,
//val email:String,
val login:String,
val password:String,
)

View File

@ -0,0 +1,7 @@
package com.example.rehabilitation.Auth.Model
data class UserModel(
val id: String,
val token: String,
)

View File

@ -0,0 +1,244 @@
package com.example.rehabilitation.Calendare
import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.GridLayoutManager
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.Sport.DayAdapter
import com.example.rehabilitation.databinding.FragmentCalendarBinding
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.time.LocalDate
import java.util.Timer
import kotlin.concurrent.fixedRateTimer
import kotlin.concurrent.timerTask
class CalendarFragment : Fragment(),CalendareListAdapter.Listener {
private lateinit var binding: FragmentCalendarBinding
lateinit var adapterCalendare: CalendareListAdapter
private val modelPatient: PatientViewModel by activityViewModels()//Инициализировали класс
private lateinit var patientApi: PatientApi
private lateinit var timer: Timer
val prefPatientConclusion = ConclusionPref()
//Календарь
var listCalendare:List<CalendareModel>? = null
@SuppressLint("NewApi")
//Загрузка данных для календаря
var calendare = false
//Класс проверки интеренета
val enternetCheck = EnternetCheck()
var infoVisibleCalendare = false
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentCalendarBinding.inflate(layoutInflater, container, false)
return binding.root
}
@SuppressLint("NewApi")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
if(isAdded) {
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
}
fun visibleLoad(){
binding.CLCalendare.visibility = View.GONE
binding.CLLoad.visibility = View.VISIBLE
}
//Инициализация списка
private fun initRcView() = with(binding) {
rcView.layoutManager = GridLayoutManager(requireContext(), 1)//По вертикали будет выводить по умолчанию
adapterCalendare = CalendareListAdapter(this@CalendarFragment)
rcView.adapter = adapterCalendare
//binding.rcVIewDayList.smoothScrollToPosition(0);
}
//Инициализация запроса
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 APIliveCountCalendareCurrent() {
if (enternetCheck.isOnline(requireContext())) {
initRetrofit()
val Tokens = prefPatientConclusion.conclusionToken(requireContext())
CoroutineScope(Dispatchers.IO).launch {
val Calendare = patientApi.GetCalendare("Bearer $Tokens")
activity?.runOnUiThread {
//Фиксируем полученные данные
val List = Calendare.body()
val Nice = Calendare.isSuccessful
val Code = Calendare.code()
if(Code==429){
val intetn = Intent(requireContext(), Code429Activity::class.java)
startActivity(intetn)
}
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()
}
}
}
}

View File

@ -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<CalendareModel, CalendareListAdapter.Holder>(
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<CalendareModel>() {
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)
}
}

View File

@ -0,0 +1,5 @@
package com.example.rehabilitation.Calendare
data class CalendareListModel(
val calendare_day: List<CalendareModel>
)

View File

@ -0,0 +1,19 @@
package com.example.rehabilitation.Calendare
data class CalendareModel(
val id: Int,
val id_patient : Int,
val day: String,
val date: String,
val count_workout_max:Int,
val count_workout_make: Int,
val id_sets_of_sports_activities : Int,
val article_sport_for_day: String,
val id_sport_patient :Int,
val block: String,
val pause: String,
val id_before_questionnaire : String,
val id_after_questionnaire : String,
val created_at : String,
val updated_at : String,
)

View File

@ -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()
}
}
}
}

View File

@ -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()
}
}
}
}

View File

@ -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()
}
}

View File

@ -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
}
}

View File

@ -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()
}
}

View File

@ -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()
}
}

View File

@ -0,0 +1,142 @@
package com.example.rehabilitation
import android.content.SharedPreferences
import com.example.rehabilitation.Calendare.CalendareModel
import com.example.rehabilitation.Sport.Image.ImageSportModel
import com.example.rehabilitation.Progress.AfterListModel
import com.example.rehabilitation.Progress.BeforeListModel
import com.example.rehabilitation.Progress.ProgressModel
import java.io.File
import java.io.FileOutputStream
//Постоянное хранилище
var prefUserPatientToken: SharedPreferences? = null
var UserPatientToken:String = ""
var pref: SharedPreferences? = null
//Общее количество дней курса
var prefSportCursDayAll: SharedPreferences? = null
var SportCursDayAll :Int = 0
var prefSportCursDayLast: SharedPreferences? = null
var SportCursDayLast :String = ""
var prefSportCursNumber: SharedPreferences? = null
var prefCursDay: SharedPreferences? = null
var SportCursDay :Int = 0
//7 дней пройдено
var prefSport7Day: SharedPreferences? = null
var Sport7Day :Int = 0
//15 дней пройдено
var prefSport15Day: SharedPreferences? = null
var Sport15Day :Int = 0
//15 дней пройдено и отправлен отчет
var prefSport15DayAll: SharedPreferences? = null
var Sport15DayAll :Int = 0
var prefSportCursDayNumber: SharedPreferences? = null
var SportCursDayNumber :Int = 0
var prefSport: SharedPreferences? = null
var SportUserTrue = 0
var prefCursDangerDayBefore: SharedPreferences? = null
var SportCursDayDangerBefore:Int = 0
var prefCursDangerDayAfter: SharedPreferences? = null
var SportCursDayDangerAfter:Int = 0
var prefCursDayNull: SharedPreferences? = null
var CursDayNull:String = ""
var prefSportPlusCount: SharedPreferences? = null
var SportPlusCount:Int = 0
var prefSportMaxCount: SharedPreferences? = null
var SportMaxCount:Int = 0
var prefDayBefore: SharedPreferences? = null
var DayBefore:String = ""
var prefDayAfter: SharedPreferences? = null
var DayAfter:String = ""
var prefPauseDay: SharedPreferences? = null
var PauseDay:String = ""
var prefBlock: SharedPreferences? = null
var Block:String = ""
var prefFIO: SharedPreferences? = null
var FIO:String = ""
var prefEmailPatient: SharedPreferences? = null
var EmailPatient:String = ""
//Дата начала тренировки
var prefSportDateStart: SharedPreferences? = null
var SportDateStart:String = ""
var prefUser: SharedPreferences? = null
//Хранилище для анкеты
//var questionnaire: SharedPreferences? = null
var questionnaire_before :String = ""
var questionnaire_after:String = ""
var nameSport :String = ""
var countSport:Int? = null
var countSportPlus:String = ""
//Ключи для хранилишь
//Для пациента
var tokenClass:String = ""
var counter1:String = ""
//Для врача
var counter2:String = ""
var tokenClassDoctor:String = ""
var countCategory:String = ""
//Отчет по ребилитации
var listCheckSportDay:String = ""
//Доктор
var loginDoctor:String = "maxi05092003"
//Пациент
var loginPatient:String = "t.t.maxi05092003@gmail.com"
//Хранения отчета на время
var checkDaySportString:String = ""
//Хранения для перехода на страницу
var daySpoartOpen:Int = 0
var daySpoartOpenDate:String = ""
val daySpoartOpenKey:Int = 12321313
//var itemDayOpenDate:MonthModel
//Анкетирование
var listBefore:List<BeforeListModel> = listOf()
var listAfter:List<AfterListModel> = listOf()
//Прогрес
var listProgressAll:List<ProgressModel> = listOf()
var listProgressCheck:List<ProgressModel> = listOf()
var listImageSport:List<ImageSportModel> = listOf()
var uriFileEF: File? =null
var fileUri2: FileOutputStream? =null
//Переменная для хранения дня, чтобы при нажатие на главной тсранице или в календаре
var dateHomeCalendare:String = ""
class Hranilihe {
}

View File

@ -0,0 +1,50 @@
package com.example.rehabilitation.fragment.InfoFragment
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.Information.InformationFragment
import com.example.rehabilitation.databinding.FragmentCommonInfoBinding
class CommonInfoFragment : Fragment() {
private lateinit var binding: FragmentCommonInfoBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentCommonInfoBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain,
com.example.rehabilitation.Information.InformationFragment.newInstance())?.addToBackStack(null)?.commit()
}
}
// override fun onResume() {
// super.onResume()
// binding.CLCommonInfo.visibility = View.VISIBLE
// }
//
// override fun onDestroy() {
// super.onDestroy()
// binding.CLCommonInfo.visibility = View.GONE
//
// }
companion object {
@JvmStatic
fun newInstance() = CommonInfoFragment()
}
}

View File

@ -0,0 +1,49 @@
package com.example.rehabilitation.fragment.InfoFragment
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.Information.InformationFragment
import com.example.rehabilitation.databinding.FragmentMedicalReabilitationBinding
class MedicalReabilitationFragment : Fragment() {
private lateinit var binding: FragmentMedicalReabilitationBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentMedicalReabilitationBinding.inflate(layoutInflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain,
com.example.rehabilitation.Information.InformationFragment.newInstance())?.addToBackStack(null)?.commit()
}
}
// override fun onResume() {
// super.onResume()
// binding.CLMadicalReabilitation.visibility = View.VISIBLE
// }
//
// override fun onDestroy() {
// super.onDestroy()
// binding.CLMadicalReabilitation.visibility = View.GONE
//
// }
companion object {
@JvmStatic
fun newInstance() = MedicalReabilitationFragment()
}
}

View File

@ -0,0 +1,48 @@
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 as R_P
import android.R
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment
import com.example.rehabilitation.databinding.FragmentBreathingExercisesBinding
class BreathingExercisesFragment : Fragment() {
private lateinit var binding:FragmentBreathingExercisesBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentBreathingExercisesBinding.inflate(layoutInflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
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 {
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 {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.BreathingExercisesFragment()
}
}

View File

@ -0,0 +1,42 @@
package com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod
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.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment
import com.example.rehabilitation.databinding.FragmentContourPreventionBinding
class ContourPreventionFragment : Fragment() {
private lateinit var binding:FragmentContourPreventionBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentContourPreventionBinding.inflate(layoutInflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.PhantomPainsFragment.Companion.newInstance()
)?.addToBackStack(null)?.commit()
}
}
companion object {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.ContourPreventionFragment()
}
}

View File

@ -0,0 +1,41 @@
package com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod
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.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment
import com.example.rehabilitation.databinding.FragmentDecongestantTherapyBinding
class DecongestantTherapyFragment : Fragment() {
private lateinit var binding: FragmentDecongestantTherapyBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentDecongestantTherapyBinding.inflate(layoutInflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.ContourPreventionFragment.Companion.newInstance()
)?.addToBackStack(null)?.commit()
}
}
companion object {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.DecongestantTherapyFragment()
}
}

View File

@ -0,0 +1,42 @@
package com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod
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.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment
import com.example.rehabilitation.databinding.FragmentFormationOfTheStumpBinding
class FormationOfTheStumpFragment : Fragment() {
private lateinit var binding:FragmentFormationOfTheStumpBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentFormationOfTheStumpBinding.inflate(layoutInflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.PhysicalExercisesFragment.Companion.newInstance()
)?.addToBackStack(null)?.commit()
}
}
companion object {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.FormationOfTheStumpFragment()
}
}

View File

@ -0,0 +1,44 @@
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.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment
import com.example.rehabilitation.databinding.FragmentMotorModeBinding
class MotorModeFragment : Fragment() {
private lateinit var binding: FragmentMotorModeBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentMotorModeBinding.inflate(layoutInflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.StumpCareFragment.Companion.newInstance()
)?.addToBackStack(null)?.commit()
}
}
companion object {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.MotorModeFragment()
}
}

View File

@ -0,0 +1,41 @@
package com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod
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.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment
import com.example.rehabilitation.databinding.FragmentOrganizationOfTheDailyRoutineAfterSurgeryBinding
class OrganizationOfTheDailyRoutineAfterSurgeryFragment : Fragment() {
private lateinit var binding: FragmentOrganizationOfTheDailyRoutineAfterSurgeryBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentOrganizationOfTheDailyRoutineAfterSurgeryBinding.inflate(layoutInflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.OrganizationOfTheDayRegimeOfTheSecondWeekAfterAmputationFragment.Companion.newInstance()
)?.addToBackStack(null)?.commit()
}
}
companion object {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.OrganizationOfTheDailyRoutineAfterSurgeryFragment()
}
}

View File

@ -0,0 +1,36 @@
package com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod
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.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment
import com.example.rehabilitation.databinding.FragmentOrganizationOfTheDayRegimeOfTheSecondWeekAfterAmputationBinding
class OrganizationOfTheDayRegimeOfTheSecondWeekAfterAmputationFragment : Fragment() {
private lateinit var binding: FragmentOrganizationOfTheDayRegimeOfTheSecondWeekAfterAmputationBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentOrganizationOfTheDayRegimeOfTheSecondWeekAfterAmputationBinding.inflate(layoutInflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit()
}
}
companion object {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.OrganizationOfTheDayRegimeOfTheSecondWeekAfterAmputationFragment()
}
}

View File

@ -0,0 +1,41 @@
package com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod
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.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment
import com.example.rehabilitation.databinding.FragmentPhantomPainsBinding
class PhantomPainsFragment : Fragment() {
private lateinit var binding:FragmentPhantomPainsBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentPhantomPainsBinding.inflate(layoutInflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.SurfaceSensitivityFragment.Companion.newInstance()
)?.addToBackStack(null)?.commit()
}
}
companion object {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.PhantomPainsFragment()
}
}

View File

@ -0,0 +1,41 @@
package com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod
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.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment
import com.example.rehabilitation.databinding.FragmentPhysicalExercisesBinding
class PhysicalExercisesFragment : Fragment() {
private lateinit var binding: FragmentPhysicalExercisesBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentPhysicalExercisesBinding.inflate(layoutInflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.OrganizationOfTheDailyRoutineAfterSurgeryFragment.Companion.newInstance()
)?.addToBackStack(null)?.commit()
}
}
companion object {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.PhysicalExercisesFragment()
}
}

View File

@ -0,0 +1,43 @@
package com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod
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.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment
import com.example.rehabilitation.databinding.FragmentStumpCareBinding
class StumpCareFragment : Fragment() {
private lateinit var binding: FragmentStumpCareBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentStumpCareBinding.inflate(layoutInflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.BreathingExercisesFragment.Companion.newInstance()
)?.addToBackStack(null)?.commit()
}
}
companion object {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.StumpCareFragment()
}
}

View File

@ -0,0 +1,42 @@
package com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod
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.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment
import com.example.rehabilitation.databinding.FragmentSurfaceSensitivityBinding
class SurfaceSensitivityFragment : Fragment() {
private lateinit var binding:FragmentSurfaceSensitivityBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentSurfaceSensitivityBinding.inflate(layoutInflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.FormationOfTheStumpFragment.Companion.newInstance()
)?.addToBackStack(null)?.commit()
}
}
companion object {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.SurfaceSensitivityFragment()
}
}

View File

@ -0,0 +1,111 @@
package com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations
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.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.BreathingExercisesFragment
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.ContourPreventionFragment
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.DecongestantTherapyFragment
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.FormationOfTheStumpFragment
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.MotorModeFragment
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.OrganizationOfTheDailyRoutineAfterSurgeryFragment
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.OrganizationOfTheDayRegimeOfTheSecondWeekAfterAmputationFragment
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.PhantomPainsFragment
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.PhysicalExercisesFragment
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.StumpCareFragment
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.SurfaceSensitivityFragment
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendationsFragment
import com.example.rehabilitation.databinding.FragmentEarlyPostoperativePeriodBinding
class EarlyPostoperativePeriodFragment : Fragment() {
private lateinit var binding:FragmentEarlyPostoperativePeriodBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentEarlyPostoperativePeriodBinding.inflate(layoutInflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnMotorMode.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.StumpCareFragment.newInstance())?.addToBackStack(null)?.commit()
}
binding.btnBreathingExercises.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.DecongestantTherapyFragment.newInstance())?.addToBackStack(null)?.commit()
}
binding.btnContracturesPrevention.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.PhantomPainsFragment.newInstance())?.addToBackStack(null)?.commit()
}
binding.btnExit.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment.Companion.newInstance()
)?.addToBackStack(null)?.commit()
}
binding.btnSurfaceSensitivity.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.FormationOfTheStumpFragment.newInstance())?.addToBackStack(null)?.commit()
}
binding.btnPhysicalExercises.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.OrganizationOfTheDailyRoutineAfterSurgeryFragment.newInstance())?.addToBackStack(null)?.commit()
}
binding.btnOrganizationOfTheDayRegimeOfTheSecondWeekAfterAmputation.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriod.OrganizationOfTheDayRegimeOfTheSecondWeekAfterAmputationFragment.newInstance())?.addToBackStack(null)?.commit()
}
}
companion object {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment()
}
}

View File

@ -0,0 +1,43 @@
package com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod
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.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment
import com.example.rehabilitation.databinding.FragmentDecongestantTherapyLateBinding
class DecongestantTherapyLateFragment : Fragment() {
private lateinit var binding: FragmentDecongestantTherapyLateBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentDecongestantTherapyLateBinding.inflate(layoutInflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()?.replace(
R.id.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit()
}
binding.btnMassageTechniqueLate.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.MassageTechniqueLateFragment.Companion.newInstance()
)?.addToBackStack(null)?.commit()
}
}
companion object {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.DecongestantTherapyLateFragment()
}
}

View File

@ -0,0 +1,42 @@
package com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod
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.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment
import com.example.rehabilitation.databinding.FragmentMassageTechniqueLateBinding
class MassageTechniqueLateFragment : Fragment() {
private lateinit var binding: FragmentMassageTechniqueLateBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentMassageTechniqueLateBinding.inflate(layoutInflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.PreventionOfContracturesLateFragment.Companion.newInstance()
)?.addToBackStack(null)?.commit()
}
}
companion object {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.MassageTechniqueLateFragment()
}
}

View File

@ -0,0 +1,38 @@
package com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod
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.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment
import com.example.rehabilitation.databinding.FragmentPhantomPainsLateBinding
class PhantomPainsLateFragment : Fragment() {
private lateinit var binding:FragmentPhantomPainsLateBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentPhantomPainsLateBinding.inflate(layoutInflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()?.replace(
R.id.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit()
}
}
companion object {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.PhantomPainsLateFragment()
}
}

View File

@ -0,0 +1,43 @@
package com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod
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.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment
import com.example.rehabilitation.databinding.FragmentPreparationForProstheticsLateBinding
class PreparationForProstheticsLateFragment : Fragment() {
private lateinit var binding: FragmentPreparationForProstheticsLateBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentPreparationForProstheticsLateBinding.inflate(layoutInflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()?.replace(
R.id.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit()
}
binding.btnDecongestantTherapyLate.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.DecongestantTherapyLateFragment.Companion.newInstance()
)?.addToBackStack(null)?.commit()
}
}
companion object {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.PreparationForProstheticsLateFragment()
}
}

View File

@ -0,0 +1,41 @@
package com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod
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.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment
import com.example.rehabilitation.databinding.FragmentPreventionOfContracturesLateBinding
class PreventionOfContracturesLateFragment : Fragment() {
private lateinit var binding: FragmentPreventionOfContracturesLateBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentPreventionOfContracturesLateBinding.inflate(layoutInflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.PhantomPainsLateFragment.Companion.newInstance()
)?.addToBackStack(null)?.commit()
}
}
companion object {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.PreventionOfContracturesLateFragment()
}
}

View File

@ -0,0 +1,63 @@
package com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations
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.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.DecongestantTherapyLateFragment
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.MassageTechniqueLateFragment
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.PhantomPainsLateFragment
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.PreparationForProstheticsLateFragment
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.PreventionOfContracturesLateFragment
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendationsFragment
import com.example.rehabilitation.databinding.FragmentLatePostoperativePeriodBinding
class LatePostoperativePeriodFragment : Fragment() {
private lateinit var binding: FragmentLatePostoperativePeriodBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentLatePostoperativePeriodBinding.inflate(layoutInflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.PreparationForProstheticsLateFragment.newInstance())?.addToBackStack(null)?.commit()
}
binding.btnDecongestantTherapyLate.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.MassageTechniqueLateFragment.newInstance())?.addToBackStack(null)?.commit()
}
binding.btnPreventionOfContracturesLate.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriod.PhantomPainsLateFragment.newInstance())?.addToBackStack(null)?.commit()
}
}
companion object {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment()
}
}

View File

@ -0,0 +1,48 @@
package com.example.rehabilitation.Information.InfoFragment
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.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment
import com.example.rehabilitation.Information.InformationFragment
import com.example.rehabilitation.databinding.FragmentMethodologicalRecommendationsBinding
class MethodologicalRecommendationsFragment : Fragment() {
private lateinit var binding: FragmentMethodologicalRecommendationsBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentMethodologicalRecommendationsBinding.inflate(layoutInflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
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.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.EarlyPostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit()
}
binding.btnLatePostoperativePeriod.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain,
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendations.LatePostoperativePeriodFragment.newInstance())?.addToBackStack(null)?.commit()
}
}
companion object {
fun newInstance() =
com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendationsFragment()
}
}

View File

@ -0,0 +1,50 @@
package com.example.rehabilitation.fragment.InfoFragment
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.Information.InformationFragment
import com.example.rehabilitation.databinding.FragmentFaqBinding
class faqFragment : Fragment() {
private lateinit var binding: FragmentFaqBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
binding = FragmentFaqBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnExit.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.CLInformationMain,
com.example.rehabilitation.Information.InformationFragment.newInstance())?.addToBackStack(null)?.commit()
}
}
// override fun onResume() {
// super.onResume()
// binding.CLFaq.visibility = View.VISIBLE
// }
//
// override fun onDestroy() {
// super.onDestroy()
// binding.CLFaq.visibility = View.GONE
//
// }
companion object {
@JvmStatic
fun newInstance() = faqFragment()
}
}

View File

@ -0,0 +1,118 @@
package com.example.rehabilitation.Information
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.Enternet.EnternetCheck
import com.example.rehabilitation.MainActivity
import com.example.rehabilitation.R
import com.example.rehabilitation.Information.InfoFragment.MethodologicalRecommendationsFragment
import com.example.rehabilitation.MainFragment
import com.example.rehabilitation.Setting.SettingFragment
import com.example.rehabilitation.databinding.FragmentInformationBinding
import com.example.rehabilitation.fragment.InfoFragment.CommonInfoFragment
import com.example.rehabilitation.fragment.InfoFragment.MedicalReabilitationFragment
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?
): View? {
binding = FragmentInformationBinding.inflate(layoutInflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
if(isAdded()) {
//Выход со страницы
binding.btnExitInformation.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()
?.replace(R.id.CLMain, MainFragment.newInstance())
?.commit()
}
binding.methodologicalRecommendationsButton.setOnClickListener {
// 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()
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()
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()
activity?.supportFragmentManager?.beginTransaction()
?.replace(R.id.CLInformationMain, MedicalReabilitationFragment.newInstance())
?.commit()
}
binding.fondButton.setOnClickListener {
val i = Intent(
Intent.ACTION_VIEW,
Uri.parse("https://фонд-защитники-отечества.рф/filials")
)
startActivity(i)
}
}
}
// override fun onDestroy() {
// super.onDestroy()
// activity?.finish()
//
// binding.CLFragmentInformation.visibility = View.GONE
// }
//
// override fun onResume() {
// super.onResume()
// binding.CLFragmentInformation.visibility = View.VISIBLE
//
// }
companion object {
fun newInstance() = com.example.rehabilitation.Information.InformationFragment()
}
}

View File

@ -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()
}
}

View File

@ -3,17 +3,42 @@ package com.example.rehabilitation
import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.View
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import com.example.rehabilitation.User.fragmentUser.CalendarFragment
import com.example.rehabilitation.User.fragmentUser.HomeFragment
import com.example.rehabilitation.User.fragmentUser.InformationFragment
import com.example.rehabilitation.User.fragmentUser.ProgresFragment
import com.example.rehabilitation.User.fragmentUser.SceduleFragment
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
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
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?) {
@ -21,28 +46,275 @@ class MainActivity : AppCompatActivity() {
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
//Функция инициализации фрагметов
MainAndAuth()
}
fun MainAndAuth() {
Token = prefPatientConclusion.conclusionToken(this)
Log.i("sadasdsadsd", Token)
//CheckTokenAuth(Token)
if (Token == "") {
Auth()
} else {
CheckTokenAuth(Token)
}
}
fun Auth() {
binding.CLLoad.visibility = View.GONE
//Вывод фрагмента на активити при первоначальной загрузке
supportFragmentManager.beginTransaction()
.replace(R.id.CLMain, AuthFragment.newInstance())
.commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
}
fun Main() {
binding.CLLoad.visibility = View.GONE
fragment_inicializ()
/*binding.button.setOnClickListener {
val intent = Intent(this,MainActivity2::class.java)//Открытие окна
startActivity(intent)
}*/
// fixedRateTimer("timer", false, 0, 10000) {
// this@MainActivity.runOnUiThread {
// GetVisibleViewList()
// ProgressPatientCourses()
// APIliveCountCalendareCurrent()
// getNewAppeals()
// getOldAppeals()
// }
// }
}
@SuppressLint("SuspiciousIndentation")
private fun CheckTokenAuth(token: String) {
if (enternetCheck.isOnline(this)) {
initRetrofit()
CoroutineScope(Dispatchers.IO).launch {
val response = patientApi.CheckToken("Bearer $token")
runOnUiThread {
//Фиксируем полученные данные
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)
}
binding.btnSetting.setOnClickListener {
val intent = Intent(this, SettingActivity::class.java)
startActivity(intent)
}
//Инициализируем Retrofit
private fun initRetrofit() {
val interceptor = HttpLoggingInterceptor()
interceptor.level = HttpLoggingInterceptor.Level.BODY
//binding.imageView3.resources.getIdentifier("b3_1","drawable",this.packageName);
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 fragment_inicializ() {
//Вывод фрагмента на активити при первоначальной загрузке
supportFragmentManager.beginTransaction()
.replace(R.id.CLMain, MainFragment.newInstance())
.commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
}
// override fun onBackPressed() {
// if (backPressedTime + 3000 > System.currentTimeMillis()) {
// super.onBackPressed()
// finish()
// } else {
// AlertDialog.Builder(this@MainActivity)
// .setTitle("Выйти")
// .setMessage("Вы точно хотите выйти из приложения?")
// .setPositiveButton("Да") { dialog, whichButton ->
// super.onBackPressed()
// }
// .setNegativeButton("Нет") { dialog, whichButton ->
//
// }
// .show()
// }
// 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()
finish()
}
override fun onResume() {
@ -50,38 +322,4 @@ class MainActivity : AppCompatActivity() {
}
//Инициализация фрагментов
fun fragment_inicializ() {
//Вывод фрагмента на активити при первоначальной загрузке
supportFragmentManager.beginTransaction()
.replace(R.id.placeHolderFragment, HomeFragment.newInstance())
.commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
//Эран который будет выбран по умолчанию(кнопка которая будет прожата по умолчанию)
binding.buttonNavigation.selectedItemId = R.id.home//По умолчанию и так первая, но на всякий случай выберу еще програмным путем первую ячейку
//Нажатие на bottom navigation
binding.buttonNavigation.setOnItemSelectedListener {
when (it.itemId) {//it.itemId - это id нажатого элемента
R.id.schedule -> {
supportFragmentManager.beginTransaction().replace(R.id.placeHolderFragment, SceduleFragment.newInstance()).commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
}
R.id.calendar -> {
supportFragmentManager.beginTransaction().replace(R.id.placeHolderFragment, CalendarFragment.newInstance()).commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
}
R.id.home -> {//Если вы не авторизованный пользваотель то вам не будет доступен доступ к данном фрагменту
supportFragmentManager.beginTransaction().replace(R.id.placeHolderFragment, HomeFragment.newInstance()).commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
}
R.id.progress -> {//Если вы не авторизованный пользваотель то вам не будет доступен доступ к данном фрагменту
supportFragmentManager.beginTransaction().replace(R.id.placeHolderFragment, ProgresFragment.newInstance()).commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
}
R.id.information -> {//Если вы не авторизованный пользваотель то вам не будет доступен доступ к данном фрагменту
supportFragmentManager.beginTransaction().replace(R.id.placeHolderFragment, InformationFragment.newInstance()).commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
}
}
true
}
}
}

View File

@ -0,0 +1,431 @@
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)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
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() {
dataModel.fragmentMenu.observe(this as LifecycleOwner, {
binding.buttonNavigation.selectedItemId = it
})
//Функция инициализации фрагметов
fragment_inicializ()
binding.btnSetting.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()
?.replace(R.id.CLMain, SettingFragment.newInstance())
//?.addToBackStack(null)
?.commit()
}
binding.btnInformation.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()
?.replace(R.id.CLMain, InformationMainFragment.newInstance())
//?.addToBackStack(null)
?.commit()
}
//Выводим сегоднящнюю дату
addDate()
}
//Инициализация фрагментов
fun fragment_inicializ() {
//Вывод фрагмента на активити при первоначальной загрузке
activity?.supportFragmentManager?.beginTransaction()
?.replace(R.id.placeHolderFragment, SceduleFragment.newInstance())
?.commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
//Эран который будет выбран по умолчанию(кнопка которая будет прожата по умолчанию)
binding.buttonNavigation.selectedItemId =
R.id.schedule//По умолчанию и так первая, но на всякий случай выберу еще програмным путем первую ячейку
//Нажатие на bottom navigation
binding.buttonNavigation.setOnItemSelectedListener {
when (it.itemId) {//it.itemId - это id нажатого элемента
R.id.schedule -> {
if (!isClickRecently()) {
activity?.supportFragmentManager?.beginTransaction()
?.replace(R.id.placeHolderFragment, SceduleFragment.newInstance())
?.commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
}
}
R.id.calendar -> {
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 -> {//Если вы не авторизованный пользваотель то вам не будет доступен доступ к данном фрагменту
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
}
}
private fun addDate() {
val calendar: Calendar = Calendar.getInstance()
val sdf: SimpleDateFormat = SimpleDateFormat("EEEE")
val d: Date = Date()
val DayOfTheWeek: String = sdf.format(d)
val Day = calendar.get(Calendar.DATE)
val Month = calendar.get(Calendar.MONTH).plus(1)
var day = Day.toString()
var month = ""
var date_of_the_week = ""
when (Month) {
1 -> month = "Январь"
2 -> month = "Февраль"
3 -> month = "Март"
4 -> month = "Апрель"
5 -> month = "Май"
6 -> month = "Июнь"
7 -> month = "Июль"
8 -> month = "Август"
9 -> month = "Сентябрь"
10 -> month = "Октябрь"
11 -> month = "Ноябрь"
12 -> month = "Декабрь"
else -> { // обратите внимание на блок
month = ""
}
}
when (dayOfTheWeek) {
"Monday" -> date_of_the_week = "Пн"
"Tuesday" -> date_of_the_week = "Вт"
"Wednesday" -> date_of_the_week = "Ср"
"Thursday" -> date_of_the_week = "Чт"
"Friday" -> date_of_the_week = "Пт"
"Saturday" -> date_of_the_week = "Сб"
"Sunday" -> date_of_the_week = "Вс"
"Понедельник" -> date_of_the_week = "Пн"
"Вторник" -> date_of_the_week = "Вт"
"Стреда" -> date_of_the_week = "Ср"
"Четверг" -> date_of_the_week = "Чт"
"Пятница" -> date_of_the_week = "Пт"
"Суббота" -> date_of_the_week = "Сб"
"Воскресенье" -> date_of_the_week = "Вс"
else -> {
date_of_the_week = ""
}
}
System.out.println(calendar.get(Calendar.DATE))
binding.txtDate.setText("${day}" + " " + "${month}")
}
//Получения экрана
fun 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()
}
}
}
}

View File

@ -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()
}
}

View File

@ -0,0 +1,6 @@
package com.example.rehabilitation
data class MessageModel(
val message: String,
)

View File

@ -0,0 +1,37 @@
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<String>()
val liveDaySportOne = MutableLiveData<SportDayOneModel>()
//Обращения необработанные
val appealsNewCurrent = MutableLiveData<AppealsNewModel>()
val appealsNewList= MutableLiveData<List<AppealsNewModel>>()
//Обращения обработанные
val appealsOldCurrent = MutableLiveData<AppealsOldModel>()
val appealsOldList= MutableLiveData<List<AppealsOldModel>>()
//Экраны
val viewCurrent = MutableLiveData<ViewVisibleModel>()
//Календарь
val calendareList = MutableLiveData<List<CalendareModel>>()
val afterLook = MutableLiveData<AfterLookModel>()
val beforeLook = MutableLiveData<BeforeLookModel>()
// val productList = MutableLiveData<List<Product>>()
}

View File

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/Pref.iml" filepath="$PROJECT_DIR$/Pref.iml" />
</modules>
</component>
</project>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../../../../../../../.." vcs="Git" />
</component>
</project>

View File

@ -0,0 +1,14 @@
package com.example.rehabilitation.Pref
import android.content.Context
import android.content.SharedPreferences
class ClearPref() {
fun clearToken(context: Context) {
val prefDoctor: SharedPreferences = context.getSharedPreferences("PATIENT", Context.MODE_PRIVATE)
val edit = prefDoctor.edit()
edit?.clear()
edit?.apply()
}
}

View File

@ -0,0 +1,19 @@
package com.example.rehabilitation.Pref
import android.content.Context
import android.content.SharedPreferences
class ConclusionPref() {
fun conclusionToken(context: Context):String {
val prefDoctor: SharedPreferences = context.getSharedPreferences("PATIENT", Context.MODE_PRIVATE)
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()
}
}

View File

@ -0,0 +1,20 @@
package com.example.rehabilitation.Pref
import android.content.Context
import android.content.SharedPreferences
class SavePref (){
fun saveToken(context: Context,token: String) {
val prefPatient: SharedPreferences = context.getSharedPreferences("PATIENT", Context.MODE_PRIVATE)
val edit = prefPatient.edit()
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()
}
}

View File

@ -0,0 +1,19 @@
package com.example.rehabilitation.Progress
data class AfterListModel(
val id: Int,
val one: String,
val two: String,
val thee:String,
val four:String,
val five:String,
val six:String,
val seven:String,
val eight:String,
val nine:String,
val ten:String,
val eleven:String,
val twelve:String,
val date:String,
)

View File

@ -0,0 +1,18 @@
package com.example.rehabilitation.Progress
data class BeforeListModel(
val id: Int,
val one: String,
val two: String,
val thee:String,
val four:String,
val five:String,
val six:String,
val seven:String,
val eight:String,
val nine:String,
val date:String,
)

View File

@ -0,0 +1,202 @@
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
import android.view.LayoutInflater
import android.view.View
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.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 kotlin.concurrent.fixedRateTimer
class ProgresFragment : Fragment() {
private lateinit var binding: FragmentProgresBinding
private val model: MainViewModel by activityViewModels()//Инициализировали класс
//Хранинение токена
private var prefToken: SharedPreferences? = null
private var Token = ""
private lateinit var patientApi: PatientApi
lateinit var adapterProgress: ProgressAdapter
var view_progress = false
val prefPatientConclusion = ConclusionPref()
var progresList : List<ProgressModel>? = null
//Класс проверки интеренета
val enternetCheck = EnternetCheck()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentProgresBinding.inflate(layoutInflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
prefToken = activity?.getSharedPreferences("token", Context.MODE_PRIVATE)
Token = prefToken?.getString("token", "")!!
model.liveProgressCheckList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
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()
ProgressPatientCourses()
// fixedRateTimer("timer", false, 0, 10000) {
// activity?.runOnUiThread {
// ProgressPatientCourses()
// }
// }
binding.button7.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()
?.replace(R.id.placeHolderFragment, SceduleFragment.newInstance())?.commit()
}
}
//Функция получения данных для заполнения списка прогресса
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)
}
//Вывод прогресса пациента
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 {
//Фиксируем полученные данные
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)
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(
requireContext(),
LinearLayoutManager.VERTICAL,
false
)//По вертикали будет выводить по умолчанию
adapterProgress = ProgressAdapter()
rcViewProgress.adapter = adapterProgress
}
fun visible1() {
binding.CLMainProgres.visibility = View.VISIBLE
binding.CLLoad.visibility = View.GONE
}
fun visibleLoad() {
binding.CLMainProgres.visibility = View.GONE
binding.CLLoad.visibility = View.VISIBLE
}
companion object {
fun newInstance() = ProgresFragment()
}
}

View File

@ -0,0 +1,76 @@
package com.example.rehabilitation.Progress
import android.annotation.SuppressLint
import android.graphics.Color
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.RcItemProgressBinding
class ProgressAdapter() : ListAdapter<ProgressModel, ProgressAdapter.Holder>(Comparator()) {//Productitem - по этой форме будем заполнять.//ProductAdapter.holder - это создаваемый holder который хранит логику как нужно заполнять карточку
//В holder создаетс код с помошью которого мы будем заполнять и сохронять разметку
class Holder(view: View) :
RecyclerView.ViewHolder(view) {//Класс который будет хранить сссылки на элементы, и отвечает за один элемент за 1 раз, то есть сначсало нулевой элемент заполнит, потом первый, потом второй и т.д.
//Для передачи данных
val binding =
RcItemProgressBinding.bind(view)//view - здесь храянтся элементы и мы их bind заполним в ListItemBinding//ListItemBinding - это клласс даннйо разметки(карточки) которую мы будем заполнять, а нужна дання переменная(binding), чтобы мжно было при заполнение обращатся к элементам карточки
var itemTemp: ProgressModel? =
null//Глобальная переменная для нашего item, чтобы можно было передать данные для нажатия
@SuppressLint("SuspiciousIndentation", "SetTextI18n")
fun bind(item: ProgressModel) = with(binding) {//Productitem - перпедаем данные
itemTemp = item
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 {
CardViewDay.setCardBackgroundColor(Color.parseColor("#98EA88"))
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.rc_item_progress, parent, false)//Создаем(надуваем) list_item
return Holder(view)//Через Holder возврощаем view
}
override fun onBindViewHolder(holder: Holder, position: Int) {
val view = holder.bind(getItem(position))//Заполняем по позиции карточку
}
//Comparator - сравнивает старый список и новый и если что-то изменилось, то работает с конкретным изменением списке, а не весь список переписывает
class Comparator : DiffUtil.ItemCallback<ProgressModel>() {
override fun areItemsTheSame(
oldItem: ProgressModel,
newItem: ProgressModel
): Boolean {//Тут лучше всего сравнивать по id//oldItem - элементы старого списка, newItem - элементы нового списка//Возврощает Boolean, тоесть есть изменения или нет
return oldItem.id == newItem.id//Сравниваем полностью весь список новы и старый, по очередно по одной карточке и по элементно, то есть нулевой элемент, первый, второй и т.д.. Но лучше сравнивать по id списки, а не просто весь список, так как это эфективнее, так как id уникальный(oldItem.id == newItem.id)
}
override fun areContentsTheSame(
oldItem: ProgressModel,
newItem: ProgressModel
): Boolean {//Утут нужно сравнивать весь спсок старых элементов и новых
return oldItem == newItem//Сравниваем полностью весь список новы и старый
}
}
}

View File

@ -0,0 +1,6 @@
package com.example.rehabilitation.Progress
data class ProgressListModel(
val search_check_sport: List<ProgressModel>,
)

View File

@ -0,0 +1,12 @@
package com.example.rehabilitation.Progress
data class ProgressModel(
val number: Int,
val id: Int,
val day: String,
var count_workout_max: Int,
var count: Int,
val finish: Int,
)

View File

@ -0,0 +1,6 @@
package com.example.rehabilitation.Questionnaire.Model
data class AfterLookModel(
val after_look: Int,
)

View File

@ -0,0 +1,6 @@
package com.example.rehabilitation.Questionnaire.Model
data class AfterQuestionnaireMessage(
val message: Int,
)

View File

@ -0,0 +1,17 @@
package com.example.rehabilitation.Questionnaire.Model
data class AfterQuestionnaireModel(
val one: Int,
val two: Int,
val three: Int,
val four: Int,
val five: Int,
val six: Int,
val seven: Int,
val eight: Int,
val nine: Int,
val ten: Int,
val eleven: Int,
val twelve: Int,
)

View File

@ -0,0 +1,6 @@
package com.example.rehabilitation.Questionnaire.Model
data class BeforeLookModel(
val before_look: Int,
)

View File

@ -0,0 +1,6 @@
package com.example.rehabilitation.Questionnaire.Model
data class BeforeQuestionnaireMessage(
val message: Int,
)

View File

@ -0,0 +1,14 @@
package com.example.rehabilitation.Questionnaire.Model
data class BeforeQuestionnaireModel(
val one: Int,
val two: Int,
val three: Int,
val four: Int,
val five: Int,
val six: Int,
val seven: Int,
val eight: Int,
val nine: Int,
)

View File

@ -0,0 +1,6 @@
package com.example.rehabilitation.Questionnaire.Model
data class QuestionnaireModel(
val massage: String,
)

View File

@ -0,0 +1,639 @@
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
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.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
import com.example.rehabilitation.Sport.SceduleFragment
import com.example.rehabilitation.databinding.FragmentQAfterBinding
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 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 three = 100
var four =100
var five =100
var six =100
var seven = 100
var eight = 100
var nine = 100
var ten =100
var eleven = 100
var twelve = 100
//Класс проверки интеренета
val enternetCheck = EnternetCheck()
var AfterLook: AfterLookModel? = null
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentQAfterBinding.inflate(layoutInflater, container, false)
return binding.root
}
companion object {
fun newInstance() = QAfterFragment()
}
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()
?.replace(R.id.placeHolderFragment, SceduleFragment.newInstance())?.commit()
}
//Сохраняем результат
binding.btnSaveQuestionnaire.setOnClickListener {
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())
.setTitle("Анкета")
.setMessage("Уверены ли Вы в выбранных ответах на вопросы анкеты? Халатное отношение к вопросам анкеты приведет к блокировке комплекса")
.setNeutralButton("Подтвердить") { dialog, whichButton ->
addQuestionAfter()
}
.setNegativeButton("Отмена") { dialog, whichButton ->
}
.show()
}
else if(one >=6 && three == 0 && six == 1 && eight == 1 && eleven == 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 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() {
val item = AfterQuestionnaireModel(
one,
two,
three,
four,
five,
six,
seven,
eight,
nine,
ten,
eleven,
twelve,
)
AfterQuestionnaire(item)
}
//Инициализация подлючения к серверу
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)
}
//Отправка анкеты ПОСЛЕ
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)
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)
}
}
}
} 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()
buttenAdd2()
buttenAdd3()
buttenAdd4()
buttenAdd5()
buttenAdd6()
buttenAdd7()
buttenAdd8()
buttenAdd9()
buttenAdd10()
buttenAdd11()
buttenAdd12()
}
private fun buttenAdd1() {
binding.CVQ10.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 0
}
binding.CVQ11.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 1
}
binding.CVQ12.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 2
}
binding.CVQ13.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 3
}
binding.CVQ14.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ110.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 4
}
binding.CVQ15.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ110.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 5
}
binding.CVQ16.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ110.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 6
}
binding.CVQ17.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ110.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 7
}
binding.CVQ18.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ110.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 8
}
binding.CVQ19.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ110.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 9
}
binding.CVQ110.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ110.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
one = 10
}
}
private fun buttenAdd2() {
binding.CVQyes2.setOnClickListener {
binding.CVQyes2.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno2.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
two = 1
}
binding.CVQno2.setOnClickListener {
binding.CVQyes2.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno2.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
two = 0
}
}
private fun buttenAdd3() {
binding.CVQyes3.setOnClickListener {
Log.d("CVQyes3", "CVQyes3")
binding.CVQyes3.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno3.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
three = 1
}
binding.CVQno3.setOnClickListener {
binding.CVQyes3.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno3.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
three = 0
}
}
private fun buttenAdd4() {
binding.CVQyes4.setOnClickListener {
binding.CVQyes4.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno4.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
four = 1
}
binding.CVQno4.setOnClickListener {
binding.CVQyes4.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno4.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
four = 0
}
}
private fun buttenAdd5() {
binding.CVQyes5.setOnClickListener {
binding.CVQyes5.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno5.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
five = 1
}
binding.CVQno5.setOnClickListener {
binding.CVQyes5.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno5.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
five = 0
}
}
private fun buttenAdd6() {
binding.CVQyes6.setOnClickListener {
binding.CVQyes6.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno6.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
six = 1
}
binding.CVQno6.setOnClickListener {
binding.CVQyes6.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno6.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
six =0
}
}
private fun buttenAdd7() {
binding.CVQyes7.setOnClickListener {
binding.CVQyes7.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno7.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
seven = 1
}
binding.CVQno7.setOnClickListener {
binding.CVQyes7.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno7.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
seven =0
}
}
private fun buttenAdd8() {
binding.CVQyes8.setOnClickListener {
binding.CVQyes8.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno8.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
eight = 1
}
binding.CVQno8.setOnClickListener {
binding.CVQyes8.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno8.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
eight = 0
}
}
private fun buttenAdd9() {
binding.CVQyes9.setOnClickListener {
binding.CVQyes9.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno9.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
nine = 1
}
binding.CVQno9.setOnClickListener {
binding.CVQyes9.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno9.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
nine = 0
}
}
private fun buttenAdd10() {
binding.CVQyes10.setOnClickListener {
binding.CVQyes10.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
ten = 1
}
binding.CVQno10.setOnClickListener {
binding.CVQyes10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno10.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
ten = 0
}
}
private fun buttenAdd11() {
binding.CVQyes11.setOnClickListener {
binding.CVQyes11.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
eleven = 1
}
binding.CVQno11.setOnClickListener {
binding.CVQyes11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno11.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
eleven = 0
}
}
private fun buttenAdd12() {
binding.CVQyes12.setOnClickListener {
binding.CVQyes12.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
twelve = 1
}
binding.CVQno12.setOnClickListener {
binding.CVQyes12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno12.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
twelve = 0
}
}
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)
// QB?.apply()
// }
}

View File

@ -0,0 +1,612 @@
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
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.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.BeforeLookModel
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.databinding.FragmentQBeforeBinding
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.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 three = 100
var four = 100
var five = 100
var six = 100
var seven = 100
var eight = 100
var nine = 100
var calendareDate = false
var countDay = 0
//Для разрешения проверки количества дней
var lookDateSportMax = false
//Класс проверки интеренета
val enternetCheck = EnternetCheck()
var BeforeLook: BeforeLookModel? = null
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
// Inflate the layout for this fragment
binding = FragmentQBeforeBinding.inflate(layoutInflater, container, false)
return binding.root
}
companion object {
fun newInstance() = QBeforeFragment()
}
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()
?.replace(R.id.placeHolderFragment, SceduleFragment.newInstance())?.commit()
}
//Сохраняем результат
binding.btnSaveQuestionnaire.setOnClickListener {
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("Анкета")
.setMessage("Уверены ли Вы в выбранных ответах на вопросы анкеты? Халатное отношение к вопросам анкеты приведет к блокировке комплекса")
.setNeutralButton("Подтвердить") { dialog, whichButton ->
addQuestionnaire()
}
.setNegativeButton("Отмена") { dialog, whichButton ->
}.show()
}
else if(four == 1 && five == 1 && six == 1 && seven == 1 && nine == 1){
AlertDialog.Builder(requireContext())
.setTitle("Анкета")
.setMessage("Уверены ли Вы в выбранных ответах на вопросы анкеты? Халатное отношение к вопросам анкеты приведет к паузе комплекса")
.setNeutralButton("Подтвердить") { dialog, whichButton ->
addQuestionnaire()
}
.setNegativeButton("Отмена") { dialog, whichButton ->
}.show()
}
else{
addQuestionnaire()
}
} else {
Toast(requireContext()).showCustomInfoToast(
"Не все пункты выбраны",
requireActivity()
)
}
}
// fixedRateTimer("timer", false, 0, 10000) {
// activity?.runOnUiThread {
//
// }
// }
}
//Функция
fun addQuestionnaire(){
val item = BeforeQuestionnaireModel(
one,
two,
three,
four,
five,
six,
seven,
eight,
nine,
)
BeforeQuestionnaire(item)
}
//Инициализация подлючения к серверу
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)
}
//Отправка запроса
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)
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)
}
}
}
} 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()
buttenAdd1_2()
buttenAdd2()
buttenAdd3()
buttenAdd4()
buttenAdd5()
buttenAdd6()
buttenAdd7()
buttenAdd8()
buttenAdd9()
}
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 {
binding.CLQ112.visibility = View.VISIBLE
binding.CVQyes1.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno1.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
}
binding.CVQno1.setOnClickListener {
binding.CLQ112.visibility = View.GONE
binding.CVQyes1.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno1.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
one = 0
}
}
private fun buttenAdd1_2() {
binding.CVQ10.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 0
}
binding.CVQ11.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 1
}
binding.CVQ12.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 2
}
binding.CVQ13.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 3
}
binding.CVQ14.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ110.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 4
}
binding.CVQ15.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ110.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 5
}
binding.CVQ16.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ110.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 6
}
binding.CVQ17.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ110.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 7
}
binding.CVQ18.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ110.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 8
}
binding.CVQ19.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQ110.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
one = 9
}
binding.CVQ110.setOnClickListener {
binding.CVQ10.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ11.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ12.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ13.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ14.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ15.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ16.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ17.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ18.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ19.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQ110.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
one = 10
}
}
private fun buttenAdd2() {
binding.CVQyes2.setOnClickListener {
binding.CVQyes2.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno2.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
two = 1
}
binding.CVQno2.setOnClickListener {
binding.CVQyes2.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno2.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
two = 0
}
}
private fun buttenAdd3() {
binding.CVQyes3.setOnClickListener {
binding.CVQyes3.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno3.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
three = 1
}
binding.CVQno3.setOnClickListener {
binding.CVQyes3.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno3.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
three = 0
}
}
private fun buttenAdd4() {
binding.CVQyes4.setOnClickListener {
binding.CVQyes4.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno4.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
four = 1
}
binding.CVQno4.setOnClickListener {
binding.CVQyes4.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno4.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
four = 0
}
}
private fun buttenAdd5() {
binding.CVQyes5.setOnClickListener {
binding.CVQyes5.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno5.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
five = 1
}
binding.CVQno5.setOnClickListener {
binding.CVQyes5.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno5.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
five = 0
}
}
private fun buttenAdd6() {
binding.CVQyes6.setOnClickListener {
binding.CVQyes6.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno6.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
six = 1
}
binding.CVQno6.setOnClickListener {
binding.CVQyes6.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno6.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
six = 0
}
}
private fun buttenAdd7() {
binding.CVQyes7.setOnClickListener {
binding.CVQyes7.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno7.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
seven = 1
}
binding.CVQno7.setOnClickListener {
binding.CVQyes7.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno7.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
seven = 0
}
}
private fun buttenAdd8() {
binding.CVQyes8.setOnClickListener {
binding.CVQyes8.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno8.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
eight = 1
}
binding.CVQno8.setOnClickListener {
binding.CVQyes8.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno8.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
eight = 0
}
}
private fun buttenAdd9() {
binding.CVQyes9.setOnClickListener {
binding.CVQyes9.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
binding.CVQno9.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
nine = 1
}
binding.CVQno9.setOnClickListener {
binding.CVQyes9.setCardBackgroundColor(Color.parseColor("#A8A8A8"))
binding.CVQno9.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
nine = 0
}
}
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()
}
}
}
}

View File

@ -0,0 +1,178 @@
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
import com.example.rehabilitation.Sport.DayListModel
import com.example.rehabilitation.Sport.DayModel
import com.example.rehabilitation.Sport.SportDayOneModel
import com.example.rehabilitation.Sport.SportForDayListModel
import com.example.rehabilitation.Sport.SportForDayModel
import com.example.rehabilitation.Sport.SportListModel
import com.example.rehabilitation.Sport.UpdateSportTrueFalseModel
import com.example.rehabilitation.Sport.ViewFragmentModel
import com.example.rehabilitation.Sport.ViewVisibleModel
import retrofit2.Response
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.Header
import retrofit2.http.Headers
import retrofit2.http.POST
import retrofit2.http.PUT
import retrofit2.http.Query
interface PatientApi {
//Проверка токена
@Headers("Content-Type: application/json")
@GET("CheckTokenPatient")
suspend fun CheckToken(@Header("Authorization") token:String) :Response<CheckTokenModel>
//Авторизация
@Headers("Content-Type: application/json")
@POST("LoginPatient")
suspend fun LoginPatient(@Body authModel: AuthModel): Response<UserModel>
//Выход из аккаунта
@Headers("Content-Type: application/json")
@POST("LogoutPatient")
suspend fun LogoutPatient(@Header("Authorization") token:String):Response<MessageModel>
//Заполнение анкеты ДО
@Headers("Content-Type: application/json")
@POST("AddBeforeQuestionnaire2")
suspend fun AddBeforeQuestionnaire2(@Header("Authorization") token:String,@Body beforeQuestionnaireModel: BeforeQuestionnaireModel): Response<MessageModel>
//Заполнение анкеты ПОСЛЕ
@Headers("Content-Type: application/json")
@POST("AddAfterQuestionnaire2")
suspend fun AddAfterQuestionnaire2(@Header("Authorization") token:String,@Body afterQuestionnaireModel: AfterQuestionnaireModel) : Response<MessageModel>
//Добавление курса на сегодня
@Headers("Content-Type: application/json")
@POST("AddCourses2")
suspend fun AddCourses2(@Header("Authorization") token:String)
//Вывод списка спортивных задания на 1 день
@Headers("Content-Type: application/json")
@GET("CoutSportCourses")
suspend fun CoutSportCourses(@Header("Authorization") token:String)
//Вывод нужного экрана
@Headers("Content-Type: application/json")
@GET("VisibleView3")
suspend fun VisibleView3(@Header("Authorization") token:String) :Response<ViewVisibleModel>
//Вывод календаря
@Headers("Content-Type: application/json")
@GET("PatientCalendareDay")
suspend fun PatientCalendareDay(@Header("Authorization") token:String):Response<CalendareListModel>
//Вывод списка упражнений
@Headers("Content-Type: application/json")
@GET("GetSportDay")
suspend fun GetSportDay(@Header("Authorization") token:String):Response<SportForDayListModel>
//Вывод определенного упражнения
@Headers("Content-Type: application/json")
@GET("GetSportDayOne")
suspend fun GetSportDayOne(@Header("Authorization") token:String,@Query("id") id:Int):Response<SportDayOneModel>
//Подтвержденеи упражнения
@Headers("Content-Type: application/json")
@PUT("AddSportCheck")
suspend fun AddSportCheck(@Header("Authorization") token:String,@Query("id") id:Int, @Query("check") check:Int):Response<MessageModel>
//Список прогресса по дням
@Headers("Content-Type: application/json")
@GET("ProgressPatientCourses")
suspend fun ProgressPatientCourses(@Header("Authorization") token:String):Response<ProgressListModel>
//Вывод необработанных сообщений
@Headers("Content-Type: application/json")
@GET("GetAppealsPatientNew")
suspend fun GetAppealsPatientNew(@Header("Authorization") token:String) :Response<AppealsNewListModel>
//Вывод необработанных сообщений
@Headers("Content-Type: application/json")
@GET("GetAppealsPatientOld")
suspend fun GetAppealsPatientOld(@Header("Authorization") token:String) :Response<AppealsOldListModel>
//Подтверждение необработанных сообщений
@Headers("Content-Type: application/json")
@PUT("UpdateMessagePatient")
suspend fun UpdateMessagePatient(@Header("Authorization") token:String,@Query("id") id:Int) :Response<MessageModel>
//Отправка сообщения пациенту
@Headers("Content-Type: application/json")
@POST("AddMessagePatient")
suspend fun AddMessagePatient(@Header("Authorization") token:String, @Query("text") text:String) :Response<MessageModel>
//Вывод есть ли анкета ДО
@Headers("Content-Type: application/json")
@GET("LookBefore")
suspend fun LookBefore(@Header("Authorization") token:String) :Response<BeforeLookModel>
//Вывод есть ли анкета ПОСЛЕ
@Headers("Content-Type: application/json")
@GET("LookAfter")
suspend fun LookAfter(@Header("Authorization") token:String) :Response<AfterLookModel>
//Вывод есть ли анкета ПОСЛЕ
@Headers("Content-Type: application/json")
@GET("GetCalendare")
suspend fun GetCalendare(@Header("Authorization") token:String) :Response<CalendareListModel>
}

View File

@ -0,0 +1,173 @@
package com.example.rehabilitation.Setting
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.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
import com.example.rehabilitation.Pref.ConclusionPref
import com.example.rehabilitation.R
import com.example.rehabilitation.Retrofit.PatientApi
import com.example.rehabilitation.databinding.FragmentSettingBinding
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 SettingFragment : Fragment() {
private lateinit var binding: FragmentSettingBinding
private var Token = ""
val prefPatientClear = ClearPref()
val prefPatientConclusion = ConclusionPref()
private lateinit var patientApi: PatientApi
//Класс проверки интеренета
val enternetCheck = EnternetCheck()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentSettingBinding.inflate(layoutInflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
if (isAdded()) {
binding.btnExitSetting.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()
?.replace(R.id.CLMain, MainFragment.newInstance())
//?.addToBackStack(null)
?.commit()
}
binding.cvFeedback.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()
?.replace(R.id.CLMain, FeedbackFragment.newInstance())
//?.addToBackStack(null)
?.commit()
}
//Выход из аккаунта
binding.cvExitPatient.setOnClickListener {
createAlеrtDialogExitAuth()
}
}
}
//Диалоговое окно
private fun createAlеrtDialogExitAuth() {
val builder = AlertDialog.Builder(requireContext())
builder.setTitle("Выход")
builder.setMessage("Вы уверены что хотите выйти из аккаунта")
builder.setNegativeButton("Назад") { dialogInterface, i ->
}
builder.setPositiveButton("Подтвердить") { dialogInterface, i ->
Logout()
}
builder.show()
}
//Инициализация подлючения к серверу
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)
}
//Получения списка пациентов
fun Logout() {
if (enternetCheck.isOnline(requireContext())) {
initRetrofit()
val Tokens = prefPatientConclusion.conclusionToken(requireContext())
CoroutineScope(Dispatchers.IO).launch {
val listProduct = patientApi.LogoutPatient("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) {
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 {
fun newInstance() = SettingFragment()
}
}

View File

@ -1,51 +0,0 @@
package com.example.rehabilitation
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.rehabilitation.Admin.activityAdmin.FeedbackActivity
import com.example.rehabilitation.Admin.activityAdmin.StatisticsActivity
import com.example.rehabilitation.Admin.activityAdmin.UserSettingActivity
import com.example.rehabilitation.databinding.ActivitySettingBinding
import com.example.rehabilitation.Admin.fragmrntAdmin.FeedbackFragment
import com.example.rehabilitation.Admin.fragmrntAdmin.MainSettingFragment
import com.example.rehabilitation.Admin.fragmrntAdmin.StatisticsFragment
import com.example.rehabilitation.Admin.fragmrntAdmin.UserSettingFragment
class SettingActivity : AppCompatActivity() {
private lateinit var binding: ActivitySettingBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySettingBinding.inflate(layoutInflater)
setContentView(binding.root)
// //Выводим фрагмент как экран
// supportFragmentManager.beginTransaction()
// .replace(R.id.CLMainSetting, MainSettingFragment.newInstance())
// .commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
binding.btnExitSetting.setOnClickListener {
finish()
}
binding.cvSettingUser.setOnClickListener{
val intent = Intent(this, UserSettingActivity::class.java)
startActivity(intent)
}
binding.cvFeedback.setOnClickListener{
val intent = Intent(this, FeedbackActivity::class.java)
startActivity(intent)
}
binding.cvStatistics.setOnClickListener{
val intent = Intent(this, StatisticsActivity::class.java)
startActivity(intent)
}
}
}

View File

@ -1,5 +1,8 @@
package com.example.rehabilitation.dip.Day
package com.example.rehabilitation.Sport
import android.annotation.SuppressLint
import android.graphics.Color
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@ -7,11 +10,10 @@ 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.RcItemBinding
import com.example.rehabilitation.databinding.RcItemDayBinding
class DayAdapter(val listener_zakaz: Listener) : ListAdapter<DayModel, DayAdapter.Holder>(
class DayAdapter(val listener_zakaz: Listener) : ListAdapter<SportForDayModel, DayAdapter.Holder>(
Comparator()
) {//Productitem - по этой форме будем заполнять.//ProductAdapter.holder - это создаваемый holder который хранит логику как нужно заполнять карточку
@ -22,28 +24,67 @@ class DayAdapter(val listener_zakaz: Listener) : ListAdapter<DayModel, DayAdapte
val binding = RcItemDayBinding.bind(view)//view - здесь храянтся элементы и мы их bind заполним в ListItemBinding//ListItemBinding - это клласс даннйо разметки(карточки) которую мы будем заполнять, а нужна дання переменная(binding), чтобы мжно было при заполнение обращатся к элементам карточки
var itemTemp: DayModel? = null//Глобальная переменная для нашего item, чтобы можно было передать данные для нажатия
var itemTemp: SportForDayModel? = null//Глобальная переменная для нашего item, чтобы можно было передать данные для нажатия
//init - дает возможность внутри адаптера обращаться к элементам экрана
init {
itemView.setOnClickListener {//Нажатие на ячейку//itemView - это весь элемент карточки из списка
itemTemp?.let { it1 -> listener_zakaz.onClickDay(it1) }
//itemView.setEnabled(false)
//timerButtonDoubleButton(itemView)
itemTemp?.let { it1 -> listener_zakaz.onClickSport(it1) }
}
}
//Функция bind для заполнения
fun bind(item: DayModel) = with(binding) {//Productitem - перпедаем данные
// //Функция bind для заполнения
//
// //ЗАдержка нажатия на кнопку
// private fun timerButtonDoubleButton(btn: View){
// val updateHandler = Handler()
//
// val runnable = Runnable {
// btn.setEnabled(true)
// }
//
// updateHandler.postDelayed(runnable, 5000)
// }
@SuppressLint("SuspiciousIndentation")
fun bind(item: SportForDayModel) = with(binding) {//Productitem - перпедаем данные
itemTemp = item
//txtName.text = item.name
//txtCount.text = item.count
//txtImage.text = item.image
txtName.text = item.number
txtDay.text = item.day
txtName.text = item.number.toString()
//txtDay.text = item.day
Log.i("asdasdasd",item.category[0].toString())
val category = item.category[0].toString()
if (category == "c"){
binding.imageSport.setImageResource(R.drawable.c_sport)
}
else if (category == "b"){
binding.imageSport.setImageResource(R.drawable.b_sport)
}
else if (category == "j"){
binding.imageSport.setImageResource(R.drawable.j_sport)
}
if(item.finish.toInt() == 0){
binding.CardViewDay.setCardBackgroundColor(Color.parseColor("#3AB0FF"))
}
else if(item.finish.toInt() == 1) {
binding.CardViewDay.setCardBackgroundColor(Color.parseColor("#98EA88"))
}
else if(item.finish.toInt() == 2){
binding.CardViewDay.setCardBackgroundColor(Color.parseColor("#A68C78"))
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.rc_item_day, parent, false)//Создаем(надуваем) list_item
return Holder(view, listener_zakaz)//Через Holder возврощаем view
@ -55,19 +96,19 @@ class DayAdapter(val listener_zakaz: Listener) : ListAdapter<DayModel, DayAdapte
//Comparator - сравнивает старый список и новый и если что-то изменилось, то работает с конкретным изменением списке, а не весь список переписывает
class Comparator : DiffUtil.ItemCallback<DayModel>() {
override fun areItemsTheSame(oldItem: DayModel, newItem: DayModel): Boolean {//Тут лучше всего сравнивать по id//oldItem - элементы старого списка, newItem - элементы нового списка//Возврощает Boolean, тоесть есть изменения или нет
class Comparator : DiffUtil.ItemCallback<SportForDayModel>() {
override fun areItemsTheSame(oldItem: SportForDayModel, newItem: SportForDayModel): Boolean {//Тут лучше всего сравнивать по id//oldItem - элементы старого списка, newItem - элементы нового списка//Возврощает Boolean, тоесть есть изменения или нет
return oldItem.id == newItem.id//Сравниваем полностью весь список новы и старый, по очередно по одной карточке и по элементно, то есть нулевой элемент, первый, второй и т.д.. Но лучше сравнивать по id списки, а не просто весь список, так как это эфективнее, так как id уникальный(oldItem.id == newItem.id)
}
override fun areContentsTheSame(oldItem: DayModel, newItem: DayModel): Boolean {//Утут нужно сравнивать весь спсок старых элементов и новых
override fun areContentsTheSame(oldItem: SportForDayModel, newItem: SportForDayModel): Boolean {//Утут нужно сравнивать весь спсок старых элементов и новых
return oldItem == newItem//Сравниваем полностью весь список новы и старый
}
}
//Интерфейс нажатия на кнопку удалить товар из корзины
interface Listener {
fun onClickDay(item: DayModel)
fun onClickSport(item: SportForDayModel)
}

Some files were not shown because too many files have changed in this diff Show More