Compare commits
10 Commits
2293d1f5cf
...
d73a729b43
Author | SHA1 | Date |
---|---|---|
Clogon | d73a729b43 | |
Clogon | 99382de238 | |
Clogon | 3310ed1ca6 | |
Clogon | be10c582d1 | |
Clogon | c0cd60a9df | |
Clogon | 15e5fd32af | |
Clogon | eaac38ae3c | |
Clogon | 403fa40ece | |
Clogon | 8aeafa4a7f | |
Clogon | 6ea44be0cb |
|
@ -7,11 +7,11 @@
|
||||||
<deviceKey>
|
<deviceKey>
|
||||||
<Key>
|
<Key>
|
||||||
<type value="VIRTUAL_DEVICE_PATH" />
|
<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>
|
</Key>
|
||||||
</deviceKey>
|
</deviceKey>
|
||||||
</Target>
|
</Target>
|
||||||
</targetSelectedWithDropDown>
|
</targetSelectedWithDropDown>
|
||||||
<timeTargetWasSelectedWithDropDown value="2023-06-29T21:09:23.650986100Z" />
|
<timeTargetWasSelectedWithDropDown value="2023-11-28T12:28:18.723737700Z" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
|
@ -8,7 +8,7 @@
|
||||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
<option name="gradleHome" value="$PROJECT_DIR$/../../../../Gradle/gradle-8.2" />
|
<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">
|
<option name="modules">
|
||||||
<set>
|
<set>
|
||||||
<option value="$PROJECT_DIR$" />
|
<option value="$PROJECT_DIR$" />
|
||||||
|
|
|
@ -1,9 +1,16 @@
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
<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" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
<option name="id" value="Android" />
|
<option name="id" value="Android" />
|
||||||
</component>
|
</component>
|
||||||
|
<component name="VisualizationToolProject">
|
||||||
|
<option name="state">
|
||||||
|
<ProjectState>
|
||||||
|
<option name="scale" value="0.33" />
|
||||||
|
</ProjectState>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
</project>
|
</project>
|
|
@ -1,8 +1,8 @@
|
||||||
plugins {
|
plugins {
|
||||||
|
id 'kotlin-kapt'
|
||||||
id 'com.android.application'
|
id 'com.android.application'
|
||||||
id 'org.jetbrains.kotlin.android'
|
id 'org.jetbrains.kotlin.android'
|
||||||
id 'kotlin-kapt'
|
id 'com.google.gms.google-services'
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
|
@ -41,11 +41,12 @@ dependencies {
|
||||||
implementation 'androidx.room:room-ktx:2.5.2'
|
implementation 'androidx.room:room-ktx:2.5.2'
|
||||||
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1'
|
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1'
|
||||||
implementation 'androidx.lifecycle:lifecycle-viewmodel-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 '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.core:core-ktx:1.7.0'
|
||||||
implementation 'androidx.appcompat:appcompat:1.6.1'
|
implementation 'androidx.appcompat:appcompat:1.6.1'
|
||||||
implementation 'com.google.android.material:material:1.9.0'
|
implementation 'com.google.android.material:material:1.9.0'
|
||||||
|
@ -54,4 +55,28 @@ dependencies {
|
||||||
testImplementation 'junit:junit:4.13.2'
|
testImplementation 'junit:junit:4.13.2'
|
||||||
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
|
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
|
||||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
|
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'
|
||||||
|
|
||||||
}
|
}
|
|
@ -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.
|
@ -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"
|
||||||
|
}
|
|
@ -2,32 +2,76 @@
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
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
|
<application
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
android:dataExtractionRules="@xml/data_extraction_rules"
|
android:dataExtractionRules="@xml/data_extraction_rules"
|
||||||
android:fullBackupContent="@xml/backup_rules"
|
android:fullBackupContent="@xml/backup_rules"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher_logov2"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:requestLegacyExternalStorage="true"
|
android:requestLegacyExternalStorage="true"
|
||||||
android:roundIcon="@mipmap/ic_launcher_logo_rehabilitation"
|
android:roundIcon="@mipmap/ic_launcher_logov2"
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/Theme.Rehabilitation"
|
android:theme="@style/Theme.Rehabilitation"
|
||||||
|
android:usesCleartextTraffic="true"
|
||||||
tools:targetApi="31">
|
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
|
<activity
|
||||||
android:name=".Admin.activityAdmin.FeedbackActivity"
|
android:name=".Auth.AuthorizationActivity"
|
||||||
android:exported="false" />
|
android:exported="false">
|
||||||
|
<meta-data
|
||||||
|
android:name="android.app.lib_name"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
android:value="" />
|
||||||
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".Admin.activityAdmin.StatisticsActivity"
|
android:name=".CodeError.Code429Activity"
|
||||||
android:exported="false" />
|
android:exported="false">
|
||||||
|
<meta-data
|
||||||
|
android:name="android.app.lib_name"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
android:value="" />
|
||||||
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".Admin.activityAdmin.UserSettingActivity"
|
android:name=".CodeError.Code500Activity"
|
||||||
android:exported="false" />
|
android:exported="false">
|
||||||
<activity
|
<meta-data
|
||||||
android:name=".SettingActivity"
|
android:name="android.app.lib_name"
|
||||||
android:exported="false" />
|
android:screenOrientation="portrait"
|
||||||
|
android:value="" />
|
||||||
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".MainActivity"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
android:windowSoftInputMode="adjustPan|stateAlwaysHidden">
|
android:windowSoftInputMode="adjustPan|stateAlwaysHidden">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
@ -35,6 +79,15 @@
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".Enternet.EnternetActivity"
|
||||||
|
android:exported="false">
|
||||||
|
<meta-data
|
||||||
|
android:name="android.app.lib_name"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
android:value="" />
|
||||||
|
</activity>
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
Binary file not shown.
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 164 KiB |
|
@ -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]//Возврощаем фрагмент из листа по позиции
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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" +
|
|
||||||
"Со временем все упражнения можно выполнять с утяжелителем."
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -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()
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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()
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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()
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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()
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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()
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -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)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.example.rehabilitation.Appeals.TabLayout.Model
|
||||||
|
|
||||||
|
data class AppealsNewListModel(
|
||||||
|
val appeals_new: List<AppealsNewModel>
|
||||||
|
)
|
||||||
|
|
|
@ -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,
|
||||||
|
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.example.rehabilitation.Appeals.TabLayout.Model
|
||||||
|
|
||||||
|
data class AppealsOldListModel(
|
||||||
|
val appeals_old: List<AppealsOldModel>
|
||||||
|
)
|
||||||
|
|
|
@ -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,
|
||||||
|
|
||||||
|
)
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -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) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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() - это то что мы вставляем
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package com.example.rehabilitation.Auth.Model
|
||||||
|
|
||||||
|
data class AuthModel(
|
||||||
|
val login: String,
|
||||||
|
val password: String,
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
package com.example.rehabilitation.Auth.Model
|
||||||
|
|
||||||
|
data class CheckTokenModel(
|
||||||
|
val status:String,
|
||||||
|
)
|
|
@ -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,
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
package com.example.rehabilitation.Auth.Model
|
||||||
|
|
||||||
|
data class UserModel(
|
||||||
|
val id: String,
|
||||||
|
val token: String,
|
||||||
|
)
|
||||||
|
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -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)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
package com.example.rehabilitation.Calendare
|
||||||
|
|
||||||
|
data class CalendareListModel(
|
||||||
|
val calendare_day: List<CalendareModel>
|
||||||
|
)
|
|
@ -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,
|
||||||
|
)
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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 {
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,17 +3,42 @@ package com.example.rehabilitation
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.util.Log
|
||||||
|
import android.view.View
|
||||||
|
import androidx.activity.viewModels
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import com.example.rehabilitation.User.fragmentUser.CalendarFragment
|
import com.example.rehabilitation.Auth.AuthFragment
|
||||||
import com.example.rehabilitation.User.fragmentUser.HomeFragment
|
import com.example.rehabilitation.Auth.AuthorizationActivity
|
||||||
import com.example.rehabilitation.User.fragmentUser.InformationFragment
|
import com.example.rehabilitation.CodeError.Code429Activity
|
||||||
import com.example.rehabilitation.User.fragmentUser.ProgresFragment
|
import com.example.rehabilitation.CodeError.Code500Activity
|
||||||
import com.example.rehabilitation.User.fragmentUser.SceduleFragment
|
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.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() {
|
class MainActivity : AppCompatActivity() {
|
||||||
private lateinit var binding: ActivityMainBinding
|
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")
|
@SuppressLint("DiscouragedApi")
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
@ -21,28 +46,275 @@ class MainActivity : AppCompatActivity() {
|
||||||
binding = ActivityMainBinding.inflate(layoutInflater)
|
binding = ActivityMainBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
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()
|
fragment_inicializ()
|
||||||
|
|
||||||
/*binding.button.setOnClickListener {
|
// fixedRateTimer("timer", false, 0, 10000) {
|
||||||
val intent = Intent(this,MainActivity2::class.java)//Открытие окна
|
// this@MainActivity.runOnUiThread {
|
||||||
startActivity(intent)
|
// GetVisibleViewList()
|
||||||
}*/
|
// ProgressPatientCourses()
|
||||||
|
// APIliveCountCalendareCurrent()
|
||||||
|
// getNewAppeals()
|
||||||
|
// getOldAppeals()
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
binding.btnSetting.setOnClickListener {
|
@SuppressLint("SuspiciousIndentation")
|
||||||
val intent = Intent(this, SettingActivity::class.java)
|
private fun CheckTokenAuth(token: String) {
|
||||||
startActivity(intent)
|
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.imageView3.resources.getIdentifier("b3_1","drawable",this.packageName);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Инициализируем 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 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() {
|
override fun onDestroy() {
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
|
finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -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()
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.example.rehabilitation
|
||||||
|
|
||||||
|
data class MessageModel(
|
||||||
|
val message: String,
|
||||||
|
)
|
||||||
|
|
|
@ -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>>()
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -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,
|
||||||
|
)
|
||||||
|
|
|
@ -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,
|
||||||
|
|
||||||
|
|
||||||
|
)
|
||||||
|
|
|
@ -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()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -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//Сравниваем полностью весь список новы и старый
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.example.rehabilitation.Progress
|
||||||
|
|
||||||
|
data class ProgressListModel(
|
||||||
|
val search_check_sport: List<ProgressModel>,
|
||||||
|
)
|
||||||
|
|
|
@ -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,
|
||||||
|
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.example.rehabilitation.Questionnaire.Model
|
||||||
|
|
||||||
|
data class AfterLookModel(
|
||||||
|
val after_look: Int,
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.example.rehabilitation.Questionnaire.Model
|
||||||
|
|
||||||
|
data class AfterQuestionnaireMessage(
|
||||||
|
val message: Int,
|
||||||
|
)
|
||||||
|
|
|
@ -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,
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.example.rehabilitation.Questionnaire.Model
|
||||||
|
|
||||||
|
data class BeforeLookModel(
|
||||||
|
val before_look: Int,
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.example.rehabilitation.Questionnaire.Model
|
||||||
|
|
||||||
|
data class BeforeQuestionnaireMessage(
|
||||||
|
val message: Int,
|
||||||
|
)
|
||||||
|
|
|
@ -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,
|
||||||
|
)
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.example.rehabilitation.Questionnaire.Model
|
||||||
|
|
||||||
|
data class QuestionnaireModel(
|
||||||
|
val massage: String,
|
||||||
|
)
|
||||||
|
|
|
@ -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()
|
||||||
|
// }
|
||||||
|
}
|
|
@ -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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -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>
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -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)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -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.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
@ -7,11 +10,10 @@ import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.ListAdapter
|
import androidx.recyclerview.widget.ListAdapter
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.example.rehabilitation.R
|
import com.example.rehabilitation.R
|
||||||
import com.example.rehabilitation.databinding.RcItemBinding
|
|
||||||
import com.example.rehabilitation.databinding.RcItemDayBinding
|
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()
|
Comparator()
|
||||||
) {//Productitem - по этой форме будем заполнять.//ProductAdapter.holder - это создаваемый holder который хранит логику как нужно заполнять карточку
|
) {//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), чтобы мжно было при заполнение обращатся к элементам карточки
|
val binding = RcItemDayBinding.bind(view)//view - здесь храянтся элементы и мы их bind заполним в ListItemBinding//ListItemBinding - это клласс даннйо разметки(карточки) которую мы будем заполнять, а нужна дання переменная(binding), чтобы мжно было при заполнение обращатся к элементам карточки
|
||||||
|
|
||||||
var itemTemp: DayModel? = null//Глобальная переменная для нашего item, чтобы можно было передать данные для нажатия
|
var itemTemp: SportForDayModel? = null//Глобальная переменная для нашего item, чтобы можно было передать данные для нажатия
|
||||||
|
|
||||||
//init - дает возможность внутри адаптера обращаться к элементам экрана
|
//init - дает возможность внутри адаптера обращаться к элементам экрана
|
||||||
init {
|
init {
|
||||||
itemView.setOnClickListener {//Нажатие на ячейку//itemView - это весь элемент карточки из списка
|
itemView.setOnClickListener {//Нажатие на ячейку//itemView - это весь элемент карточки из списка
|
||||||
itemTemp?.let { it1 -> listener_zakaz.onClickDay(it1) }
|
//itemView.setEnabled(false)
|
||||||
|
//timerButtonDoubleButton(itemView)
|
||||||
|
itemTemp?.let { it1 -> listener_zakaz.onClickSport(it1) }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Функция bind для заполнения
|
// //Функция bind для заполнения
|
||||||
fun bind(item: DayModel) = with(binding) {//Productitem - перпедаем данные
|
//
|
||||||
|
// //ЗАдержка нажатия на кнопку
|
||||||
|
// 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
|
itemTemp = item
|
||||||
//txtName.text = item.name
|
//txtName.text = item.name
|
||||||
//txtCount.text = item.count
|
//txtCount.text = item.count
|
||||||
//txtImage.text = item.image
|
//txtImage.text = item.image
|
||||||
txtName.text = item.number
|
txtName.text = item.number.toString()
|
||||||
txtDay.text = item.day
|
//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 {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
|
||||||
val view = LayoutInflater.from(parent.context).inflate(R.layout.rc_item_day, parent, false)//Создаем(надуваем) list_item
|
val view = LayoutInflater.from(parent.context).inflate(R.layout.rc_item_day, parent, false)//Создаем(надуваем) list_item
|
||||||
return Holder(view, listener_zakaz)//Через Holder возврощаем view
|
return Holder(view, listener_zakaz)//Через Holder возврощаем view
|
||||||
|
@ -55,19 +96,19 @@ class DayAdapter(val listener_zakaz: Listener) : ListAdapter<DayModel, DayAdapte
|
||||||
|
|
||||||
|
|
||||||
//Comparator - сравнивает старый список и новый и если что-то изменилось, то работает с конкретным изменением списке, а не весь список переписывает
|
//Comparator - сравнивает старый список и новый и если что-то изменилось, то работает с конкретным изменением списке, а не весь список переписывает
|
||||||
class Comparator : DiffUtil.ItemCallback<DayModel>() {
|
class Comparator : DiffUtil.ItemCallback<SportForDayModel>() {
|
||||||
override fun areItemsTheSame(oldItem: DayModel, newItem: DayModel): Boolean {//Тут лучше всего сравнивать по id//oldItem - элементы старого списка, newItem - элементы нового списка//Возврощает Boolean, тоесть есть изменения или нет
|
override fun areItemsTheSame(oldItem: SportForDayModel, newItem: SportForDayModel): Boolean {//Тут лучше всего сравнивать по id//oldItem - элементы старого списка, newItem - элементы нового списка//Возврощает Boolean, тоесть есть изменения или нет
|
||||||
return oldItem.id == newItem.id//Сравниваем полностью весь список новы и старый, по очередно по одной карточке и по элементно, то есть нулевой элемент, первый, второй и т.д.. Но лучше сравнивать по id списки, а не просто весь список, так как это эфективнее, так как id уникальный(oldItem.id == newItem.id)
|
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//Сравниваем полностью весь список новы и старый
|
return oldItem == newItem//Сравниваем полностью весь список новы и старый
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Интерфейс нажатия на кнопку удалить товар из корзины
|
//Интерфейс нажатия на кнопку удалить товар из корзины
|
||||||
interface Listener {
|
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
Loading…
Reference in New Issue