diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..44ca2d9
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 27395d1..0605ae0 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -1,6 +1,7 @@
plugins {
id("com.android.application")
kotlin("android")
+ kotlin("kapt")
}
android {
@@ -64,14 +65,6 @@ dependencies {
//std lib
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
- /* //app libs
- implementation(AppDependencies.appLibraries)
- //test libs
- testImplementation(AppDependencies.testLibraries)
- androidTestImplementation(AppDependencies.androidTestLibraries)
-
- coreLibraryDesugaring(AppDependencies.desugaringLibraries)
- debugImplementation(AppDependencies.debugLibraries)*/
//app libs
implementation(AppLibraries)
@@ -79,6 +72,8 @@ dependencies {
testImplementation(TestLibraries)
androidTestImplementation(AndroidTestLibraries)
+ kapt(KaptLibraries)
+
coreLibraryDesugaring(DesugaringLibraries)
debugImplementation(DebugLibraries)
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7cb9077..05e119e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,7 @@
android:roundIcon="@drawable/icon_rounded"
android:supportsRtl="true"
android:theme="@style/Theme.MyDnevnik"
+ android:name=".App"
tools:targetApi="31">
+
+ @Query("DELETE FROM Credentials WHERE id = 1")
+ fun deleteCredentials()
+
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
+ fun setCredentials(profile: Credentials)
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/megboyzz/dnevnik/entities/context/GroupInfo.kt b/app/src/main/java/ru/megboyzz/dnevnik/entities/context/GroupInfo.kt
new file mode 100644
index 0000000..3b2b52a
--- /dev/null
+++ b/app/src/main/java/ru/megboyzz/dnevnik/entities/context/GroupInfo.kt
@@ -0,0 +1,6 @@
+package ru.megboyzz.dnevnik.entities.context
+
+data class GroupInfo(
+ val id: Long,
+ val name: String
+)
diff --git a/app/src/main/java/ru/megboyzz/dnevnik/entities/context/PeriodGroup.kt b/app/src/main/java/ru/megboyzz/dnevnik/entities/context/PeriodGroup.kt
new file mode 100644
index 0000000..f16e465
--- /dev/null
+++ b/app/src/main/java/ru/megboyzz/dnevnik/entities/context/PeriodGroup.kt
@@ -0,0 +1,7 @@
+package ru.megboyzz.dnevnik.entities.context
+
+data class PeriodGroup(
+ val id: Long,
+ val type: String, //Обычно равен "Quarter", то есть Четверть, но как будет семестр у них????
+ val periods: List
+)
diff --git a/app/src/main/java/ru/megboyzz/dnevnik/entities/context/PeriodInfo.kt b/app/src/main/java/ru/megboyzz/dnevnik/entities/context/PeriodInfo.kt
new file mode 100644
index 0000000..81f8031
--- /dev/null
+++ b/app/src/main/java/ru/megboyzz/dnevnik/entities/context/PeriodInfo.kt
@@ -0,0 +1,11 @@
+package ru.megboyzz.dnevnik.entities.context
+
+data class PeriodInfo(
+ val id: Long,
+ val number: Short,
+ val type: String,
+ val dateStart: Long,
+ val dateFinish: Long,
+ val studyYear: Short,
+ val isCurrent: Boolean
+)
diff --git a/app/src/main/java/ru/megboyzz/dnevnik/entities/context/PersonContext.kt b/app/src/main/java/ru/megboyzz/dnevnik/entities/context/PersonContext.kt
new file mode 100644
index 0000000..79cc26c
--- /dev/null
+++ b/app/src/main/java/ru/megboyzz/dnevnik/entities/context/PersonContext.kt
@@ -0,0 +1,14 @@
+package ru.megboyzz.dnevnik.entities.context
+
+data class PersonContext(
+ val sex: String,
+ val userId: Long,
+ val personId: Long,
+ val firstName: String,
+ val middleName: String,
+ val lastName: String,
+ val avatarUrl: String,
+ val schoolInfo: SchoolInfo,
+ val group: GroupInfo,
+ val reportingPeriodGroup: PeriodGroup
+)
diff --git a/app/src/main/java/ru/megboyzz/dnevnik/entities/context/SchoolInfo.kt b/app/src/main/java/ru/megboyzz/dnevnik/entities/context/SchoolInfo.kt
new file mode 100644
index 0000000..2260596
--- /dev/null
+++ b/app/src/main/java/ru/megboyzz/dnevnik/entities/context/SchoolInfo.kt
@@ -0,0 +1,7 @@
+package ru.megboyzz.dnevnik.entities.context
+
+data class SchoolInfo(
+ val id: Long,
+ val name: String,
+ val avatarUrl: String
+)
diff --git a/app/src/main/java/ru/megboyzz/dnevnik/entities/context/UserInfo.kt b/app/src/main/java/ru/megboyzz/dnevnik/entities/context/UserInfo.kt
new file mode 100644
index 0000000..8046ade
--- /dev/null
+++ b/app/src/main/java/ru/megboyzz/dnevnik/entities/context/UserInfo.kt
@@ -0,0 +1,12 @@
+package ru.megboyzz.dnevnik.entities.context
+
+data class UserInfo(
+ val sex: String,
+ val roles: List,
+ val userId: Long,
+ val personId: Long,
+ val firstName: String,
+ val middleName: String,
+ val lastName: String,
+ val avatarUrl: String,
+)
diff --git a/app/src/main/java/ru/megboyzz/dnevnik/entities/db/Credentials.kt b/app/src/main/java/ru/megboyzz/dnevnik/entities/db/Credentials.kt
new file mode 100644
index 0000000..166d825
--- /dev/null
+++ b/app/src/main/java/ru/megboyzz/dnevnik/entities/db/Credentials.kt
@@ -0,0 +1,9 @@
+package ru.megboyzz.dnevnik.entities.db
+
+import androidx.room.Entity
+
+@Entity
+data class Credentials(
+ val token: String,
+ val cookies: Map
+)
diff --git a/app/src/main/java/ru/megboyzz/dnevnik/entities/response/TokenResponse.kt b/app/src/main/java/ru/megboyzz/dnevnik/entities/response/TokenResponse.kt
new file mode 100644
index 0000000..3d57143
--- /dev/null
+++ b/app/src/main/java/ru/megboyzz/dnevnik/entities/response/TokenResponse.kt
@@ -0,0 +1,6 @@
+package ru.megboyzz.dnevnik.entities.response
+
+data class TokenResponse(
+ val login: String,
+ val password: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/ru/megboyzz/dnevnik/entities/response/UserContext.kt b/app/src/main/java/ru/megboyzz/dnevnik/entities/response/UserContext.kt
new file mode 100644
index 0000000..5702b12
--- /dev/null
+++ b/app/src/main/java/ru/megboyzz/dnevnik/entities/response/UserContext.kt
@@ -0,0 +1,9 @@
+package ru.megboyzz.dnevnik.entities.response
+
+import ru.megboyzz.dnevnik.entities.context.PersonContext
+import ru.megboyzz.dnevnik.entities.context.UserInfo
+
+data class UserContext(
+ val info: UserInfo,
+ val contextPersons: List
+)
diff --git a/app/src/main/java/ru/megboyzz/dnevnik/repository/AuthorizationRepository.kt b/app/src/main/java/ru/megboyzz/dnevnik/repository/AuthorizationRepository.kt
new file mode 100644
index 0000000..9532a34
--- /dev/null
+++ b/app/src/main/java/ru/megboyzz/dnevnik/repository/AuthorizationRepository.kt
@@ -0,0 +1,4 @@
+package ru.megboyzz.dnevnik.repository
+
+class AuthorizationRepository() {
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/megboyzz/dnevnik/service/AuthorizationStatus.kt b/app/src/main/java/ru/megboyzz/dnevnik/service/AuthorizationStatus.kt
new file mode 100644
index 0000000..6a9a758
--- /dev/null
+++ b/app/src/main/java/ru/megboyzz/dnevnik/service/AuthorizationStatus.kt
@@ -0,0 +1,7 @@
+package ru.megboyzz.dnevnik.service
+
+enum class AuthorizationStatus {
+ WRONG_CREDENTIALS,
+ NO_INTERNET,
+ MAINTAIN
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/megboyzz/dnevnik/service/TokenService.kt b/app/src/main/java/ru/megboyzz/dnevnik/service/TokenService.kt
new file mode 100644
index 0000000..8ac8561
--- /dev/null
+++ b/app/src/main/java/ru/megboyzz/dnevnik/service/TokenService.kt
@@ -0,0 +1,18 @@
+package ru.megboyzz.dnevnik.service
+
+
+import okhttp3.ResponseBody
+import org.jsoup.Jsoup
+import retrofit2.http.POST
+import retrofit2.http.Query
+
+interface TokenService{
+
+ @POST("/")
+ suspend fun getToken(
+ @Query("login") login: String,
+ @Query("password") password: String,
+ @Query("ReturnUrl") returnUrl: String = "https://login.dnevnik.ru/oauth2?response_type=token&client_id=bb97b3e445a340b9b9cab4b9ea0dbd6f&scope=CommonInfo,ContactInfo,FriendsAndRelatives,EducationalInfo"
+ ): retrofit2.Call
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/ru/megboyzz/dnevnik/viewmodel/AuthorizationViewModel.kt b/app/src/main/java/ru/megboyzz/dnevnik/viewmodel/AuthorizationViewModel.kt
new file mode 100644
index 0000000..2f42a08
--- /dev/null
+++ b/app/src/main/java/ru/megboyzz/dnevnik/viewmodel/AuthorizationViewModel.kt
@@ -0,0 +1,41 @@
+package ru.megboyzz.dnevnik.viewmodel
+
+import android.app.Application
+import androidx.lifecycle.AndroidViewModel
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+import kotlinx.coroutines.flow.MutableStateFlow
+import java.lang.IllegalArgumentException
+
+//Если есть попадание в этот вьюмодел то нам нужна авторизация
+class AuthorizationViewModel(application: Application) : AndroidViewModel(application) {
+
+ val login = MutableStateFlow("")
+ val password = MutableStateFlow("")
+ val isLogged = MutableStateFlow(false)
+
+ init {
+
+
+
+ }
+
+
+ fun login(){
+
+
+
+ }
+
+}
+
+
+class AuthorizationViewModelFactory(private val application: Application) : ViewModelProvider.Factory {
+
+ override fun create(modelClass: Class): T {
+ if (modelClass.isAssignableFrom(AuthorizationViewModel::class.java))
+ return AuthorizationViewModel(application) as T
+ throw IllegalArgumentException("Unknown ViewModel Class")
+ }
+
+}
\ No newline at end of file
diff --git a/buildSrc/src/main/java/AppDependencies.kt b/buildSrc/src/main/java/AppDependencies.kt
index 9e025e5..652a148 100644
--- a/buildSrc/src/main/java/AppDependencies.kt
+++ b/buildSrc/src/main/java/AppDependencies.kt
@@ -1,3 +1,4 @@
+import core.DependencyList
import org.gradle.api.artifacts.dsl.DependencyHandler
object AppLibraries: DependencyList() {
@@ -31,6 +32,11 @@ object AppLibraries: DependencyList() {
val lazyHorizontalGrid = "androidx.compose.foundation:foundation:1.3.1"
val calendar = "com.kizitonwose.calendar:compose:2.1.1"
val asyncImage = "io.coil-kt:coil-compose:2.2.0"
+
+ val roomRuntime = "androidx.room:room-runtime:${Versions.room}"
+ val roomKtx = "androidx.room:room-ktx:${Versions.room}"
+
+ val jsoup = "org.jsoup:jsoup:1.15.4"
}
@@ -58,7 +64,12 @@ object AndroidTestLibraries: DependencyList() {
object TestLibraries: DependencyList() {
//test libs
- private val junit = "junit:junit:${Versions.junit}"
+ val junit = "junit:junit:${Versions.junit}"
+}
+
+object KaptLibraries: DependencyList(){
+
+ val compiler = "androidx.room:room-compiler:${Versions.room}"
}
/**
diff --git a/buildSrc/src/main/java/Versions.kt b/buildSrc/src/main/java/Versions.kt
index 775e72c..2285531 100644
--- a/buildSrc/src/main/java/Versions.kt
+++ b/buildSrc/src/main/java/Versions.kt
@@ -13,6 +13,7 @@ object Versions {
val constraintLayout = "2.0.0-beta8"
val compose = "1.4.1"
+ val room = "2.2.6"
//test
val junit = "4.12"
diff --git a/buildSrc/src/main/java/DependencyList.kt b/buildSrc/src/main/java/core/DependencyList.kt
similarity index 96%
rename from buildSrc/src/main/java/DependencyList.kt
rename to buildSrc/src/main/java/core/DependencyList.kt
index 55f327f..481712e 100644
--- a/buildSrc/src/main/java/DependencyList.kt
+++ b/buildSrc/src/main/java/core/DependencyList.kt
@@ -1,3 +1,5 @@
+package core
+
open class DependencyList {
fun list(): List{