diff --git a/.gitignore b/.gitignore
index fa886c6..c445869 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,32 +1,16 @@
-# ---> Android
-# Gradle files
-.gradle/
-build/
-
-# Local configuration file (sdk path, etc)
-local.properties
-
-# Log/OS Files
-*.log
-
-# Android Studio generated files and folders
-captures/
-.externalNativeBuild/
-.cxx/
-*.apk
-output.json
-
-# IntelliJ
*.iml
-.idea/
-
-# Keystore files
-*.jks
-*.keystore
-
-# Google Services (e.g. APIs or Firebase)
-google-services.json
-
-# Android Profiling
-*.hprof
-
+.gradle
+.idea
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
+/app/debug
\ No newline at end of file
diff --git a/README.md b/README.md
index a3e1eaf..39af52c 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,29 @@
-# mobile_tele2med_2024
+# README #
-+ mechanic
\ No newline at end of file
+This README would normally document whatever steps are necessary to get your application up and running.
+
+### What is this repository for? ###
+
+* Quick summary
+* Version
+* [Learn Markdown](https://bitbucket.org/tutorials/markdowndemo)
+
+### How do I get set up? ###
+
+* Summary of set up
+* Configuration
+* Dependencies
+* Database configuration
+* How to run tests
+* Deployment instructions
+
+### Contribution guidelines ###
+
+* Writing tests
+* Code review
+* Other guidelines
+
+### Who do I talk to? ###
+
+* Repo owner or admin
+* Other community or team contact
\ No newline at end of file
diff --git a/app/.gitignore b/app/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/app/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/app/build.gradle b/app/build.gradle
new file mode 100644
index 0000000..76223ea
--- /dev/null
+++ b/app/build.gradle
@@ -0,0 +1,316 @@
+apply plugin: 'com.android.application'
+
+apply plugin: 'com.google.gms.google-services'
+
+apply plugin: 'com.google.firebase.appdistribution'
+
+//apply plugin: 'io.fabric'
+
+apply plugin: 'kotlin-android'
+
+apply plugin: 'kotlin-android-extensions'
+
+apply plugin: 'kotlin-kapt'
+
+buildscript {
+ repositories {
+ google()
+ }
+ dependencies {
+ classpath 'com.google.firebase:firebase-appdistribution-gradle:1.3.1'
+ }
+}
+
+android {
+
+ signingConfigs {
+ config {
+ storeFile file('F:\\24marchD\\android\\dev mobile_tele2med\\keystore_tele2med.jks')
+ storePassword '!QAZ2wsx'
+ keyAlias = 'Tele2Med'
+ keyPassword '!QAZ2wsx'
+ }
+ }
+ compileSdkVersion 33
+ buildToolsVersion "29.0.3"
+
+ defaultConfig {
+ applicationId "ru.tele2med.mobile"
+ minSdkVersion 26
+ targetSdkVersion 33
+
+ def appVersionMajor = "1.0"
+ def buildNumber = 16
+ def splash_version = "3.0"
+ def fullVersion = splash_version
+
+ versionCode buildNumber
+ buildConfigField "String", "UNIQ_ID", '"06b2ddef-081d-5258-1eec-be3bea2fc944"'
+ buildConfigField "String", "ORG_INN", '"7709001494"'
+ // buildConfigField "String", "ORGANIZAT", '"ООО \"03 Мед\" ОФИС"'
+
+ versionName fullVersion
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ buildConfigField "String", "API_BASE_URL", '"https://pvdp.tis-online.com/Montrans/api"'
+ buildConfigField "String", "API_VERSION", '"v1"'
+ // buildConfigField "String", "TOKEN_APP", '"28170DFB805E49149FF3CE21E97EA8F4"'
+ buildConfigField "String", "TOKEN_APP", '"1C42561FD40C43C9A01C4523B8A34F8A"'
+ multiDexEnabled true
+ }
+
+ buildTypes {
+ debug {
+ minifyEnabled false
+ debuggable true
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+ firebaseAppDistribution {
+ serviceCredentialsFile = "/home/test/.jenkins/keys/tis-online-9314c-29fc6562a3e9.json"
+ releaseNotes = "Debug version"
+ // testers = "ksenia.pridachina@itbrick.ru,nail.dulkarnaev@itbrick.ru"
+ }
+ }
+ release {
+ minifyEnabled false
+ debuggable false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+ firebaseAppDistribution {
+ serviceCredentialsFile = "/home/test/.jenkins/keys/tis-online-9314c-29fc6562a3e9.json"
+ releaseNotes = "Release version"
+ // testers = "ksenia.pridachina@itbrick.ru,nail.dulkarnaev@itbrick.ru,chulpan@itbrick.ru"
+ }
+ signingConfig signingConfigs.config
+ }
+ }
+
+ compileOptions {
+ sourceCompatibility = '1.8'
+ targetCompatibility = '1.8'
+ }
+
+ kotlinOptions {
+ jvmTarget = JavaVersion.VERSION_1_8
+ }
+ applicationVariants.all { variant ->
+ variant.outputs.all { output ->
+ def project = "tele2med"
+ def SEP = "_"
+ def buildType = variant.buildType.name // variant.variantData.variantConfiguration.buildType.name
+ def version = variant.versionName
+ def date = new Date()
+ def format = variant
+ def formattedDate = date.format('ddMMyy_HHmm')
+ def splash_version = "3.0"
+ def splash_date = "010923_1000"
+ // def newApkName = project + SEP + buildType + SEP + version + SEP + formattedDate + "_" + ".apk"
+ def newApkName = project + SEP + buildType + SEP + splash_version + SEP + splash_date + "_" + ".apk"
+ outputFileName = new File(newApkName)
+ }
+ }
+
+ flavorDimensions "version"
+ productFlavors {
+ prod {
+ dimension "version"
+ buildConfigField "String", "API_BASE_URL", '"https://med.tele2med.ru/api/"'
+ buildConfigField "String", "API_ARM_URL", '"https://med.tele2med.ru/arm/"'
+ buildConfigField "String", "API_QR_URL", '"https://qr.g03.ru/"'
+ buildConfigField "String", "API_RESULT_URL", '"https://qr.g03.ru/qr/"'
+ buildConfigField "String", "API_VERSION", '"v1"'
+ buildConfigField "String", "TOKEN_APP", '"D050DBA2A44A47D2A6058E5275D84541"'
+ buildConfigField "String", "DEMO_UNIQ_ID", '"b160146c-dbf6-4b9f-bc01-31cdf11988ed"'
+ buildConfigField "String", "WSS_URL", '"med.tele2med.ru"'
+
+ }
+ dev {
+ dimension "version"
+ buildConfigField "String", "API_BASE_URL", '"https://devweb.tele2med.ru/api2/"'
+ buildConfigField "String", "API_ARM_URL", '"https://devweb.tele2med.ru/arm/"'
+ buildConfigField "String", "API_QR_URL", '"https://devqr.g03.ru/"'
+ buildConfigField "String", "API_RESULT_URL", '"https://dev.t2m.su/qr/"'
+ buildConfigField "String", "API_VERSION", '"v1"'
+ buildConfigField "String", "TOKEN_APP", '"D050DBA2A44A47D2A6058E5275D84541"'
+ buildConfigField "String", "DEMO_UNIQ_ID", '"b160146c-dbf6-4b9f-bc01-31cdf11988ed"'
+ buildConfigField "String", "WSS_URL", '"devweb.tele2med.ru"'
+ }
+ jooli {
+ dimension "version"
+ buildConfigField "String", "API_BASE_URL", '"https://jooli.tele2med.ru/api/"'
+ buildConfigField "String", "API_ARM_URL", '"https://jooli.tele2med.ru/arm/"'
+ buildConfigField "String", "API_QR_URL", '"https://qr.g03.ru/"'
+ buildConfigField "String", "API_RESULT_URL", '"https://qr.g03.ru/qr/"'
+ buildConfigField "String", "API_VERSION", '"v1"'
+ buildConfigField "String", "TOKEN_APP", '"D050DBA2A44A47D2A6058E5275D84541"'
+ buildConfigField "String", "DEMO_UNIQ_ID", '"028477b3-329e-c4ba-763c-357966f641ae"'
+
+ }
+
+ }
+
+}
+
+
+////////////Version utils///////////////////
+def getVersionNumber() {
+ def versionCode = ""
+ new ByteArrayOutputStream().withStream { os ->
+ exec {
+ executable = 'git'
+ args = ['rev-list', '--count', '--all', 'HEAD']
+ standardOutput = os
+ }
+ versionCode = os.toString()
+ }
+ return versionCode
+}
+
+///////////////////////
+
+repositories {
+ maven {
+ url "http://maven.google.com/"
+ }
+}
+
+dependencies {
+ implementation 'com.jjoe64:graphview:4.2.2'
+ implementation 'com.github.mazenrashed:Printooth:1.3.1' //printer
+ implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
+ implementation 'com.github.DantSu:ESCPOS-ThermalPrinter-Android:3.3.0'
+
+ implementation 'org.java-websocket:Java-WebSocket:1.4.0'
+
+
+ implementation 'com.tom_roush:pdfbox-android:1.8.10.1'
+
+ implementation 'com.github.bumptech.glide:glide:4.12.0'
+ annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
+
+
+ // Barcode scanning API
+ implementation 'com.budiyev.android:code-scanner:2.1.0'
+
+
+ // implementation 'com.google.mlkit:barcode-scanning:17.0.0'
+ implementation 'com.google.android.gms:play-services-mlkit-barcode-scanning:16.2.1'
+
+ // CameraX library
+ def camerax_version = "1.0.1"
+ implementation "androidx.camera:camera-camera2:$camerax_version"
+ implementation "androidx.camera:camera-lifecycle:$camerax_version"
+ implementation "androidx.camera:camera-view:1.0.0-alpha28"
+
+
+ implementation 'org.apache.commons:commons-io:1.3.2'
+ implementation "androidx.browser:browser:1.4.0"
+
+
+ implementation 'com.wesleyelliott:camera2-video:0.0.2'
+
+ implementation project(':library')
+
+ implementation 'com.github.dbof10:Bitmp4:0.1.1'
+ implementation 'androidx.camera:camera-core:1.0.2'
+ annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
+ annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
+ implementation("com.github.bumptech.glide:glide:4.12.0@aar") {
+ transitive = true
+ }
+
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.8"
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.4"
+
+ implementation 'com.google.maps.android:android-maps-utils:0.4+'
+ implementation 'com.google.firebase:firebase-messaging:21.0.1'
+
+ implementation 'joda-time:joda-time:2.9.4'
+
+
+ implementation "androidx.preference:preference-ktx:1.1.0"
+
+ implementation 'org.osmdroid:osmdroid-android:6.1.6'
+ implementation 'com.github.MKergall:osmbonuspack:6.6.0'
+
+ implementation 'io.nlopez.smartlocation:library:3.3.3'
+
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ // Android
+ implementation "androidx.multidex:multidex:$multidex_version"
+ implementation "androidx.appcompat:appcompat:$appcompat_version"
+ implementation "androidx.core:core-ktx:$ktx_version"
+ implementation "androidx.constraintlayout:constraintlayout:$constraint_version"
+
+ // Google
+ implementation "com.google.android.material:material:$material_version"
+ // implementation "com.crashlytics.sdk.android:crashlytics:$crashlytics_version"
+ implementation "com.google.android.gms:play-services-location:$play_services_location_version"
+
+ // Di
+ implementation "org.kodein.di:kodein-di-generic-jvm:$kodein_version"
+ implementation "org.kodein.di:kodein-di-framework-android-x:$kodein_version"
+
+ // Db
+ // Room
+ implementation "androidx.room:room-runtime:$room_version"
+ kapt "androidx.room:room-compiler:$room_version"
+ implementation "androidx.room:room-rxjava2:$room_version"
+
+ // Architecture
+ // Moxy
+ kapt "tech.schoolhelper:moxy-x-compiler:$moxy_version"
+ implementation "tech.schoolhelper:moxy-x:$moxy_version"
+ implementation "tech.schoolhelper:moxy-x-androidx:$moxy_version"
+
+ // Rx
+ implementation "io.reactivex.rxjava2:rxkotlin:$rx_kotlin_version"
+ implementation "io.reactivex.rxjava2:rxandroid:$rx_android_version"
+ implementation "io.reactivex.rxjava2:rxjava:$rx_java_version"
+ implementation "com.jakewharton.rxrelay2:rxrelay:$rx_relay_version"
+
+ // Network
+ // OkHttp
+ implementation "com.squareup.okhttp3:okhttp:$okhttp_version"
+ implementation "com.squareup.okhttp3:logging-interceptor:$okhttp_version"
+ // Retrofit
+ implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
+ implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofit_version"
+ implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
+ // Picasso
+ implementation "com.squareup.picasso:picasso:$picasso_version"
+ implementation "jp.wasabeef:picasso-transformations:$picasso_transf_version"
+
+ // Navigation
+ // Cicerone
+ implementation "ru.terrakok.cicerone:cicerone:$cicerone_version"
+
+ // Ui
+ implementation "com.github.santalu:mask-edittext:$santalu_mask_et_version"
+ implementation "com.poovam:pin-edittext-field:$poovam_pin_et_version"
+ implementation "net.cachapa.expandablelayout:expandablelayout:$cachapa_explayout_version"
+
+ // Anko
+ implementation "org.jetbrains.anko:anko-commons:$anko_version"
+
+ // Debug
+ // Logging
+ implementation "com.jakewharton.timber:timber:$timber_version"
+ // Debug Drawer
+ debugImplementation "io.palaima.debugdrawer:debugdrawer:$debugdrawer_version"
+ implementation "io.palaima.debugdrawer:debugdrawer-base:$debugdrawer_version"
+ implementation "io.palaima.debugdrawer:debugdrawer-timber:$debugdrawer_version"
+ implementation "io.palaima.debugdrawer:debugdrawer-okhttp3:$debugdrawer_version"
+ implementation "io.palaima.debugdrawer:debugdrawer-logs:$debugdrawer_version"
+ debugImplementation "com.readystatesoftware.chuck:library:$chuck_version"
+ implementation "com.github.pedrovgs:lynx:$lynx_version"
+
+ // Tests
+ testImplementation "io.mockk:mockk:$mockk_version"
+ testImplementation "org.junit.jupiter:junit-jupiter-api:$junit_version"
+ testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junit_version"
+ androidTestImplementation "androidx.test.ext:junit:$junit_ext_version"
+ androidTestImplementation "androidx.test.espresso:espresso-core:$espresso_version"
+ implementation 'com.google.android.gms:play-services-maps:17.0.0'
+
+}
+
diff --git a/app/google-services.json b/app/google-services.json
new file mode 100644
index 0000000..c5e14cc
--- /dev/null
+++ b/app/google-services.json
@@ -0,0 +1,98 @@
+{
+ "project_info": {
+ "project_number": "162196473888",
+ "firebase_url": "https://tis-online-9314c.firebaseio.com",
+ "project_id": "tis-online-9314c",
+ "storage_bucket": "tis-online-9314c.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:162196473888:android:ba797587f3160192185445",
+ "android_client_info": {
+ "package_name": "ru.tele2med.mobile"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "162196473888-heoug9atjihs7vp8ii8du9qq0323l5me.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyClciynYDdN3mmd9FWWC9xk3-u-toMqJ2Q"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "162196473888-heoug9atjihs7vp8ii8du9qq0323l5me.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ]
+ }
+ }
+ },
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:162196473888:android:fd81480a21fe4096185445",
+ "android_client_info": {
+ "package_name": "com.tisonline.tis_taxi"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "162196473888-heoug9atjihs7vp8ii8du9qq0323l5me.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyClciynYDdN3mmd9FWWC9xk3-u-toMqJ2Q"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "162196473888-heoug9atjihs7vp8ii8du9qq0323l5me.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ]
+ }
+ }
+ },
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:162196473888:android:741df14cea37a057185445",
+ "android_client_info": {
+ "package_name": "com.tisonline.tis_user"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "162196473888-heoug9atjihs7vp8ii8du9qq0323l5me.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyClciynYDdN3mmd9FWWC9xk3-u-toMqJ2Q"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "162196473888-heoug9atjihs7vp8ii8du9qq0323l5me.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
new file mode 100644
index 0000000..6e7ffa9
--- /dev/null
+++ b/app/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/app/src/dev/res/drawable-v24/ic_launcher_foreground.xml b/app/src/dev/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..eabde77
--- /dev/null
+++ b/app/src/dev/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/dev/res/drawable/arrow.png b/app/src/dev/res/drawable/arrow.png
new file mode 100644
index 0000000..33dba8b
Binary files /dev/null and b/app/src/dev/res/drawable/arrow.png differ
diff --git a/app/src/dev/res/drawable/ic_launcher_foreground.xml b/app/src/dev/res/drawable/ic_launcher_foreground.xml
new file mode 100644
index 0000000..18bb1d5
--- /dev/null
+++ b/app/src/dev/res/drawable/ic_launcher_foreground.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/dev/res/drawable/ic_logo.xml b/app/src/dev/res/drawable/ic_logo.xml
new file mode 100644
index 0000000..a5b8c9b
--- /dev/null
+++ b/app/src/dev/res/drawable/ic_logo.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/dev/res/drawable/people.png b/app/src/dev/res/drawable/people.png
new file mode 100644
index 0000000..ec111ed
Binary files /dev/null and b/app/src/dev/res/drawable/people.png differ
diff --git a/app/src/dev/res/drawable/tonometr.png b/app/src/dev/res/drawable/tonometr.png
new file mode 100644
index 0000000..b1771c0
Binary files /dev/null and b/app/src/dev/res/drawable/tonometr.png differ
diff --git a/app/src/dev/res/drawable/tonometr_.png b/app/src/dev/res/drawable/tonometr_.png
new file mode 100644
index 0000000..f4fc922
Binary files /dev/null and b/app/src/dev/res/drawable/tonometr_.png differ
diff --git a/app/src/dev/res/drawable/tonometr_med.png b/app/src/dev/res/drawable/tonometr_med.png
new file mode 100644
index 0000000..dfa31c3
Binary files /dev/null and b/app/src/dev/res/drawable/tonometr_med.png differ
diff --git a/app/src/dev/res/drawable/unnamed.png b/app/src/dev/res/drawable/unnamed.png
new file mode 100644
index 0000000..e6e0c3a
Binary files /dev/null and b/app/src/dev/res/drawable/unnamed.png differ
diff --git a/app/src/dev/res/font/roboto.xml b/app/src/dev/res/font/roboto.xml
new file mode 100644
index 0000000..1876187
--- /dev/null
+++ b/app/src/dev/res/font/roboto.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/dev/res/font/roboto_condensed_light.xml b/app/src/dev/res/font/roboto_condensed_light.xml
new file mode 100644
index 0000000..b690079
--- /dev/null
+++ b/app/src/dev/res/font/roboto_condensed_light.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/dev/res/font/roboto_condensed_regular.xml b/app/src/dev/res/font/roboto_condensed_regular.xml
new file mode 100644
index 0000000..ff4f69d
--- /dev/null
+++ b/app/src/dev/res/font/roboto_condensed_regular.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/dev/res/font/roboto_light.xml b/app/src/dev/res/font/roboto_light.xml
new file mode 100644
index 0000000..8221320
--- /dev/null
+++ b/app/src/dev/res/font/roboto_light.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/dev/res/font/roboto_medium.xml b/app/src/dev/res/font/roboto_medium.xml
new file mode 100644
index 0000000..370381b
--- /dev/null
+++ b/app/src/dev/res/font/roboto_medium.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/dev/res/font/roboto_regular.xml b/app/src/dev/res/font/roboto_regular.xml
new file mode 100644
index 0000000..aefe624
--- /dev/null
+++ b/app/src/dev/res/font/roboto_regular.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/dev/res/font/roboto_upper_regular.xml b/app/src/dev/res/font/roboto_upper_regular.xml
new file mode 100644
index 0000000..aefe624
--- /dev/null
+++ b/app/src/dev/res/font/roboto_upper_regular.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/dev/res/fragment_recorder.xml b/app/src/dev/res/fragment_recorder.xml
new file mode 100644
index 0000000..72ad522
--- /dev/null
+++ b/app/src/dev/res/fragment_recorder.xml
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/dev/res/layout-land/activity_qr.xml b/app/src/dev/res/layout-land/activity_qr.xml
new file mode 100644
index 0000000..5385b5d
--- /dev/null
+++ b/app/src/dev/res/layout-land/activity_qr.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/dev/res/layout-large/activity_qr.xml b/app/src/dev/res/layout-large/activity_qr.xml
new file mode 100644
index 0000000..5385b5d
--- /dev/null
+++ b/app/src/dev/res/layout-large/activity_qr.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/dev/res/layout-large/fragment_help_qr.xml b/app/src/dev/res/layout-large/fragment_help_qr.xml
new file mode 100644
index 0000000..46a48c1
--- /dev/null
+++ b/app/src/dev/res/layout-large/fragment_help_qr.xml
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/dev/res/layout/activity_qr.xml b/app/src/dev/res/layout/activity_qr.xml
new file mode 100644
index 0000000..5385b5d
--- /dev/null
+++ b/app/src/dev/res/layout/activity_qr.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/dev/res/layout/fragment_help_checkup.xml b/app/src/dev/res/layout/fragment_help_checkup.xml
new file mode 100644
index 0000000..27612d8
--- /dev/null
+++ b/app/src/dev/res/layout/fragment_help_checkup.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/dev/res/layout/fragment_help_monitoring.xml b/app/src/dev/res/layout/fragment_help_monitoring.xml
new file mode 100644
index 0000000..c7dd467
--- /dev/null
+++ b/app/src/dev/res/layout/fragment_help_monitoring.xml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/dev/res/layout/fragment_help_qr.xml b/app/src/dev/res/layout/fragment_help_qr.xml
new file mode 100644
index 0000000..dea8dd5
--- /dev/null
+++ b/app/src/dev/res/layout/fragment_help_qr.xml
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/dev/res/menu/help.xml b/app/src/dev/res/menu/help.xml
new file mode 100644
index 0000000..efe3f06
--- /dev/null
+++ b/app/src/dev/res/menu/help.xml
@@ -0,0 +1,11 @@
+
+
\ No newline at end of file
diff --git a/app/src/dev/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/dev/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..1f46878
--- /dev/null
+++ b/app/src/dev/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/dev/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/dev/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..1f46878
--- /dev/null
+++ b/app/src/dev/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/dev/res/mipmap-hdpi/ic_launcher.png b/app/src/dev/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..46c0051
Binary files /dev/null and b/app/src/dev/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/app/src/dev/res/mipmap-hdpi/ic_launcher_round.png b/app/src/dev/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 0000000..ff881cb
Binary files /dev/null and b/app/src/dev/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/app/src/dev/res/mipmap-mdpi/ic_launcher.png b/app/src/dev/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..d2e7c7b
Binary files /dev/null and b/app/src/dev/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/app/src/dev/res/mipmap-mdpi/ic_launcher_round.png b/app/src/dev/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 0000000..fdf18c5
Binary files /dev/null and b/app/src/dev/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/app/src/dev/res/mipmap-xhdpi/ic_launcher.png b/app/src/dev/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..7960b8d
Binary files /dev/null and b/app/src/dev/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/app/src/dev/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/dev/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..7d774e3
Binary files /dev/null and b/app/src/dev/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/app/src/dev/res/mipmap-xxhdpi/ic_launcher.png b/app/src/dev/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..5117e4e
Binary files /dev/null and b/app/src/dev/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/app/src/dev/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/dev/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..4076865
Binary files /dev/null and b/app/src/dev/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/app/src/dev/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/dev/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..fa941a3
Binary files /dev/null and b/app/src/dev/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/app/src/dev/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/dev/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..93e01d2
Binary files /dev/null and b/app/src/dev/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/app/src/dev/res/tonometr_med.png b/app/src/dev/res/tonometr_med.png
new file mode 100644
index 0000000..dfa31c3
Binary files /dev/null and b/app/src/dev/res/tonometr_med.png differ
diff --git a/app/src/dev/res/values-v23/styles.xml b/app/src/dev/res/values-v23/styles.xml
new file mode 100644
index 0000000..1ff382c
--- /dev/null
+++ b/app/src/dev/res/values-v23/styles.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/dev/res/values/colors.xml b/app/src/dev/res/values/colors.xml
new file mode 100644
index 0000000..be5aefc
--- /dev/null
+++ b/app/src/dev/res/values/colors.xml
@@ -0,0 +1,72 @@
+
+
+ #38b7ee
+ #38b7ee
+ #38b7ee
+
+ #333333
+ #F23939
+ #6D8CA3
+ #263238
+ #6D8CA3
+ #6D8CA3
+
+ #FFFFFF
+ #171616
+ #DE000000
+ #343D47
+ #343739
+
+
+
+ #38b7ee
+ #FFFFFF
+
+ #33000000
+ #38b7ee
+
+ #6D8CA3
+ #2490CF
+
+ #AADAF6
+
+
+ #ffffff
+
+
+ #38b7ee
+ #F23939
+ #3AA8E5
+ #38b7ee
+ #C7D0D9
+
+ #6D8CA3
+ #F6F6EC
+ #3AA8E5
+ #C7D0D9
+ #FAFAEF
+
+ #38b7ee
+
+ #26832A
+
+
+ #F6F6EC
+ #000000
+ #C7D0D9
+
+ #8195AC
+
+
+ 8195AC
+
+ #B3B3B3
+ #3AA8E6
+ #999999
+
+
+ #F44650
+ #F6F6EC
+ #C7D0D9
+ #FAFAEF
+
\ No newline at end of file
diff --git a/app/src/dev/res/values/font_certs.xml b/app/src/dev/res/values/font_certs.xml
new file mode 100644
index 0000000..d2226ac
--- /dev/null
+++ b/app/src/dev/res/values/font_certs.xml
@@ -0,0 +1,17 @@
+
+
+
+ - @array/com_google_android_gms_fonts_certs_dev
+ - @array/com_google_android_gms_fonts_certs_prod
+
+
+ -
+ MIIEqDCCA5CgAwIBAgIJANWFuGx90071MA0GCSqGSIb3DQEBBAUAMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAeFw0wODA0MTUyMzM2NTZaFw0zNTA5MDEyMzM2NTZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBANbOLggKv+IxTdGNs8/TGFy0PTP6DHThvbbR24kT9ixcOd9W+EaBPWW+wPPKQmsHxajtWjmQwWfna8mZuSeJS48LIgAZlKkpFeVyxW0qMBujb8X8ETrWy550NaFtI6t9+u7hZeTfHwqNvacKhp1RbE6dBRGWynwMVX8XW8N1+UjFaq6GCJukT4qmpN2afb8sCjUigq0GuMwYXrFVee74bQgLHWGJwPmvmLHC69EH6kWr22ijx4OKXlSIx2xT1AsSHee70w5iDBiK4aph27yH3TxkXy9V89TDdexAcKk/cVHYNnDBapcavl7y0RiQ4biu8ymM8Ga/nmzhRKya6G0cGw8CAQOjgfwwgfkwHQYDVR0OBBYEFI0cxb6VTEM8YYY6FbBMvAPyT+CyMIHJBgNVHSMEgcEwgb6AFI0cxb6VTEM8YYY6FbBMvAPyT+CyoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJANWFuGx90071MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADggEBABnTDPEF+3iSP0wNfdIjIz1AlnrPzgAIHVvXxunW7SBrDhEglQZBbKJEk5kT0mtKoOD1JMrSu1xuTKEBahWRbqHsXclaXjoBADb0kkjVEJu/Lh5hgYZnOjvlba8Ld7HCKePCVePoTJBdI4fvugnL8TsgK05aIskyY0hKI9L8KfqfGTl1lzOv2KoWD0KWwtAWPoGChZxmQ+nBli+gwYMzM1vAkP+aayLe0a1EQimlOalO762r0GXO0ks+UeXde2Z4e+8S/pf7pITEI/tP+MxJTALw9QUWEv9lKTk+jkbqxbsh8nfBUapfKqYn0eidpwq2AzVp3juYl7//fKnaPhJD9gs=
+
+
+
+ -
+ MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAeFw0wODA4MjEyMzEzMzRaFw0zNjAxMDcyMzEzMzRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKtWLgDYO6IIrgqWbxJOKdoR8qtW0I9Y4sypEwPpt1TTcvZApxsdyxMJZ2JORland2qSGT2y5b+3JKkedxiLDmpHpDsz2WCbdxgxRczfey5YZnTJ4VZbH0xqWVW/8lGmPav5xVwnIiJS6HXk+BVKZF+JcWjAsb/GEuq/eFdpuzSqeYTcfi6idkyugwfYwXFU1+5fZKUaRKYCwkkFQVfcAs1fXA5V+++FGfvjJ/CxURaSxaBvGdGDhfXE28LWuT9ozCl5xw4Yq5OGazvV24mZVSoOO0yZ31j7kYvtwYK6NeADwbSxDdJEqO4k//0zOHKrUiGYXtqw/A0LFFtqoZKFjnkCAQOjgdkwgdYwHQYDVR0OBBYEFMd9jMIhF1Ylmn/Tgt9r45jk14alMIGmBgNVHSMEgZ4wgZuAFMd9jMIhF1Ylmn/Tgt9r45jk14aloXikdjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWSCCQDC4IdGZEowjTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IBAQBt0lLO74UwLDYKqs6Tm8/yzKkEu116FmH4rkaymUIE0P9KaMftGlMexFlaYjzmB2OxZyl6euNXEsQH8gjwyxCUKRJNexBiGcCEyj6z+a1fuHHvkiaai+KL8W1EyNmgjmyy8AW7P+LLlkR+ho5zEHatRbM/YAnqGcFh5iZBqpknHf1SKMXFh4dd239FJ1jWYfbMDMy3NS5CTMQ2XFI1MvcyUTdZPErjQfTbQe3aDQsQcafEQPD+nqActifKZ0Np0IS9L9kR/wbNvyz6ENwPiTrjV2KRkEjH78ZMcUQXg0L3BYHJ3lc69Vs5Ddf9uUGGMYldX3WfMBEmh/9iFBDAaTCK
+
+
+
diff --git a/app/src/dev/res/values/ic_launcher_background.xml b/app/src/dev/res/values/ic_launcher_background.xml
new file mode 100644
index 0000000..cfa9be0
--- /dev/null
+++ b/app/src/dev/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+
+
+ #FFFFFF
+
\ No newline at end of file
diff --git a/app/src/dev/res/values/preloaded_fonts.xml b/app/src/dev/res/values/preloaded_fonts.xml
new file mode 100644
index 0000000..92cf22e
--- /dev/null
+++ b/app/src/dev/res/values/preloaded_fonts.xml
@@ -0,0 +1,12 @@
+
+
+
+ - @font/roboto
+ - @font/roboto_condensed_light
+ - @font/roboto_condensed_regular
+ - @font/roboto_light
+ - @font/roboto_medium
+ - @font/roboto_regular
+ - @font/roboto_upper_regular
+
+
diff --git a/app/src/dev/res/values/strings.xml b/app/src/dev/res/values/strings.xml
new file mode 100644
index 0000000..c358f4c
--- /dev/null
+++ b/app/src/dev/res/values/strings.xml
@@ -0,0 +1,468 @@
+
+ Теле2Мед
+
+ Отмена
+ 0
+ ДАЛЕЕ
+ 7
+ 8
+ 9
+ 4
+ 5
+ 6
+ 1
+ 2
+ 3
+ Поднесите QR-код к камере вашего устройства.\nСканирование начнётся автоматически
+
+ Вы ввели недействительный логин или пароль. У вас осталось %1$d попыток.
+ Войти
+ Аутентификация через
+ ЕСИА
+ МИС
+ Внимание! В системе производится сбор, хранение и обработка персональных данных граждан РФ, защита данных обеспечивается в соответствии с требованиями ФЗ-152 о защите персональных данных. Нарушение порядка сбора, хранения, обработки или распространения информации о гражданах влечет за собой ответственность, установленную законодательством Российской Федерации.
+
+ \n\nМиссия компании ООО «Теле2Мед» — качественная организация предрейсового медицинского осмотра водителей в соответствии с действующим законодательством. Мы считаем, что правильное выполнение работы сделает людей здоровыми, вождение на дорогах аккуратным, а мир более безопасным!
+ \n\nДанное приложение имеет 3 основных интерфейса:\n1. Проведений измерений физиологических параметров, используя устройство "Теле2Мед".
+ \n2.Журнал измерений физиологических параметров - для мониторинга и контроля измерения.
+ \n3.Контроль документа по QR-коду - для проверки легитимности результатов измерений.
+
+
+ Машиночасы, ч
+ Моточасы, ч
+
+ Запомнить меня на этом устройстве
+
+ Приложение "Теле2Мед" собирает данные о местоположении, чтобы включить передачу данных геолокации на сервер и отображать трек водителя в системе, даже когда приложение закрыто или не используется.
+
+
+ Ваше сообщение отправлено
+ Нажимая на кнопку Выход, Вы отключитесь от системы. Вы уверены что хотите выйти?
+ Пользователь с таким номером телефона не найден.\nХотите зарегистрироваться?
+
+
+ Статус
+
+ Выбор функционала
+
+
+ Проведения измерения
+ Измерение физиологических параметров
+ Выберите вид регистрационного журнала
+
+
+ Информация об устройстве
+ Идентификатор
+ Транспортное средство
+ Водитель
+ Информация о подключении
+ Подключение к интернету
+ Подключение к спутникам
+ Количество спутников
+ Подключение к серверу
+ Информация о местоположении
+ Время последней фиксации
+ Широта
+ Долгота
+ Высота над уровнем моря, м
+ Азимут (направление движения)
+ Скорость, км/ч
+
+ На карте
+ Статус
+
+ Версия приложения
+
+
+ %1$s%2$s
+
+ Телеметрия для медицины
+ 02.08.2023 10:00:00
+ image from qr dont rotate
+ Tele2Med
+ dev. 3.0
+
+ Загрузка…
+ Внимание
+ OK
+
+ Путевой лист
+ Автомобиль
+ %1$s №%2$s от %3$s
+ №%1$s от %2$s
+ Режим работы по ПЛ
+ Режим работы по заданию
+
+
+ Номер задания
+ Режим работы приложения
+
+
+ №%1$s
+
+
+ Неправильный каст ошибки
+ Указанный пользовательский токен невалидный
+ yyyyMMddHHmmss
+
+ Необходимо обновить приложение
+ Ваша органзиация не настроена в системе. Обратитесь к диспетчеру
+ У организации отсутствует часовой пояс, требуется синхронизация систем, обратитесь к администратору
+
+ Android
+
+ Нет интернет подключения
+ Что-то пошло не так
+
+ Пользователь с таким номером телефона \n не найден. Попробуйте еще раз.
+ Введите ваш номер телефона и нажмите “✓” на клавиатуре
+ Вход
+ +7 XXX XXX-XX-XX
+
+ Введен неверный пин-код.\n Попробуйте еще раз
+ Идёт процесс авторизации…
+
+ Низкий заряд аккумулятора. Данные о местонахождении устройства могут передаваться некорректно.\nПодключите зарядное устройство
+ Данные о местоположении давно не передавались. Проверьте настройки определения геопозиции устройства.
+
+
+ Получить новый пин-код
+ Введите ваш пин-код
+ Ввод пин-кода
+
+ Новый пин-код
+ На ваш телефон выслано SMS\nс новым пин-кодом. Введите пин-код.
+ Выслать пин-код повторно
+
+ Сменить пин-код
+ Необходимо сменить пин-код.\nВведите новый пин-код
+ Введите новый пин-код повторно
+ Значения в полях не совпадают.\nПопробуйте еще раз
+
+ К сожалению, Ваша организация не указала номер телефона в настройках подразделений в Системе. Сообщите об этом вашему диспетчеру.
+ Для работы с мобильным приложением ваш номер телефона должен быть зарегистрирован в системе.\n\nДля входа в систему введите номер телефона и пин-код.\n\nПри первом входе в систему введите номер телефона и нажмите «Получить новый пин-код». С помощью sms вам будет направлен временный пин-код. После входа в систему установите новый постоянный пин-код и подтвердите его.\n\nВ случае затруднений позвоните диспетчеру.
+ Позвонить диспетчеру
+ Помощь
+
+ +78432034683
+
+
+ Данный интефейс содержит функционал для измерения физиологических параметров обследуемого и передачи медицинской информации для систем и комплексов телемедицины.\n\nПриложение обеспечивает взаимодействие с устройством "Теле2Мед". Следуя подсказкам на экране водитель проходит осмотр и снимает необходимые показания с помощью подключенного устройства.
+ Данный интерфейс предусмотрен для мониторинга проведенных измерений.\n\nФункционал интерфейса предоставляет данные о статусах измерений, отсортированных по дате по убыванию\n\nКаждая строчка соответствует одному осмотру и содержит следующие данные: № осмотра, время окончания осмотра, тип осмотра, данные физиологических параметров водителя, автоматический результат, результат телемедика.
+ Для проверки подлинности результатов измерения физиологических параметров по QR-коду необходимо лишь выбрать соотвествующий пункт меню и навести камеру на QR-код.\n\nПриложение автоматически проверит документ и вы получите информацию о пройденных измерениях водителя.
+
+ Отсканируйте код\nи получите подробную информацию с результатом измерения
+
+ Статистика по медицинским осмотрам
+ Статистика за неделю
+ Статистика по справочникам
+
+ Изменение профиля
+ Личные данные
+ Управление доступом
+ Ключи доступа
+
+ Просмотр ключей
+
+
+ Новые осмотры
+ Допущенные
+ Не допущенные
+ Все осмотры
+
+ Ответственные
+ Водители
+ Подразделения
+ АРМы
+
+ Последние медосмотры
+ Медицинский осмотр
+
+ Медосмотры
+
+ Последние
+ По персоналу
+ По датам
+
+ Отчеты
+
+ Сводный
+ За период
+ По дням
+ По часам
+ По температурам
+
+ Справочник
+
+ Ответственные
+ Водители
+ Подразделения
+ АРМы
+ Справки
+
+ Журналы
+
+ Медицинские
+ Диагностический
+ Риск гипертонии
+
+
+ Описание полей и блоков экрана "Статус":\n
+1. Информация за сегодня – данный блок содержит в себе данные о действующей сессии за текущий день:\n
+1.1 Дата и время входа в систему отражает время первой отправки координат за текущий день.\n
+1.2 Время работы в системе – это продолжительность времени от входа в систему до момента запроса этой информации.\n
+1.3 Пробег за сегодня – расстояние, пройденное с включенным приложением за текущий день.\n
+1.4 Последнее обновление – время последнего обновления данных блока «Информация за сегодня».\n
+2. Информация об устройстве включает в себя информацию о текущей конфигурации пользователя:\n
+2.1 Идентификатор – это уникальный идентификационный номер устройства, по которому осуществляется привязка мобильного устройства в систему Теле2Мед.\n
+2.2 Транспортное средство – отражает привязанное к мобильному устройству в системе транспортное средство (ТС). \n
+2.3 Водитель – имя пользователя, который привязан к данному мобильному устройству.\n
+2.4 Версия приложения – номер версии и дата выпуска используемого приложения.\n
+2.5 Режим работы приложения – отражает режим работы, заданный в системе для данного мобильного устройства. Существует 3 вида режима: COORDINATES (в систему передаётся и записывается весь трек мобильного устройства за всё время работы приложения), ROUTE_LIST (в систему передаётся и записывается трек мобильного устройства по выбранному путевому листу), REQUESTS (в систему передаётся и записывается трек мобильного устройства по выбранному заданию).\n
+3. Информация о подключении содержит статус подключения приложения к сети и к системе:\n
+3.1 Подключение к интернету – статус наличия интернет-соединения за последние 15 секунд. \n
+3.2 Подключение к серверу – статус наличия подключения к системе, отражается в зависимости наличия ответа от сервера в течение 5 последних минут.\n
+4. Информация о местоположении. Блок отображает последние данные о местоположение мобильного устройства, которые были получены приложением. Данные обновляются раз в 15 секунд.\n
+4.1 Время последней фиксации – время получения приведенных ниже данных.\n
+4.2 Широта – координаты широты, зафиксированные устройством.\n
+4.3. Долгота – координаты долготы, зафиксированные устройством.\n
+4.4 Высота над уровнем моря – высота над уровнем море, зафиксированная устройством.\n
+4.5 Скорость – скорость движения мобильного устройства в момент фиксации данных местоположения.\n
+Экран "На карте" отражает текущее положение пользователя на карте.
+
+
+
+ Задания на сегодня
+ История
+ Статистика
+ Настройки
+ Чат с диспетчером
+ Уведомления
+ Карта
+
+
+ Выйти
+ Поиск устройства
+ Поиск принтера
+
+
+ Открыть боковое меню
+ Закрыть боковое меню
+
+ Введите текущий пин-код
+ Текущий пин-код введен неверно,\nпопробуйте еще раз
+ Введите новый пин-код
+
+ SOS
+ sos
+
+
+ Параметры
+ Сводная панель
+ Сохранить
+ Удалить
+ Заменить
+ Загрузить фото
+ Управление доступом
+
+ Показать ещё
+
+
+ ДТП
+ Поломка
+ Мне плохо
+ Нападение
+
+
+ Отправить сигнал тревоги\nдиспетчеру
+ Комментарий
+ Сигнал тревоги отправлен диспетчеру
+ Автомобиль не указан
+ Не выбран режим работы
+
+ Транспортное средство
+
+ Номер задания
+ Статус
+ Проведение измерения
+
+
+ Выберите путевой лист или задание
+ Выберите путевой лист
+ Путевые листы не назначены
+ Список заданий пуст
+
+ Новое уведомление
+
+ Посмотреть задание
+
+
+ Задание
+ Данные осмотра №%1$s
+ Номер задания
+ Путевой лист
+ Статус
+ Комментарий
+ Время
+ Прибытие
+ Убытие
+ Автомобиль
+ Рег. знак
+ Марка и модель
+ Водитель
+ Имя
+ Телефон
+ Адрес
+ Примечание
+ Маршрут
+ раскрыть
+ свернуть
+ Дата и время прибытия
+ Основное ТС
+ Показания одометра, км
+ Машиночасы, ч
+ Моточасы, ч
+ Дата и время убытия
+ Начать поездку
+ Завершить задание
+ Контакт
+ Фиксация данных
+ Прибытие
+ Убытие
+ Выезд из гаража/предыдущего места работ
+ Дата и время выезда
+ Нулевой пробег, км
+ Заезд в гараж/следующее место работ
+ Дата и время заезда
+
+ На карте
+ Списком
+ Задание %1$d
+ Основная информация
+ Статус
+ Комментарий
+ Прибытие
+ Пассажир
+ Примечание
+ Маршрут
+ Фиксация данных
+ Статистика
+ Трек по заданию
+ Отменить задание
+ Укажите причину отмены
+ unexpected page
+
+ Задание %1$s
+ Нет даты подачи
+
+ свернуть
+ развернуть
+ ≈ %1$d км
+ %1$s км
+ ≈ %1$d мин
+ %1$d мин
+ Расстояние
+ Время
+ Начал
+ Завершил
+ ПРИНЯТЬ ЗАДАНИЕ
+ ВЗЯТЬ В РАБОТУ
+ ПРИБЫЛ
+ НАЧАТЬ ПОЕЗДКУ
+ ЗАВЕРШИТЬ ПОЕЗДКУ
+ Нет даты подачи
+ Отправить
+ Успешно отправлено
+ Помощь
+ Данные выезда из гаража
+ Получение данных
+ Запись видео
+
+
+ Предрейсовые\nмедицинские осмотры
+ Работаем по всей России
+
+ Авторизация
+ Введите свой табельный номер\nили приложите карту к считывателю
+ Здравствуйте!
+ Подтвердите свою личность
+ Нажимая кнопку "Да", вы соглашаетесь с тем, что даёте разрешение на обработку своих персональных данных (в том числе о состоянии здоровья).
+ Для продолжения прохождения медицинского осмотра Вам необходимо сделать первую фотографию.\nРасположитесь перед экраном планшета таким образом, чтобы ваше лицо располагалось в границах изображения с камеры.\nУбедитесь, что ваше лицо ничем не закрыто и сделайте фото.
+
+ Добавить
+ Смотреть
+ Редактировать
+ Удалить
+
+ Наденьте манжету на предплечье, нажмите кнопку "Измерить давление" и дождитесь окончания измерения
+ Возьмите устройство в руку, нажмите кнопку "Начать измерение", дождитесь звукового сигнала, поднесите устройство датчиком измерения температуры ко лбу на расстояние 2–3 см и дождитесь звукового сигнала об окончании измерения
+ Возьмите устройство в руку, нажмите кнопку "Начать измерение".\nДождитесь звукового сигнала и дуйте в мундштук до появления звукового сигнала
+
+
+ Измерение физиологических параметров
+ Не забудьте подключить\nАРМ "Теле2Мед"
+ Журнал измерений физиологических параметров
+ История измерений
+ Контроль документа по QR-коду
+ Сканирование QR-кода медосмотра
+
+ Версия: 1.0.0.1 от 30.01.2022
+
+
+ Сотрудник
+
+ Табельный номер
+ Пол
+ Фамилия
+ Имя
+ Отчество
+ Дата рождения
+ Организация
+
+ Данные осмотра
+
+
+ Дата осмотра
+ Время начала
+ Время окончания
+ Тип осмотра
+ Терминал
+ Статус
+ Медик
+ Результат (автомат.)
+ Результат (медик)
+ Комментарий медика
+ Дата / время результата
+
+ Фото осмотра
+ Видео осмотра
+ Фото профиля
+
+ Верхнее давление
+ Нижнее давление
+ Пульс
+ Алкоголь
+ Температура
+ Жалобы
+ Справка
+
+
+
+ Наименование оборудования
+ Моточасы, ч *
+ Навесное оборудование
+
+
+ Да
+ Отмена
+
+
+ Вы уверены, что хотите сбросить путевой лист %s?
+ Вы уверены, что хотите начать работу по путевому листу %s?
+ Выбор путевого листа
+
+
+ Вы уверены, что хотите сбросить задание %s?
+ Вы уверены, что хотите начать работу по заданию %s?
+ Выбор задания
+
diff --git a/app/src/dev/res/values/styles.xml b/app/src/dev/res/values/styles.xml
new file mode 100644
index 0000000..d7366e0
--- /dev/null
+++ b/app/src/dev/res/values/styles.xml
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/divizion/res/drawable-v24/ic_launcher_foreground.xml b/app/src/divizion/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..a438de0
--- /dev/null
+++ b/app/src/divizion/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
diff --git a/app/src/divizion/res/drawable/ic_launcher_foreground.xml b/app/src/divizion/res/drawable/ic_launcher_foreground.xml
new file mode 100644
index 0000000..c383ba7
--- /dev/null
+++ b/app/src/divizion/res/drawable/ic_launcher_foreground.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/divizion/res/drawable/ic_logo.xml b/app/src/divizion/res/drawable/ic_logo.xml
new file mode 100644
index 0000000..d138acd
--- /dev/null
+++ b/app/src/divizion/res/drawable/ic_logo.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/divizion/res/font/roboto.xml b/app/src/divizion/res/font/roboto.xml
new file mode 100644
index 0000000..aefe624
--- /dev/null
+++ b/app/src/divizion/res/font/roboto.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/divizion/res/font/roboto_condensed_light.xml b/app/src/divizion/res/font/roboto_condensed_light.xml
new file mode 100644
index 0000000..b690079
--- /dev/null
+++ b/app/src/divizion/res/font/roboto_condensed_light.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/divizion/res/font/roboto_condensed_regular.xml b/app/src/divizion/res/font/roboto_condensed_regular.xml
new file mode 100644
index 0000000..ff4f69d
--- /dev/null
+++ b/app/src/divizion/res/font/roboto_condensed_regular.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/divizion/res/font/roboto_light.xml b/app/src/divizion/res/font/roboto_light.xml
new file mode 100644
index 0000000..8221320
--- /dev/null
+++ b/app/src/divizion/res/font/roboto_light.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/divizion/res/font/roboto_medium.xml b/app/src/divizion/res/font/roboto_medium.xml
new file mode 100644
index 0000000..370381b
--- /dev/null
+++ b/app/src/divizion/res/font/roboto_medium.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/divizion/res/font/roboto_regular.xml b/app/src/divizion/res/font/roboto_regular.xml
new file mode 100644
index 0000000..aefe624
--- /dev/null
+++ b/app/src/divizion/res/font/roboto_regular.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/divizion/res/font/roboto_upper_regular.xml b/app/src/divizion/res/font/roboto_upper_regular.xml
new file mode 100644
index 0000000..aefe624
--- /dev/null
+++ b/app/src/divizion/res/font/roboto_upper_regular.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/divizion/res/menu/help.xml b/app/src/divizion/res/menu/help.xml
new file mode 100644
index 0000000..efe3f06
--- /dev/null
+++ b/app/src/divizion/res/menu/help.xml
@@ -0,0 +1,11 @@
+
+
\ No newline at end of file
diff --git a/app/src/divizion/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/divizion/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..1f46878
--- /dev/null
+++ b/app/src/divizion/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/divizion/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/divizion/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..1f46878
--- /dev/null
+++ b/app/src/divizion/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/divizion/res/mipmap-hdpi/ic_launcher.png b/app/src/divizion/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..b89dbfa
Binary files /dev/null and b/app/src/divizion/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/app/src/divizion/res/mipmap-hdpi/ic_launcher_round.png b/app/src/divizion/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 0000000..7addb69
Binary files /dev/null and b/app/src/divizion/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/app/src/divizion/res/mipmap-mdpi/ic_launcher.png b/app/src/divizion/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..41b9dfc
Binary files /dev/null and b/app/src/divizion/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/app/src/divizion/res/mipmap-mdpi/ic_launcher_round.png b/app/src/divizion/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 0000000..d33f3d2
Binary files /dev/null and b/app/src/divizion/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/app/src/divizion/res/mipmap-xhdpi/ic_launcher.png b/app/src/divizion/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..3f2994e
Binary files /dev/null and b/app/src/divizion/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/app/src/divizion/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/divizion/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..dd7a6d2
Binary files /dev/null and b/app/src/divizion/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/app/src/divizion/res/mipmap-xxhdpi/ic_launcher.png b/app/src/divizion/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..c7b7a08
Binary files /dev/null and b/app/src/divizion/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/app/src/divizion/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/divizion/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..c13f63d
Binary files /dev/null and b/app/src/divizion/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/app/src/divizion/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/divizion/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..0e8b538
Binary files /dev/null and b/app/src/divizion/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/app/src/divizion/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/divizion/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..a65a016
Binary files /dev/null and b/app/src/divizion/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/app/src/divizion/res/values/colors.xml b/app/src/divizion/res/values/colors.xml
new file mode 100644
index 0000000..e9bea7c
--- /dev/null
+++ b/app/src/divizion/res/values/colors.xml
@@ -0,0 +1,56 @@
+
+
+ #8AC33E
+ #8AC33E
+ #8AC33E
+
+ #333333
+ #F23939
+ #6D8CA3
+ #263238
+ #6D8CA3
+ #6D8CA3
+
+ #8AC33E
+ #171616
+ #DE000000
+
+ #8AC33E
+ #FFFFFF
+
+ #33000000
+ #8AC33E
+
+ #6D8CA3
+
+ #ffffff
+
+
+ #98C65A
+ #F23939
+ #3AA8E5
+ #2ED03E
+ #C7D0D9
+
+ #6D8CA3
+ #F6F6EC
+ #3AA8E5
+ #C7D0D9
+ #FAFAEF
+
+ #77E351
+
+ #F6F6EC
+ #000000
+ #C7D0D9
+
+ #B3B3B3
+ #3AA8E6
+ #999999
+
+
+ #F44650
+ #F6F6EC
+ #C7D0D9
+ #FAFAEF
+
\ No newline at end of file
diff --git a/app/src/divizion/res/values/font_certs.xml b/app/src/divizion/res/values/font_certs.xml
new file mode 100644
index 0000000..d2226ac
--- /dev/null
+++ b/app/src/divizion/res/values/font_certs.xml
@@ -0,0 +1,17 @@
+
+
+
+ - @array/com_google_android_gms_fonts_certs_dev
+ - @array/com_google_android_gms_fonts_certs_prod
+
+
+ -
+ MIIEqDCCA5CgAwIBAgIJANWFuGx90071MA0GCSqGSIb3DQEBBAUAMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAeFw0wODA0MTUyMzM2NTZaFw0zNTA5MDEyMzM2NTZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBANbOLggKv+IxTdGNs8/TGFy0PTP6DHThvbbR24kT9ixcOd9W+EaBPWW+wPPKQmsHxajtWjmQwWfna8mZuSeJS48LIgAZlKkpFeVyxW0qMBujb8X8ETrWy550NaFtI6t9+u7hZeTfHwqNvacKhp1RbE6dBRGWynwMVX8XW8N1+UjFaq6GCJukT4qmpN2afb8sCjUigq0GuMwYXrFVee74bQgLHWGJwPmvmLHC69EH6kWr22ijx4OKXlSIx2xT1AsSHee70w5iDBiK4aph27yH3TxkXy9V89TDdexAcKk/cVHYNnDBapcavl7y0RiQ4biu8ymM8Ga/nmzhRKya6G0cGw8CAQOjgfwwgfkwHQYDVR0OBBYEFI0cxb6VTEM8YYY6FbBMvAPyT+CyMIHJBgNVHSMEgcEwgb6AFI0cxb6VTEM8YYY6FbBMvAPyT+CyoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJANWFuGx90071MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADggEBABnTDPEF+3iSP0wNfdIjIz1AlnrPzgAIHVvXxunW7SBrDhEglQZBbKJEk5kT0mtKoOD1JMrSu1xuTKEBahWRbqHsXclaXjoBADb0kkjVEJu/Lh5hgYZnOjvlba8Ld7HCKePCVePoTJBdI4fvugnL8TsgK05aIskyY0hKI9L8KfqfGTl1lzOv2KoWD0KWwtAWPoGChZxmQ+nBli+gwYMzM1vAkP+aayLe0a1EQimlOalO762r0GXO0ks+UeXde2Z4e+8S/pf7pITEI/tP+MxJTALw9QUWEv9lKTk+jkbqxbsh8nfBUapfKqYn0eidpwq2AzVp3juYl7//fKnaPhJD9gs=
+
+
+
+ -
+ MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAeFw0wODA4MjEyMzEzMzRaFw0zNjAxMDcyMzEzMzRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKtWLgDYO6IIrgqWbxJOKdoR8qtW0I9Y4sypEwPpt1TTcvZApxsdyxMJZ2JORland2qSGT2y5b+3JKkedxiLDmpHpDsz2WCbdxgxRczfey5YZnTJ4VZbH0xqWVW/8lGmPav5xVwnIiJS6HXk+BVKZF+JcWjAsb/GEuq/eFdpuzSqeYTcfi6idkyugwfYwXFU1+5fZKUaRKYCwkkFQVfcAs1fXA5V+++FGfvjJ/CxURaSxaBvGdGDhfXE28LWuT9ozCl5xw4Yq5OGazvV24mZVSoOO0yZ31j7kYvtwYK6NeADwbSxDdJEqO4k//0zOHKrUiGYXtqw/A0LFFtqoZKFjnkCAQOjgdkwgdYwHQYDVR0OBBYEFMd9jMIhF1Ylmn/Tgt9r45jk14alMIGmBgNVHSMEgZ4wgZuAFMd9jMIhF1Ylmn/Tgt9r45jk14aloXikdjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWSCCQDC4IdGZEowjTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IBAQBt0lLO74UwLDYKqs6Tm8/yzKkEu116FmH4rkaymUIE0P9KaMftGlMexFlaYjzmB2OxZyl6euNXEsQH8gjwyxCUKRJNexBiGcCEyj6z+a1fuHHvkiaai+KL8W1EyNmgjmyy8AW7P+LLlkR+ho5zEHatRbM/YAnqGcFh5iZBqpknHf1SKMXFh4dd239FJ1jWYfbMDMy3NS5CTMQ2XFI1MvcyUTdZPErjQfTbQe3aDQsQcafEQPD+nqActifKZ0Np0IS9L9kR/wbNvyz6ENwPiTrjV2KRkEjH78ZMcUQXg0L3BYHJ3lc69Vs5Ddf9uUGGMYldX3WfMBEmh/9iFBDAaTCK
+
+
+
diff --git a/app/src/divizion/res/values/ic_launcher_background.xml b/app/src/divizion/res/values/ic_launcher_background.xml
new file mode 100644
index 0000000..cfa9be0
--- /dev/null
+++ b/app/src/divizion/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+
+
+ #FFFFFF
+
\ No newline at end of file
diff --git a/app/src/divizion/res/values/preloaded_fonts.xml b/app/src/divizion/res/values/preloaded_fonts.xml
new file mode 100644
index 0000000..92cf22e
--- /dev/null
+++ b/app/src/divizion/res/values/preloaded_fonts.xml
@@ -0,0 +1,12 @@
+
+
+
+ - @font/roboto
+ - @font/roboto_condensed_light
+ - @font/roboto_condensed_regular
+ - @font/roboto_light
+ - @font/roboto_medium
+ - @font/roboto_regular
+ - @font/roboto_upper_regular
+
+
diff --git a/app/src/divizion/res/values/strings.xml b/app/src/divizion/res/values/strings.xml
new file mode 100644
index 0000000..468576a
--- /dev/null
+++ b/app/src/divizion/res/values/strings.xml
@@ -0,0 +1,249 @@
+
+ Divizion-bi
+
+ Отмена
+ 0
+ ДАЛЕЕ
+ 7
+ 8
+ 9
+ 4
+ 5
+ 6
+ 1
+ 2
+ 3
+
+ Пользователь с таким номером телефона не найден.\nХотите зарегистрироваться?
+ Ваше сообщение отправлено
+ Для отображение вас на карте и передачи данных местоположения в систему, с целью построения треков и мониторинга местоположения, приложению необходимо получить доступ к местоположению вашего устройства. Чтобы начать работу в приложении - разрешите использование этих данных.
+
+
+ Версия приложения
+ Режим работы приложения
+
+
+ %1$s%2$s
+
+ Запомнить меня на этом устройстве
+
+ Ваша органзиация не настроена в системе. Обратитесь к диспетчеру
+ У организации отсутствует часовой пояс, требуется синхронизация систем, обратитесь к администратору
+
+
+ Нажимая на кнопку Выход, Вы отключитесь от системы. Вы уверены что хотите выйти?
+
+ ПОМОЩНИК В ТРАНСПОРТНОЙ АНАЛИТИКЕ
+ 20.02.2021 10:43:31
+ поправлен первый экран
+ АРМ водителя
+ 1.0.4.25
+
+ Загрузка…
+ Ошибка
+ OK
+
+ Путевой лист
+ Автомобиль
+ %1$s №%2$s от %3$s
+ №%1$s от %2$s
+ Режим работы по ПЛ
+ Режим работы по заданию
+
+
+ Номер задания
+
+
+ №%1$s
+
+
+ Неправильный каст ошибки
+ Указанный пользовательский токен невалидный
+ yyyyMMddHHmmss
+
+ Необходимо обновить приложение
+ Android
+
+ Нет интернет подключения
+ Что-то пошло не так
+
+ Пользователь с таким номером телефона \n не найден. Попробуйте еще раз.
+ Введите ваш номер телефона \n и нажмите “✓” на клавиатуре
+ Вход
+ +7 XXX XXX-XX-XX
+
+ Введен неверный пин-код.\n Попробуйте еще раз
+ Получить новый пин-код
+ Введите ваш пин-код
+ Ввод пин-кода
+
+ Идёт процесс авторизации...
+
+
+ Новый пин-код
+ На ваш телефон выслано SMS\nс новым пин-кодом. Введите пин-код.
+ Выслать пин-код повторно
+
+ Сменить пин-код
+ Необходимо сменить пин-код.\nВведите новый пин-код
+ Введите новый пин-код повторно
+ Значения в полях не совпадают.\nПопробуйте еще раз
+
+ К сожалению, Ваша организация не указала номер телефона в настройках подразделений в Системе. Сообщите об этом вашему диспетчеру.
+ Для работы с мобильным приложением ваш номер телефона должен быть зарегистрирован в системе.\n\nДля входа в систему введите номер телефона и пин-код.\n\nПри первом входе в систему введите номер телефона и нажмите «Получить новый пин-код». С помощью sms вам будет направлен временный пин-код. После входа в систему установите новый постоянный пин-код и подтвердите его.\n\nВ случае затруднений позвоните диспетчеру.
+ Позвонить диспетчеру
+ Помощь
+
+ Задания на сегодня
+ История
+ Статистика
+ Настройки
+ Чат с диспетчером
+ Уведомления
+
+ Выйти
+ Поиск устройства
+ Поиск принтера
+
+
+ Открыть боковое меню
+ Закрыть боковое меню
+
+ Введите текущий пин-код
+ Текущий пин-код введен неверно,\nпопробуйте еще раз
+ Введите новый пин-код
+
+ SOS
+ sos
+
+ ДТП
+ Поломка
+ Мне плохо
+ Нападение
+
+
+ Отправить сигнал тревоги\nдиспетчеру
+ Комментарий
+ Сигнал тревоги отправлен диспетчеру
+ Автомобиль не указан
+ Не выбран режим работы
+
+ Транспортное средство
+
+ Карта
+
+
+ Номер задания
+ Статус
+
+
+
+ Выберите путевой лист или задание
+ Выберите путевой лист
+ Путевые листы не назначены
+ Список заданий пуст
+
+ Новое уведомление
+
+ Посмотреть задание
+
+
+ Задание
+ Основная информация
+ Номер задания
+ Путевой лист
+ Статус
+ Комментарий
+ Время
+ Прибытие
+ Убытие
+ Автомобиль
+ Рег. знак
+ Марка и модель
+ Водитель
+ Имя
+ Телефон
+ Адрес
+ Примечание
+ Маршрут
+ раскрыть
+ свернуть
+ Дата и время прибытия
+ Основное ТС
+ Показания одометра, км
+ Машиночасы, ч
+ Моточасы, ч
+ Дата и время убытия
+ Начать поездку
+ Завершить задание
+ Контакт
+ Фиксация данных
+ Прибытие
+ Убытие
+ Выезд из гаража/предыдущего места работ
+ Дата и время выезда
+ Нулевой пробег, км
+ Заезд в гараж/следующее место работ
+ Дата и время заезда
+
+ На карте
+ Списком
+ Задание %1$d
+ Основная информация
+ Статус
+ Комментарий
+ Прибытие
+ Пассажир
+ Примечание
+ Маршрут
+ Фиксация данных
+ Статистика
+ Трек по заданию
+ Отменить задание
+ Укажите причину отмены
+ unexpected page
+
+ Задание %1$s
+ Нет даты подачи
+
+ свернуть
+ развернуть
+ ≈ %1$d км
+ %1$s км
+ ≈ %1$d мин
+ %1$d мин
+ Расстояние
+ Время
+ Начал
+ Завершил
+ ПРИНЯТЬ ЗАДАНИЕ
+ ВЗЯТЬ В РАБОТУ
+ ПРИБЫЛ
+ НАЧАТЬ ПОЕЗДКУ
+ ЗАВЕРШИТЬ ПОЕЗДКУ
+ Нет даты подачи
+ Отправить
+ Успешно отправлено
+ Помощь
+ Данные выезда из гаража
+ Ведение маршрута
+
+
+ Наименование оборудования
+ Моточасы, ч *
+ Навесное оборудование
+
+
+ Да
+ Отмена
+
+
+ Вы уверены, что хотите сбросить путевой лист %s?
+ Вы уверены, что хотите начать работу по путевому листу %s?
+ Выбор путевого листа
+
+
+ Вы уверены, что хотите сбросить задание %s?
+ Вы уверены, что хотите начать работу по заданию %s?
+ Выбор задания
+
diff --git a/app/src/divizion/res/values/styles.xml b/app/src/divizion/res/values/styles.xml
new file mode 100644
index 0000000..c960df1
--- /dev/null
+++ b/app/src/divizion/res/values/styles.xml
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/jooli/res/drawable-v24/ic_launcher_foreground.xml b/app/src/jooli/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..eabde77
--- /dev/null
+++ b/app/src/jooli/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/jooli/res/drawable/arrow.png b/app/src/jooli/res/drawable/arrow.png
new file mode 100644
index 0000000..33dba8b
Binary files /dev/null and b/app/src/jooli/res/drawable/arrow.png differ
diff --git a/app/src/jooli/res/drawable/ic_launcher_foreground.xml b/app/src/jooli/res/drawable/ic_launcher_foreground.xml
new file mode 100644
index 0000000..18bb1d5
--- /dev/null
+++ b/app/src/jooli/res/drawable/ic_launcher_foreground.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/jooli/res/drawable/ic_logo.xml b/app/src/jooli/res/drawable/ic_logo.xml
new file mode 100644
index 0000000..a5b8c9b
--- /dev/null
+++ b/app/src/jooli/res/drawable/ic_logo.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/jooli/res/drawable/people.png b/app/src/jooli/res/drawable/people.png
new file mode 100644
index 0000000..ec111ed
Binary files /dev/null and b/app/src/jooli/res/drawable/people.png differ
diff --git a/app/src/jooli/res/drawable/tonometr.png b/app/src/jooli/res/drawable/tonometr.png
new file mode 100644
index 0000000..b1771c0
Binary files /dev/null and b/app/src/jooli/res/drawable/tonometr.png differ
diff --git a/app/src/jooli/res/drawable/tonometr_.png b/app/src/jooli/res/drawable/tonometr_.png
new file mode 100644
index 0000000..f4fc922
Binary files /dev/null and b/app/src/jooli/res/drawable/tonometr_.png differ
diff --git a/app/src/jooli/res/drawable/tonometr_med.png b/app/src/jooli/res/drawable/tonometr_med.png
new file mode 100644
index 0000000..dfa31c3
Binary files /dev/null and b/app/src/jooli/res/drawable/tonometr_med.png differ
diff --git a/app/src/jooli/res/drawable/unnamed.png b/app/src/jooli/res/drawable/unnamed.png
new file mode 100644
index 0000000..e6e0c3a
Binary files /dev/null and b/app/src/jooli/res/drawable/unnamed.png differ
diff --git a/app/src/jooli/res/font/roboto.xml b/app/src/jooli/res/font/roboto.xml
new file mode 100644
index 0000000..1876187
--- /dev/null
+++ b/app/src/jooli/res/font/roboto.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/jooli/res/font/roboto_condensed_light.xml b/app/src/jooli/res/font/roboto_condensed_light.xml
new file mode 100644
index 0000000..b690079
--- /dev/null
+++ b/app/src/jooli/res/font/roboto_condensed_light.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/jooli/res/font/roboto_condensed_regular.xml b/app/src/jooli/res/font/roboto_condensed_regular.xml
new file mode 100644
index 0000000..ff4f69d
--- /dev/null
+++ b/app/src/jooli/res/font/roboto_condensed_regular.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/jooli/res/font/roboto_light.xml b/app/src/jooli/res/font/roboto_light.xml
new file mode 100644
index 0000000..8221320
--- /dev/null
+++ b/app/src/jooli/res/font/roboto_light.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/jooli/res/font/roboto_medium.xml b/app/src/jooli/res/font/roboto_medium.xml
new file mode 100644
index 0000000..370381b
--- /dev/null
+++ b/app/src/jooli/res/font/roboto_medium.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/jooli/res/font/roboto_regular.xml b/app/src/jooli/res/font/roboto_regular.xml
new file mode 100644
index 0000000..aefe624
--- /dev/null
+++ b/app/src/jooli/res/font/roboto_regular.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/jooli/res/font/roboto_upper_regular.xml b/app/src/jooli/res/font/roboto_upper_regular.xml
new file mode 100644
index 0000000..aefe624
--- /dev/null
+++ b/app/src/jooli/res/font/roboto_upper_regular.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/jooli/res/fragment_recorder.xml b/app/src/jooli/res/fragment_recorder.xml
new file mode 100644
index 0000000..72ad522
--- /dev/null
+++ b/app/src/jooli/res/fragment_recorder.xml
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/jooli/res/layout-land/activity_qr.xml b/app/src/jooli/res/layout-land/activity_qr.xml
new file mode 100644
index 0000000..5385b5d
--- /dev/null
+++ b/app/src/jooli/res/layout-land/activity_qr.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/jooli/res/layout-large/activity_qr.xml b/app/src/jooli/res/layout-large/activity_qr.xml
new file mode 100644
index 0000000..5385b5d
--- /dev/null
+++ b/app/src/jooli/res/layout-large/activity_qr.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/jooli/res/layout-large/fragment_help_qr.xml b/app/src/jooli/res/layout-large/fragment_help_qr.xml
new file mode 100644
index 0000000..46a48c1
--- /dev/null
+++ b/app/src/jooli/res/layout-large/fragment_help_qr.xml
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/jooli/res/layout/activity_qr.xml b/app/src/jooli/res/layout/activity_qr.xml
new file mode 100644
index 0000000..5385b5d
--- /dev/null
+++ b/app/src/jooli/res/layout/activity_qr.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/jooli/res/layout/fragment_help_checkup.xml b/app/src/jooli/res/layout/fragment_help_checkup.xml
new file mode 100644
index 0000000..27612d8
--- /dev/null
+++ b/app/src/jooli/res/layout/fragment_help_checkup.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/jooli/res/layout/fragment_help_monitoring.xml b/app/src/jooli/res/layout/fragment_help_monitoring.xml
new file mode 100644
index 0000000..c7dd467
--- /dev/null
+++ b/app/src/jooli/res/layout/fragment_help_monitoring.xml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/jooli/res/layout/fragment_help_qr.xml b/app/src/jooli/res/layout/fragment_help_qr.xml
new file mode 100644
index 0000000..dea8dd5
--- /dev/null
+++ b/app/src/jooli/res/layout/fragment_help_qr.xml
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/jooli/res/menu/help.xml b/app/src/jooli/res/menu/help.xml
new file mode 100644
index 0000000..efe3f06
--- /dev/null
+++ b/app/src/jooli/res/menu/help.xml
@@ -0,0 +1,11 @@
+
+
\ No newline at end of file
diff --git a/app/src/jooli/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/jooli/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..1f46878
--- /dev/null
+++ b/app/src/jooli/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/jooli/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/jooli/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..1f46878
--- /dev/null
+++ b/app/src/jooli/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/jooli/res/mipmap-hdpi/ic_launcher.png b/app/src/jooli/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..46c0051
Binary files /dev/null and b/app/src/jooli/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/app/src/jooli/res/mipmap-hdpi/ic_launcher_round.png b/app/src/jooli/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 0000000..ff881cb
Binary files /dev/null and b/app/src/jooli/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/app/src/jooli/res/mipmap-mdpi/ic_launcher.png b/app/src/jooli/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..d2e7c7b
Binary files /dev/null and b/app/src/jooli/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/app/src/jooli/res/mipmap-mdpi/ic_launcher_round.png b/app/src/jooli/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 0000000..fdf18c5
Binary files /dev/null and b/app/src/jooli/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/app/src/jooli/res/mipmap-xhdpi/ic_launcher.png b/app/src/jooli/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..7960b8d
Binary files /dev/null and b/app/src/jooli/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/app/src/jooli/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/jooli/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..7d774e3
Binary files /dev/null and b/app/src/jooli/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/app/src/jooli/res/mipmap-xxhdpi/ic_launcher.png b/app/src/jooli/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..5117e4e
Binary files /dev/null and b/app/src/jooli/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/app/src/jooli/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/jooli/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..4076865
Binary files /dev/null and b/app/src/jooli/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/app/src/jooli/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/jooli/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..fa941a3
Binary files /dev/null and b/app/src/jooli/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/app/src/jooli/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/jooli/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..93e01d2
Binary files /dev/null and b/app/src/jooli/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/app/src/jooli/res/tonometr_med.png b/app/src/jooli/res/tonometr_med.png
new file mode 100644
index 0000000..dfa31c3
Binary files /dev/null and b/app/src/jooli/res/tonometr_med.png differ
diff --git a/app/src/jooli/res/values-v23/styles.xml b/app/src/jooli/res/values-v23/styles.xml
new file mode 100644
index 0000000..1ff382c
--- /dev/null
+++ b/app/src/jooli/res/values-v23/styles.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/jooli/res/values/colors.xml b/app/src/jooli/res/values/colors.xml
new file mode 100644
index 0000000..be5aefc
--- /dev/null
+++ b/app/src/jooli/res/values/colors.xml
@@ -0,0 +1,72 @@
+
+
+ #38b7ee
+ #38b7ee
+ #38b7ee
+
+ #333333
+ #F23939
+ #6D8CA3
+ #263238
+ #6D8CA3
+ #6D8CA3
+
+ #FFFFFF
+ #171616
+ #DE000000
+ #343D47
+ #343739
+
+
+
+ #38b7ee
+ #FFFFFF
+
+ #33000000
+ #38b7ee
+
+ #6D8CA3
+ #2490CF
+
+ #AADAF6
+
+
+ #ffffff
+
+
+ #38b7ee
+ #F23939
+ #3AA8E5
+ #38b7ee
+ #C7D0D9
+
+ #6D8CA3
+ #F6F6EC
+ #3AA8E5
+ #C7D0D9
+ #FAFAEF
+
+ #38b7ee
+
+ #26832A
+
+
+ #F6F6EC
+ #000000
+ #C7D0D9
+
+ #8195AC
+
+
+ 8195AC
+
+ #B3B3B3
+ #3AA8E6
+ #999999
+
+
+ #F44650
+ #F6F6EC
+ #C7D0D9
+ #FAFAEF
+
\ No newline at end of file
diff --git a/app/src/jooli/res/values/font_certs.xml b/app/src/jooli/res/values/font_certs.xml
new file mode 100644
index 0000000..d2226ac
--- /dev/null
+++ b/app/src/jooli/res/values/font_certs.xml
@@ -0,0 +1,17 @@
+
+
+
+ - @array/com_google_android_gms_fonts_certs_dev
+ - @array/com_google_android_gms_fonts_certs_prod
+
+
+ -
+ MIIEqDCCA5CgAwIBAgIJANWFuGx90071MA0GCSqGSIb3DQEBBAUAMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAeFw0wODA0MTUyMzM2NTZaFw0zNTA5MDEyMzM2NTZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBANbOLggKv+IxTdGNs8/TGFy0PTP6DHThvbbR24kT9ixcOd9W+EaBPWW+wPPKQmsHxajtWjmQwWfna8mZuSeJS48LIgAZlKkpFeVyxW0qMBujb8X8ETrWy550NaFtI6t9+u7hZeTfHwqNvacKhp1RbE6dBRGWynwMVX8XW8N1+UjFaq6GCJukT4qmpN2afb8sCjUigq0GuMwYXrFVee74bQgLHWGJwPmvmLHC69EH6kWr22ijx4OKXlSIx2xT1AsSHee70w5iDBiK4aph27yH3TxkXy9V89TDdexAcKk/cVHYNnDBapcavl7y0RiQ4biu8ymM8Ga/nmzhRKya6G0cGw8CAQOjgfwwgfkwHQYDVR0OBBYEFI0cxb6VTEM8YYY6FbBMvAPyT+CyMIHJBgNVHSMEgcEwgb6AFI0cxb6VTEM8YYY6FbBMvAPyT+CyoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJANWFuGx90071MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADggEBABnTDPEF+3iSP0wNfdIjIz1AlnrPzgAIHVvXxunW7SBrDhEglQZBbKJEk5kT0mtKoOD1JMrSu1xuTKEBahWRbqHsXclaXjoBADb0kkjVEJu/Lh5hgYZnOjvlba8Ld7HCKePCVePoTJBdI4fvugnL8TsgK05aIskyY0hKI9L8KfqfGTl1lzOv2KoWD0KWwtAWPoGChZxmQ+nBli+gwYMzM1vAkP+aayLe0a1EQimlOalO762r0GXO0ks+UeXde2Z4e+8S/pf7pITEI/tP+MxJTALw9QUWEv9lKTk+jkbqxbsh8nfBUapfKqYn0eidpwq2AzVp3juYl7//fKnaPhJD9gs=
+
+
+
+ -
+ MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAeFw0wODA4MjEyMzEzMzRaFw0zNjAxMDcyMzEzMzRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKtWLgDYO6IIrgqWbxJOKdoR8qtW0I9Y4sypEwPpt1TTcvZApxsdyxMJZ2JORland2qSGT2y5b+3JKkedxiLDmpHpDsz2WCbdxgxRczfey5YZnTJ4VZbH0xqWVW/8lGmPav5xVwnIiJS6HXk+BVKZF+JcWjAsb/GEuq/eFdpuzSqeYTcfi6idkyugwfYwXFU1+5fZKUaRKYCwkkFQVfcAs1fXA5V+++FGfvjJ/CxURaSxaBvGdGDhfXE28LWuT9ozCl5xw4Yq5OGazvV24mZVSoOO0yZ31j7kYvtwYK6NeADwbSxDdJEqO4k//0zOHKrUiGYXtqw/A0LFFtqoZKFjnkCAQOjgdkwgdYwHQYDVR0OBBYEFMd9jMIhF1Ylmn/Tgt9r45jk14alMIGmBgNVHSMEgZ4wgZuAFMd9jMIhF1Ylmn/Tgt9r45jk14aloXikdjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWSCCQDC4IdGZEowjTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IBAQBt0lLO74UwLDYKqs6Tm8/yzKkEu116FmH4rkaymUIE0P9KaMftGlMexFlaYjzmB2OxZyl6euNXEsQH8gjwyxCUKRJNexBiGcCEyj6z+a1fuHHvkiaai+KL8W1EyNmgjmyy8AW7P+LLlkR+ho5zEHatRbM/YAnqGcFh5iZBqpknHf1SKMXFh4dd239FJ1jWYfbMDMy3NS5CTMQ2XFI1MvcyUTdZPErjQfTbQe3aDQsQcafEQPD+nqActifKZ0Np0IS9L9kR/wbNvyz6ENwPiTrjV2KRkEjH78ZMcUQXg0L3BYHJ3lc69Vs5Ddf9uUGGMYldX3WfMBEmh/9iFBDAaTCK
+
+
+
diff --git a/app/src/jooli/res/values/ic_launcher_background.xml b/app/src/jooli/res/values/ic_launcher_background.xml
new file mode 100644
index 0000000..cfa9be0
--- /dev/null
+++ b/app/src/jooli/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+
+
+ #FFFFFF
+
\ No newline at end of file
diff --git a/app/src/jooli/res/values/preloaded_fonts.xml b/app/src/jooli/res/values/preloaded_fonts.xml
new file mode 100644
index 0000000..92cf22e
--- /dev/null
+++ b/app/src/jooli/res/values/preloaded_fonts.xml
@@ -0,0 +1,12 @@
+
+
+
+ - @font/roboto
+ - @font/roboto_condensed_light
+ - @font/roboto_condensed_regular
+ - @font/roboto_light
+ - @font/roboto_medium
+ - @font/roboto_regular
+ - @font/roboto_upper_regular
+
+
diff --git a/app/src/jooli/res/values/strings.xml b/app/src/jooli/res/values/strings.xml
new file mode 100644
index 0000000..eca5c8e
--- /dev/null
+++ b/app/src/jooli/res/values/strings.xml
@@ -0,0 +1,470 @@
+
+ Теле2Мед
+
+ Отмена
+ 0
+ ДАЛЕЕ
+ 7
+ 8
+ 9
+ 4
+ 5
+ 6
+ 1
+ 2
+ 3
+ Поднесите QR-код к камере вашего устройства.\nСканирование начнётся автоматически
+
+ Вы ввели недействительный логин или пароль. У вас осталось %1$d попыток.
+ Войти
+ Аутентификация через
+ ЕСИА
+ МИС
+ Внимание! В системе производится сбор, хранение и обработка персональных данных граждан РФ, защита данных обеспечивается в соответствии с требованиями ФЗ-152 о защите персональных данных. Нарушение порядка сбора, хранения, обработки или распространения информации о гражданах влечет за собой ответственность, установленную законодательством Российской Федерации.
+
+ \n\nМиссия компании ООО «Теле2Мед» — качественная организация предрейсового медицинского осмотра водителей в соответствии с действующим законодательством. Мы считаем, что правильное выполнение работы сделает людей здоровыми, вождение на дорогах аккуратным, а мир более безопасным!
+ \n\nДанное приложение имеет 3 основных интерфейса:\n1. Проведений измерений физиологических параметров, используя устройство "Теле2Мед".
+ \n2.Журнал измерений физиологических параметров - для мониторинга и контроля измерения.
+ \n3.Контроль документа по QR-коду - для проверки легитимности результатов измерений.
+
+
+ Машиночасы, ч
+ Моточасы, ч
+
+ Запомнить меня на этом устройстве
+
+ Приложение "Теле2Мед" собирает данные о местоположении, чтобы включить передачу данных геолокации на сервер и отображать трек водителя в системе, даже когда приложение закрыто или не используется.
+
+
+ Ваше сообщение отправлено
+ Нажимая на кнопку Выход, Вы отключитесь от системы. Вы уверены что хотите выйти?
+ Пользователь с таким номером телефона не найден.\nХотите зарегистрироваться?
+
+
+ Статус
+
+ Выбор функционала
+
+
+ Проведения измерения
+ Измерение физиологических параметров
+ Выберите вид регистрационного журнала
+
+
+ Информация об устройстве
+ Идентификатор
+ Транспортное средство
+ Водитель
+ Информация о подключении
+ Подключение к интернету
+ Подключение к спутникам
+ Количество спутников
+ Подключение к серверу
+ Информация о местоположении
+ Время последней фиксации
+ Широта
+ Долгота
+ Высота над уровнем моря, м
+ Азимут (направление движения)
+ Скорость, км/ч
+
+ На карте
+ Статус
+
+ Версия приложения
+
+
+ %1$s%2$s
+
+ Телеметрия для медицины
+ 02.08.2023 10:00:00
+ image from qr dont rotate
+ Tele2Med\nJooli
+ jooli 3.0
+
+ Загрузка…
+ Внимание
+ OK
+
+ Путевой лист
+ Автомобиль
+ %1$s №%2$s от %3$s
+ №%1$s от %2$s
+ Режим работы по ПЛ
+ Режим работы по заданию
+
+
+ Номер задания
+ Режим работы приложения
+
+
+ №%1$s
+
+
+ Неправильный каст ошибки
+ Указанный пользовательский токен невалидный
+ yyyyMMddHHmmss
+
+ Необходимо обновить приложение
+ Ваша органзиация не настроена в системе. Обратитесь к диспетчеру
+ У организации отсутствует часовой пояс, требуется синхронизация систем, обратитесь к администратору
+
+ Android
+
+ Нет интернет подключения
+ Что-то пошло не так
+
+ Пользователь с таким номером телефона \n не найден. Попробуйте еще раз.
+ Введите ваш номер телефона и нажмите “✓” на клавиатуре
+ Вход
+ +7 XXX XXX-XX-XX
+
+ Введен неверный пин-код.\n Попробуйте еще раз
+ Идёт процесс авторизации…
+
+ Низкий заряд аккумулятора. Данные о местонахождении устройства могут передаваться некорректно.\nПодключите зарядное устройство
+ Данные о местоположении давно не передавались. Проверьте настройки определения геопозиции устройства.
+
+
+ Получить новый пин-код
+ Введите ваш пин-код
+ Ввод пин-кода
+
+ Новый пин-код
+ На ваш телефон выслано SMS\nс новым пин-кодом. Введите пин-код.
+ Выслать пин-код повторно
+
+ Сменить пин-код
+ Необходимо сменить пин-код.\nВведите новый пин-код
+ Введите новый пин-код повторно
+ Значения в полях не совпадают.\nПопробуйте еще раз
+
+ К сожалению, Ваша организация не указала номер телефона в настройках подразделений в Системе. Сообщите об этом вашему диспетчеру.
+ Для работы с мобильным приложением ваш номер телефона должен быть зарегистрирован в системе.\n\nДля входа в систему введите номер телефона и пин-код.\n\nПри первом входе в систему введите номер телефона и нажмите «Получить новый пин-код». С помощью sms вам будет направлен временный пин-код. После входа в систему установите новый постоянный пин-код и подтвердите его.\n\nВ случае затруднений позвоните диспетчеру.
+ Позвонить диспетчеру
+ Помощь
+
+ +78432034683
+
+
+ Данный интефейс содержит функционал для измерения физиологических параметров обследуемого и передачи медицинской информации для систем и комплексов телемедицины.\n\nПриложение обеспечивает взаимодействие с устройством "Теле2Мед". Следуя подсказкам на экране водитель проходит осмотр и снимает необходимые показания с помощью подключенного устройства.
+ Данный интерфейс предусмотрен для мониторинга проведенных измерений.\n\nФункционал интерфейса предоставляет данные о статусах измерений, отсортированных по дате по убыванию\n\nКаждая строчка соответствует одному осмотру и содержит следующие данные: № осмотра, время окончания осмотра, тип осмотра, данные физиологических параметров водителя, автоматический результат, результат телемедика.
+ Для проверки подлинности результатов измерения физиологических параметров по QR-коду необходимо лишь выбрать соотвествующий пункт меню и навести камеру на QR-код.\n\nПриложение автоматически проверит документ и вы получите информацию о пройденных измерениях водителя.
+
+ Отсканируйте код\nи получите подробную информацию с результатом измерения
+
+ Статистика по медицинским осмотрам
+ Статистика за неделю
+ Статистика по справочникам
+
+ Изменение профиля
+ Личные данные
+ Управление доступом
+ Ключи доступа
+
+ Просмотр ключей
+
+
+ Новые осмотры
+ Допущенные
+ Не допущенные
+ Все осмотры
+
+ Ответственные
+ Водители
+ Подразделения
+ АРМы
+
+ Последние медосмотры
+ Медицинский осмотр
+
+ Медосмотры
+
+ Последние
+ По персоналу
+ По датам
+
+ Отчеты
+
+ Сводный
+ За период
+ По дням
+ По часам
+ По температурам
+
+ Справочник
+
+ Ответственные
+ Водители
+ Подразделения
+ АРМы
+ Справки
+
+ Журналы
+
+ Медицинские
+ Диагностический
+ Риск гипертонии
+
+
+ Описание полей и блоков экрана "Статус":\n
+1. Информация за сегодня – данный блок содержит в себе данные о действующей сессии за текущий день:\n
+1.1 Дата и время входа в систему отражает время первой отправки координат за текущий день.\n
+1.2 Время работы в системе – это продолжительность времени от входа в систему до момента запроса этой информации.\n
+1.3 Пробег за сегодня – расстояние, пройденное с включенным приложением за текущий день.\n
+1.4 Последнее обновление – время последнего обновления данных блока «Информация за сегодня».\n
+2. Информация об устройстве включает в себя информацию о текущей конфигурации пользователя:\n
+2.1 Идентификатор – это уникальный идентификационный номер устройства, по которому осуществляется привязка мобильного устройства в систему Теле2Мед.\n
+2.2 Транспортное средство – отражает привязанное к мобильному устройству в системе транспортное средство (ТС). \n
+2.3 Водитель – имя пользователя, который привязан к данному мобильному устройству.\n
+2.4 Версия приложения – номер версии и дата выпуска используемого приложения.\n
+2.5 Режим работы приложения – отражает режим работы, заданный в системе для данного мобильного устройства. Существует 3 вида режима: COORDINATES (в систему передаётся и записывается весь трек мобильного устройства за всё время работы приложения), ROUTE_LIST (в систему передаётся и записывается трек мобильного устройства по выбранному путевому листу), REQUESTS (в систему передаётся и записывается трек мобильного устройства по выбранному заданию).\n
+3. Информация о подключении содержит статус подключения приложения к сети и к системе:\n
+3.1 Подключение к интернету – статус наличия интернет-соединения за последние 15 секунд. \n
+3.2 Подключение к серверу – статус наличия подключения к системе, отражается в зависимости наличия ответа от сервера в течение 5 последних минут.\n
+4. Информация о местоположении. Блок отображает последние данные о местоположение мобильного устройства, которые были получены приложением. Данные обновляются раз в 15 секунд.\n
+4.1 Время последней фиксации – время получения приведенных ниже данных.\n
+4.2 Широта – координаты широты, зафиксированные устройством.\n
+4.3. Долгота – координаты долготы, зафиксированные устройством.\n
+4.4 Высота над уровнем моря – высота над уровнем море, зафиксированная устройством.\n
+4.5 Скорость – скорость движения мобильного устройства в момент фиксации данных местоположения.\n
+Экран "На карте" отражает текущее положение пользователя на карте.
+
+
+
+ Задания на сегодня
+ История
+ Статистика
+ Настройки
+ Чат с диспетчером
+ Уведомления
+ Карта
+
+
+ Выйти
+ Поиск устройства
+ Поиск принтера
+
+
+ Открыть боковое меню
+ Закрыть боковое меню
+
+ Введите текущий пин-код
+ Текущий пин-код введен неверно,\nпопробуйте еще раз
+ Введите новый пин-код
+
+ SOS
+ sos
+
+
+ Параметры
+ Сводная панель
+ Сохранить
+ Удалить
+ Заменить
+ Загрузить фото
+ Управление доступом
+
+ Показать ещё
+
+
+ ДТП
+ Поломка
+ Мне плохо
+ Нападение
+
+
+ Отправить сигнал тревоги\nдиспетчеру
+ Комментарий
+ Сигнал тревоги отправлен диспетчеру
+ Автомобиль не указан
+ Не выбран режим работы
+
+ Транспортное средство
+
+ Номер задания
+ Статус
+ Проведение измерения
+
+
+ Выберите путевой лист или задание
+ Выберите путевой лист
+ Путевые листы не назначены
+ Список заданий пуст
+
+ Новое уведомление
+
+ Посмотреть задание
+
+
+ Задание
+ Данные осмотра №%1$s
+ Номер задания
+ Путевой лист
+ Статус
+ Комментарий
+ Время
+ Прибытие
+ Убытие
+ Автомобиль
+ Рег. знак
+ Марка и модель
+ Водитель
+ Имя
+ Телефон
+ Адрес
+ Примечание
+ Маршрут
+ раскрыть
+ свернуть
+ Дата и время прибытия
+ Основное ТС
+ Показания одометра, км
+ Машиночасы, ч
+ Моточасы, ч
+ Дата и время убытия
+ Начать поездку
+ Завершить задание
+ Контакт
+ Фиксация данных
+ Прибытие
+ Убытие
+ Выезд из гаража/предыдущего места работ
+ Дата и время выезда
+ Нулевой пробег, км
+ Заезд в гараж/следующее место работ
+ Дата и время заезда
+
+ На карте
+ Списком
+ Задание %1$d
+ Основная информация
+ Статус
+ Комментарий
+ Прибытие
+ Пассажир
+ Примечание
+ Маршрут
+ Фиксация данных
+ Статистика
+ Трек по заданию
+ Отменить задание
+ Укажите причину отмены
+ unexpected page
+
+ Задание %1$s
+ Нет даты подачи
+
+ свернуть
+ развернуть
+ ≈ %1$d км
+ %1$s км
+ ≈ %1$d мин
+ %1$d мин
+ Расстояние
+ Время
+ Начал
+ Завершил
+ ПРИНЯТЬ ЗАДАНИЕ
+ ВЗЯТЬ В РАБОТУ
+ ПРИБЫЛ
+ НАЧАТЬ ПОЕЗДКУ
+ ЗАВЕРШИТЬ ПОЕЗДКУ
+ Нет даты подачи
+ Отправить
+ Успешно отправлено
+ Помощь
+ Данные выезда из гаража
+ Получение данных
+ Запись видео
+
+
+ Предрейсовые\nмедицинские осмотры
+ Работаем по всей России
+
+ Авторизация
+ Введите свой табельный номер\nили приложите карту к считывателю
+ Здравствуйте!
+ Подтвердите свою личность
+ Нажимая кнопку "Да", вы соглашаетесь с тем, что даёте разрешение на обработку своих персональных данных (в том числе о состоянии здоровья).
+ Нажимая кнопку "Да", вы соглашаетесь с тем, что даёте разрешение на обработку своих персональных данных (в том числе о состоянии здоровья).
+
+ Добавить
+ Смотреть
+ Редактировать
+ Удалить
+
+ Наденьте манжету на предплечье, нажмите кнопку "Измерить давление" и дождитесь окончания измерения
+ Возьмите устройство в руку, нажмите кнопку "Начать измерение", дождитесь звукового сигнала, поднесите устройство датчиком измерения температуры ко лбу на расстояние 2–3 см и дождитесь звукового сигнала об окончании измерения
+ Возьмите устройство в руку, нажмите кнопку "Начать измерение".\nДождитесь звукового сигнала и дуйте в мундштук до появления звукового сигнала
+
+
+ Измерение физиологических параметров
+ Не забудьте подключить\nАРМ "Теле2Мед"
+ Журнал измерений физиологических параметров
+ История измерений
+ Контроль документа по QR-коду
+
+
+ Сканирование QR-кода медосмотра
+
+ Версия: 1.0.0.1 от 30.01.2022
+
+
+ Сотрудник
+
+ Табельный номер
+ Пол
+ Фамилия
+ Имя
+ Отчество
+ Дата рождения
+ Организация
+
+ Данные осмотра
+
+
+ Дата осмотра
+ Время начала
+ Время окончания
+ Тип осмотра
+ Терминал
+ Статус
+ Медик
+ Результат (автомат.)
+ Результат (медик)
+ Комментарий медика
+ Дата / время результата
+
+ Фото осмотра
+ Видео осмотра
+ Фото профиля
+
+ Верхнее давление
+ Нижнее давление
+ Пульс
+ Алкоголь
+ Температура
+ Жалобы
+ Справка
+
+
+
+ Наименование оборудования
+ Моточасы, ч *
+ Навесное оборудование
+
+
+ Да
+ Отмена
+
+
+ Вы уверены, что хотите сбросить путевой лист %s?
+ Вы уверены, что хотите начать работу по путевому листу %s?
+ Выбор путевого листа
+
+
+ Вы уверены, что хотите сбросить задание %s?
+ Вы уверены, что хотите начать работу по заданию %s?
+ Выбор задания
+
diff --git a/app/src/jooli/res/values/styles.xml b/app/src/jooli/res/values/styles.xml
new file mode 100644
index 0000000..d7366e0
--- /dev/null
+++ b/app/src/jooli/res/values/styles.xml
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..ec2e23d
--- /dev/null
+++ b/app/src/main/AndroidManifest.xml
@@ -0,0 +1,178 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/compas-playstore.png b/app/src/main/compas-playstore.png
new file mode 100644
index 0000000..9940654
Binary files /dev/null and b/app/src/main/compas-playstore.png differ
diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png
new file mode 100644
index 0000000..6baf8de
Binary files /dev/null and b/app/src/main/ic_launcher-playstore.png differ
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/ApiService.kt b/app/src/main/java/ru/tele2med/mobile/data/api/ApiService.kt
new file mode 100644
index 0000000..af81978
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/ApiService.kt
@@ -0,0 +1,388 @@
+package ru.tele2med.mobile.data.api
+
+import android.net.Uri
+import io.reactivex.Completable
+import io.reactivex.Single
+import okhttp3.MediaType
+import okhttp3.RequestBody
+import ru.tele2med.mobile.data.api.entity.request.NewMedicalCheckup
+import retrofit2.http.*
+import ru.tele2med.mobile.BuildConfig.*
+import ru.tele2med.mobile.data.api.entity.request.BeginMedicalCheckupFinall
+import ru.tele2med.mobile.data.api.entity.response.*
+
+
+interface ApiService {
+ companion object {
+ private const val PARAM_COMMAND = "command"
+ private const val PARAM_VERSION = "version"
+ private const val PARAM_BUILDNUMBER = "buildNumber"
+ private const val PARAM_UUID = "uuid"
+ private const val PARAM_SESSID = "sessId"
+ private const val PARAM_TOKENAPP = "tokenApp"
+
+ private const val PARAM_PLATFORM = "platform"
+ private const val PARAM_MODEL = "model"
+ private const val PARAM_PIN_CODE = "code"
+ private const val PARAM_TOKEN_REFRESH = "tokenRefresh"
+
+ private const val COMMAND_BEGIN_SESSION = "begin_session"
+ private const val COMMAND_BEGIN_MEDICAL_CHECKUP = "begin_medical_checkup"
+ private const val COMMAND_UPLOAD_PROFILE_PHOTO = "profile_photo"
+ private const val COMMAND_NEW_MEDICAL_CHECKUP = "new_medical_checkup"
+ private const val COMMAND_UPLOAD_VIDEO = "upload_video"
+ private const val COMMAND_UPLOAD_PHOTO = "upload_photo"
+ private const val COMMAND_GET_STICKER = "get_sticker_checkup"
+ private const val COMMAND_NEW_RFID = "new_rfid"
+ private const val COMMAND_AUTH = "auth"
+ private const val COMMAND_AUTH_REFRESH = "authRefresh"
+ private const val COMMAND_APP_INIT = "appInit"
+ private const val COMMAND_GET_INFO = "info"
+ private const val COMMAND_GET_GENERAL_INFO = "getGeneralInfo"
+ private const val COMMAND_MEDICAL_CHECKUP = "medicalCheckup"
+ private const val COMMAND_MEDICAL_CHECKUP_ALL = "medicalCheckup"
+ private const val COMMAND_DASHBOARD = "dashboard"
+
+
+ }
+
+ @FormUrlEncoded
+ @POST
+ fun auth(
+ @Url url: String = "${API_BASE_URL}auth",
+ @Header("token") token: String,
+ @Field("command") command: String,
+ @Field("login") login: String?,
+ @Field("paswd") paswd: String?,
+ @Field("appUniqID") appUniqID: String
+ ): Single
+
+
+ @Multipart
+ @POST
+ fun authRefresh(
+ @Url url: String = "${API_BASE_URL}mobile/authRefresh",
+ @Part(PARAM_TOKEN_REFRESH) tokenRefresh: RequestBody,
+ @Part("command") command: RequestBody,
+ @Part("tokenApp") tokenApp: RequestBody?,
+ @Part("sessId") sessId: RequestBody?,
+ @Part("uuid") uuid: RequestBody
+ ): Single
+
+ @Multipart
+ @POST
+ fun login(
+ @Url url: String = "${API_BASE_URL}mobile/auth/",
+ @Part(PARAM_PIN_CODE) code: RequestBody,
+ @Part("command") command: RequestBody,
+ @Part("tokenApp") tokenApp: RequestBody?,
+ @Part("sessId") sessId: RequestBody?,
+ @Part("uuid") uuid: RequestBody,
+ @Part("tokenUser") tokenUser: RequestBody?,
+ @Part("appUniqID") appUniqID: RequestBody
+ ): Single
+
+
+ @POST
+ fun beginSession(
+ @Url url: String = "$API_ARM_URL$COMMAND_BEGIN_SESSION",
+ // @Url url: String = "https://med.tele2med.ru/arm/${COMMAND_BEGIN_SESSION}",
+ @Body body: request.BeginSessionFinall
+ ): Single
+
+
+ @POST
+ fun beginCheckup(
+ @Url url: String = "$API_ARM_URL$COMMAND_BEGIN_MEDICAL_CHECKUP",
+ // @Url url: String = "https://med.tele2med.ru/arm/${COMMAND_BEGIN_MEDICAL_CHECKUP}",
+ @Body body: BeginMedicalCheckupFinall
+ ): Single
+
+
+ @POST("$API_ARM_URL$COMMAND_UPLOAD_PROFILE_PHOTO/{checkup_id}")
+ fun uploadFirstPhoto(
+ @Path("checkup_id") checkup_id: String,
+ @Body photo: RequestBody
+ ): Single
+
+
+ @POST
+ fun newRfid(
+ @Url url: String = "$API_ARM_URL$COMMAND_NEW_RFID",
+ // @Url url: String = "https://med.tele2med.ru/arm/${COMMAND_NEW_RFID}",
+ @Body body: request.NewRfid
+ ): Single
+
+
+ @POST
+ fun newMedicalCheckup(
+ @Url url: String = "$API_ARM_URL$COMMAND_NEW_MEDICAL_CHECKUP",
+ // @Url url: String = "https://med.tele2med.ru/arm/${COMMAND_NEW_MEDICAL_CHECKUP}",
+ @Body body: NewMedicalCheckup
+ ): Single
+
+
+ @POST("$API_ARM_URL$COMMAND_UPLOAD_VIDEO/{uniq_id}/{session}")
+ // @POST("https://med.tele2med.ru/arm/${COMMAND_UPLOAD_VIDEO}/{uniq_id}/{session}")
+ fun uploadVideo(
+ // @Url url: String = "$API_ARM_URL$COMMAND_UPLOAD_VIDEO/{uniq_id}/{session}",
+ @Path("uniq_id") uniq_id: String,
+ @Path("session") session: String,
+ @Body video: RequestBody
+ ): Single
+
+ @POST("$API_ARM_URL$COMMAND_UPLOAD_PHOTO/{uniq_id}/{session}")
+ // @POST("https://med.tele2med.ru/arm/${COMMAND_UPLOAD_PHOTO}/{uniq_id}/{session}")
+ fun uploadPhoto(
+ @Path("uniq_id") uniq_id: String,
+ @Path("session") session: String,
+ @Body photo: RequestBody
+ ): Single
+
+ @POST("$API_ARM_URL$COMMAND_GET_STICKER")
+ fun getSticker(
+ @Body data: RequestBody
+ ): Single
+
+
+ @Multipart
+ @POST
+ fun init(
+ // @Url url: String = "https://pdn.tele2med.ru/lc/mobile/${COMMAND_APP_INIT}",
+ @Url url: String = "$API_BASE_URL${COMMAND_APP_INIT}",
+ @Part(PARAM_VERSION) version: RequestBody,
+ @Part(PARAM_BUILDNUMBER) buildNumber: RequestBody,
+ @Part(PARAM_UUID) uuid: RequestBody,
+ @Part(PARAM_SESSID) sessId: RequestBody?,
+ @Part(PARAM_TOKENAPP) tokenApp: RequestBody?,
+ @Part(PARAM_TOKEN_REFRESH) tokenRefresh: RequestBody?,
+ @Part(PARAM_PLATFORM) platform: RequestBody,
+ @Part(PARAM_MODEL) model: RequestBody,
+ @Part(PARAM_COMMAND) command: RequestBody = RequestBody.create(
+ MediaType.parse("text/plain"),
+ COMMAND_APP_INIT
+ )
+
+ ): Single
+
+
+ @Multipart
+ @POST
+ fun getGeneralInfo(
+ @Url url: String = "$API_BASE_URL${COMMAND_GET_GENERAL_INFO}",
+ @Part(PARAM_COMMAND) command: RequestBody = RequestBody.create(
+ MediaType.parse("text/plain"),
+ COMMAND_GET_GENERAL_INFO
+ ),
+ @Part("tokenApp") tokenApp: RequestBody?,
+ @Part("sessId") sessId: RequestBody?,
+ @Part("uuid") uuid: RequestBody,
+ @Part("tokenUser") tokenUser: RequestBody?
+ ): Single
+
+
+ @Multipart
+ @POST
+ fun getInfo(
+ @Url url: String = "$API_BASE_URL${COMMAND_GET_INFO}",
+ @Part(PARAM_COMMAND) command: RequestBody = RequestBody.create(
+ MediaType.parse("text/plain"),
+ COMMAND_GET_INFO
+ ),
+ @Part("tokenApp") tokenApp: RequestBody?,
+ @Part("sessId") sessId: RequestBody?,
+ @Part("uuid") uuid: RequestBody,
+ @Header("Authorization") tokenUser: String?,
+ @Part("appUniqID") appUniqID: RequestBody
+
+ ): Single
+
+ @Multipart
+ @POST("${API_BASE_URL}mobile/medicalCheckup/{qrcode}")
+ fun getQR(
+ @Path("qrcode") qrcode: String?,
+ @Part(PARAM_COMMAND) command: RequestBody = RequestBody.create(
+ MediaType.parse("text/plain"),
+ COMMAND_MEDICAL_CHECKUP
+ ),
+ @Part("tokenApp") tokenApp: RequestBody?,
+ @Part("sessId") sessId: RequestBody?,
+ @Part("uuid") uuid: RequestBody,
+ @Part("appUniqID") appUniqID: RequestBody
+ // @Header("Authorization") tokenUser: String?
+ ): Single
+
+ @Multipart
+ @POST("${API_BASE_URL}mobile/medicalCheckup/{qrcode}")
+ fun getQRProd(
+ @Path("qrcode") qrcode: String?,
+ @Part(PARAM_COMMAND) command: RequestBody = RequestBody.create(
+ MediaType.parse("text/plain"),
+ COMMAND_MEDICAL_CHECKUP
+ ),
+ @Part("tokenApp") tokenApp: RequestBody?,
+ @Part("sessId") sessId: RequestBody?,
+ @Part("uuid") uuid: RequestBody,
+ @Part("appUniqID") appUniqID: RequestBody,
+ @Header("Authorization") tokenUser: String?
+ ): Single
+
+
+ @Multipart
+ // @POST("https://pdn.tele2med.ru/api3_/mobile/medicalCheckup")
+ @POST("${API_BASE_URL}mobile/medicalCheckup")
+ fun getMedicalCheckupAll(
+ @Part("offset") offset: RequestBody? = null,
+ @Part("limit") limit: RequestBody? = null,
+ @Part(PARAM_COMMAND) command: RequestBody = RequestBody.create(
+ MediaType.parse("text/plain"),
+ COMMAND_MEDICAL_CHECKUP_ALL
+ ),
+ @Part("tokenApp") tokenApp: RequestBody?,
+ @Part("sessId") sessId: RequestBody?,
+ @Part("uuid") uuid: RequestBody,
+ @Part("appUniqID") appUniqID: RequestBody,
+ @Header("Authorization") tokenUser: String?
+ ): Single
+
+ @Multipart
+ // @POST("https://pdn.tele2med.ru/api3_/mobile/dashboard")
+ @POST("${API_BASE_URL}mobile/dashboard")
+ fun getDashboard(
+ @Part(PARAM_COMMAND) command: RequestBody = RequestBody.create(
+ MediaType.parse("text/plain"),
+ COMMAND_DASHBOARD
+ ),
+ @Part("tokenApp") tokenApp: RequestBody?,
+ @Part("sessId") sessId: RequestBody?,
+ @Part("uuid") uuid: RequestBody,
+ @Part("appUniqID") appUniqID: RequestBody,
+ @Header("Authorization") tokenUser: String?
+ ): Single
+
+
+ @Multipart
+ @POST
+ fun logOut(
+ //@Url url: String = "https://pdn.tele2med.ru/lc/mobile/logout",
+ @Url url: String = "${API_BASE_URL}mobile/logout",
+ @Header("Authorization") token: String?,
+ @Part("tokenUser") tokenUser: String
+ ): Completable
+
+ @GET
+ fun getRedirect(
+ @Url url: Uri
+ ): Completable
+
+}
+
+/*-- Дальше OLD --*/
+/*
+ @GET(ru.tele2med.mobile.BuildConfig.API_VERSION)
+ fun checkPhone(
+ @Query("command") command: String,
+ @Query("phone") phone: String
+ ): Single
+
+
+ @POST(ru.tele2med.mobile.BuildConfig.API_VERSION)
+ fun recoveryPinCode(
+ @Query("command") command: String,
+ @Query("phone") phone: String
+ ): Single
+
+ @POST(ru.tele2med.mobile.BuildConfig.API_VERSION)
+ fun changePinCode(
+ @Query("command") command: String,
+ @Query("phone") phone: String,
+ @Query("pincode") pinCode: String
+ ): Single
+
+ /* @POST(BuildConfig.API_VERSION)
+ fun logOut(
+ @Query("command") command: String
+ ): Completable */
+
+ @POST(ru.tele2med.mobile.BuildConfig.API_VERSION)
+ fun sendSos(
+ @Query("command") command: String,
+ @Query("message") message: String,
+ @Query("timeStamp") time: Long,
+ @Query("lat") lat: Double,
+ @Query("lon") lon: Double
+ ): Single
+
+ @POST(ru.tele2med.mobile.BuildConfig.API_VERSION)
+ fun getRouteList(
+ @Query(PARAM_COMMAND) command: String = COMMAND_GET_ROUTE_LIST
+ ): Single>
+
+ @POST(ru.tele2med.mobile.BuildConfig.API_VERSION)
+ fun getRequestListWithoutRL(
+ @Query(PARAM_COMMAND) command: String = COMMAND_GET_REQUEST_LIST_WITHOUT_RL
+ ): Single>
+
+ @POST(ru.tele2med.mobile.BuildConfig.API_VERSION)
+ fun sendPosition(
+ @Query("command") command: String,
+ @Body body: List
+ ): Single
+
+ @POST(ru.tele2med.mobile.BuildConfig.API_VERSION)
+ fun notifyRouteSelected(
+ @Query("command") command: String,
+ @Query("id") routeId: Int
+ ): Single
+
+ @POST(ru.tele2med.mobile.BuildConfig.API_VERSION)
+ fun getCurrentTS(
+ @Query(PARAM_COMMAND) command: String = COMMAND_GET_CURRENT_TS
+ ): Single
+
+ @POST(ru.tele2med.mobile.BuildConfig.API_VERSION)
+ fun updateTodayStatistic(
+ @Query(PARAM_COMMAND) command: String = COMMAND_GET_UPDATE
+ ): Single
+
+ @POST(ru.tele2med.mobile.BuildConfig.API_VERSION)
+ fun getTodayStatistic(
+ @Query(PARAM_COMMAND) command: String = COMMAND_GET_SESSION_STATISTIC
+ ): Single
+
+ @POST(ru.tele2med.mobile.BuildConfig.API_VERSION)
+ fun cancelRequest(
+ @Query("command") command: String,
+ @Query("id") requestId: Int,
+ @Query("time") time: Long,
+ @Query("message") message: String
+ ): Single
+
+ @POST(ru.tele2med.mobile.BuildConfig.API_VERSION)
+ fun getFullInfoAboutRequest(
+ @Query("command") command: String,
+ @Query("id") requestId: Int
+ ): Single
+
+ @POST(ru.tele2med.mobile.BuildConfig.API_VERSION)
+ fun getRequestList(
+ @Query("command") command: String,
+ @Query("id") routeId: Int
+ ): Single>
+
+ @POST(ru.tele2med.mobile.BuildConfig.API_VERSION)
+ fun getRequestListForMap(
+ @Query(PARAM_ID) routeId: Int,
+ @Query(PARAM_COMMAND) command: String = COMMAND_GET_REQUEST_LIST_FOR_MAP
+ ): Single>
+
+ @POST(ru.tele2med.mobile.BuildConfig.API_VERSION)
+ fun changeRequestStatus(
+ @Query("command") command: String,
+ @Query("id") requestId: Int,
+ @Query("time") time: Long
+ ): Single
+
+}
+
+ */
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/Command.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/Command.kt
new file mode 100644
index 0000000..388d21b
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/Command.kt
@@ -0,0 +1,26 @@
+package ru.tele2med.mobile.data.api.entity
+
+enum class Command {
+ checkPhone,
+ authRefresh,
+ auth,
+ appInit,
+ getCurrentTS,
+ recoveryPincode,
+ changePincode,
+ logout,
+ sendSos,
+ sendPosition,
+ getRouteList,
+ getRequest,
+ getRequestList,
+ chooseRouteList,
+ chooseRequest,
+ requestReject,
+ requestToWork,
+ requestAtPoint,
+ requestStart,
+ requestEndб,
+ getTodayStatistic,
+ updateTodayStatistic
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/exception/ApiException.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/exception/ApiException.kt
new file mode 100644
index 0000000..a73cfb8
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/exception/ApiException.kt
@@ -0,0 +1,3 @@
+package ru.tele2med.mobile.data.api.entity.exception
+
+data class ApiException(override val message: String, val code: Int) : RuntimeException(message)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/BeginMedicalCheckup.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/BeginMedicalCheckup.kt
new file mode 100644
index 0000000..3845c03
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/BeginMedicalCheckup.kt
@@ -0,0 +1,14 @@
+package request
+
+import ru.tele2med.mobile.BuildConfig
+
+data class BeginMedicalCheckup(
+ val uniq_id: String,
+ val session: String = BuildConfig.VERSION_NAME,
+ val organization_uniq_id: String = BuildConfig.VERSION_NAME,
+ val source: String = BuildConfig.VERSION_NAME,
+ val employe_id: String = BuildConfig.VERSION_NAME,
+ val pass: String = BuildConfig.VERSION_NAME
+
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/BeginMedicalCheckupFinall.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/BeginMedicalCheckupFinall.kt
new file mode 100644
index 0000000..7d83d3f
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/BeginMedicalCheckupFinall.kt
@@ -0,0 +1,12 @@
+package ru.tele2med.mobile.data.api.entity.request
+
+data class BeginMedicalCheckupFinall(
+ var uniq_id: String,
+ var session: String,
+ var organization_uniq_id: String,
+ var source: String = "keyboard",
+ var employe_id: String,
+ var pass: String?=null
+
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/BeginSession.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/BeginSession.kt
new file mode 100644
index 0000000..1288f1d
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/BeginSession.kt
@@ -0,0 +1,6 @@
+package request
+
+data class BeginSession(
+ val uniq_id: String,
+ val soft_ver: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/BeginSessionFinall.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/BeginSessionFinall.kt
new file mode 100644
index 0000000..0f2f4e6
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/BeginSessionFinall.kt
@@ -0,0 +1,6 @@
+package request
+
+data class BeginSessionFinall(
+ val uniq_id: String,
+ val soft_ver: String = ru.tele2med.mobile.BuildConfig.VERSION_NAME
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/NewMedicalCheckup.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/NewMedicalCheckup.kt
new file mode 100644
index 0000000..aab3339
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/NewMedicalCheckup.kt
@@ -0,0 +1,18 @@
+package ru.tele2med.mobile.data.api.entity.request
+
+data class NewMedicalCheckup(
+ var uniq_id: String,
+ var session: String,
+ var alcotest: String,
+ var inspectiontype: String,
+ var syspressure: String,
+ var diapressure: String,
+ var pulse: String,
+ var temperature: String,
+ var beginmeasurmenttime: String,
+ var endmeasurmenttime: String,
+ var complaints: String,
+ var result_type: String
+
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/NewRfid.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/NewRfid.kt
new file mode 100644
index 0000000..1fdfe0c
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/NewRfid.kt
@@ -0,0 +1,10 @@
+package request
+
+data class NewRfid(
+ val uniq_id: String,
+ var session: String = ru.tele2med.mobile.BuildConfig.VERSION_NAME,
+ val source: String,
+ val key: String
+
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/PositionSend.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/PositionSend.kt
new file mode 100644
index 0000000..eed8392
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/request/PositionSend.kt
@@ -0,0 +1,11 @@
+package request
+
+data class PositionSend(
+ val id: Long,
+ val lat: Double,
+ val lon: Double,
+ val seaLevel: Int,
+ val speed: Int,
+ val timeStamp: Long,
+ val trackAngle: Int
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/AuthResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/AuthResponse.kt
new file mode 100644
index 0000000..a737e0d
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/AuthResponse.kt
@@ -0,0 +1,10 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+import ru.tele2med.mobile.domain.entity.UserData
+
+data class AuthResponse(
+ val af: String,
+ val status: String,
+ val message: String,
+ val data: UserData
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/BeginCheckupResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/BeginCheckupResponse.kt
new file mode 100644
index 0000000..05b0e7b
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/BeginCheckupResponse.kt
@@ -0,0 +1,9 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+import ru.tele2med.mobile.domain.entity.PersonData
+
+data class BeginCheckupResponse(
+ val status: String,
+ val message: String,
+ val data: List?=null
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/BeginResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/BeginResponse.kt
new file mode 100644
index 0000000..0abad37
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/BeginResponse.kt
@@ -0,0 +1,11 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+import ru.tele2med.mobile.domain.entity.OrgsData
+
+data class BeginResponse(
+ val status: String,
+ val message: String,
+ val result_auto: String,
+ val data: List
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/CheckPhoneResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/CheckPhoneResponse.kt
new file mode 100644
index 0000000..81eca31
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/CheckPhoneResponse.kt
@@ -0,0 +1 @@
+package ru.tele2med.mobile.data.api.entity.response
data class CheckPhoneResponse(
val existPin: Boolean
)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/CheckupsListResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/CheckupsListResponse.kt
new file mode 100644
index 0000000..65018f8
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/CheckupsListResponse.kt
@@ -0,0 +1 @@
+package ru.tele2med.mobile.data.api.entity.response
import ru.tele2med.mobile.domain.entity.DataCheckup
data class CheckupsListResponse(
val af: String,
val status: String,
val data: List,
val total_count: Int,
val message: String,
val pos: Int
)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/DashboardListResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/DashboardListResponse.kt
new file mode 100644
index 0000000..af904c3
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/DashboardListResponse.kt
@@ -0,0 +1 @@
+package ru.tele2med.mobile.data.api.entity.response
import ru.tele2med.mobile.domain.entity.DataDashboard
data class DashboardListResponse(
val af: String,
val status: String,
val message: String,
val data: DataDashboard
)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/DefaultResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/DefaultResponse.kt
new file mode 100644
index 0000000..a75e7c8
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/DefaultResponse.kt
@@ -0,0 +1 @@
+package ru.tele2med.mobile.data.api.entity.response
data class DefaultResponse(
val code: Int,
val message: String
)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/GetSticker.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/GetSticker.kt
new file mode 100644
index 0000000..fd36f31
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/GetSticker.kt
@@ -0,0 +1,9 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+import ru.tele2med.mobile.domain.entity.DataSticker
+
+data class GetSticker(
+ val status: String,
+ val message: String,
+ val data: List?=null
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/GetStickerResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/GetStickerResponse.kt
new file mode 100644
index 0000000..04b00df
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/GetStickerResponse.kt
@@ -0,0 +1,9 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+import ru.tele2med.mobile.domain.entity.DataSticker
+
+data class GetStickerResponse(
+ val status: String,
+ val message: String,
+ val data: List?=null
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/InitResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/InitResponse.kt
new file mode 100644
index 0000000..84186a3
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/InitResponse.kt
@@ -0,0 +1,11 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+import ru.tele2med.mobile.domain.entity.DataInit
+import ru.tele2med.mobile.domain.entity.MenuData
+
+data class InitResponse(
+ val af: String,
+ val status: String,
+ val message: String,
+ val data: DataInit
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/LoginResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/LoginResponse.kt
new file mode 100644
index 0000000..b74cd85
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/LoginResponse.kt
@@ -0,0 +1,11 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+data class LoginResponse(
+ val needChangePin: Boolean,
+ val tokenUser: String,
+ val userName: String,
+ val dispatcherPhone: String?,
+ val tokenRefresh: String,
+ val tokenUserExpired: String,
+ val tokenRefreshExpired: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/MessageResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/MessageResponse.kt
new file mode 100644
index 0000000..7405908
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/MessageResponse.kt
@@ -0,0 +1,15 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+import ru.tele2med.mobile.domain.entity.OrgsData
+
+data class MessageResponse(
+ val id: String,
+ val uniq_id: String,
+ val exam_state: String,
+ val exam_state_name: String,
+ val result_medic_text: String?=null,
+ val message_identifier: Int,
+ val message_show: Int,
+ val message: String,
+ val message_reason: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/NewMedicalCheckupResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/NewMedicalCheckupResponse.kt
new file mode 100644
index 0000000..186dead
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/NewMedicalCheckupResponse.kt
@@ -0,0 +1,10 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+import ru.tele2med.mobile.domain.entity.ResultData
+
+data class NewMedicalCheckupResponse(
+ val status: String,
+ val message: String,
+ val result_auto: String,
+ val data: List
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/NewRfidResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/NewRfidResponse.kt
new file mode 100644
index 0000000..b1561b4
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/NewRfidResponse.kt
@@ -0,0 +1,6 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+data class NewRfidResponse(
+ val status: String,
+ val message: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/NotificationResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/NotificationResponse.kt
new file mode 100644
index 0000000..22e527f
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/NotificationResponse.kt
@@ -0,0 +1,12 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+data class NotificationResponse(
+ val id: Int,
+ val requestId: Int,
+ val status: String,
+ val number: String,
+ val time: Long,
+ val description: String,
+ val viewed: Boolean,
+ val changes: List?
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/QRResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/QRResponse.kt
new file mode 100644
index 0000000..517e22e
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/QRResponse.kt
@@ -0,0 +1 @@
+package ru.tele2med.mobile.data.api.entity.response
import ru.tele2med.mobile.domain.entity.DataQR
data class QRResponse(
val af: String,
val status: String,
val message: String,
val type_result: String,
val type_message: String?=null,
val data: DataQR
)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/RouteListResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/RouteListResponse.kt
new file mode 100644
index 0000000..a5102ee
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/RouteListResponse.kt
@@ -0,0 +1,10 @@
+package ru.tele2med.mobile.entity.response
+
+data class RouteListResponse(
+ val brandAndModel: String,
+ val dateOut: String,
+ val id: Int,
+ val number: Int?,
+ val regNumber: String,
+ val serial: String?
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/RoutePointResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/RoutePointResponse.kt
new file mode 100644
index 0000000..eb2f003
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/RoutePointResponse.kt
@@ -0,0 +1,9 @@
+package ru.tele2med.mobile.entity.response
+
+data class RoutePointResponse(
+ val address: String,
+ val index: Int,
+ val lat: Double,
+ val lon: Double,
+ val time: Long? = null
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/RouteResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/RouteResponse.kt
new file mode 100644
index 0000000..4c489c0
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/RouteResponse.kt
@@ -0,0 +1,13 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+/**
+ * Путевой лист
+ */
+data class RouteResponse(
+ val brandAndModel: String,
+ val date: Long,
+ val id: Int,
+ val number: Int?,
+ val regNumber: String,
+ val serial: String?
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/SessionStatisticResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/SessionStatisticResponse.kt
new file mode 100644
index 0000000..ee1f18a
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/SessionStatisticResponse.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+data class SessionStatisticResponse(
+ val startTime: Long,
+ val currentTime: Long,
+ val mileage: Double
+
+)
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/TaskFullInfoResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/TaskFullInfoResponse.kt
new file mode 100644
index 0000000..3ad0f37
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/TaskFullInfoResponse.kt
@@ -0,0 +1,58 @@
+package ru.tele2med.mobile.entity.response
+
+import com.google.gson.annotations.SerializedName
+
+data class TaskFullInfoResponse(
+ val id: Int,
+ val requestNumber: String,
+ val routeList: String,
+ val status: String,
+ val statusComment: String? = null,
+ val routePoints: List,
+ val routePolyline: String,
+ val plannedStartTime: Long,
+ val plannedFinishTime: Long,
+ val carRegNumber: String,
+ val carBrandAndModel: String,
+ val telematics: Boolean,
+ val contactName: String,
+ val contactPhone: String,
+ val startTime: Long? = null,
+ val startSensorValues: SensorValues? = null,
+ val finishTime: Long? = null,
+ val finishSensorValues: SensorValues? = null,
+ val glonassSensorValues: SensorValues? = null,
+ val trackPolyline: String? = null,
+ val standardDiscrepancy: Int,
+ @field:SerializedName("mvz") // Место возникновения затрат
+ val responsibilityCenter: String? = null,
+ val comment: String? = null,
+ val feedTime: Long? = null,
+ val feedMileage: Float? = null,
+ val returnTime: Long? = null,
+ val returnMileage: Float? = null
+)
+
+data class TaskFullInfoRoutePoint(
+ val address: String,
+ val index: Int,
+ val lon: Double,
+ val time: Long? = null,
+ val lat: Double
+)
+
+data class SensorValues(
+ val odometer: Double,
+ @field:SerializedName("motoHour")
+ val engineHours: Double,
+ @field:SerializedName("moHour")
+ val inServiceHours: Double,
+ val attachments: List
+)
+
+data class Attachment(
+ val id: Int,
+ val name: String,
+ @field:SerializedName("motoHour")
+ val engineHours: Double
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/TaskListResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/TaskListResponse.kt
new file mode 100644
index 0000000..e1cc529
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/TaskListResponse.kt
@@ -0,0 +1,15 @@
+package ru.tele2med.mobile.entity.response
+
+import ru.tele2med.mobile.domain.entity.RoutePoint
+
+data class TaskListResponse(
+ val id: Int,
+ val status: String,
+ val number: String,
+ val plannedStartTime: Long,
+ val plannedFinishTime: Long,
+ val processing: Boolean,
+ val routePoints: List,
+ val carRegNumber: String,
+ val carBrandAndModel: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/TaskResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/TaskResponse.kt
new file mode 100644
index 0000000..2fb74b7
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/TaskResponse.kt
@@ -0,0 +1,12 @@
+package ru.tele2med.mobile.entity.response
+
+data class TaskResponse(
+ val id: Int,
+ val number: String,
+ val plannedFinishTime: Long,
+ val plannedStartTime: Long,
+ val processing: Boolean,
+ val routePoints: List,
+ val status: String,
+ val telematics: Boolean
+)
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/TaskResponseMap.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/TaskResponseMap.kt
new file mode 100644
index 0000000..9577401
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/TaskResponseMap.kt
@@ -0,0 +1,15 @@
+package ru.tele2med.mobile.entity.response
+
+import ru.tele2med.mobile.domain.entity.RoutePoint
+
+data class TaskResponseMap(
+ val id: Int,
+ val number: String,
+ val status: String,
+ val plannedStartTime: Long,
+ val plannedFinishTime: Long,
+ val routePoints: List,
+ val processing: Boolean,
+ val routePolyline: String,
+ val trackPolyline: String? = null
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/TokenRefreshResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/TokenRefreshResponse.kt
new file mode 100644
index 0000000..1eef1a2
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/TokenRefreshResponse.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+data class TokenRefreshResponse(
+ val needChangePin: Boolean,
+ val tokenUser: String,
+ val dispatcherPhone: String?,
+ val tokenRefresh: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/UpdateSessionStatisticResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/UpdateSessionStatisticResponse.kt
new file mode 100644
index 0000000..5fbcdf8
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/UpdateSessionStatisticResponse.kt
@@ -0,0 +1,6 @@
+package ru.tele2med.mobile.entity.response
+
+data class UpdateSessionStatisticResponse(
+ val code: Int,
+ val message: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/UpdatesInfoResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/UpdatesInfoResponse.kt
new file mode 100644
index 0000000..4082cf2
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/UpdatesInfoResponse.kt
@@ -0,0 +1,11 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+import ru.tele2med.mobile.domain.entity.Data
+
+
+data class UpdatesInfoResponse(
+ val af: String,
+ val status: String,
+ val message: String,
+ val data: Data?=null
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/UpdatesResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/UpdatesResponse.kt
new file mode 100644
index 0000000..c9eba5a
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/UpdatesResponse.kt
@@ -0,0 +1,11 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+import ru.tele2med.mobile.domain.entity.InfoData
+
+
+data class UpdatesResponse(
+ val messagesCount: Int? = null,
+ val routeList: List,
+ val notifications: List,
+ val info: InfoData
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/UploadFirstPhotoResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/UploadFirstPhotoResponse.kt
new file mode 100644
index 0000000..c579067
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/UploadFirstPhotoResponse.kt
@@ -0,0 +1,9 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+import ru.tele2med.mobile.domain.entity.DataPhoto
+
+data class UploadFirstPhotoResponse(
+ val status: String,
+ val message: String,
+ val data: DataPhoto?=null
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/UploadPhotoResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/UploadPhotoResponse.kt
new file mode 100644
index 0000000..efcd8b1
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/UploadPhotoResponse.kt
@@ -0,0 +1,7 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+data class UploadPhotoResponse(
+ val status: String,
+ val message: String,
+ val result_auto: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/UploadVideoResponse.kt b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/UploadVideoResponse.kt
new file mode 100644
index 0000000..a699625
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/entity/response/UploadVideoResponse.kt
@@ -0,0 +1,7 @@
+package ru.tele2med.mobile.data.api.entity.response
+
+data class UploadVideoResponse(
+ val status: String,
+ val message: String,
+ val result_auto: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/interceptor/NetworkInterceptor.kt b/app/src/main/java/ru/tele2med/mobile/data/api/interceptor/NetworkInterceptor.kt
new file mode 100644
index 0000000..539cd2e
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/interceptor/NetworkInterceptor.kt
@@ -0,0 +1,66 @@
+package ru.tele2med.mobile.interceptor
+
+import android.content.Context
+import com.google.gson.Gson
+import com.google.gson.JsonParseException
+import ru.tele2med.mobile.presentation.ui.base.entity.RestApiCodes
+import ru.tele2med.mobile.presentation.util.Prefs
+import okhttp3.Interceptor
+import okhttp3.Request
+import okhttp3.Response
+import ru.tele2med.mobile.data.api.entity.exception.ApiException
+import ru.tele2med.mobile.data.api.entity.response.DefaultResponse
+
+class NetworkInterceptor(
+ private val context: Context,
+ private val gson: Gson,
+ private val prefs: Prefs
+) : Interceptor {
+
+ override fun intercept(chain: Interceptor.Chain): Response {
+
+ var request: Request = chain.request()
+
+ /* request = request.newBuilder()
+ .addHeader("host", "ektp-pvdp-omskdev.tis-online.com")
+ .build() */ //для демо тиса с ip demo/tis
+
+ val response = chain.proceed(request)
+
+ if (response.code() in 200..299) {
+ return response
+ }
+
+
+ val uuid = prefs.getUuid()
+
+ try {
+ val body = response.body() ?: throw ApiException(
+ "",
+ RestApiCodes.ParseException.code
+ )
+
+ val errorResponse = gson.fromJson(body.string(), DefaultResponse::class.java)
+
+ throw ApiException(
+ errorResponse.message + "\nВаш UUID: ${uuid.toString()}",
+ errorResponse.code
+ )
+ } catch (e: JsonParseException) {
+ if (ru.tele2med.mobile.BuildConfig.DEBUG) {
+ throw ApiException(
+ "Ошибка с кодом ${response.code()}, ${response.message()}",
+ response.code()
+ )
+ }
+ else {
+ throw ApiException(
+ "Ошибка с кодом ${response.code()}, ${response.message()}",
+ response.code()
+ )
+
+ }
+ }
+ return response
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/api/interceptor/QueryInterceptor.kt b/app/src/main/java/ru/tele2med/mobile/data/api/interceptor/QueryInterceptor.kt
new file mode 100644
index 0000000..50bf9de
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/api/interceptor/QueryInterceptor.kt
@@ -0,0 +1,34 @@
+package ru.tele2med.mobile.interceptor
+
+import ru.tele2med.mobile.presentation.util.Prefs
+import okhttp3.HttpUrl
+import okhttp3.Interceptor
+import okhttp3.Request
+import okhttp3.Response
+import java.text.SimpleDateFormat
+import java.util.*
+
+class QueryInterceptor(
+ private val prefs: Prefs
+) : Interceptor {
+ override fun intercept(chain: Interceptor.Chain): Response {
+ val uuid = prefs.getUuid() ?: ""
+ val sessId = if (prefs.getSessId() != null) {
+ prefs.getSessId()
+ } else {
+ val sdf = SimpleDateFormat("yyyyMMddHHmmss", Locale.getDefault())
+ val localSessId = sdf.format(Date().time)
+ // prefs.putSessId(localSessId)
+ localSessId
+ }
+ val tokenApp = ru.tele2med.mobile.BuildConfig.TOKEN_APP
+ val tokenUser = prefs.getTokenUser()
+ var request: Request = chain.request()
+ val url: HttpUrl =
+ request.url().newBuilder()
+ .build()
+ request = request.newBuilder().url(url).build()
+ return chain.proceed(request)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/db/AppDatabase.kt b/app/src/main/java/ru/tele2med/mobile/data/db/AppDatabase.kt
new file mode 100644
index 0000000..4fb352d
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/db/AppDatabase.kt
@@ -0,0 +1,27 @@
+package ru.tele2med.mobile.data.db
+
+import android.content.Context
+import androidx.room.Database
+import androidx.room.Room
+import androidx.room.RoomDatabase
+
+@Database(
+ entities = [
+ DbPosition::class,
+ MedCheckups::class
+ ], version = 5
+)
+abstract class AppDatabase : RoomDatabase() {
+
+ abstract fun geoDao(): GeoDao
+ abstract fun medDao(): MedDao
+
+
+ companion object {
+ fun newInstance(context: Context): AppDatabase {
+ return Room.databaseBuilder(context, AppDatabase::class.java, "tele2med-database")
+ .fallbackToDestructiveMigration()
+ .build()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/db/DbPosition.kt b/app/src/main/java/ru/tele2med/mobile/data/db/DbPosition.kt
new file mode 100644
index 0000000..7bb8972
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/db/DbPosition.kt
@@ -0,0 +1,16 @@
+package ru.tele2med.mobile.data.db
+
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+@Entity(tableName = "positions")
+data class DbPosition (
+ @PrimaryKey
+ val id: Long,
+ val lat: Double,
+ val lon: Double,
+ val seaLevel: Int,
+ val speed: Int,
+ val timeStamp: Long,
+ val trackAngle: Int
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/db/GeoDao.kt b/app/src/main/java/ru/tele2med/mobile/data/db/GeoDao.kt
new file mode 100644
index 0000000..c2872c0
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/db/GeoDao.kt
@@ -0,0 +1,21 @@
+package ru.tele2med.mobile.data.db
+
+import androidx.room.Dao
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+import io.reactivex.Completable
+import io.reactivex.Single
+
+@Dao
+interface GeoDao {
+
+ @Query("SELECT * FROM positions")
+ fun getAll(): Single>
+
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
+ fun saveAll(list: List): Completable
+
+ @Query("DELETE FROM positions")
+ fun deleteAll()
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/db/MedCheckups.kt b/app/src/main/java/ru/tele2med/mobile/data/db/MedCheckups.kt
new file mode 100644
index 0000000..f36a883
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/db/MedCheckups.kt
@@ -0,0 +1,14 @@
+package ru.tele2med.mobile.data.db
+
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+@Entity(tableName = "checkups")
+data class MedCheckups(
+ @PrimaryKey
+ val checkupId: String,
+ val dateTime: String? = null,
+ val num: String? = null,
+ val fio: String? = null,
+ val printed: Boolean?=null
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/db/MedDao.kt b/app/src/main/java/ru/tele2med/mobile/data/db/MedDao.kt
new file mode 100644
index 0000000..0890732
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/db/MedDao.kt
@@ -0,0 +1,25 @@
+package ru.tele2med.mobile.data.db
+
+import androidx.room.Dao
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+import io.reactivex.Completable
+import io.reactivex.Single
+import java.util.*
+
+@Dao
+interface MedDao {
+
+ @Query("SELECT * FROM checkups")
+ fun getAll(): Single>
+
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
+ fun saveAll(list: List): Completable
+
+ @Query("Update checkups set num=:num where checkupId = :checkupId")
+ fun updateNum(num: String, checkupId: String): Completable
+
+ @Query("DELETE FROM checkups")
+ fun deleteAll(): Completable
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/repository/AuthRepositoryImpl.kt b/app/src/main/java/ru/tele2med/mobile/data/repository/AuthRepositoryImpl.kt
new file mode 100644
index 0000000..5272460
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/repository/AuthRepositoryImpl.kt
@@ -0,0 +1,106 @@
+package ru.tele2med.mobile.data.repository
+
+import android.net.Uri
+import io.reactivex.Completable
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.repository.AuthRepository
+import ru.tele2med.mobile.domain.entity.*
+import ru.tele2med.mobile.presentation.util.Prefs
+import ru.tele2med.mobile.presentation.util.toDto
+import okhttp3.MediaType
+import okhttp3.RequestBody
+import ru.tele2med.mobile.BuildConfig.API_BASE_URL
+import ru.tele2med.mobile.data.api.ApiService
+import ru.tele2med.mobile.data.api.entity.Command
+import kotlin.math.log
+
+class AuthRepositoryImpl(
+ private val apiService: ApiService,
+ private val dataConverter: DataConverter,
+ private val prefs: Prefs
+
+) : AuthRepository {
+
+ val uuid = prefs.getUuid() ?: ""
+ val tokenApp = ru.tele2med.mobile.BuildConfig.TOKEN_APP
+ val tokenUser = prefs.getTokenUser()
+
+ var version: RequestBody =
+ RequestBody.create(
+ MediaType.parse("text/plain"),
+ ru.tele2med.mobile.BuildConfig.VERSION_CODE.toString()
+ ) // String requestBody
+
+
+ // "https://pdn.tele2med.ru/lc/mobile/",
+ override fun login(code: String): Single =
+ apiService
+ .login(
+ "https://devweb.tele2med.ru/api3_/mobile/auth",
+ RequestBody.create(
+ MediaType.parse("text/plain"),
+ code
+ ),
+ RequestBody.create(
+ MediaType.parse("text/plain"),
+ Command.auth.name
+
+ ),
+ RequestBody.create(MediaType.parse("text/plain"), tokenApp),
+ RequestBody.create(MediaType.parse("text/plain"), prefs.getSessId().toString()),
+ RequestBody.create(MediaType.parse("text/plain"), uuid),
+ RequestBody.create(MediaType.parse("text/plain"), prefs.getTokenUser().toString()),
+ RequestBody.create(MediaType.parse("text/plain"), prefs.getAppUniqId().toString())
+ )
+
+ .map(dataConverter::toDomainLoginData)
+
+ // "https://pdn.tele2med.ru/lc/mobile/",
+ override fun authRefresh(tokenRefresh: String): Single =
+ apiService
+ .authRefresh(
+ "https://devweb.tele2med.ru/api3_/mobile/authRefresh",
+ RequestBody.create(
+ MediaType.parse("text/plain"),
+ tokenRefresh
+ ),
+ RequestBody.create(
+ MediaType.parse("text/plain"),
+ Command.authRefresh.name
+
+ ),
+ RequestBody.create(MediaType.parse("text/plain"), tokenApp),
+ RequestBody.create(MediaType.parse("text/plain"), prefs.getSessId().toString()),
+ RequestBody.create(MediaType.parse("text/plain"), uuid)
+ )
+
+ .map(dataConverter::toDomainRefreshData)
+
+ override fun auth(login: String, paswd: String): Single =
+ apiService
+ .auth(
+ token = "iddqd",
+ command = Command.auth.name,
+ login = login,
+ paswd = paswd,
+ appUniqID = prefs.getAppUniqId().toString()
+
+ )
+ .map(dataConverter::toDomainAuthData)
+
+
+ override fun logOut(): Completable {
+ val command = Command.logout.name
+ val tokenUser =
+ prefs.getTokenUser() // RequestBody.create(MediaType.parse("text/plain"),prefs.getTokenUser().toString())
+ return apiService.logOut(
+ token = "Bearer $tokenUser",
+ tokenUser = tokenUser!!
+ )
+ //return apiService.logOut("https://pdn.tele2med.ru/lc/mobile/logout", tokenUser!!)
+ }
+
+ override fun getRedirect(data: Uri): Completable {
+ return apiService.getRedirect(data)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/repository/BeginCheckupRepositoryImpl.kt b/app/src/main/java/ru/tele2med/mobile/data/repository/BeginCheckupRepositoryImpl.kt
new file mode 100644
index 0000000..7eb54b8
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/repository/BeginCheckupRepositoryImpl.kt
@@ -0,0 +1,21 @@
+package ru.tele2med.mobile.data.repository
+
+import ru.tele2med.mobile.domain.entity.BeginCheckupResponseDto
+import ru.tele2med.mobile.domain.repository.BeginCheckupRepository
+import ru.tele2med.mobile.presentation.util.Prefs
+import ru.tele2med.mobile.presentation.util.toDto
+import io.reactivex.Single
+import ru.tele2med.mobile.data.api.entity.request.BeginMedicalCheckupFinall
+
+class BeginCheckupRepositoryImpl(
+ private val apiService: ru.tele2med.mobile.data.api.ApiService,
+ private val prefs: Prefs
+) : BeginCheckupRepository {
+
+ override fun beginCheckup(data: BeginMedicalCheckupFinall): Single {
+ data.session = prefs.getSessId().toString()
+ return apiService.beginCheckup(
+ body = data
+ ).map { it.toDto() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/repository/BeginRepositoryImpl.kt b/app/src/main/java/ru/tele2med/mobile/data/repository/BeginRepositoryImpl.kt
new file mode 100644
index 0000000..5d92578
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/repository/BeginRepositoryImpl.kt
@@ -0,0 +1,18 @@
+package ru.tele2med.mobile.data.repository
+
+import ru.tele2med.mobile.domain.entity.BeginResponseDto
+import ru.tele2med.mobile.domain.repository.BeginRepository
+import ru.tele2med.mobile.presentation.util.toDto
+import io.reactivex.Single
+
+class BeginRepositoryImpl(
+ private val apiService: ru.tele2med.mobile.data.api.ApiService,
+ private val dataConverter: DataConverter
+) : BeginRepository {
+
+ override fun beginSession(data: request.BeginSessionFinall): Single {
+ return apiService.beginSession(
+ body = data
+ ).map { it.toDto() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/repository/DashboardRepositoryImpl.kt b/app/src/main/java/ru/tele2med/mobile/data/repository/DashboardRepositoryImpl.kt
new file mode 100644
index 0000000..6a146ba
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/repository/DashboardRepositoryImpl.kt
@@ -0,0 +1,37 @@
+package ru.tele2med.mobile.data.repository
+
+import ru.tele2med.mobile.domain.entity.DashboardResponseDto
+import ru.tele2med.mobile.domain.repository.DashboardRepository
+import ru.tele2med.mobile.presentation.util.Prefs
+import io.reactivex.Single
+import okhttp3.MediaType
+import okhttp3.RequestBody
+
+class DashboardRepositoryImpl(
+ private val apiService: ru.tele2med.mobile.data.api.ApiService,
+ private val dataConverter: DataConverter,
+ private val prefs: Prefs
+) : DashboardRepository {
+
+ val tokenApp = ru.tele2med.mobile.BuildConfig.TOKEN_APP
+
+
+ override fun getDashboard(): Single {
+ return apiService.getDashboard(
+ sessId = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getSessId().toString()
+ ),
+ uuid = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getUuid().toString()
+ ),
+ tokenApp = RequestBody.create(MediaType.parse("text/plain"), tokenApp),
+ tokenUser = "Bearer ${prefs.getTokenUser().toString()}",
+ appUniqID = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getAppUniqId().toString()
+ )
+ ).map(dataConverter::toDashboard)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/repository/DataConverter.kt b/app/src/main/java/ru/tele2med/mobile/data/repository/DataConverter.kt
new file mode 100644
index 0000000..7f3cb1e
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/repository/DataConverter.kt
@@ -0,0 +1,284 @@
+package ru.tele2med.mobile.data.repository
+
+import ru.tele2med.mobile.data.api.entity.response.*
+import ru.tele2med.mobile.entity.response.*
+import ru.tele2med.mobile.data.db.DbPosition
+import ru.tele2med.mobile.domain.entity.*
+
+class DataConverter {
+
+ fun toDomainLoginData(loginResponse: LoginResponse): LoginData = LoginData(
+ dispatcherPhone = loginResponse.dispatcherPhone,
+ needChangePin = loginResponse.needChangePin,
+ tokenUser = loginResponse.tokenUser,
+ userName = loginResponse.userName,
+ tokenRefresh = loginResponse.tokenRefresh,
+ tokenUserExpired = loginResponse.tokenUserExpired,
+ tokenRefreshExpired = loginResponse.tokenRefreshExpired
+ )
+
+ fun toDomainRefreshData(tokenRefreshResponse: TokenRefreshResponse): TokenRefreshData =
+ TokenRefreshData(
+ dispatcherPhone = tokenRefreshResponse.dispatcherPhone,
+ needChangePin = tokenRefreshResponse.needChangePin,
+ tokenUser = tokenRefreshResponse.tokenUser,
+ tokenRefresh = tokenRefreshResponse.tokenRefresh
+ )
+
+ fun toDomainAuthData(authResponse: AuthResponse): AuthData =
+ AuthData(
+ af = authResponse.af,
+ data = authResponse.data,
+ status = authResponse.status,
+ message = authResponse.message
+ )
+
+ fun toDomainUpdates(updates: UpdatesResponse): Updates =
+ Updates(
+ messageCount = updates.messagesCount ?: 0,
+ routes = toDomainRoutes(updates.routeList),
+ newNotifications = toDomainNotifications(updates.notifications),
+ info = updates.info
+ )
+
+ fun toQR(qr: QRResponse): QR =
+ QR(
+ af = qr.af,
+ status = qr.status,
+ message = qr.message,
+ data = qr.data,
+ type_message = qr.type_message,
+ type_result = qr.type_result.toInt()
+ )
+
+ fun toGetSticker(data: GetStickerResponse): GetSticker =
+ GetSticker(
+ status = data.status,
+ message = data.message,
+ data = data.data
+
+ )
+
+ fun toMedicalCheckupListAll(list: CheckupsListResponse): MedicalCheckupList =
+ MedicalCheckupList(
+ af = list.af,
+ status = list.status,
+ message = list.message,
+ data = list.data,
+ pos = list.pos,
+ total_count = list.total_count
+ )
+
+ fun toDashboard(data: DashboardListResponse): DashboardResponseDto =
+ DashboardResponseDto(
+ af = data.af,
+ message = data.message,
+ status = data.status,
+ data = data.data
+ )
+
+ fun toDomainNotifications(list: List): List =
+ list.map {
+ Notification(
+ id = it.id,
+ taskId = it.requestId,
+ taskStatus = it.status,
+ taskNumber = it.number,
+ time = it.time,
+ description = it.description,
+ read = it.viewed,
+ changes = it.changes
+
+ )
+ }
+
+ fun toDomainInfoUpdates(updatesInfo: UpdatesInfoResponse): UpdatesInfo =
+ UpdatesInfo(
+ af = updatesInfo.af,
+ data = updatesInfo.data,
+ message = updatesInfo.message,
+ status = updatesInfo.status
+ )
+
+ fun toDomainInitData(initResponse: InitResponse): InitData = InitData(
+ af = initResponse.af,
+ status = initResponse.status,
+ message = initResponse.message,
+ data = initResponse.data
+ )
+
+ fun toDomainMessage(defaultResponse: DefaultResponse) = defaultResponse.message
+
+ fun toDomain(response: TaskFullInfoResponse): TaskFullInfo =
+ with(response) {
+ TaskFullInfo(
+ id = id,
+ number = requestNumber,
+ status = status.toDomainStatus(),
+ comment = statusComment,
+ arrivalTime = plannedStartTime,
+ departureTime = plannedFinishTime,
+ contactName = contactName,
+ contactPhone = contactPhone,
+ routePoints = routePoints.map { it.address },
+ note = comment,
+ arrivalInfo = toTripEventInfo(
+ time = startTime,
+ sensorValues = startSensorValues,
+ checkTime = response.feedTime,
+ zeroMileage = response.feedMileage?.toInt()
+ ),
+ telematics = telematics,
+ departureInfo = toTripEventInfo(
+ time = finishTime,
+ sensorValues = finishSensorValues,
+ checkTime = response.returnTime,
+ zeroMileage = response.returnMileage?.toInt()
+
+ )
+ )
+ }
+
+ private fun toTripEventInfo(
+ time: Long?,
+ sensorValues: SensorValues?,
+ checkTime: Long?,
+ zeroMileage: Int?
+ ): TripEventInfo? = if (time != null && sensorValues != null) {
+ TripEventInfo(
+ time = time,
+ odometer = sensorValues.odometer.toInt(),
+ inServiceHours = sensorValues.inServiceHours.toFloat(),
+ engineHours = sensorValues.engineHours.toFloat(),
+ equipment = toDomainEquipment(sensorValues.attachments),
+ checkDateTime = checkTime,
+ zeroMileage = zeroMileage
+ )
+ } else null
+
+ private fun toDomainEquipment(attachment: List): List = attachment.map {
+ Equipment(
+ id = it.id,
+ name = it.name,
+ engineHours = it.engineHours.toFloat()
+ )
+ }
+
+
+ private fun List.toDomain(): List = map {
+ RoutePoint(
+ address = it.address,
+ index = it.index,
+ lat = it.lat,
+ lon = it.lon,
+ time = it.time
+ )
+ }
+
+ fun toDomainTasks(tasks: List): List = tasks.map {
+ Task(
+ id = it.id,
+ number = it.number,
+ arrivalTime = it.plannedStartTime,
+ departureTime = it.plannedFinishTime,
+ points = it.routePoints.toDomain(),
+ status = it.status.toDomainStatus(),
+ telematics = it.telematics,
+ processing = it.processing
+ )
+ }
+
+ fun toDomainServerMessage(defaultResponse: DefaultResponse): ServerMessage =
+ ServerMessage(code = defaultResponse.code, message = defaultResponse.message)
+
+ private fun String.toDomainStatus(): TaskStatus = TaskStatus.values().find { it.value == this }
+ ?: throw IllegalArgumentException("Неизвестный статус задания: $this")
+
+
+ fun toDomainRoutes(routes: List): List = routes.map {
+ Route(
+ brandAndModel = it.brandAndModel,
+ date = it.date,
+ id = it.id,
+ number = it.number,
+ regNumber = it.regNumber,
+ serial = it.serial
+ )
+ }
+
+ fun toDomainStatus(status: SessionStatisticResponse): StatusAll =
+ with(status) {
+ StatusAll(
+ startTime = startTime,
+ currentTime = currentTime,
+ mileage = mileage
+ )
+ }
+
+ fun toDomainSelectedTasks(tasks: List): List = tasks.map {
+ SelectedTask(
+ id = it.id,
+ status = it.status.toDomainStatus(),
+ plannedStartTime = it.plannedStartTime,
+ plannedFinishTime = it.plannedFinishTime,
+ routePoints = it.routePoints,
+ processing = it.processing,
+ number = it.number,
+ carRegNumber = it.carRegNumber,
+ carBrandAndModel = it.carBrandAndModel
+ )
+ }
+
+
+ fun toApiPositions(data: List): List = data.map {
+ request.PositionSend(
+ id = it.id,
+ lat = it.lat,
+ lon = it.lon,
+ seaLevel = it.seaLevel,
+ speed = it.speed,
+ timeStamp = it.timeStamp,
+ trackAngle = it.trackAngle
+ )
+ }
+
+ fun toDbPositions(positions: List): List = positions.map {
+ DbPosition(
+ id = it.id,
+ lat = it.lat,
+ lon = it.lon,
+ seaLevel = it.seaLevel,
+ speed = it.speed,
+ timeStamp = it.timeStamp,
+ trackAngle = it.trackAngle
+ )
+ }
+
+ fun toDomainPositions(positions: List): List = positions.map {
+ Position(
+ id = it.id,
+ lat = it.lat,
+ lon = it.lon,
+ seaLevel = it.seaLevel,
+ speed = it.speed,
+ timeStamp = it.timeStamp,
+ trackAngle = it.trackAngle
+ )
+ }
+
+ fun toDomainTasksMap(tasksmap: List): List = tasksmap.map {
+ TaskMap(
+ id = it.id,
+ number = it.number,
+ status = it.status,
+ plannedStartTime = it.plannedStartTime,
+ plannedFinishTime = it.plannedFinishTime,
+ processing = it.processing,
+ routePoints = it.routePoints,
+ routePolyline = it.routePolyline,
+ trackPolyline = it.trackPolyline
+
+
+ )
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/repository/GeoRepositoryImpl.kt b/app/src/main/java/ru/tele2med/mobile/data/repository/GeoRepositoryImpl.kt
new file mode 100644
index 0000000..36cab4c
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/repository/GeoRepositoryImpl.kt
@@ -0,0 +1,35 @@
+package ru.tele2med.mobile.data.repository
+
+import io.reactivex.Completable
+import io.reactivex.Single
+import ru.tele2med.mobile.data.db.GeoDao
+import ru.tele2med.mobile.domain.entity.Position
+import ru.tele2med.mobile.domain.entity.ServerMessage
+import ru.tele2med.mobile.domain.repository.GeoRepository
+
+class GeoRepositoryImpl(
+ private val geoDao: GeoDao,
+ private val apiService: ru.tele2med.mobile.data.api.ApiService,
+ private val dataConverter: DataConverter
+) : GeoRepository {
+
+ /* override fun sendPosition(data: List): Single =
+ apiService
+ .sendPosition(
+ command = Command.sendPosition.name,
+ body = dataConverter.toApiPositions(data)
+ )
+ .map(dataConverter::toDomainServerMessage) */
+
+
+ override fun saveUnsentPosition(positions: List): Completable =
+ geoDao
+ . saveAll(dataConverter.toDbPositions(positions))
+
+ override fun getUnsentPosition(): Single> =
+ geoDao
+ .getAll()
+ .map(dataConverter::toDomainPositions)
+ .doOnSuccess { geoDao.deleteAll() }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/repository/GetStickerRepositoryImpl.kt b/app/src/main/java/ru/tele2med/mobile/data/repository/GetStickerRepositoryImpl.kt
new file mode 100644
index 0000000..1084b54
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/repository/GetStickerRepositoryImpl.kt
@@ -0,0 +1,30 @@
+package ru.tele2med.mobile.data.repository
+
+import ru.tele2med.mobile.domain.entity.*
+import ru.tele2med.mobile.domain.repository.UploadPhotoRepository
+import ru.tele2med.mobile.presentation.util.Prefs
+import ru.tele2med.mobile.presentation.util.toDto
+import io.reactivex.Single
+import okhttp3.MediaType
+import okhttp3.RequestBody
+import retrofit2.http.Body
+import ru.tele2med.mobile.data.api.entity.response.GetSticker
+import ru.tele2med.mobile.data.api.entity.response.GetStickerResponse
+import ru.tele2med.mobile.domain.repository.GetStickerRepository
+
+class GetStickerRepositoryImpl(
+ private val apiService: ru.tele2med.mobile.data.api.ApiService,
+ private val prefs: Prefs,
+ private val dataConverter: DataConverter
+) : GetStickerRepository {
+
+ override fun getSticker(data: CheckupForSticker): Single {
+ return apiService.getSticker(
+ data = RequestBody.create(
+ MediaType.parse("text/plain"),
+ "{\"checkup_id\":\"${data.checkup_id}\",\"sticker_type\":\"${data.sticker_type}\",\"sticker_format\":\"${data.sticker_format}\",\"token\":\"${data.token}\"}"
+ )
+ ).map(dataConverter::toGetSticker)
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/repository/InitRepositoryImpl.kt b/app/src/main/java/ru/tele2med/mobile/data/repository/InitRepositoryImpl.kt
new file mode 100644
index 0000000..337f6bc
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/repository/InitRepositoryImpl.kt
@@ -0,0 +1,66 @@
+package ru.tele2med.mobile.data.repository
+
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.repository.InitRepository
+import ru.tele2med.mobile.domain.entity.InitData
+import ru.tele2med.mobile.presentation.util.Prefs
+import okhttp3.MediaType
+import okhttp3.RequestBody
+import java.text.SimpleDateFormat
+import java.util.*
+
+class InitRepositoryImpl(
+ private val apiService: ru.tele2med.mobile.data.api.ApiService,
+ private val dataConverter: DataConverter,
+ private val prefs: Prefs
+
+) : InitRepository {
+
+ val uuid = prefs.getUuid() ?: ""
+ val sessId = if (prefs.getSessId() != null) {
+ prefs.getSessId()
+ } else {
+ val sdf = SimpleDateFormat("yyyyMMddHHmmss", Locale.getDefault())
+ val localSessId = sdf.format(Date().time)
+ prefs.putSessId(localSessId)
+ localSessId
+ }
+ val tokenApp = ru.tele2med.mobile.BuildConfig.TOKEN_APP
+ val tokenUser = prefs.getTokenUser()
+
+
+ val refreshToken = prefs.getRefreshToken()
+
+ var version: RequestBody =
+ RequestBody.create(
+ MediaType.parse("text/plain"),
+ ru.tele2med.mobile.BuildConfig.VERSION_NAME
+ ) // String requestBody
+
+ var buildNumber: RequestBody =
+ RequestBody.create(
+ MediaType.parse("text/plain"),
+ ru.tele2med.mobile.BuildConfig.VERSION_CODE.toString()
+ )
+
+
+ override fun init(platformName: String): Single =
+ apiService
+ .init(
+ version = version,
+ buildNumber = buildNumber,
+ platform = RequestBody.create(MediaType.parse("text/plain"), platformName),
+ model = RequestBody.create(MediaType.parse("text/plain"), android.os.Build.MODEL),
+ uuid = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getUuid().toString()
+ ),
+ tokenApp = RequestBody.create(MediaType.parse("text/plain"), tokenApp),
+ tokenRefresh = RequestBody.create(MediaType.parse("text/plain"), prefs.getRefreshToken().toString()),
+ sessId = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getSessId().toString()
+ )
+ )
+ .map(dataConverter::toDomainInitData)
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/repository/NewMedicalCheckupRepositoryImpl.kt b/app/src/main/java/ru/tele2med/mobile/data/repository/NewMedicalCheckupRepositoryImpl.kt
new file mode 100644
index 0000000..ff68f90
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/repository/NewMedicalCheckupRepositoryImpl.kt
@@ -0,0 +1,46 @@
+package ru.tele2med.mobile.data.repository
+
+import android.util.Log
+import io.reactivex.Completable
+import ru.tele2med.mobile.domain.entity.NewMedicalCheckupResponseDto
+import ru.tele2med.mobile.domain.repository.NewMedicalCheckupRepository
+import ru.tele2med.mobile.presentation.util.Prefs
+import io.reactivex.Single
+import ru.tele2med.mobile.data.api.entity.request.NewMedicalCheckup
+import ru.tele2med.mobile.data.db.MedCheckups
+import ru.tele2med.mobile.data.db.MedDao
+import ru.tele2med.mobile.presentation.util.toDto
+
+class NewMedicalCheckupRepositoryImpl(
+ private val apiService: ru.tele2med.mobile.data.api.ApiService,
+ private val prefs: Prefs,
+ private val medDao: MedDao
+) : NewMedicalCheckupRepository {
+
+ override fun newMedicalCheckup(data: NewMedicalCheckup): Single {
+ data.session = prefs.getSessId().toString()
+ return apiService.newMedicalCheckup(
+ body = data
+ ).map { it.toDto() }
+ }
+
+
+ override fun saveMedicalCheckup(checkups: List): Completable =
+ medDao
+ .saveAll(checkups)
+
+ override fun updateNum(num: String, checkupId: String): Completable =
+ medDao
+ .updateNum(num, checkupId)
+
+
+ override fun getMedicalCheckups(): Single> =
+ medDao
+ .getAll()
+ .doOnSuccess { Log.v("SSS", "susccess get = ${it.toString()}") }
+
+ override fun deleteMedicalCheckups(): Completable =
+ medDao
+ .deleteAll()
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/repository/NewRfidRepositoryImpl.kt b/app/src/main/java/ru/tele2med/mobile/data/repository/NewRfidRepositoryImpl.kt
new file mode 100644
index 0000000..ed6976e
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/repository/NewRfidRepositoryImpl.kt
@@ -0,0 +1,20 @@
+package ru.tele2med.mobile.data.repository
+
+import ru.tele2med.mobile.domain.entity.NewRfidResponseDto
+import ru.tele2med.mobile.domain.repository.NewRfidRepository
+import ru.tele2med.mobile.presentation.util.Prefs
+import ru.tele2med.mobile.presentation.util.toDto
+import io.reactivex.Single
+
+class NewRfidRepositoryImpl(
+ private val apiService: ru.tele2med.mobile.data.api.ApiService,
+ private val prefs: Prefs
+) : NewRfidRepository {
+
+ override fun newRfid(data: request.NewRfid): Single {
+ data.session = prefs.getSessId().toString()
+ return apiService.newRfid(
+ body = data
+ ).map { it.toDto() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/repository/QRRepositoryImpl.kt b/app/src/main/java/ru/tele2med/mobile/data/repository/QRRepositoryImpl.kt
new file mode 100644
index 0000000..16bd09d
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/repository/QRRepositoryImpl.kt
@@ -0,0 +1,94 @@
+package ru.tele2med.mobile.data.repository
+
+import ru.tele2med.mobile.domain.entity.MedicalCheckupList
+import ru.tele2med.mobile.domain.entity.QR
+import ru.tele2med.mobile.domain.repository.QRRepository
+import ru.tele2med.mobile.presentation.util.Prefs
+import io.reactivex.Single
+import okhttp3.MediaType
+import okhttp3.RequestBody
+
+
+class QRRepositoryImpl(
+ private val apiService: ru.tele2med.mobile.data.api.ApiService,
+ private val dataConverter: DataConverter,
+ private val prefs: Prefs
+) : QRRepository {
+
+ val tokenApp = ru.tele2med.mobile.BuildConfig.TOKEN_APP
+
+
+ override fun getQR(qrcode: String): Single =
+ apiService
+ .getQR(
+ qrcode = qrcode,
+ sessId = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getSessId().toString()
+ ),
+ uuid = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getUuid().toString()
+ ),
+ tokenApp = RequestBody.create(MediaType.parse("text/plain"), tokenApp),
+ // tokenUser = "Bearer +${prefs.getTokenUser().toString()}",
+ appUniqID = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getAppUniqId().toString()
+ )
+ )
+ .map(dataConverter::toQR)
+
+
+ override fun getQRProd(qrcode: String): Single =
+ apiService
+ .getQRProd(
+ qrcode = qrcode,
+ sessId = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getSessId().toString()
+ ),
+ uuid = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getUuid().toString()
+ ),
+ tokenApp = RequestBody.create(MediaType.parse("text/plain"), tokenApp),
+ tokenUser = "Bearer ${prefs.getTokenUser().toString()}",
+ appUniqID = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getAppUniqId().toString()
+ )
+ )
+ .map(dataConverter::toQR)
+
+
+ override fun getMedicalCheckupAll(offset: Int, limit: Int): Single =
+ apiService
+ .getMedicalCheckupAll(
+ limit = RequestBody.create(
+ MediaType.parse("text/plain"),
+ limit.toString()
+ ),
+ offset = RequestBody.create(
+ MediaType.parse("text/plain"),
+ offset.toString()
+ ),
+ sessId = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getSessId().toString()
+ ),
+ uuid = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getUuid().toString()
+ ),
+ tokenApp = RequestBody.create(MediaType.parse("text/plain"), tokenApp),
+ tokenUser = "Bearer ${prefs.getTokenUser().toString()}",
+ appUniqID = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getAppUniqId().toString()
+ )
+ )
+ .map(dataConverter::toMedicalCheckupListAll)
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/repository/RouteRepositoryImpl.kt b/app/src/main/java/ru/tele2med/mobile/data/repository/RouteRepositoryImpl.kt
new file mode 100644
index 0000000..349b999
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/repository/RouteRepositoryImpl.kt
@@ -0,0 +1,10 @@
+package ru.tele2med.mobile.data.repository
+
+import ru.tele2med.mobile.domain.repository.RouteRepository
+
+class RouteRepositoryImpl(
+ private val apiService: ru.tele2med.mobile.data.api.ApiService,
+ private val dataConverter: DataConverter
+) : RouteRepository {
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/repository/UpdatesRepositoryImpl.kt b/app/src/main/java/ru/tele2med/mobile/data/repository/UpdatesRepositoryImpl.kt
new file mode 100644
index 0000000..a3d25a5
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/repository/UpdatesRepositoryImpl.kt
@@ -0,0 +1,58 @@
+package ru.tele2med.mobile.data.repository
+
+import ru.tele2med.mobile.domain.entity.Updates
+import ru.tele2med.mobile.domain.entity.UpdatesInfo
+import ru.tele2med.mobile.domain.repository.UpdatesRepository
+import ru.tele2med.mobile.presentation.util.Prefs
+import io.reactivex.Single
+import okhttp3.MediaType
+import okhttp3.RequestBody
+
+
+class UpdatesRepositoryImpl(
+ private val apiService: ru.tele2med.mobile.data.api.ApiService,
+ private val dataConverter: DataConverter,
+ private val prefs: Prefs
+) : UpdatesRepository {
+
+ val tokenApp = ru.tele2med.mobile.BuildConfig.TOKEN_APP
+
+
+ override fun get(): Single =
+ apiService
+ .getGeneralInfo(
+ tokenApp = RequestBody.create(MediaType.parse("text/plain"), tokenApp),
+ sessId = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getSessId().toString()
+ ),
+ uuid = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getUuid().toString()
+ ),
+ tokenUser = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getTokenUser().toString()
+ )
+ )
+ .map(dataConverter::toDomainUpdates)
+
+ override fun getInfo(): Single =
+ apiService
+ .getInfo(
+ tokenApp = RequestBody.create(MediaType.parse("text/plain"), tokenApp),
+ sessId = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getSessId().toString()
+ ),
+ uuid = RequestBody.create(
+ MediaType.parse("text/plain"),
+ prefs.getUuid().toString()
+ ),
+ tokenUser = "Bearer ${prefs.getTokenUser().toString()}",
+ appUniqID = RequestBody.create(MediaType.parse("text/plain"), prefs.getAppUniqId().toString())
+ )
+ .map(dataConverter::toDomainInfoUpdates)
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/repository/UploadFirstPhotoRepositoryImpl.kt b/app/src/main/java/ru/tele2med/mobile/data/repository/UploadFirstPhotoRepositoryImpl.kt
new file mode 100644
index 0000000..0a1bcbb
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/repository/UploadFirstPhotoRepositoryImpl.kt
@@ -0,0 +1,22 @@
+package ru.tele2med.mobile.data.repository
+
+import ru.tele2med.mobile.domain.entity.*
+import ru.tele2med.mobile.domain.repository.UploadPhotoRepository
+import ru.tele2med.mobile.presentation.util.Prefs
+import ru.tele2med.mobile.presentation.util.toDto
+import io.reactivex.Single
+import okhttp3.RequestBody
+import ru.tele2med.mobile.domain.repository.UploadFirstPhotoRepository
+
+class UploadFirstPhotoRepositoryImpl(
+ private val apiService: ru.tele2med.mobile.data.api.ApiService,
+ private val prefs: Prefs
+) : UploadFirstPhotoRepository {
+
+ override fun uploadFirstPhoto(checkup_id: String, photo: RequestBody): Single {
+ return apiService.uploadFirstPhoto(
+ checkup_id = checkup_id,
+ photo = photo
+ ).map { it.toDto() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/repository/UploadPhotoRepositoryImpl.kt b/app/src/main/java/ru/tele2med/mobile/data/repository/UploadPhotoRepositoryImpl.kt
new file mode 100644
index 0000000..7b7d5cd
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/repository/UploadPhotoRepositoryImpl.kt
@@ -0,0 +1,22 @@
+package ru.tele2med.mobile.data.repository
+
+import ru.tele2med.mobile.domain.entity.*
+import ru.tele2med.mobile.domain.repository.UploadPhotoRepository
+import ru.tele2med.mobile.presentation.util.Prefs
+import ru.tele2med.mobile.presentation.util.toDto
+import io.reactivex.Single
+import okhttp3.RequestBody
+
+class UploadPhotoRepositoryImpl(
+ private val apiService: ru.tele2med.mobile.data.api.ApiService,
+ private val prefs: Prefs
+) : UploadPhotoRepository {
+
+ override fun uploadPhoto(uniq_id: String, session: String, photo: RequestBody): Single {
+ return apiService.uploadPhoto(
+ session = session,
+ uniq_id = uniq_id,
+ photo = photo
+ ).map { it.toDto() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/data/repository/UploadVideoRepositoryImpl.kt b/app/src/main/java/ru/tele2med/mobile/data/repository/UploadVideoRepositoryImpl.kt
new file mode 100644
index 0000000..4b96ca9
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/data/repository/UploadVideoRepositoryImpl.kt
@@ -0,0 +1,22 @@
+package ru.tele2med.mobile.data.repository
+
+import ru.tele2med.mobile.domain.entity.UploadVideoResponseDto
+import ru.tele2med.mobile.domain.repository.UploadVideoRepository
+import ru.tele2med.mobile.presentation.util.Prefs
+import ru.tele2med.mobile.presentation.util.toDto
+import io.reactivex.Single
+import okhttp3.RequestBody
+
+class UploadVideoRepositoryImpl(
+ private val apiService: ru.tele2med.mobile.data.api.ApiService,
+ private val prefs: Prefs
+) : UploadVideoRepository {
+
+ override fun uploadVideo(uniq_id: String, session: String, video: RequestBody): Single {
+ return apiService.uploadVideo(
+ session = session,
+ uniq_id = uniq_id,
+ video = video
+ ).map { it.toDto() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/di/module/MyCookieJar.kt b/app/src/main/java/ru/tele2med/mobile/di/module/MyCookieJar.kt
new file mode 100644
index 0000000..4842af8
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/di/module/MyCookieJar.kt
@@ -0,0 +1,17 @@
+package ru.tele2med.mobile.di.module
+
+import okhttp3.Cookie
+import okhttp3.CookieJar
+import okhttp3.HttpUrl
+
+
+class MyCookieJar : CookieJar {
+ private var cookies: List? = null
+ override fun saveFromResponse(url: HttpUrl, cookies: List) {
+ this.cookies = cookies
+ }
+
+ override fun loadForRequest(url: HttpUrl): List {
+ return cookies ?: ArrayList()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/di/module/appModule.kt b/app/src/main/java/ru/tele2med/mobile/di/module/appModule.kt
new file mode 100644
index 0000000..2920a78
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/di/module/appModule.kt
@@ -0,0 +1,37 @@
+package ru.tele2med.mobile.di.module
+
+import android.content.Context
+import ru.tele2med.mobile.presentation.util.Prefs
+import ru.tele2med.mobile.presentation.util.ResourceManager
+import ru.tele2med.mobile.presentation.util.compass.Compass
+import ru.tele2med.mobile.presentation.util.permission.PermissionHelper
+import org.kodein.di.Kodein
+import org.kodein.di.generic.bind
+import org.kodein.di.generic.instance
+import org.kodein.di.generic.singleton
+
+fun appModule(app: Context) = Kodein.Module(name = "appModule") {
+
+ bind() with singleton {
+ app
+ }
+
+ bind() from singleton {
+ ResourceManager(instance())
+ }
+
+ bind() from singleton {
+ PermissionHelper()
+ }
+
+
+ bind() from singleton {
+ Prefs(instance(), instance())
+ }
+
+ bind() from singleton {
+ Compass(instance())
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/di/module/databaseModule.kt b/app/src/main/java/ru/tele2med/mobile/di/module/databaseModule.kt
new file mode 100644
index 0000000..7a3cf45
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/di/module/databaseModule.kt
@@ -0,0 +1,18 @@
+package ru.tele2med.mobile.di.module
+
+import android.content.Context
+import org.kodein.di.Kodein
+import org.kodein.di.generic.bind
+import org.kodein.di.generic.singleton
+import ru.tele2med.mobile.data.db.AppDatabase
+
+fun databaseModule(context: Context) = Kodein.Module(name = "databaseModule") {
+
+ val appDatabase = AppDatabase.newInstance(context)
+
+ bind() from singleton {
+ appDatabase.geoDao()
+ appDatabase.medDao()
+
+ }
+}
diff --git a/app/src/main/java/ru/tele2med/mobile/di/module/interactorModule.kt b/app/src/main/java/ru/tele2med/mobile/di/module/interactorModule.kt
new file mode 100644
index 0000000..cae4212
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/di/module/interactorModule.kt
@@ -0,0 +1,95 @@
+package ru.tele2med.mobile.di.module
+
+import org.kodein.di.Kodein
+import org.kodein.di.generic.bind
+import org.kodein.di.generic.instance
+import org.kodein.di.generic.provider
+import ru.tele2med.mobile.domain.interactor.*
+
+fun interactorModule() = Kodein.Module(name = "interactorModule") {
+
+ bind() from provider {
+ BeginInteractor(instance())
+ }
+
+ bind() from provider {
+ DashboardInteractor(instance())
+ }
+
+
+
+ bind() from provider {
+ QRInteractor(instance())
+ }
+
+ bind() from provider {
+ GetStickerInteractor(instance())
+ }
+
+
+
+
+
+
+ bind() from provider {
+ NewRfidInteractor(instance())
+ }
+
+
+ bind() from provider {
+ UploadVideoInteractor(instance())
+ }
+
+ bind() from provider {
+ UploadPhotoInteractor(instance())
+ }
+
+
+ bind() from provider {
+ BeginCheckupInteractor(instance())
+ }
+
+ bind() from provider {
+ UploadFirstPhotoInteractor(instance())
+ }
+
+ bind() from provider {
+ NewMedicalCheckupInteractor(instance())
+ }
+
+
+ bind() from provider {
+ InitInteractor(instance())
+ }
+
+ bind() from provider {
+ AuthInteractor(instance())
+ }
+
+
+ bind() from provider {
+ SosInteractor(instance())
+ }
+
+ bind() from provider {
+ GeoInteractor(instance())
+ }
+ bind() from provider {
+ RouteInteractor(instance())
+ }
+
+
+ bind() from provider {
+ TaskInteractor(instance())
+ }
+
+ bind() from provider {
+ UpdatesInteractor(instance())
+ }
+
+ bind() from provider {
+ NotificationInteractor(instance())
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/di/module/navigationModule.kt b/app/src/main/java/ru/tele2med/mobile/di/module/navigationModule.kt
new file mode 100644
index 0000000..6316c6d
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/di/module/navigationModule.kt
@@ -0,0 +1,17 @@
+package ru.tele2med.mobile.di.module
+
+import org.kodein.di.Kodein
+import org.kodein.di.generic.bind
+import org.kodein.di.generic.instance
+import org.kodein.di.generic.singleton
+import ru.tele2med.mobile.presentation.router.NavRouter
+import ru.terrakok.cicerone.Cicerone
+import ru.terrakok.cicerone.NavigatorHolder
+
+fun navigationModule() = Kodein.Module(name = "navModule") {
+
+ bind() with singleton { NavRouter() }
+ bind>() with singleton { Cicerone.create(instance()) }
+ bind() with singleton { instance>().navigatorHolder }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/di/module/netModule.kt b/app/src/main/java/ru/tele2med/mobile/di/module/netModule.kt
new file mode 100644
index 0000000..62dc184
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/di/module/netModule.kt
@@ -0,0 +1,100 @@
+package ru.tele2med.mobile.di.module
+
+import com.google.gson.Gson
+import com.google.gson.GsonBuilder
+import ru.tele2med.mobile.interceptor.NetworkInterceptor
+import ru.tele2med.mobile.interceptor.QueryInterceptor
+import ru.tele2med.mobile.presentation.Changes
+import ru.tele2med.mobile.presentation.util.addLoggingWhenDebug
+import okhttp3.*
+import org.kodein.di.Kodein
+import org.kodein.di.generic.bind
+import org.kodein.di.generic.instance
+import org.kodein.di.generic.singleton
+import retrofit2.Retrofit
+import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
+import retrofit2.converter.gson.GsonConverterFactory
+import java.util.*
+import java.util.concurrent.TimeUnit
+import javax.net.ssl.SSLSession
+import kotlin.collections.ArrayList
+
+
+fun netModule() = Kodein.Module(name = "netModule") {
+
+ bind(tag = "network") with singleton {
+ NetworkInterceptor(
+ instance(),
+ instance(),
+ instance()
+ )
+ }
+
+ bind(tag = "query") with singleton { QueryInterceptor(instance()) }
+
+ bind() with singleton {
+ provideOkHttpClient(instance(tag = "network"), instance(tag = "query"))
+ }
+ bind() with singleton { provideRetrofit(instance(), instance()) }
+
+ bind() with singleton {
+ instance().create(
+ ru.tele2med.mobile.data.api.ApiService::class.java
+ )
+ }
+
+ bind() with singleton { GsonBuilder().create() }
+
+ bind() from singleton {
+ Changes()
+ }
+}
+
+fun verify(hostname: String?, session: SSLSession?): Boolean {
+ return true
+}
+
+
+
+private fun provideOkHttpClient(network: Interceptor, query: Interceptor): OkHttpClient =
+ OkHttpClient.Builder()
+ .connectTimeout(TIMEOUT, TimeUnit.SECONDS)
+ .readTimeout(TIMEOUT, TimeUnit.SECONDS)
+ // .cookieJar(SessionCookieJar())
+ .addInterceptor(network)
+ .addInterceptor(query)
+ .hostnameVerifier { hostname, session -> verify(hostname, session) }
+ .addLoggingWhenDebug()
+ .build()
+
+
+private fun provideRetrofit(client: OkHttpClient, gson: Gson): Retrofit =
+ Retrofit.Builder()
+ .addConverterFactory(GsonConverterFactory.create(gson))
+ .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+ .client(client)
+ .baseUrl(serverUrl)
+ .build()
+
+
+
+
+private class SessionCookieJar : CookieJar {
+ private var cookies: List? = null
+ override fun saveFromResponse(url: HttpUrl, cookies: List) {
+ if (url.encodedPath().endsWith("login")) {
+ this.cookies = ArrayList(cookies)
+ }
+ }
+
+ override fun loadForRequest(url: HttpUrl): List {
+ return if (!url.encodedPath().endsWith("login") && cookies != null) {
+ cookies!!
+ } else Collections.emptyList()
+ }
+}
+
+
+private const val TIMEOUT = 100L
+
+private val serverUrl = "${ru.tele2med.mobile.BuildConfig.API_BASE_URL}/"
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/di/module/presenterModule.kt b/app/src/main/java/ru/tele2med/mobile/di/module/presenterModule.kt
new file mode 100644
index 0000000..dea0637
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/di/module/presenterModule.kt
@@ -0,0 +1,290 @@
+package ru.tele2med.mobile.di.module
+
+import org.kodein.di.Kodein
+import org.kodein.di.generic.*
+import ru.tele2med.mobile.presentation.ui.auth.AuthPresenter
+import ru.tele2med.mobile.presentation.ui.auth.login.LoginPresenter
+import ru.tele2med.mobile.presentation.ui.auth.number_enter.NumberEnterPresenter
+import ru.tele2med.mobile.presentation.ui.auth.pin_change.PinChangePresenter
+import ru.tele2med.mobile.presentation.ui.auth.pin_enter.PinEnterPresenter
+import ru.tele2med.mobile.presentation.ui.auth.sms.SmsPresenter
+import ru.tele2med.mobile.presentation.ui.auth0.MainAuth0Presenter
+import ru.tele2med.mobile.presentation.ui.auth0.SplashAuth0Presenter
+import ru.tele2med.mobile.presentation.ui.common.help.HelpPresenter
+import ru.tele2med.mobile.presentation.ui.common.help_checkup.HelpCheckupPresenter
+import ru.tele2med.mobile.presentation.ui.common.help_monitoring.HelpMonitoringPresenter
+import ru.tele2med.mobile.presentation.ui.common.help_monitoring.HelpQrPresenter
+import ru.tele2med.mobile.presentation.ui.common.help_status.HelpStatusPresenter
+import ru.tele2med.mobile.presentation.ui.drawer.DrawerPresenter
+import ru.tele2med.mobile.presentation.ui.menu.MenuPresenter
+import ru.tele2med.mobile.presentation.ui.menu.ReviewActivityPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.accepting.AcceptPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.accessKeys.AccessPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.chat.ChatPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.notification.NotificationPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.settings.SettingsPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.settings.change_pin.change_pin_first_step.ChangePinFirstStepPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.settings.change_pin.change_pin_second_step.ChangePinSecondStepPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.sos.SosPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.stats.StatsPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.status.StatusesPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.alkometr.AlkoPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.complaints.ComplaintsPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.dashboard.DashboardPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.checkups.CheckupsPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.firstPhoto.FirstPhotoPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.main.MainPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.medicalCheckup.MedicalCheckupPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.result.ResPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.tonometr.TonPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.pirometr.PirPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.print.PrintPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.profile.ProfilePresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.qr.QrPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.qrReview.QrReviewPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.review.ReviewPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.rfid.RfidPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.settingsLc.SettingsLcPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.settingsReview.SettingsReviewPresenter
+import ru.tele2med.mobile.presentation.ui.menu.items.status.statusList.StatusListPresenter
+import ru.tele2med.mobile.presentation.ui.models.UiConverter
+import ru.tele2med.mobile.presentation.ui.splash.SplashPresenter
+import ru.tele2med.mobile.presentation.util.MyDialogPresenter
+
+fun presenterModule() = Kodein.Module(name = "presenterModule") {
+
+ bind() from provider {
+ QrPresenter(instance(), instance(), instance())
+ }
+
+ bind() from provider {
+ QrReviewPresenter(instance(), instance(), instance())
+ }
+
+ bind() from provider {
+ SettingsReviewPresenter(instance(), instance())
+ }
+
+ bind() from provider {
+ SettingsLcPresenter(instance(), instance())
+ }
+
+
+ bind() from provider {
+ DashboardPresenter(instance(), instance())
+ }
+
+ bind() from provider {
+ ProfilePresenter(instance(), instance())
+ }
+
+ bind() from provider {
+ AccessPresenter(instance(), instance())
+ }
+
+
+
+
+
+ bind() from provider {
+ ru.tele2med.mobile.presentation.ui.qr.QrPresenter(
+ instance(),
+ instance(),
+ instance()
+ )
+ }
+
+
+
+ bind() from provider {
+ SplashPresenter(instance(), instance())
+ }
+
+ bind() from provider {
+ CheckupsPresenter(instance(), instance(), instance())
+ }
+
+ bind() from provider {
+ ReviewPresenter(instance(), instance(), instance(), instance())
+ }
+
+ bind() from provider {
+ SplashAuth0Presenter(instance(), instance(), instance())
+ }
+
+ bind() from provider {
+ MainAuth0Presenter(instance(), instance(), instance())
+ }
+
+ bind() from provider {
+ ReviewActivityPresenter(instance(), instance())
+ }
+
+ bind() from provider {
+ AuthPresenter(instance())
+ }
+
+ bind() from provider {
+ ComplaintsPresenter(instance(), instance(), instance(), instance())
+ }
+
+ bind() from provider {
+ LoginPresenter(instance(), instance(), instance(), instance())
+ }
+
+
+ bind() from provider {
+ NumberEnterPresenter(instance(), instance(), instance(), instance())
+ }
+
+ bind() from factory { img: String ->
+ AcceptPresenter(instance(), instance(), instance(), img, instance())
+ }
+
+ bind() from factory { img: String ->
+ FirstPhotoPresenter(instance(), instance(), instance(), img, instance())
+ }
+
+
+
+ bind() from provider {
+ RfidPresenter(instance(), instance(), instance())
+ }
+
+
+ bind() from provider {
+ StatusListPresenter(instance(), instance(), instance())
+ }
+
+ bind() from provider {
+ MainPresenter(instance(), instance(), instance(), instance())
+ }
+
+ bind() from provider {
+ TonPresenter(instance(), instance(), instance())
+ }
+
+
+ bind() from provider {
+ AlkoPresenter(instance(), instance(), instance())
+ }
+
+ bind() from provider {
+ PirPresenter(instance(), instance(), instance(), instance())
+ }
+
+ bind() from factory { complaints: String ->
+ ResPresenter(
+ instance(),
+ instance(),
+ instance(),
+ complaints,
+ instance(),
+ instance(),
+ instance()
+ )
+ }
+
+ bind() from factory { stringQr: String ->
+ MedicalCheckupPresenter(instance(), instance(), stringQr)
+ }
+
+ bind() from factory { phone: String ->
+ PinChangePresenter(instance(), instance(), phone, instance(), instance())
+ }
+
+ bind() from factory { phone: String ->
+ PinEnterPresenter(instance(), instance(), instance(), instance(), phone)
+ }
+
+
+
+ bind() from factory { phone: String ->
+ SmsPresenter(instance(), instance(), instance(), phone, instance())
+ }
+
+ bind() from provider {
+ HelpPresenter(instance())
+ }
+
+ bind() from provider {
+ HelpCheckupPresenter(instance())
+ }
+
+
+ bind() from provider {
+ HelpMonitoringPresenter(instance())
+ }
+
+
+ bind() from provider {
+ HelpQrPresenter(instance())
+ }
+
+
+ bind() from provider {
+ MenuPresenter(instance(), instance(), instance(), instance())
+ }
+
+ bind() from provider {
+ DrawerPresenter(
+ instance(),
+ instance(),
+ instance(),
+ instance(),
+ instance()
+ )
+ }
+
+
+ bind() from provider {
+ MyDialogPresenter(instance(), instance())
+ }
+
+ bind() from provider {
+ StatusesPresenter()
+ }
+
+ bind() from provider {
+ SettingsPresenter(instance(), instance())
+ }
+
+
+ bind() from provider {
+ HelpStatusPresenter(instance())
+ }
+
+
+ bind() from provider {
+ StatsPresenter(instance(), instance(), instance())
+ }
+
+ bind() from provider {
+ ChangePinFirstStepPresenter(instance(), instance())
+ }
+
+ bind() from provider {
+ ChangePinSecondStepPresenter(instance(), instance(), instance())
+ }
+
+ bind() from provider {
+ SosPresenter(instance(), instance(), instance())
+ }
+
+ bind() from provider {
+ ChatPresenter(instance(), instance(), instance())
+ }
+
+ bind() from provider {
+ NotificationPresenter(instance(), instance(), instance(), instance(), instance())
+ }
+
+ bind() from singleton {
+ UiConverter(instance())
+ }
+
+ bind() from provider {
+ PrintPresenter(instance(), instance(), instance())
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/di/module/repositoryModule.kt b/app/src/main/java/ru/tele2med/mobile/di/module/repositoryModule.kt
new file mode 100644
index 0000000..ea34ba1
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/di/module/repositoryModule.kt
@@ -0,0 +1,121 @@
+package ru.tele2med.mobile.di.module
+
+import org.kodein.di.Kodein
+import org.kodein.di.generic.bind
+import org.kodein.di.generic.instance
+import org.kodein.di.generic.singleton
+import ru.tele2med.mobile.data.repository.*
+import ru.tele2med.mobile.domain.repository.*
+
+fun repoModule() = Kodein.Module(name = "repoModule") {
+
+ bind() with singleton {
+ DataConverter()
+ }
+
+ bind() with singleton {
+ BeginRepositoryImpl(
+ instance(),
+ instance()
+ )
+ }
+
+ bind() with singleton {
+ BeginCheckupRepositoryImpl(
+ instance(),
+ instance()
+ )
+ }
+
+
+ bind() with singleton {
+ DashboardRepositoryImpl(
+ instance(),
+ instance(),
+ instance()
+ )
+ }
+
+ bind() with singleton {
+ NewMedicalCheckupRepositoryImpl(
+ instance(),
+ instance(),
+ instance()
+ )
+ }
+
+ bind() with singleton {
+ NewRfidRepositoryImpl(
+ instance(),
+ instance()
+ )
+ }
+
+ bind() with singleton {
+ UploadVideoRepositoryImpl(
+ instance(),
+ instance()
+ )
+ }
+
+ bind() with singleton {
+ UploadPhotoRepositoryImpl(
+ instance(),
+ instance()
+ )
+ }
+
+ bind() with singleton {
+ UploadFirstPhotoRepositoryImpl(
+ instance(),
+ instance()
+ )
+ }
+
+ bind() with singleton {
+ QRRepositoryImpl(
+ instance(),
+ instance(),
+ instance()
+ )
+ }
+
+
+
+
+ bind() with singleton {
+ UpdatesRepositoryImpl(
+ instance(),
+ instance(),
+ instance()
+ )
+ }
+
+ bind() with singleton {
+ InitRepositoryImpl(
+ instance(),
+ instance(),
+ instance()
+ )
+ }
+
+ bind() with singleton {
+ GetStickerRepositoryImpl(instance(), instance(), instance())
+ }
+
+ bind() with singleton {
+ AuthRepositoryImpl(instance(), instance(), instance())
+ }
+
+
+ bind() with singleton {
+ GeoRepositoryImpl(instance(), instance(), instance())
+ }
+ bind() with singleton {
+ RouteRepositoryImpl(instance(), instance())
+ }
+
+
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/App.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/App.kt
new file mode 100644
index 0000000..82cf0bf
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/App.kt
@@ -0,0 +1,21 @@
+package ru.tele2med.mobile.domain.entity
+
+data class App(
+ val id: String,
+ val uuid: String,
+ val tokenApp: String,
+ val sessId: String,
+ val version: String,
+ val platform: String,
+ val model: String,
+ val buildNumber: String,
+ val REMOTE_ADDR: String,
+ val HTTP_USER_AGENT: String,
+ val datetime: String,
+ val uniq_id: String,
+ val comment: String,
+ val enabled: String,
+ val d_Begin: String,
+ val d_End: String
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/Arm.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/Arm.kt
new file mode 100644
index 0000000..fc1e242
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/Arm.kt
@@ -0,0 +1,20 @@
+package ru.tele2med.mobile.domain.entity
+
+data class Arm(
+ val id: String,
+ val uniq_id: String,
+ val Session: String? = null,
+ val ARMSession: String? = null,
+ val DeviceName: String,
+ val SoftVer: String? = null,
+ val ip: String? = null,
+ val enabled: String,
+ val organization_id: String,
+ val organization_uniq_id: String,
+ val source: String? = null,
+ val datetime: String? = null,
+ val ARMdatetime: String? = null,
+ val speed: String? = null,
+ val speeddatetime: String? = null
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/AuthData.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/AuthData.kt
new file mode 100644
index 0000000..8135794
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/AuthData.kt
@@ -0,0 +1,9 @@
+package ru.tele2med.mobile.domain.entity
+
+data class AuthData(
+ val af: String,
+ val status: String,
+ val message: String,
+ val data: UserData
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/BeginCheckupDto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/BeginCheckupDto.kt
new file mode 100644
index 0000000..9151485
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/BeginCheckupDto.kt
@@ -0,0 +1,10 @@
+package ru.tele2med.mobile.domain.entity
+
+data class BeginCheckupDto(
+ val uniq_id: String,
+ val session: String,
+ val organization_uniq_id: String,
+ val source: String,
+ val employe_id: String,
+ val pass: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/BeginCheckupResponseDto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/BeginCheckupResponseDto.kt
new file mode 100644
index 0000000..f4ff133
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/BeginCheckupResponseDto.kt
@@ -0,0 +1,7 @@
+package ru.tele2med.mobile.domain.entity
+
+data class BeginCheckupResponseDto(
+ val status: String,
+ val message: String,
+ val data: List?=null
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/BeginResponseDto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/BeginResponseDto.kt
new file mode 100644
index 0000000..96df596
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/BeginResponseDto.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.domain.entity
+
+data class BeginResponseDto(
+ val status: String,
+ val message: String,
+ val result_auto: String,
+ val data: List
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/CheckPhoneResponseDto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/CheckPhoneResponseDto.kt
new file mode 100644
index 0000000..4091ca2
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/CheckPhoneResponseDto.kt
@@ -0,0 +1,5 @@
+package ru.tele2med.mobile.domain.entity
+
+data class CheckPhoneResponseDto(
+ val existPin: Boolean
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/Checkup.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/Checkup.kt
new file mode 100644
index 0000000..2ed97c6
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/Checkup.kt
@@ -0,0 +1,9 @@
+package ru.tele2med.mobile.domain.entity
+
+data class Checkup(
+ val all: Int,
+ val unverified: Int,
+ val allowed: Int,
+ val disallowed: Int
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/CheckupForSticker.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/CheckupForSticker.kt
new file mode 100644
index 0000000..060bf01
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/CheckupForSticker.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.domain.entity
+
+data class CheckupForSticker(
+ val checkup_id: String,
+ val sticker_type: String,
+ val sticker_format: String,
+ val token: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/CurrentTsResponseDto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/CurrentTsResponseDto.kt
new file mode 100644
index 0000000..42308d5
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/CurrentTsResponseDto.kt
@@ -0,0 +1,7 @@
+package ru.tele2med.mobile.domain.entity
+
+data class CurrentTsResponseDto(
+ val exist: Boolean,
+ val carRegNumber: String?,
+ val carBrandAndModel: String?
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/DashboardResponseDto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/DashboardResponseDto.kt
new file mode 100644
index 0000000..63e7875
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/DashboardResponseDto.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.domain.entity
+
+data class DashboardResponseDto(
+ val af: String,
+ val status: String,
+ val message: String,
+ val data: DataDashboard
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/Data.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/Data.kt
new file mode 100644
index 0000000..5a9ebae
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/Data.kt
@@ -0,0 +1,11 @@
+package ru.tele2med.mobile.domain.entity
+
+data class Data(
+ val session: Session,
+ val app: App,
+ val user: User,
+ val employee: Employee,
+ val organization: Organization,
+ val arm: Arm? = null
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/DataCheckup.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/DataCheckup.kt
new file mode 100644
index 0000000..fa0554f
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/DataCheckup.kt
@@ -0,0 +1,45 @@
+package ru.tele2med.mobile.domain.entity
+
+data class DataCheckup(
+ val rowNumber: String,
+ val id: String,
+ val idcheckup: String,
+ val recognize: String,
+ val enabled: String,
+ val exam_state: String,
+ val exam_state_name: String,
+ val datetimeinsert: String,
+ val hb: String,
+ val ap: String,
+ val vp: String,
+ val al: String,
+ val tm: String,
+ val health: String,
+ val source: String,
+ val iddriver: String,
+ val idderiverfrombase: String,
+ val organizationid: String,
+ val orgInn: String,
+ val inspectiontype: String,
+ val alcotest: String,
+ val syspressure: String,
+ val diapressure: String,
+ val pulse: String,
+ val temperature: String,
+ val beginmeasurmenttime: String,
+ val endmeasurmenttime: String,
+ val result_auto: String,
+ val result_medic: String,
+ val fio_medic: String,
+ val terminal_: String,
+ val terminal: String,
+ val uniq_id: String,
+ val lastname: String,
+ val firstname: String,
+ val oldlastname: String,
+ val organization: String,
+ val exam_result_med: String,
+ val exam_result_auto: String,
+ val fio: String
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/DataDashboard.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/DataDashboard.kt
new file mode 100644
index 0000000..8dde539
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/DataDashboard.kt
@@ -0,0 +1,7 @@
+package ru.tele2med.mobile.domain.entity
+
+data class DataDashboard(
+ val checkup: Checkup,
+ val statistics: StatisticsDashboard,
+ val graph: List
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/DataInit.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/DataInit.kt
new file mode 100644
index 0000000..fd8ab3d
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/DataInit.kt
@@ -0,0 +1,10 @@
+package ru.tele2med.mobile.domain.entity
+
+data class DataInit(
+ val menu: MenuData,
+ val appUniqID: String? = null,
+ val tokens: TokensData? = null,
+ val supportPhone: String?,
+ val verifiedDevice: Boolean,
+ val latest: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/DataPhoto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/DataPhoto.kt
new file mode 100644
index 0000000..76021e2
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/DataPhoto.kt
@@ -0,0 +1,7 @@
+package ru.tele2med.mobile.domain.entity
+
+data class DataPhoto(
+ val img_exists: String,
+ val img: String,
+ val employee_id: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/DataQR.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/DataQR.kt
new file mode 100644
index 0000000..d25557e
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/DataQR.kt
@@ -0,0 +1,73 @@
+package ru.tele2med.mobile.domain.entity
+
+data class DataQR(
+ val id: String,
+ val idcheckup: String,
+ val idderiverfrombase: String,
+ val inspectiontype: String,
+ val result_auto: String,
+ val result_medic: String,
+ val medic_fio: String,
+ val terminal: String,
+ val uniq_id: String,
+ val exam_result_datetime: String,
+ val medic_comment: String,
+ val exam_state: String,
+ val exam_state_name: String,
+ val complaints: String,
+ val exam_date: String,
+ val exam_timestart: String,
+ val exam_timeend: String,
+ val name: String,
+ val photo_big: String,
+ val lastname: String,
+ val firstname: String,
+ val oldlastname: String,
+ val RoleName: String,
+ val organization: String,
+ val position: String,
+ val birthday: String,
+ val sex: String,
+ val photo: String,
+ val epicrisis: String,
+ val epicrisis_color: String,
+ val sex_name: String,
+ val exam_result_med: Int,
+ val exam_result_auto: Int,
+ val ap: String,
+ val exam_result_auto_txt: String,
+ val exam_result_med_txt: String,
+ val data_for_signature_conclusion: String,
+ val terminal_name: String,
+ val qr_code: String,
+ val profilePhoto: String? = null,
+ val checkupPhoto: String? = null,
+ val checkupVideo: String? = null,
+ val alcotest: String? = null,
+ val syspressure: String? = null,
+ val diapressure: String? = null,
+ val pulse: String? = null,
+ val temperature: String? = null,
+ val ap_lt: String? = null,
+ val ap_tt: String? = null,
+ val vp_lt: String? = null,
+ val vp_tt: String? = null,
+ val hb_lt: String? = null,
+ val hb_tt: String? = null,
+ val al_lt: String? = null,
+ val al_tt: String? = null,
+ val tm_lt: String? = null,
+ val tm_tt: String? = null,
+ val ind_corr: String? = null,
+ val email: String? = null,
+ val login: String? = null,
+ val ownerid: String? = null,
+ val tm: String? = null,
+ val al: String? = null,
+ val hb: String? = null,
+ val vp: String? = null,
+ val cmp: String? = null,
+ val data_for_signature: String? = null,
+ val data_for_signature_research: String? = null
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/DataSticker.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/DataSticker.kt
new file mode 100644
index 0000000..7d32a8a
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/DataSticker.kt
@@ -0,0 +1,10 @@
+package ru.tele2med.mobile.domain.entity
+
+data class DataSticker(
+ val exam_state: String,
+ val exam_state_text: String,
+ val result_medic: String,
+ val result_medic_text: String,
+ val way: String
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/DataTechCheckup.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/DataTechCheckup.kt
new file mode 100644
index 0000000..f18bf2a
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/DataTechCheckup.kt
@@ -0,0 +1,27 @@
+package ru.tele2med.mobile.domain.entity
+
+data class DataTechCheckup(
+ val id: String,
+ val uniq_id: String,
+ val vehicle_id: String,
+ val vehicle_name: String,
+ val waybill_uuid: String?,
+ val waybill_name: String?,
+ val organization_id: String,
+ val mechanic_id: String,
+ val mechanic_name: String,
+ val result_id: String,
+ val result_name: String,
+ val datetime: String,
+ val date_insert: String,
+ val date_update: String,
+ val date_delete: String,
+ val enabled: String,
+ val checklist_uuid: String?,
+ val exam_state: String,
+ val exam_state_name: String,
+ val exam_state_description: String?,
+ val organization_name: String,
+ val datetime_: String
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/DefaultResponseDto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/DefaultResponseDto.kt
new file mode 100644
index 0000000..4f60589
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/DefaultResponseDto.kt
@@ -0,0 +1,6 @@
+package ru.tele2med.mobile.domain.entity
+
+data class DefaultResponseDto(
+ val code: Int,
+ val message: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/Employee.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/Employee.kt
new file mode 100644
index 0000000..5272006
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/Employee.kt
@@ -0,0 +1,37 @@
+package ru.tele2med.mobile.domain.entity
+
+data class Employee(
+ val id: String,
+ val uniq_id: String,
+ val lastName: String,
+ val firstName: String,
+ val oldlastname: String,
+ val idDriver: String,
+ val ownerid: String?=null,
+ val source: String,
+ val enabled: String,
+ val datetimeinsert: String,
+ val orginn: String?=null,
+ val ap_lt: String?=null,
+ val ap_tt: String?=null,
+ val vp_lt: String?=null,
+ val vp_tt: String?=null,
+ val hb_lt: String?=null,
+ val hb_tt: String?=null,
+ val al_lt: String?=null,
+ val al_tt: String?=null,
+ val tm_lt: String?=null,
+ val tm_tt: String?=null,
+ val ind_corr: String?=null,
+ val sex: String,
+ val birthday: String?=null,
+ val organization_id: String?=null,
+ val organization_uniq_id: String?=null,
+ val photo: String?=null,
+ val phone: String?=null,
+ val position: String?=null,
+ val email: String?=null,
+ val is_test_user: String?=null
+
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/GetStickerResponseDto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/GetStickerResponseDto.kt
new file mode 100644
index 0000000..f4da79d
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/GetStickerResponseDto.kt
@@ -0,0 +1,7 @@
+package ru.tele2med.mobile.domain.entity
+
+data class GetStickerResponseDto(
+ val status: String,
+ val message: String,
+ val result_auto: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/Graph.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/Graph.kt
new file mode 100644
index 0000000..45cd2bc
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/Graph.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.domain.entity
+
+data class Graph(
+ val id: String,
+ val month: String,
+ val rec: String,
+ val newv: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/History.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/History.kt
new file mode 100644
index 0000000..5a2fdf3
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/History.kt
@@ -0,0 +1,14 @@
+package ru.tele2med.mobile.domain.entity
+
+
+data class History(
+ val id: Int,
+ val dateOut: String,
+ val regNumber: String,
+ val brandAndModel: String,
+ val serial: String?=null,
+ val number: String,
+ val tsStatistic: TSStatistic,
+ val requests: List
+)
+
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/HistoryRequest.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/HistoryRequest.kt
new file mode 100644
index 0000000..2159dd5
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/HistoryRequest.kt
@@ -0,0 +1,10 @@
+package ru.tele2med.mobile.domain.entity
+
+data class HistoryRequest(
+ val id: Int,
+ val status: String,
+ val plannedStartTime: Long,
+ val plannedFinishTime: Long?=null,
+ val routePoints: List,
+ val number: String
+ )
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/HistoryRouteList.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/HistoryRouteList.kt
new file mode 100644
index 0000000..58b62b2
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/HistoryRouteList.kt
@@ -0,0 +1,14 @@
+package ru.tele2med.mobile.domain.entity
+
+data class HistoryRouteList(
+ val id: Int,
+ val dateOut: String,
+ val regNumber: String,
+ val brandAndModel: String,
+ val serial: String,
+ val number: String,
+ val tsStatistic: TSStatistic,
+ val requests: List
+
+)
+
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/InfoData.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/InfoData.kt
new file mode 100644
index 0000000..ea727a5
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/InfoData.kt
@@ -0,0 +1,6 @@
+package ru.tele2med.mobile.domain.entity
+
+data class InfoData(
+ val uniq_id: String,
+ val name: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/InitData.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/InitData.kt
new file mode 100644
index 0000000..0392cc0
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/InitData.kt
@@ -0,0 +1,9 @@
+package ru.tele2med.mobile.domain.entity
+
+data class InitData(
+ val af: String,
+ val status: String,
+ val message: String,
+ val data: DataInit
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/InitResponseDto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/InitResponseDto.kt
new file mode 100644
index 0000000..7c0d9e6
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/InitResponseDto.kt
@@ -0,0 +1,12 @@
+package ru.tele2med.mobile.domain.entity
+
+data class InitResponseDto(
+ val supportPhone: String?,
+ val latest: Int,
+ val period: Int,
+ val phone: String? = null,
+ val dispatcher: String?,
+ val pinCodeType: String? = null,
+ val workMode: String?=null,
+ val verifiedDevice: Boolean
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/LoginData.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/LoginData.kt
new file mode 100644
index 0000000..8feab94
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/LoginData.kt
@@ -0,0 +1,12 @@
+package ru.tele2med.mobile.domain.entity
+
+data class LoginData(
+ val needChangePin: Boolean,
+ val tokenUser: String?=null,
+ val userName: String,
+ val dispatcherPhone: String?,
+ val tokenRefresh: String,
+ val tokenRefreshExpired: String,
+ val tokenUserExpired: String
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/LoginResponseDto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/LoginResponseDto.kt
new file mode 100644
index 0000000..b923c7b
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/LoginResponseDto.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.domain.entity
+
+data class LoginResponseDto(
+ val needChangePin: Boolean,
+ val tokenUser: String,
+ val userName: String,
+ val dispatcherPhone: String?
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/MedicalCheckupList.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/MedicalCheckupList.kt
new file mode 100644
index 0000000..c48a72d
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/MedicalCheckupList.kt
@@ -0,0 +1,10 @@
+package ru.tele2med.mobile.domain.entity
+
+data class MedicalCheckupList(
+ val af: String,
+ val status: String,
+ val message: String,
+ val data: List,
+ val total_count: Int,
+ val pos: Int
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/MenuData.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/MenuData.kt
new file mode 100644
index 0000000..1b5303c
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/MenuData.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.domain.entity
+
+data class MenuData(
+ val checkup: Boolean,
+ val lc: Boolean,
+ val qr: Boolean
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/Message.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/Message.kt
new file mode 100644
index 0000000..de47e60
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/Message.kt
@@ -0,0 +1,13 @@
+package ru.tele2med.mobile.domain.entity
+
+data class Message(
+ val id: Int,
+ val direction: MessageDirection,
+ val text: String,
+ val time: Long,
+ val read: Boolean
+)
+
+enum class MessageDirection(val value: String) {
+ IN("IN"), OUT("OUT")
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/NewMedicalCheckupResponseDto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/NewMedicalCheckupResponseDto.kt
new file mode 100644
index 0000000..8adb50b
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/NewMedicalCheckupResponseDto.kt
@@ -0,0 +1,7 @@
+package ru.tele2med.mobile.domain.entity
+
+data class NewMedicalCheckupResponseDto(
+ val status: String,
+ val message: String,
+ val data: List
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/NewRfidResponseDto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/NewRfidResponseDto.kt
new file mode 100644
index 0000000..50300d8
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/NewRfidResponseDto.kt
@@ -0,0 +1,6 @@
+package ru.tele2med.mobile.domain.entity
+
+data class NewRfidResponseDto(
+ val status: String,
+ val message: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/Notification.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/Notification.kt
new file mode 100644
index 0000000..2cb59ee
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/Notification.kt
@@ -0,0 +1,12 @@
+package ru.tele2med.mobile.domain.entity
+
+data class Notification(
+ val id: Int,
+ val taskId: Int,
+ val taskStatus: String,
+ val taskNumber: String,
+ val time: Long,
+ val description: String,
+ val read: Boolean,
+ val changes: List?
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/Organization.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/Organization.kt
new file mode 100644
index 0000000..55368d2
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/Organization.kt
@@ -0,0 +1,26 @@
+package ru.tele2med.mobile.domain.entity
+
+data class Organization(
+ val id: String,
+ val uniq_id: String,
+ val name: String,
+ val address: String,
+ val inn: String,
+ val ident: String,
+ val ownerid: String?=null,
+ val source: String,
+ val enabled: String,
+ val datetimeinsert: String,
+ val parent_id: String?=null,
+ val division_number: String?=null,
+ val latitude: String?=null,
+ val longitude: String?=null,
+ val type: String?=null,
+ val time_zone: String?=null,
+ val region: String?=null,
+ val full_name: String?=null,
+ val phone: String?=null,
+ val description: String?=null
+
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/OrgsData.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/OrgsData.kt
new file mode 100644
index 0000000..3703a13
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/OrgsData.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.domain.entity
+
+data class OrgsData(
+ val uniq_id: String,
+ val name: String,
+ val inn: String
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/PersonData.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/PersonData.kt
new file mode 100644
index 0000000..ec53d20
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/PersonData.kt
@@ -0,0 +1,15 @@
+package ru.tele2med.mobile.domain.entity
+
+
+data class PersonData(
+ val key_id: String,
+ val fio: String,
+ val img: String? = null,
+ val organization_name: String,
+ val uniq_id: String,
+ val img_exists: String,
+ val is_test_user: String
+
+
+)
+
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/Position.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/Position.kt
new file mode 100644
index 0000000..34bb22c
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/Position.kt
@@ -0,0 +1,11 @@
+package ru.tele2med.mobile.domain.entity
+
+data class Position(
+ val id: Long,
+ val lat: Double,
+ val lon: Double,
+ val seaLevel: Int,
+ val speed: Int,
+ val timeStamp: Long,
+ val trackAngle: Int
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/QR.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/QR.kt
new file mode 100644
index 0000000..ad356e4
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/QR.kt
@@ -0,0 +1,10 @@
+package ru.tele2med.mobile.domain.entity
+
+data class QR(
+ val af: String,
+ val status: String,
+ val message: String,
+ val data: DataQR,
+ val type_result: Int,
+ val type_message: String?=null
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/ResultData.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/ResultData.kt
new file mode 100644
index 0000000..29d0c40
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/ResultData.kt
@@ -0,0 +1,9 @@
+package ru.tele2med.mobile.domain.entity
+
+
+data class ResultData(
+ val result: String,
+ val qr_url: String
+
+)
+
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/Route.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/Route.kt
new file mode 100644
index 0000000..fe696ad
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/Route.kt
@@ -0,0 +1,10 @@
+package ru.tele2med.mobile.domain.entity
+
+data class Route(
+ val brandAndModel: String,
+ val date: Long,
+ val id: Int,
+ val number: Int?,
+ val regNumber: String,
+ val serial: String?
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/RoutePoint.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/RoutePoint.kt
new file mode 100644
index 0000000..908abc3
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/RoutePoint.kt
@@ -0,0 +1,9 @@
+package ru.tele2med.mobile.domain.entity
+
+data class RoutePoint(
+ val address: String,
+ val index: Int,
+ val lat: Double,
+ val lon: Double,
+ val time: Long?
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/SelectedTask.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/SelectedTask.kt
new file mode 100644
index 0000000..1015d97
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/SelectedTask.kt
@@ -0,0 +1,13 @@
+package ru.tele2med.mobile.domain.entity
+
+data class SelectedTask(
+ val id: Int,
+ val status: TaskStatus,
+ val number: String,
+ val plannedStartTime: Long,
+ val plannedFinishTime: Long,
+ val processing: Boolean,
+ val routePoints: List,
+ val carRegNumber: String,
+ val carBrandAndModel: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/ServerMessage.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/ServerMessage.kt
new file mode 100644
index 0000000..b88645a
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/ServerMessage.kt
@@ -0,0 +1,6 @@
+package ru.tele2med.mobile.domain.entity
+
+data class ServerMessage(
+ val code: Int,
+ val message: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/Session.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/Session.kt
new file mode 100644
index 0000000..fa743dc
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/Session.kt
@@ -0,0 +1,7 @@
+package ru.tele2med.mobile.domain.entity
+
+data class Session(
+ val id: String,
+ val uniq_id: String
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/StatisticAttachments.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/StatisticAttachments.kt
new file mode 100644
index 0000000..b5152fc
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/StatisticAttachments.kt
@@ -0,0 +1,9 @@
+package ru.tele2med.mobile.domain.entity
+
+data class StatisticAttachments(
+ val id: Int,
+ val name: String,
+ val manuallyMotoHour: Double,
+ val glonassMotoHour: Double
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/Statistics.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/Statistics.kt
new file mode 100644
index 0000000..4626946
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/Statistics.kt
@@ -0,0 +1,16 @@
+package ru.tele2med.mobile.domain.entity
+
+data class Statistics(
+ val manuallyMileage: Double,
+ val manuallyMotoHour: Double,
+ val manuallyMoHour: Double,
+ val glonassMileage: Double,
+ val glonassMotoHour: Double,
+ val glonassMoHour: Double,
+ val attachments: List,
+ val standardDiscrepancy: Int,
+ val distanceRatio: Float,
+ val motoHourRatio: Float,
+ val hourRatio: Float
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/StatisticsDashboard.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/StatisticsDashboard.kt
new file mode 100644
index 0000000..3a4d1d7
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/StatisticsDashboard.kt
@@ -0,0 +1,9 @@
+package ru.tele2med.mobile.domain.entity
+
+data class StatisticsDashboard(
+ val organizations: String,
+ val computers: String,
+ val drivers: String,
+ val users: String
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/Status.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/Status.kt
new file mode 100644
index 0000000..4386fe9
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/Status.kt
@@ -0,0 +1,7 @@
+package ru.tele2med.mobile.domain.entity
+
+data class Status(
+ var startTime: Long,
+ var currentTime: Long,
+ var mileage: Double
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/StatusAll.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/StatusAll.kt
new file mode 100644
index 0000000..f27d918
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/StatusAll.kt
@@ -0,0 +1,7 @@
+package ru.tele2med.mobile.domain.entity
+
+data class StatusAll(
+ val startTime: Long,
+ val currentTime: Long,
+ val mileage: Double
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/TSStatistic.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/TSStatistic.kt
new file mode 100644
index 0000000..418f3c0
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/TSStatistic.kt
@@ -0,0 +1,12 @@
+package ru.tele2med.mobile.domain.entity
+
+data class TSStatistic(
+ val manuallyMileage: Double?=null,
+ val manuallyMotoHour: Double?=null,
+ val manuallyMoHour: Double?=null,
+ val glonassMileage: Double?=null,
+ val glonassMotoHour: Double?=null,
+ val glonassMoHour: Double?=null,
+ val attachments: List,
+ val standardDiscrepancy: Int?=null
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/Task.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/Task.kt
new file mode 100644
index 0000000..b78f307
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/Task.kt
@@ -0,0 +1,30 @@
+package ru.tele2med.mobile.domain.entity
+
+data class Task(
+ val id: Int,
+ val status: TaskStatus,
+ val number: String,
+ val arrivalTime: Long,
+ val departureTime: Long,
+ val telematics: Boolean,
+ val processing: Boolean,
+ val points: List
+)
+
+enum class TaskStatus(val value: String) {
+ IN_WORK("В работе"),
+ NOT_STARTED("Не началось"),
+ ACCEPTED("Задание принято"),
+ FINISHED("Выполнено"),
+ CHANGED("Изменено"),
+ CANCELED("Отменено")
+}
+
+enum class MyStatus(val value: String) {
+ IN_WORK("В работе"),
+ NOT_STARTED("Не началось"),
+ ACCEPTED("Задание принято"),
+ FINISHED("Выполнено"),
+ CHANGED("Изменено"),
+ CANCELED("Отменено")
+}
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/TaskFullInfo.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/TaskFullInfo.kt
new file mode 100644
index 0000000..0baf627
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/TaskFullInfo.kt
@@ -0,0 +1,33 @@
+package ru.tele2med.mobile.domain.entity
+
+data class TaskFullInfo(
+ val id: Int,
+ val number: String,
+ val status: TaskStatus,
+ val comment: String? = null,
+ val arrivalTime: Long,
+ val departureTime: Long,
+ val contactName: String,
+ val contactPhone: String,
+ val routePoints: List,
+ val note: String? = null,
+ val arrivalInfo: TripEventInfo?,
+ val telematics: Boolean,
+ val departureInfo: TripEventInfo?
+)
+
+data class TripEventInfo(
+ val time: Long,
+ val odometer: Int,
+ val inServiceHours: Float,
+ val engineHours: Float,
+ val equipment: List,
+ val checkDateTime: Long?,
+ val zeroMileage: Int?
+)
+
+data class Equipment(
+ val id: Int,
+ val name: String,
+ val engineHours: Float
+)
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/TaskMap.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/TaskMap.kt
new file mode 100644
index 0000000..4c70f0b
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/TaskMap.kt
@@ -0,0 +1,29 @@
+package ru.tele2med.mobile.domain.entity
+
+data class TaskMap(
+ val id: Int,
+ val number: String,
+ val status: String,
+ val plannedStartTime: Long,
+ val plannedFinishTime: Long,
+ val routePoints: List,
+ val processing: Boolean,
+ val routePolyline: String? = null,
+ val trackPolyline: String? = null
+)
+
+enum class TaskStatusMap(val toString: String) {
+ IN_WORK("В работе"),
+ ACCEPTED("Задание принято"),
+ NOT_STARTED("Не началось"),
+ FINISHED("Выполнено"),
+ CHANGED("Изменено"),
+ CANCELED("Отменено")
+}
+
+enum class TaskStatusChangeCommandMap(val value: String) {
+ TO_WORK("requestToWork"),
+ AT_POINT("requestAtPoint"),
+ START("requestStart"),
+ END("requestEnd")
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/TechCheckupList.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/TechCheckupList.kt
new file mode 100644
index 0000000..574fcf1
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/TechCheckupList.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.domain.entity
+
+data class TechCheckupList(
+ val af: String,
+ val status: String,
+ val message: String,
+ val data: List,
+ val total_count: Int)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/TokenRefreshData.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/TokenRefreshData.kt
new file mode 100644
index 0000000..c1091d1
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/TokenRefreshData.kt
@@ -0,0 +1,9 @@
+package ru.tele2med.mobile.domain.entity
+
+data class TokenRefreshData(
+ val tokenUser: String,
+ val tokenRefresh: String,
+ val needChangePin: Boolean,
+ val dispatcherPhone: String?
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/TokensAuthData.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/TokensAuthData.kt
new file mode 100644
index 0000000..0f779bb
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/TokensAuthData.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.domain.entity
+
+data class TokensAuthData(
+ val access_token: String,
+ val refresh_token: String,
+ val token_type: String,
+ val expires_in: Int
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/TokensData.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/TokensData.kt
new file mode 100644
index 0000000..30e7ee7
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/TokensData.kt
@@ -0,0 +1,6 @@
+package ru.tele2med.mobile.domain.entity
+
+data class TokensData(
+ val tokenUser: String,
+ val tokenRefresh: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/UpdateSessionStatisticResponseDto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/UpdateSessionStatisticResponseDto.kt
new file mode 100644
index 0000000..3831689
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/UpdateSessionStatisticResponseDto.kt
@@ -0,0 +1,6 @@
+package ru.tele2med.mobile.domain.entity
+
+data class UpdateSessionStatisticResponseDto(
+ val code: Int,
+ val message: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/Updates.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/Updates.kt
new file mode 100644
index 0000000..44b1288
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/Updates.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.domain.entity
+
+data class Updates(
+ val messageCount: Int,
+ val routes: List,
+ val newNotifications: List,
+ val info: InfoData
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/UpdatesInfo.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/UpdatesInfo.kt
new file mode 100644
index 0000000..8f5b72e
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/UpdatesInfo.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.domain.entity
+
+data class UpdatesInfo(
+ val af: String,
+ val status: String,
+ val message: String,
+ val data: Data?=null
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/UploadFirstPhotoResponseDto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/UploadFirstPhotoResponseDto.kt
new file mode 100644
index 0000000..4e710a9
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/UploadFirstPhotoResponseDto.kt
@@ -0,0 +1,7 @@
+package ru.tele2med.mobile.domain.entity
+
+data class UploadFirstPhotoResponseDto(
+ val status: String,
+ val message: String,
+ val data: DataPhoto? = null
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/UploadPhotoDto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/UploadPhotoDto.kt
new file mode 100644
index 0000000..43c2e04
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/UploadPhotoDto.kt
@@ -0,0 +1,11 @@
+package ru.tele2med.mobile.domain.entity
+
+import okhttp3.RequestBody
+
+data class UploadPhotoDto(
+ val uniq_id: String,
+ val session: String,
+ val photo: RequestBody
+
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/UploadPhotoResponseDto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/UploadPhotoResponseDto.kt
new file mode 100644
index 0000000..42b1a6c
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/UploadPhotoResponseDto.kt
@@ -0,0 +1,7 @@
+package ru.tele2med.mobile.domain.entity
+
+data class UploadPhotoResponseDto(
+ val status: String,
+ val message: String,
+ val result_auto: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/UploadVideoDto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/UploadVideoDto.kt
new file mode 100644
index 0000000..903b82a
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/UploadVideoDto.kt
@@ -0,0 +1,11 @@
+package ru.tele2med.mobile.domain.entity
+
+import okhttp3.RequestBody
+
+data class UploadVideoDto(
+ val uniq_id: String,
+ val session: String,
+ val video: RequestBody
+
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/UploadVideoResponseDto.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/UploadVideoResponseDto.kt
new file mode 100644
index 0000000..1351e1c
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/UploadVideoResponseDto.kt
@@ -0,0 +1,7 @@
+package ru.tele2med.mobile.domain.entity
+
+data class UploadVideoResponseDto(
+ val status: String,
+ val message: String,
+ val result_auto: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/User.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/User.kt
new file mode 100644
index 0000000..36adc16
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/User.kt
@@ -0,0 +1,16 @@
+package ru.tele2med.mobile.domain.entity
+
+data class User(
+ val id: String,
+ val uniq_id: String,
+ val Account: String,
+ val FIO: String,
+ val organization: String,
+ val RoleName: String,
+ val enabled: String,
+ val d_Begin: String,
+ val d_End: String,
+ val source: String
+
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/entity/UserData.kt b/app/src/main/java/ru/tele2med/mobile/domain/entity/UserData.kt
new file mode 100644
index 0000000..ec690a9
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/entity/UserData.kt
@@ -0,0 +1,11 @@
+package ru.tele2med.mobile.domain.entity
+
+data class UserData(
+ val id: String,
+ val role: String,
+ val name: String,
+ val email: String,
+ val start_page: String,
+ val tokens: TokensAuthData? = null
+
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/AuthInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/AuthInteractor.kt
new file mode 100644
index 0000000..718e050
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/AuthInteractor.kt
@@ -0,0 +1,26 @@
+package ru.tele2med.mobile.domain.interactor
+
+import android.net.Uri
+import ru.tele2med.mobile.domain.repository.AuthRepository
+
+
+class AuthInteractor(
+ private val authRepository: AuthRepository
+) {
+
+ fun getRedirect(data: Uri) = authRepository.getRedirect(data)
+
+
+
+ fun login(code: String) = authRepository.login(code)
+
+ fun auth(login: String, paswd: String) = authRepository.auth(login, paswd)
+
+
+ fun authRefresh(tokenRefresh: String) = authRepository.authRefresh(tokenRefresh)
+
+
+
+
+ fun logOut() = authRepository.logOut()
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/BeginCheckupInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/BeginCheckupInteractor.kt
new file mode 100644
index 0000000..d223851
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/BeginCheckupInteractor.kt
@@ -0,0 +1,15 @@
+package ru.tele2med.mobile.domain.interactor
+
+import ru.tele2med.mobile.data.api.entity.request.BeginMedicalCheckupFinall
+import ru.tele2med.mobile.domain.repository.BeginCheckupRepository
+
+
+class BeginCheckupInteractor(
+ private val beginCheckupRepository: BeginCheckupRepository
+) {
+
+
+ fun beginCheckup(data: BeginMedicalCheckupFinall) =
+ beginCheckupRepository.beginCheckup(data)
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/BeginInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/BeginInteractor.kt
new file mode 100644
index 0000000..b0ececa
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/BeginInteractor.kt
@@ -0,0 +1,12 @@
+package ru.tele2med.mobile.domain.interactor
+
+import ru.tele2med.mobile.domain.entity.BeginResponseDto
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.repository.BeginRepository
+
+class BeginInteractor(
+ private val beginRepository: BeginRepository
+) {
+
+ fun beginSession(data: request.BeginSessionFinall): Single = beginRepository.beginSession(data)
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/ChatInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/ChatInteractor.kt
new file mode 100644
index 0000000..b310445
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/ChatInteractor.kt
@@ -0,0 +1,43 @@
+package ru.tele2med.mobile.domain.interactor
+
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.entity.Message
+import ru.tele2med.mobile.domain.repository.ChatRepository
+
+class ChatInteractor(
+ private val chatRepository: ChatRepository
+) {
+
+ fun getMessagesReversed(offset: Int, count: Int): Single> =
+ chatRepository
+ .getMessages(offset = offset, count = count)
+ .map { it.reversed() }
+
+ fun getNewMessagesReversed(count: Int?, defaultCount: Int): Single> =
+ chatRepository
+ .getNewMessages(count = count, defaultCount = defaultCount)
+ .map { it.reversed() }
+
+ fun sendMessage(text: String): Single =
+ chatRepository
+ .sendMessage(text)
+
+ fun markRead(messages: List): Single = messages
+ .filter { !it.read }
+ .map { it.id }
+ .let { ids ->
+ if (ids.isNotEmpty()) {
+ chatRepository
+ .markRead(ids)
+ .map {
+ "Messages with the ids $ids are marked as read. Server message: $it"
+ }
+ } else {
+ Single.just("No unread messages to mark read!")
+ }
+ }
+
+ fun clear() {
+ chatRepository.clear()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/DashboardInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/DashboardInteractor.kt
new file mode 100644
index 0000000..661dfd0
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/DashboardInteractor.kt
@@ -0,0 +1,14 @@
+package ru.tele2med.mobile.domain.interactor
+
+import ru.tele2med.mobile.domain.entity.DashboardResponseDto
+import ru.tele2med.mobile.domain.repository.DashboardRepository
+import io.reactivex.Single
+
+class DashboardInteractor(
+ private val dashboardRepository: DashboardRepository
+) {
+
+ fun getDashboard(): Single = dashboardRepository.getDashboard()
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/DateRangeInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/DateRangeInteractor.kt
new file mode 100644
index 0000000..db7724e
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/DateRangeInteractor.kt
@@ -0,0 +1,44 @@
+package ru.tele2med.mobile.domain.interactor
+
+import java.util.*
+
+class DateRangeInteractor {
+ companion object {
+ private const val DAYS_IN_WEEK = 7
+ private const val DAYS_IN_MONTH = 30
+ private const val DAYS_IN_DEFAULT_RANGE = 10
+ }
+
+ fun getDate(year: Int, month: Int, dayOfMonth: Int): Date {
+ return Calendar.getInstance().apply {
+ set(year, month, dayOfMonth)
+ }.time
+ }
+
+ fun getDate(timestamp: Long): Date {
+ return Date(timestamp)
+ }
+
+ fun getToday(): Date {
+ return Date()
+ }
+
+ fun getWeekRange(): Pair {
+ return rangeTillToday(DAYS_IN_WEEK)
+ }
+
+ private fun rangeTillToday(back: Int): Pair {
+ val calendar = Calendar.getInstance()
+ val end = calendar.time
+ val start = calendar.apply { add(Calendar.DAY_OF_YEAR, -back) }.time
+ return start to end
+ }
+
+ fun getMonthRange(): Pair {
+ return rangeTillToday(DAYS_IN_MONTH)
+ }
+
+ fun getDefaultRange(): Pair {
+ return rangeTillToday(DAYS_IN_DEFAULT_RANGE)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/GeoInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/GeoInteractor.kt
new file mode 100644
index 0000000..9c87221
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/GeoInteractor.kt
@@ -0,0 +1,20 @@
+package ru.tele2med.mobile.domain.interactor
+
+import io.reactivex.Completable
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.entity.Position
+import ru.tele2med.mobile.domain.repository.GeoRepository
+
+class GeoInteractor(
+ private val geoRepository: GeoRepository
+) {
+
+
+ fun saveUnsentPosition(positions: List): Completable =
+ geoRepository
+ .saveUnsentPosition(positions)
+
+ fun getUnsentPosition(): Single> =
+ geoRepository
+ .getUnsentPosition()
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/GetStickerInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/GetStickerInteractor.kt
new file mode 100644
index 0000000..62b8f37
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/GetStickerInteractor.kt
@@ -0,0 +1,17 @@
+package ru.tele2med.mobile.domain.interactor
+
+import ru.tele2med.mobile.domain.repository.UploadPhotoRepository
+import okhttp3.RequestBody
+import ru.tele2med.mobile.domain.entity.CheckupForSticker
+import ru.tele2med.mobile.domain.repository.GetStickerRepository
+
+
+class GetStickerInteractor(
+ private val getStickerRepository: GetStickerRepository
+) {
+
+
+ fun getSticker(data: CheckupForSticker) =
+ getStickerRepository.getSticker(data)
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/HistoryRouteInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/HistoryRouteInteractor.kt
new file mode 100644
index 0000000..84c4f57
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/HistoryRouteInteractor.kt
@@ -0,0 +1,27 @@
+package ru.tele2med.mobile.domain.interactor
+
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.entity.History
+import ru.tele2med.mobile.domain.repository.HistoryRouteRepository
+import java.util.*
+
+class HistoryRouteInteractor(
+ private val historyRepository: HistoryRouteRepository,
+ private val dateRangeInteractor: DateRangeInteractor
+) {
+ fun getHistorySorted(
+ startDate: Date? = null,
+ endDate: Date? = null,
+ taskNumber: String? = null,
+ address: String? = null
+ ): Single> {
+ // По умолчанию получаем историю за 30 дней
+ val (start, end) = dateRangeInteractor.getMonthRange()
+ return historyRepository.getHistory(
+ startDate = startDate?.time ?: start.time,
+ endDate = endDate?.time ?: end.time,
+ requestNumber = taskNumber,
+ address = address
+ )
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/HistoryTaskInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/HistoryTaskInteractor.kt
new file mode 100644
index 0000000..825ba64
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/HistoryTaskInteractor.kt
@@ -0,0 +1,27 @@
+package ru.tele2med.mobile.domain.interactor
+
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.entity.History
+import ru.tele2med.mobile.domain.repository.HistoryTaskRepository
+import java.util.*
+
+class HistoryTaskInteractor(
+ private val historyRepository: HistoryTaskRepository,
+ private val dateRangeInteractor: DateRangeInteractor
+) {
+ fun getHistorySorted(
+ startDate: Date? = null,
+ endDate: Date? = null,
+ taskNumber: String? = null,
+ address: String? = null
+ ): Single> {
+ // По умолчанию получаем историю за 30 дней
+ val (start, end) = dateRangeInteractor.getMonthRange()
+ return historyRepository.getHistory(
+ startDate = startDate?.time ?: start.time,
+ endDate = endDate?.time ?: end.time,
+ requestNumber = taskNumber,
+ address = address
+ )
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/InitInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/InitInteractor.kt
new file mode 100644
index 0000000..0133d0c
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/InitInteractor.kt
@@ -0,0 +1,12 @@
+package ru.tele2med.mobile.domain.interactor
+
+import ru.tele2med.mobile.domain.entity.InitData
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.repository.InitRepository
+
+class InitInteractor(
+ private val initRepository: InitRepository
+) {
+
+ fun init(platformName: String): Single = initRepository.init(platformName)
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/NewMedicalCheckupInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/NewMedicalCheckupInteractor.kt
new file mode 100644
index 0000000..509987b
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/NewMedicalCheckupInteractor.kt
@@ -0,0 +1,35 @@
+package ru.tele2med.mobile.domain.interactor
+
+import io.reactivex.Completable
+import io.reactivex.Single
+import ru.tele2med.mobile.data.api.entity.request.NewMedicalCheckup
+import ru.tele2med.mobile.data.db.MedCheckups
+import ru.tele2med.mobile.domain.repository.NewMedicalCheckupRepository
+
+
+class NewMedicalCheckupInteractor(
+ private val newMedicalCheckupRepository: NewMedicalCheckupRepository,
+) {
+
+
+ fun newMedicalCheckup(data: NewMedicalCheckup) =
+ newMedicalCheckupRepository.newMedicalCheckup(data)
+
+
+ fun saveResultsToDB(checkups: List): Completable =
+ newMedicalCheckupRepository
+ .saveMedicalCheckup(checkups)
+
+ fun updateNum(num: String, checkupId: String): Completable =
+ newMedicalCheckupRepository
+ .updateNum(num, checkupId)
+
+ fun getResultsFromBD(): Single> =
+ newMedicalCheckupRepository
+ .getMedicalCheckups()
+
+ fun deleteMedicalCheckups(): Completable =
+ newMedicalCheckupRepository.deleteMedicalCheckups()
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/NewRfidInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/NewRfidInteractor.kt
new file mode 100644
index 0000000..c859333
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/NewRfidInteractor.kt
@@ -0,0 +1,14 @@
+package ru.tele2med.mobile.domain.interactor
+
+import ru.tele2med.mobile.domain.repository.NewRfidRepository
+
+
+class NewRfidInteractor(
+ private val newRfidRepository: NewRfidRepository
+) {
+
+
+ fun newRfid(data: request.NewRfid) =
+ newRfidRepository.newRfid(data)
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/NotificationInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/NotificationInteractor.kt
new file mode 100644
index 0000000..f6e6f16
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/NotificationInteractor.kt
@@ -0,0 +1,40 @@
+package ru.tele2med.mobile.domain.interactor
+
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.entity.Notification
+import ru.tele2med.mobile.domain.repository.NotificationRepository
+
+class NotificationInteractor(
+ private val notificationRepository: NotificationRepository
+) {
+ fun getNotifications(offset: Int, count: Int): Single> =
+ notificationRepository
+ .getWithOffsetAndCount(offset = offset, count = count)
+
+ fun saveNewNotifications(newNotifications: List) {
+ notificationRepository
+ .saveNew(newNotifications)
+ }
+
+ fun markRead(notifications: List): Single =
+ notifications
+ .filter { !it.read }
+ .map { it.id }
+ .let { ids ->
+ if (ids.isNotEmpty()) {
+ notificationRepository
+ .markRead(ids)
+ .map {
+ "Notifications with ids $ids are mark as read. Server message: $it"
+ }
+ } else {
+ Single.just(
+ "No unread notifications to mark as read."
+ )
+ }
+ }
+
+ fun clear() {
+ notificationRepository.clear()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/QRInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/QRInteractor.kt
new file mode 100644
index 0000000..7696dc7
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/QRInteractor.kt
@@ -0,0 +1,18 @@
+package ru.tele2med.mobile.domain.interactor
+
+import ru.tele2med.mobile.domain.entity.MedicalCheckupList
+import ru.tele2med.mobile.domain.entity.QR
+import ru.tele2med.mobile.domain.repository.QRRepository
+import io.reactivex.Single
+
+class QRInteractor(
+ private val qrRepository: QRRepository
+) {
+
+ fun getQR(qrcode: String): Single = qrRepository.getQR(qrcode)
+ fun getQRProd(qrcode: String): Single = qrRepository.getQRProd(qrcode)
+ fun getMedicalCheckupList(offset: Int, limit: Int): Single =
+ qrRepository.getMedicalCheckupAll(offset, limit)
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/RouteInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/RouteInteractor.kt
new file mode 100644
index 0000000..0453527
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/RouteInteractor.kt
@@ -0,0 +1,14 @@
+package ru.tele2med.mobile.domain.interactor
+
+import ru.tele2med.mobile.domain.repository.RouteRepository
+
+class RouteInteractor(
+ private val routeRepository: RouteRepository
+) {
+ private companion object {
+ const val NULL_ROUTE_ID = 0
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/SosInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/SosInteractor.kt
new file mode 100644
index 0000000..d3105e5
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/SosInteractor.kt
@@ -0,0 +1,10 @@
+package ru.tele2med.mobile.domain.interactor
+
+import ru.tele2med.mobile.domain.repository.SosRepository
+
+class SosInteractor(
+ private val sosRepository: SosRepository
+) {
+ fun sendSos(lat: Double, lon: Double, message: String) =
+ sosRepository.sendSos(lat, lon, message)
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/StatsInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/StatsInteractor.kt
new file mode 100644
index 0000000..f0f4bbe
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/StatsInteractor.kt
@@ -0,0 +1,26 @@
+package ru.tele2med.mobile.domain.interactor
+
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.entity.Statistics
+import ru.tele2med.mobile.domain.repository.StatsRepository
+
+class StatsInteractor(
+ private val dateRangeInteractor: DateRangeInteractor,
+ private val statsRepository: StatsRepository
+) {
+
+ fun getStatsForToday(): Single {
+ val today = dateRangeInteractor.getToday()
+ return statsRepository.getStatsForPeriod(today.time, today.time)
+ }
+
+ fun getStatsForWeek(): Single {
+ val (start, end) = dateRangeInteractor.getWeekRange()
+ return statsRepository.getStatsForPeriod(start.time, end.time)
+ }
+
+ fun getStatsForMonth(): Single {
+ val (start, end) = dateRangeInteractor.getMonthRange()
+ return statsRepository.getStatsForPeriod(start.time, end.time)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/TaskInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/TaskInteractor.kt
new file mode 100644
index 0000000..fd6ab7d
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/TaskInteractor.kt
@@ -0,0 +1,66 @@
+package ru.tele2med.mobile.domain.interactor
+
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.entity.Task
+import ru.tele2med.mobile.domain.entity.TaskFullInfo
+import ru.tele2med.mobile.domain.entity.TaskMap
+import ru.tele2med.mobile.domain.entity.TaskStatus
+import ru.tele2med.mobile.domain.repository.TaskRepository
+
+class TaskInteractor(
+ private val taskRepository: TaskRepository
+) {
+ fun getFullInfoAboutTask(taskId: Int): Single =
+ taskRepository.getFullInfoAboutRequest(taskId)
+
+ fun getTasksSortedByStatus(routeId: Int? = null): Single> = (if (routeId != null) {
+ taskRepository.getRequestList(routeId)
+ } else {
+ Single.just(emptyList())
+ }).map {
+ it.sortByStatus()
+
+
+ }
+
+
+ fun getTasksSortedByStatusMap(routeId: Int?): Single> = if (routeId != null) {
+ taskRepository.getRequestListForMap(routeId)
+ } else {
+ Single.just(emptyList())
+ }.map {
+ it.sortByStatusMap()
+ }
+
+ private fun List.sortByStatusMap(): List {
+ val doneTasks = mutableListOf()
+ val inWorkTasks = mutableListOf()
+ val otherTasks = mutableListOf()
+ forEach {
+ when (it.status) {
+ TaskStatus.FINISHED.value -> doneTasks.add(it)
+ TaskStatus.IN_WORK.value -> inWorkTasks.add(it)
+ else -> otherTasks.add(it)
+ }
+ }
+ return inWorkTasks.sortedBy { it.plannedFinishTime }
+ .plus(otherTasks.sortedBy { it.plannedFinishTime })
+ .plus(doneTasks.sortedBy { it.plannedFinishTime })
+ }
+
+ private fun List.sortByStatus(): List {
+ val doneTasks = mutableListOf()
+ val inWorkTasks = mutableListOf()
+ val otherTasks = mutableListOf()
+ forEach {
+ when (it.status) {
+ TaskStatus.FINISHED -> doneTasks.add(it)
+ TaskStatus.IN_WORK -> inWorkTasks.add(it)
+ else -> otherTasks.add(it)
+ }
+ }
+ return inWorkTasks.sortedBy { it.arrivalTime }
+ .plus(otherTasks.sortedBy { it.arrivalTime })
+ .plus(doneTasks.sortedBy { it.arrivalTime })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/TechInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/TechInteractor.kt
new file mode 100644
index 0000000..c21e121
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/TechInteractor.kt
@@ -0,0 +1,22 @@
+package ru.tele2med.mobile.domain.interactor
+
+import ru.tele2med.mobile.domain.entity.MedicalCheckupList
+import ru.tele2med.mobile.domain.entity.QR
+import ru.tele2med.mobile.domain.repository.QRRepository
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.entity.TechCheckupList
+import ru.tele2med.mobile.domain.repository.TechRepository
+
+class TechInteractor(
+ private val techRepository: TechRepository
+) {
+
+
+ fun getQR(qrcode: String): Single = techRepository.getQR(qrcode)
+ fun getQRProd(qrcode: String): Single = techRepository.getQRProd(qrcode)
+
+ fun getTechCheckupList(offset: Int, limit: Int): Single =
+ techRepository.getTechCheckupAll(offset, limit)
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/UpdatesInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/UpdatesInteractor.kt
new file mode 100644
index 0000000..ef5f5a7
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/UpdatesInteractor.kt
@@ -0,0 +1,16 @@
+package ru.tele2med.mobile.domain.interactor
+
+import ru.tele2med.mobile.domain.entity.Updates
+import ru.tele2med.mobile.domain.entity.UpdatesInfo
+import ru.tele2med.mobile.domain.repository.UpdatesRepository
+import io.reactivex.Single
+
+class UpdatesInteractor(
+ private val updatesRepository: UpdatesRepository
+) {
+ fun get(): Single = updatesRepository.get()
+
+ fun getInfo(): Single = updatesRepository.getInfo()
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/UploadFirstPhotoInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/UploadFirstPhotoInteractor.kt
new file mode 100644
index 0000000..dfd693b
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/UploadFirstPhotoInteractor.kt
@@ -0,0 +1,15 @@
+package ru.tele2med.mobile.domain.interactor
+
+import okhttp3.RequestBody
+import ru.tele2med.mobile.domain.repository.UploadFirstPhotoRepository
+
+
+class UploadFirstPhotoInteractor(
+ private val uploadFirstPhotoRepository: UploadFirstPhotoRepository
+) {
+
+
+ fun uploadFirstPhoto(checkup_id: String, photo: RequestBody) =
+ uploadFirstPhotoRepository.uploadFirstPhoto(checkup_id, photo)
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/UploadPhotoInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/UploadPhotoInteractor.kt
new file mode 100644
index 0000000..54be6e0
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/UploadPhotoInteractor.kt
@@ -0,0 +1,15 @@
+package ru.tele2med.mobile.domain.interactor
+
+import ru.tele2med.mobile.domain.repository.UploadPhotoRepository
+import okhttp3.RequestBody
+
+
+class UploadPhotoInteractor(
+ private val uploadPhotoRepository: UploadPhotoRepository
+) {
+
+
+ fun uploadPhoto(uniq_id: String, session: String, photo: RequestBody) =
+ uploadPhotoRepository.uploadPhoto(uniq_id, session, photo)
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/interactor/UploadVideoInteractor.kt b/app/src/main/java/ru/tele2med/mobile/domain/interactor/UploadVideoInteractor.kt
new file mode 100644
index 0000000..2b1db6a
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/interactor/UploadVideoInteractor.kt
@@ -0,0 +1,15 @@
+package ru.tele2med.mobile.domain.interactor
+
+import ru.tele2med.mobile.domain.repository.UploadVideoRepository
+import okhttp3.RequestBody
+
+
+class UploadVideoInteractor(
+ private val uploadVideoRepository: UploadVideoRepository
+) {
+
+
+ fun uploadVideo(uniq_id: String, session: String, video: RequestBody) =
+ uploadVideoRepository.uploadVideo(uniq_id, session, video)
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/AuthRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/AuthRepository.kt
new file mode 100644
index 0000000..8764a82
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/AuthRepository.kt
@@ -0,0 +1,20 @@
+package ru.tele2med.mobile.domain.repository
+
+import android.net.Uri
+import ru.tele2med.mobile.domain.entity.*
+import io.reactivex.Completable
+import io.reactivex.Single
+
+interface AuthRepository {
+
+ fun getRedirect(data: Uri): Completable
+
+
+ fun auth(login: String, paswd: String): Single
+ fun login(code: String): Single
+
+ fun authRefresh(tokenRefresh: String): Single
+
+
+ fun logOut(): Completable
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/BeginCheckupRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/BeginCheckupRepository.kt
new file mode 100644
index 0000000..e48db7a
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/BeginCheckupRepository.kt
@@ -0,0 +1,9 @@
+package ru.tele2med.mobile.domain.repository
+
+import ru.tele2med.mobile.domain.entity.BeginCheckupResponseDto
+import io.reactivex.Single
+import ru.tele2med.mobile.data.api.entity.request.BeginMedicalCheckupFinall
+
+interface BeginCheckupRepository {
+ fun beginCheckup(data: BeginMedicalCheckupFinall): Single
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/BeginRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/BeginRepository.kt
new file mode 100644
index 0000000..beee9d7
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/BeginRepository.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.domain.repository
+
+import ru.tele2med.mobile.domain.entity.BeginResponseDto
+import io.reactivex.Single
+
+interface BeginRepository {
+ fun beginSession(data: request.BeginSessionFinall): Single
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/ChatRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/ChatRepository.kt
new file mode 100644
index 0000000..de39103
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/ChatRepository.kt
@@ -0,0 +1,12 @@
+package ru.tele2med.mobile.domain.repository
+
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.entity.Message
+
+interface ChatRepository {
+ fun getMessages(offset: Int, count: Int): Single>
+ fun getNewMessages(count: Int?, defaultCount: Int): Single>
+ fun sendMessage(text: String): Single
+ fun markRead(ids: List): Single
+ fun clear()
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/CurrentTsRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/CurrentTsRepository.kt
new file mode 100644
index 0000000..672502b
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/CurrentTsRepository.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.domain.repository
+
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.entity.CurrentTsResponseDto
+
+interface CurrentTsRepository {
+ fun getCurrentTS(): Single
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/DashboardRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/DashboardRepository.kt
new file mode 100644
index 0000000..326e39d
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/DashboardRepository.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.domain.repository
+
+import ru.tele2med.mobile.domain.entity.DashboardResponseDto
+import io.reactivex.Single
+
+interface DashboardRepository {
+ fun getDashboard(): Single
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/GeoRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/GeoRepository.kt
new file mode 100644
index 0000000..847fb79
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/GeoRepository.kt
@@ -0,0 +1,11 @@
+package ru.tele2med.mobile.domain.repository
+
+import io.reactivex.Completable
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.entity.Position
+import ru.tele2med.mobile.domain.entity.ServerMessage
+
+interface GeoRepository {
+ fun saveUnsentPosition(positions: List): Completable
+ fun getUnsentPosition(): Single>
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/GetStickerRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/GetStickerRepository.kt
new file mode 100644
index 0000000..3c1cff8
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/GetStickerRepository.kt
@@ -0,0 +1,13 @@
+package ru.tele2med.mobile.domain.repository
+
+import ru.tele2med.mobile.domain.entity.*
+import io.reactivex.Single
+import okhttp3.RequestBody
+import ru.tele2med.mobile.data.api.entity.response.GetSticker
+import ru.tele2med.mobile.data.api.entity.response.GetStickerResponse
+
+interface GetStickerRepository {
+ fun getSticker(
+ data: CheckupForSticker
+ ): Single
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/HistoryRouteRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/HistoryRouteRepository.kt
new file mode 100644
index 0000000..c61b5bb
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/HistoryRouteRepository.kt
@@ -0,0 +1,13 @@
+package ru.tele2med.mobile.domain.repository
+
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.entity.History
+
+interface HistoryRouteRepository {
+ fun getHistory(
+ startDate: Long? = null,
+ endDate: Long? = null,
+ requestNumber: String? = null,
+ address: String? = null
+ ): Single>
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/HistoryTaskRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/HistoryTaskRepository.kt
new file mode 100644
index 0000000..6179731
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/HistoryTaskRepository.kt
@@ -0,0 +1,13 @@
+package ru.tele2med.mobile.domain.repository
+
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.entity.History
+
+interface HistoryTaskRepository {
+ fun getHistory(
+ startDate: Long? = null,
+ endDate: Long? = null,
+ requestNumber: String? = null,
+ address: String? = null
+ ): Single>
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/InitRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/InitRepository.kt
new file mode 100644
index 0000000..fb56122
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/InitRepository.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.domain.repository
+
+import ru.tele2med.mobile.domain.entity.InitData
+import io.reactivex.Single
+
+interface InitRepository {
+ fun init(platformName: String): Single
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/NewMedicalCheckupRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/NewMedicalCheckupRepository.kt
new file mode 100644
index 0000000..84cbdd1
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/NewMedicalCheckupRepository.kt
@@ -0,0 +1,15 @@
+package ru.tele2med.mobile.domain.repository
+
+import io.reactivex.Completable
+import ru.tele2med.mobile.domain.entity.*
+import io.reactivex.Single
+import ru.tele2med.mobile.data.api.entity.request.NewMedicalCheckup
+import ru.tele2med.mobile.data.db.MedCheckups
+
+interface NewMedicalCheckupRepository {
+ fun newMedicalCheckup(data: NewMedicalCheckup): Single
+ fun saveMedicalCheckup(checkups: List): Completable
+ fun updateNum(num: String, checkupId: String): Completable
+ fun getMedicalCheckups(): Single>
+ fun deleteMedicalCheckups(): Completable
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/NewRfidRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/NewRfidRepository.kt
new file mode 100644
index 0000000..65e4c8e
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/NewRfidRepository.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.domain.repository
+
+import ru.tele2med.mobile.domain.entity.NewRfidResponseDto
+import io.reactivex.Single
+
+interface NewRfidRepository {
+ fun newRfid(data: request.NewRfid): Single
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/NotificationRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/NotificationRepository.kt
new file mode 100644
index 0000000..6ace1e0
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/NotificationRepository.kt
@@ -0,0 +1,11 @@
+package ru.tele2med.mobile.domain.repository
+
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.entity.Notification
+
+interface NotificationRepository {
+ fun getWithOffsetAndCount(offset: Int, count: Int): Single>
+ fun saveNew(notifications: List)
+ fun markRead(ids: List): Single
+ fun clear()
+}
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/QRRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/QRRepository.kt
new file mode 100644
index 0000000..14e580f
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/QRRepository.kt
@@ -0,0 +1,12 @@
+package ru.tele2med.mobile.domain.repository
+
+import ru.tele2med.mobile.domain.entity.MedicalCheckupList
+import ru.tele2med.mobile.domain.entity.QR
+import io.reactivex.Single
+
+interface QRRepository {
+ fun getQR(qrcode: String): Single
+ fun getQRProd(qrcode: String): Single
+ fun getMedicalCheckupAll(offset: Int, limit: Int): Single
+
+}
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/RouteRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/RouteRepository.kt
new file mode 100644
index 0000000..d1dd2e9
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/RouteRepository.kt
@@ -0,0 +1,5 @@
+package ru.tele2med.mobile.domain.repository
+
+interface RouteRepository {
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/SosRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/SosRepository.kt
new file mode 100644
index 0000000..91bd51c
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/SosRepository.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.domain.repository
+
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.entity.DefaultResponseDto
+
+interface SosRepository {
+ fun sendSos(lat: Double, lon: Double, message: String): Single
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/StatsRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/StatsRepository.kt
new file mode 100644
index 0000000..8db3f3a
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/StatsRepository.kt
@@ -0,0 +1,8 @@
+package ru.tele2med.mobile.domain.repository
+
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.entity.Statistics
+
+interface StatsRepository {
+ fun getStatsForPeriod(start: Long, end: Long): Single
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/TaskRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/TaskRepository.kt
new file mode 100644
index 0000000..1d2f52b
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/TaskRepository.kt
@@ -0,0 +1,17 @@
+package ru.tele2med.mobile.domain.repository
+
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.entity.DefaultResponseDto
+import ru.tele2med.mobile.domain.entity.Task
+import ru.tele2med.mobile.domain.entity.TaskFullInfo
+import ru.tele2med.mobile.domain.entity.TaskMap
+
+interface TaskRepository {
+ fun getFullInfoAboutRequest(id: Int): Single
+
+
+
+ fun getRequestListForMap(id: Int): Single>
+
+ fun getRequestList(id: Int): Single>
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/TechRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/TechRepository.kt
new file mode 100644
index 0000000..1a01c5d
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/TechRepository.kt
@@ -0,0 +1,13 @@
+package ru.tele2med.mobile.domain.repository
+
+import ru.tele2med.mobile.domain.entity.MedicalCheckupList
+import ru.tele2med.mobile.domain.entity.QR
+import io.reactivex.Single
+import ru.tele2med.mobile.domain.entity.TechCheckupList
+
+interface TechRepository {
+ fun getQR(qrcode: String): Single
+ fun getQRProd(qrcode: String): Single
+ fun getTechCheckupAll(offset: Int, limit: Int): Single
+
+}
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/UpdatesRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/UpdatesRepository.kt
new file mode 100644
index 0000000..65ae942
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/UpdatesRepository.kt
@@ -0,0 +1,12 @@
+package ru.tele2med.mobile.domain.repository
+
+import ru.tele2med.mobile.domain.entity.Updates
+import ru.tele2med.mobile.domain.entity.UpdatesInfo
+import io.reactivex.Single
+
+interface UpdatesRepository {
+ fun get(): Single
+
+ fun getInfo(): Single
+
+}
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/UploadFirstPhotoRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/UploadFirstPhotoRepository.kt
new file mode 100644
index 0000000..23fe32c
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/UploadFirstPhotoRepository.kt
@@ -0,0 +1,9 @@
+package ru.tele2med.mobile.domain.repository
+
+import ru.tele2med.mobile.domain.entity.*
+import io.reactivex.Single
+import okhttp3.RequestBody
+
+interface UploadFirstPhotoRepository {
+ fun uploadFirstPhoto(checkup_id: String, photo: RequestBody): Single
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/UploadPhotoRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/UploadPhotoRepository.kt
new file mode 100644
index 0000000..238556e
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/UploadPhotoRepository.kt
@@ -0,0 +1,9 @@
+package ru.tele2med.mobile.domain.repository
+
+import ru.tele2med.mobile.domain.entity.*
+import io.reactivex.Single
+import okhttp3.RequestBody
+
+interface UploadPhotoRepository {
+ fun uploadPhoto(uniq_id: String, session: String, photo: RequestBody): Single
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/domain/repository/UploadVideoRepository.kt b/app/src/main/java/ru/tele2med/mobile/domain/repository/UploadVideoRepository.kt
new file mode 100644
index 0000000..260be02
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/domain/repository/UploadVideoRepository.kt
@@ -0,0 +1,9 @@
+package ru.tele2med.mobile.domain.repository
+
+import ru.tele2med.mobile.domain.entity.*
+import io.reactivex.Single
+import okhttp3.RequestBody
+
+interface UploadVideoRepository {
+ fun uploadVideo(uniq_id: String, session: String, video: RequestBody): Single
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/presentation/App.kt b/app/src/main/java/ru/tele2med/mobile/presentation/App.kt
new file mode 100644
index 0000000..d24ab84
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/presentation/App.kt
@@ -0,0 +1,33 @@
+package ru.tele2med.mobile.presentation
+
+import android.os.StrictMode
+import androidx.multidex.MultiDexApplication
+import com.mazenrashed.printooth.Printooth
+import io.palaima.debugdrawer.timber.data.LumberYard
+import org.kodein.di.Kodein
+import org.kodein.di.KodeinAware
+import ru.tele2med.mobile.di.module.*
+import timber.log.Timber
+
+class App : MultiDexApplication(), KodeinAware {
+ override val kodein: Kodein = Kodein.lazy {
+ import(appModule(applicationContext))
+ import(netModule())
+ import(repoModule())
+ import(databaseModule(this@App))
+ import(navigationModule())
+ import(presenterModule())
+ import(interactorModule())
+ }
+
+ override fun onCreate() {
+ super.onCreate()
+ if (ru.tele2med.mobile.BuildConfig.DEBUG) {
+ val lumberYard = LumberYard.getInstance(this)
+ lumberYard.cleanUp()
+ Timber.plant(lumberYard.tree())
+ Timber.plant(Timber.DebugTree())
+ StrictMode.setVmPolicy(StrictMode.VmPolicy.Builder().build())
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/tele2med/mobile/presentation/Changes.kt b/app/src/main/java/ru/tele2med/mobile/presentation/Changes.kt
new file mode 100644
index 0000000..6071037
--- /dev/null
+++ b/app/src/main/java/ru/tele2med/mobile/presentation/Changes.kt
@@ -0,0 +1,128 @@
+package ru.tele2med.mobile.presentation
+
+import com.jakewharton.rxrelay2.BehaviorRelay
+import com.jakewharton.rxrelay2.PublishRelay
+import io.reactivex.Observable
+import io.reactivex.Single
+import io.reactivex.android.schedulers.AndroidSchedulers
+import ru.tele2med.mobile.domain.entity.CurrentTsResponseDto
+import ru.tele2med.mobile.domain.entity.Route
+import ru.tele2med.mobile.domain.entity.Position
+import ru.tele2med.mobile.domain.entity.SelectedTask
+import ru.tele2med.mobile.presentation.ui.drawer.entity.ScreenType
+import ru.tele2med.mobile.presentation.ui.models.UiSelectedTask
+import ru.tele2med.mobile.presentation.ui.models.UiTask
+import ru.tele2med.mobile.presentation.ui.models.UiTaskMap
+
+data class Optional(val value: T? = null)
+
+class Changes {
+ private val screenRelay: PublishRelay =
+ PublishRelay.create()
+
+ private val locationRelay: BehaviorRelay =
+ BehaviorRelay.create()
+
+ private val tasksRelayMap: BehaviorRelay> =
+ BehaviorRelay.createDefault(emptyList())
+
+ private val tsRelay: BehaviorRelay> =
+ BehaviorRelay.createDefault(Optional())
+
+ /**
+ * Для хранения текущего путевого листа. Хранится в обертке, чтобы была возможность показать
+ * отсутствие ПЛ (так как Observable не может эмиттить null)
+ */
+ private val routeRelay: BehaviorRelay> =
+ BehaviorRelay.createDefault(Optional())
+
+ /**
+ * Принимает количество непрочитанных уведомлений
+ */
+ private val notificationCountRelay: BehaviorRelay =
+ BehaviorRelay.createDefault(0)
+
+ /**
+ * Принимает количество непрочитанных сообщений
+ */
+ private val messageCountRelay: BehaviorRelay =
+ BehaviorRelay.createDefault(0)
+
+ private val taskRelay: BehaviorRelay> =
+ BehaviorRelay.createDefault(Optional())
+
+ private val tasksRelay: BehaviorRelay> =
+ BehaviorRelay.createDefault(emptyList())
+
+ private val tasksRelayWithoutRL: BehaviorRelay> =
+ BehaviorRelay.createDefault(emptyList())
+
+ val currentScreen: Observable =
+ screenRelay.hide().observeOn(AndroidSchedulers.mainThread())
+
+ fun commitScreen(screenType: ScreenType) {
+ screenRelay.accept(screenType)
+ }
+
+ val position: Observable =
+ locationRelay.hide().observeOn(AndroidSchedulers.mainThread())
+
+ fun commitPosition(position: Position) {
+ locationRelay.accept(position)
+ }
+
+ val newNotificationsCount: Observable =
+ notificationCountRelay.hide()
+
+ fun commitNotificationCount(count: Int) {
+ notificationCountRelay.accept(count)
+ }
+
+ val currentRoute: Observable