forked from github/szkolny
[App] Refactor profile methods as extensions.
This commit is contained in:
parent
eeb3fc4621
commit
9535f53563
@ -28,6 +28,8 @@ import pl.szczodrzynski.edziennik.data.db.enums.LoginType
|
|||||||
import pl.szczodrzynski.edziennik.data.db.full.AnnouncementFull
|
import pl.szczodrzynski.edziennik.data.db.full.AnnouncementFull
|
||||||
import pl.szczodrzynski.edziennik.data.db.full.EventFull
|
import pl.szczodrzynski.edziennik.data.db.full.EventFull
|
||||||
import pl.szczodrzynski.edziennik.data.db.full.MessageFull
|
import pl.szczodrzynski.edziennik.data.db.full.MessageFull
|
||||||
|
import pl.szczodrzynski.edziennik.ext.isBeforeYear
|
||||||
|
import pl.szczodrzynski.edziennik.ext.shouldArchive
|
||||||
import pl.szczodrzynski.edziennik.utils.Utils.d
|
import pl.szczodrzynski.edziennik.utils.Utils.d
|
||||||
import pl.szczodrzynski.edziennik.utils.managers.AvailabilityManager.Error.Type
|
import pl.szczodrzynski.edziennik.utils.managers.AvailabilityManager.Error.Type
|
||||||
|
|
||||||
|
@ -52,28 +52,29 @@ class ProfileArchiver(val app: App, val profile: Profile) {
|
|||||||
|
|
||||||
when (profile.loginStoreType) {
|
when (profile.loginStoreType) {
|
||||||
LoginType.LIBRUS -> {
|
LoginType.LIBRUS -> {
|
||||||
profile.removeStudentData("isPremium")
|
profile.studentData.remove("isPremium")
|
||||||
profile.removeStudentData("pushDeviceId")
|
profile.studentData.remove("pushDeviceId")
|
||||||
profile.removeStudentData("startPointsSemester1")
|
profile.studentData.remove("startPointsSemester1")
|
||||||
profile.removeStudentData("startPointsSemester2")
|
profile.studentData.remove("startPointsSemester2")
|
||||||
profile.removeStudentData("enablePointGrades")
|
profile.studentData.remove("enablePointGrades")
|
||||||
profile.removeStudentData("enableDescriptiveGrades")
|
profile.studentData.remove("enableDescriptiveGrades")
|
||||||
}
|
}
|
||||||
LoginType.MOBIDZIENNIK -> {}
|
LoginType.MOBIDZIENNIK -> {}
|
||||||
LoginType.VULCAN -> {
|
LoginType.VULCAN -> {
|
||||||
// DataVulcan.isApiLoginValid() returns false so it will update the semester
|
// DataVulcan.isApiLoginValid() returns false so it will update the semester
|
||||||
profile.removeStudentData("currentSemesterEndDate")
|
profile.studentData.remove("currentSemesterEndDate")
|
||||||
profile.removeStudentData("studentSemesterId")
|
profile.studentData.remove("studentSemesterId")
|
||||||
profile.removeStudentData("studentSemesterNumber")
|
profile.studentData.remove("studentSemesterNumber")
|
||||||
profile.removeStudentData("semester1Id")
|
profile.studentData.remove("semester1Id")
|
||||||
profile.removeStudentData("semester2Id")
|
profile.studentData.remove("semester2Id")
|
||||||
profile.removeStudentData("studentClassId")
|
profile.studentData.remove("studentClassId")
|
||||||
}
|
}
|
||||||
LoginType.IDZIENNIK -> {
|
LoginType.IDZIENNIK -> {
|
||||||
profile.removeStudentData("schoolYearId")
|
profile.studentData.remove("schoolYearId")
|
||||||
}
|
}
|
||||||
LoginType.EDUDZIENNIK -> {}
|
LoginType.EDUDZIENNIK -> {}
|
||||||
LoginType.PODLASIE -> {}
|
LoginType.PODLASIE -> {}
|
||||||
|
LoginType.USOS -> {}
|
||||||
LoginType.DEMO -> {}
|
LoginType.DEMO -> {}
|
||||||
LoginType.TEMPLATE -> {}
|
LoginType.TEMPLATE -> {}
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,9 @@ import pl.szczodrzynski.edziennik.data.db.entity.LoginStore
|
|||||||
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
||||||
import pl.szczodrzynski.edziennik.data.db.enums.LoginMethod
|
import pl.szczodrzynski.edziennik.data.db.enums.LoginMethod
|
||||||
import pl.szczodrzynski.edziennik.ext.currentTimeUnix
|
import pl.szczodrzynski.edziennik.ext.currentTimeUnix
|
||||||
|
import pl.szczodrzynski.edziennik.ext.getStudentData
|
||||||
import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty
|
import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty
|
||||||
|
import pl.szczodrzynski.edziennik.ext.set
|
||||||
|
|
||||||
class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app, profile, loginStore) {
|
class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app, profile, loginStore) {
|
||||||
|
|
||||||
@ -117,7 +119,7 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mApiLogin: String? = null
|
private var mApiLogin: String? = null
|
||||||
var apiLogin: String?
|
var apiLogin: String?
|
||||||
get() { mApiLogin = mApiLogin ?: profile?.getStudentData("accountLogin", null); return mApiLogin }
|
get() { mApiLogin = mApiLogin ?: profile?.getStudentData("accountLogin", null); return mApiLogin }
|
||||||
set(value) { profile?.putStudentData("accountLogin", value); mApiLogin = value }
|
set(value) { profile["accountLogin"] = value; mApiLogin = value }
|
||||||
/**
|
/**
|
||||||
* A Synergia password.
|
* A Synergia password.
|
||||||
* Used: for login (API Login Method) in Synergia mode.
|
* Used: for login (API Login Method) in Synergia mode.
|
||||||
@ -126,7 +128,7 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mApiPassword: String? = null
|
private var mApiPassword: String? = null
|
||||||
var apiPassword: String?
|
var apiPassword: String?
|
||||||
get() { mApiPassword = mApiPassword ?: profile?.getStudentData("accountPassword", null); return mApiPassword }
|
get() { mApiPassword = mApiPassword ?: profile?.getStudentData("accountPassword", null); return mApiPassword }
|
||||||
set(value) { profile?.putStudentData("accountPassword", value); mApiPassword = value }
|
set(value) { profile["accountPassword"] = value; mApiPassword = value }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A JST login Code.
|
* A JST login Code.
|
||||||
@ -135,7 +137,7 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mApiCode: String? = null
|
private var mApiCode: String? = null
|
||||||
var apiCode: String?
|
var apiCode: String?
|
||||||
get() { mApiCode = mApiCode ?: loginStore.getLoginData("accountCode", null); return mApiCode }
|
get() { mApiCode = mApiCode ?: loginStore.getLoginData("accountCode", null); return mApiCode }
|
||||||
set(value) { profile?.putStudentData("accountCode", value); mApiCode = value }
|
set(value) { profile["accountCode"] = value; mApiCode = value }
|
||||||
/**
|
/**
|
||||||
* A JST login PIN.
|
* A JST login PIN.
|
||||||
* Used only during first login in JST mode.
|
* Used only during first login in JST mode.
|
||||||
@ -143,7 +145,7 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mApiPin: String? = null
|
private var mApiPin: String? = null
|
||||||
var apiPin: String?
|
var apiPin: String?
|
||||||
get() { mApiPin = mApiPin ?: loginStore.getLoginData("accountPin", null); return mApiPin }
|
get() { mApiPin = mApiPin ?: loginStore.getLoginData("accountPin", null); return mApiPin }
|
||||||
set(value) { profile?.putStudentData("accountPin", value); mApiPin = value }
|
set(value) { profile["accountPin"] = value; mApiPin = value }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A Synergia API access token.
|
* A Synergia API access token.
|
||||||
@ -154,7 +156,7 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mApiAccessToken: String? = null
|
private var mApiAccessToken: String? = null
|
||||||
var apiAccessToken: String?
|
var apiAccessToken: String?
|
||||||
get() { mApiAccessToken = mApiAccessToken ?: profile?.getStudentData("accountToken", null); return mApiAccessToken }
|
get() { mApiAccessToken = mApiAccessToken ?: profile?.getStudentData("accountToken", null); return mApiAccessToken }
|
||||||
set(value) { mApiAccessToken = value; profile?.putStudentData("accountToken", value) ?: return; }
|
set(value) { mApiAccessToken = value; profile["accountToken"] = value ?: return; }
|
||||||
/**
|
/**
|
||||||
* A Synergia API refresh token.
|
* A Synergia API refresh token.
|
||||||
* Used when refreshing the [apiAccessToken] in JST, Synergia modes.
|
* Used when refreshing the [apiAccessToken] in JST, Synergia modes.
|
||||||
@ -162,7 +164,7 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mApiRefreshToken: String? = null
|
private var mApiRefreshToken: String? = null
|
||||||
var apiRefreshToken: String?
|
var apiRefreshToken: String?
|
||||||
get() { mApiRefreshToken = mApiRefreshToken ?: profile?.getStudentData("accountRefreshToken", null); return mApiRefreshToken }
|
get() { mApiRefreshToken = mApiRefreshToken ?: profile?.getStudentData("accountRefreshToken", null); return mApiRefreshToken }
|
||||||
set(value) { mApiRefreshToken = value; profile?.putStudentData("accountRefreshToken", value) ?: return; }
|
set(value) { mApiRefreshToken = value; profile["accountRefreshToken"] = value ?: return; }
|
||||||
/**
|
/**
|
||||||
* The expiry time for [apiAccessToken], as a UNIX timestamp.
|
* The expiry time for [apiAccessToken], as a UNIX timestamp.
|
||||||
* Used when refreshing the [apiAccessToken] in JST, Synergia modes.
|
* Used when refreshing the [apiAccessToken] in JST, Synergia modes.
|
||||||
@ -171,7 +173,7 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mApiTokenExpiryTime: Long? = null
|
private var mApiTokenExpiryTime: Long? = null
|
||||||
var apiTokenExpiryTime: Long
|
var apiTokenExpiryTime: Long
|
||||||
get() { mApiTokenExpiryTime = mApiTokenExpiryTime ?: profile?.getStudentData("accountTokenTime", 0L); return mApiTokenExpiryTime ?: 0L }
|
get() { mApiTokenExpiryTime = mApiTokenExpiryTime ?: profile?.getStudentData("accountTokenTime", 0L); return mApiTokenExpiryTime ?: 0L }
|
||||||
set(value) { mApiTokenExpiryTime = value; profile?.putStudentData("accountTokenTime", value) ?: return; }
|
set(value) { mApiTokenExpiryTime = value; profile["accountTokenTime"] = value; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A push device ID, generated by Librus when registering
|
* A push device ID, generated by Librus when registering
|
||||||
@ -181,7 +183,7 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mPushDeviceId: Int? = null
|
private var mPushDeviceId: Int? = null
|
||||||
var pushDeviceId: Int
|
var pushDeviceId: Int
|
||||||
get() { mPushDeviceId = mPushDeviceId ?: profile?.getStudentData("pushDeviceId", 0); return mPushDeviceId ?: 0 }
|
get() { mPushDeviceId = mPushDeviceId ?: profile?.getStudentData("pushDeviceId", 0); return mPushDeviceId ?: 0 }
|
||||||
set(value) { mPushDeviceId = value; profile?.putStudentData("pushDeviceId", value) ?: return; }
|
set(value) { mPushDeviceId = value; profile["pushDeviceId"] = value; }
|
||||||
|
|
||||||
/* _____ _
|
/* _____ _
|
||||||
/ ____| (_)
|
/ ____| (_)
|
||||||
@ -198,7 +200,7 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mSynergiaSessionId: String? = null
|
private var mSynergiaSessionId: String? = null
|
||||||
var synergiaSessionId: String?
|
var synergiaSessionId: String?
|
||||||
get() { mSynergiaSessionId = mSynergiaSessionId ?: profile?.getStudentData("accountSID", null); return mSynergiaSessionId }
|
get() { mSynergiaSessionId = mSynergiaSessionId ?: profile?.getStudentData("accountSID", null); return mSynergiaSessionId }
|
||||||
set(value) { profile?.putStudentData("accountSID", value) ?: return; mSynergiaSessionId = value }
|
set(value) { profile["accountSID"] = value; mSynergiaSessionId = value }
|
||||||
/**
|
/**
|
||||||
* The expiry time for [synergiaSessionId], as a UNIX timestamp.
|
* The expiry time for [synergiaSessionId], as a UNIX timestamp.
|
||||||
* Used in endpoints with Synergia login method.
|
* Used in endpoints with Synergia login method.
|
||||||
@ -207,7 +209,7 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mSynergiaSessionIdExpiryTime: Long? = null
|
private var mSynergiaSessionIdExpiryTime: Long? = null
|
||||||
var synergiaSessionIdExpiryTime: Long
|
var synergiaSessionIdExpiryTime: Long
|
||||||
get() { mSynergiaSessionIdExpiryTime = mSynergiaSessionIdExpiryTime ?: profile?.getStudentData("accountSIDTime", 0L); return mSynergiaSessionIdExpiryTime ?: 0L }
|
get() { mSynergiaSessionIdExpiryTime = mSynergiaSessionIdExpiryTime ?: profile?.getStudentData("accountSIDTime", 0L); return mSynergiaSessionIdExpiryTime ?: 0L }
|
||||||
set(value) { profile?.putStudentData("accountSIDTime", value) ?: return; mSynergiaSessionIdExpiryTime = value }
|
set(value) { profile["accountSIDTime"] = value; mSynergiaSessionIdExpiryTime = value }
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -217,7 +219,7 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mMessagesSessionId: String? = null
|
private var mMessagesSessionId: String? = null
|
||||||
var messagesSessionId: String?
|
var messagesSessionId: String?
|
||||||
get() { mMessagesSessionId = mMessagesSessionId ?: profile?.getStudentData("messagesSID", null); return mMessagesSessionId }
|
get() { mMessagesSessionId = mMessagesSessionId ?: profile?.getStudentData("messagesSID", null); return mMessagesSessionId }
|
||||||
set(value) { profile?.putStudentData("messagesSID", value) ?: return; mMessagesSessionId = value }
|
set(value) { profile["messagesSID"] = value; mMessagesSessionId = value }
|
||||||
/**
|
/**
|
||||||
* The expiry time for [messagesSessionId], as a UNIX timestamp.
|
* The expiry time for [messagesSessionId], as a UNIX timestamp.
|
||||||
* Used in endpoints with Messages login method.
|
* Used in endpoints with Messages login method.
|
||||||
@ -226,7 +228,7 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mMessagesSessionIdExpiryTime: Long? = null
|
private var mMessagesSessionIdExpiryTime: Long? = null
|
||||||
var messagesSessionIdExpiryTime: Long
|
var messagesSessionIdExpiryTime: Long
|
||||||
get() { mMessagesSessionIdExpiryTime = mMessagesSessionIdExpiryTime ?: profile?.getStudentData("messagesSIDTime", 0L); return mMessagesSessionIdExpiryTime ?: 0L }
|
get() { mMessagesSessionIdExpiryTime = mMessagesSessionIdExpiryTime ?: profile?.getStudentData("messagesSIDTime", 0L); return mMessagesSessionIdExpiryTime ?: 0L }
|
||||||
set(value) { profile?.putStudentData("messagesSIDTime", value) ?: return; mMessagesSessionIdExpiryTime = value }
|
set(value) { profile["messagesSIDTime"] = value; mMessagesSessionIdExpiryTime = value }
|
||||||
|
|
||||||
/* ____ _ _
|
/* ____ _ _
|
||||||
/ __ \| | | |
|
/ __ \| | | |
|
||||||
@ -236,42 +238,42 @@ class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
\____/ \__|_| |_|\___|*/
|
\____/ \__|_| |_|\___|*/
|
||||||
var isPremium
|
var isPremium
|
||||||
get() = profile?.getStudentData("isPremium", false) ?: false
|
get() = profile?.getStudentData("isPremium", false) ?: false
|
||||||
set(value) { profile?.putStudentData("isPremium", value) }
|
set(value) { profile["isPremium"] = value }
|
||||||
|
|
||||||
private var mSchoolName: String? = null
|
private var mSchoolName: String? = null
|
||||||
var schoolName: String?
|
var schoolName: String?
|
||||||
get() { mSchoolName = mSchoolName ?: profile?.getStudentData("schoolName", null); return mSchoolName }
|
get() { mSchoolName = mSchoolName ?: profile?.getStudentData("schoolName", null); return mSchoolName }
|
||||||
set(value) { profile?.putStudentData("schoolName", value) ?: return; mSchoolName = value }
|
set(value) { profile["schoolName"] = value; mSchoolName = value }
|
||||||
|
|
||||||
private var mUnitId: Long? = null
|
private var mUnitId: Long? = null
|
||||||
var unitId: Long
|
var unitId: Long
|
||||||
get() { mUnitId = mUnitId ?: profile?.getStudentData("unitId", 0L); return mUnitId ?: 0L }
|
get() { mUnitId = mUnitId ?: profile?.getStudentData("unitId", 0L); return mUnitId ?: 0L }
|
||||||
set(value) { profile?.putStudentData("unitId", value) ?: return; mUnitId = value }
|
set(value) { profile["unitId"] = value; mUnitId = value }
|
||||||
|
|
||||||
private var mStartPointsSemester1: Int? = null
|
private var mStartPointsSemester1: Int? = null
|
||||||
var startPointsSemester1: Int
|
var startPointsSemester1: Int
|
||||||
get() { mStartPointsSemester1 = mStartPointsSemester1 ?: profile?.getStudentData("startPointsSemester1", 0); return mStartPointsSemester1 ?: 0 }
|
get() { mStartPointsSemester1 = mStartPointsSemester1 ?: profile?.getStudentData("startPointsSemester1", 0); return mStartPointsSemester1 ?: 0 }
|
||||||
set(value) { profile?.putStudentData("startPointsSemester1", value) ?: return; mStartPointsSemester1 = value }
|
set(value) { profile["startPointsSemester1"] = value; mStartPointsSemester1 = value }
|
||||||
|
|
||||||
private var mStartPointsSemester2: Int? = null
|
private var mStartPointsSemester2: Int? = null
|
||||||
var startPointsSemester2: Int
|
var startPointsSemester2: Int
|
||||||
get() { mStartPointsSemester2 = mStartPointsSemester2 ?: profile?.getStudentData("startPointsSemester2", 0); return mStartPointsSemester2 ?: 0 }
|
get() { mStartPointsSemester2 = mStartPointsSemester2 ?: profile?.getStudentData("startPointsSemester2", 0); return mStartPointsSemester2 ?: 0 }
|
||||||
set(value) { profile?.putStudentData("startPointsSemester2", value) ?: return; mStartPointsSemester2 = value }
|
set(value) { profile["startPointsSemester2"] = value; mStartPointsSemester2 = value }
|
||||||
|
|
||||||
private var mEnablePointGrades: Boolean? = null
|
private var mEnablePointGrades: Boolean? = null
|
||||||
var enablePointGrades: Boolean
|
var enablePointGrades: Boolean
|
||||||
get() { mEnablePointGrades = mEnablePointGrades ?: profile?.getStudentData("enablePointGrades", true); return mEnablePointGrades ?: true }
|
get() { mEnablePointGrades = mEnablePointGrades ?: profile?.getStudentData("enablePointGrades", true); return mEnablePointGrades ?: true }
|
||||||
set(value) { profile?.putStudentData("enablePointGrades", value) ?: return; mEnablePointGrades = value }
|
set(value) { profile["enablePointGrades"] = value; mEnablePointGrades = value }
|
||||||
|
|
||||||
private var mEnableDescriptiveGrades: Boolean? = null
|
private var mEnableDescriptiveGrades: Boolean? = null
|
||||||
var enableDescriptiveGrades: Boolean
|
var enableDescriptiveGrades: Boolean
|
||||||
get() { mEnableDescriptiveGrades = mEnableDescriptiveGrades ?: profile?.getStudentData("enableDescriptiveGrades", true); return mEnableDescriptiveGrades ?: true }
|
get() { mEnableDescriptiveGrades = mEnableDescriptiveGrades ?: profile?.getStudentData("enableDescriptiveGrades", true); return mEnableDescriptiveGrades ?: true }
|
||||||
set(value) { profile?.putStudentData("enableDescriptiveGrades", value) ?: return; mEnableDescriptiveGrades = value }
|
set(value) { profile["enableDescriptiveGrades"] = value; mEnableDescriptiveGrades = value }
|
||||||
|
|
||||||
private var mTimetableNotPublic: Boolean? = null
|
private var mTimetableNotPublic: Boolean? = null
|
||||||
var timetableNotPublic: Boolean
|
var timetableNotPublic: Boolean
|
||||||
get() { mTimetableNotPublic = mTimetableNotPublic ?: profile?.getStudentData("timetableNotPublic", false); return mTimetableNotPublic ?: false }
|
get() { mTimetableNotPublic = mTimetableNotPublic ?: profile?.getStudentData("timetableNotPublic", false); return mTimetableNotPublic ?: false }
|
||||||
set(value) { profile?.putStudentData("timetableNotPublic", value) ?: return; mTimetableNotPublic = value }
|
set(value) { profile["timetableNotPublic"] = value; mTimetableNotPublic = value }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set to false when Recaptcha helper doesn't provide a working token.
|
* Set to false when Recaptcha helper doesn't provide a working token.
|
||||||
|
@ -16,6 +16,7 @@ import pl.szczodrzynski.edziennik.data.db.enums.FeatureType
|
|||||||
import pl.szczodrzynski.edziennik.data.db.enums.MetadataType
|
import pl.szczodrzynski.edziennik.data.db.enums.MetadataType
|
||||||
import pl.szczodrzynski.edziennik.ext.HOUR
|
import pl.szczodrzynski.edziennik.ext.HOUR
|
||||||
import pl.szczodrzynski.edziennik.ext.get
|
import pl.szczodrzynski.edziennik.ext.get
|
||||||
|
import pl.szczodrzynski.edziennik.ext.getSemesterStart
|
||||||
import pl.szczodrzynski.edziennik.ext.singleOrNull
|
import pl.szczodrzynski.edziennik.ext.singleOrNull
|
||||||
import pl.szczodrzynski.edziennik.utils.models.Date
|
import pl.szczodrzynski.edziennik.utils.models.Date
|
||||||
|
|
||||||
|
@ -11,7 +11,9 @@ import pl.szczodrzynski.edziennik.data.db.entity.LoginStore
|
|||||||
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
||||||
import pl.szczodrzynski.edziennik.data.db.enums.LoginMethod
|
import pl.szczodrzynski.edziennik.data.db.enums.LoginMethod
|
||||||
import pl.szczodrzynski.edziennik.ext.currentTimeUnix
|
import pl.szczodrzynski.edziennik.ext.currentTimeUnix
|
||||||
|
import pl.szczodrzynski.edziennik.ext.getStudentData
|
||||||
import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty
|
import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty
|
||||||
|
import pl.szczodrzynski.edziennik.ext.set
|
||||||
import pl.szczodrzynski.edziennik.utils.models.Date
|
import pl.szczodrzynski.edziennik.utils.models.Date
|
||||||
import pl.szczodrzynski.edziennik.utils.models.Time
|
import pl.szczodrzynski.edziennik.utils.models.Time
|
||||||
|
|
||||||
@ -85,7 +87,7 @@ class DataMobidziennik(app: App, profile: Profile?, loginStore: LoginStore) : Da
|
|||||||
private var mStudentId: Int? = null
|
private var mStudentId: Int? = null
|
||||||
var studentId: Int
|
var studentId: Int
|
||||||
get() { mStudentId = mStudentId ?: profile?.getStudentData("studentId", 0); return mStudentId ?: 0 }
|
get() { mStudentId = mStudentId ?: profile?.getStudentData("studentId", 0); return mStudentId ?: 0 }
|
||||||
set(value) { profile?.putStudentData("studentId", value) ?: return; mStudentId = value }
|
set(value) { profile["studentId"] = value; mStudentId = value }
|
||||||
|
|
||||||
/* __ __ _
|
/* __ __ _
|
||||||
\ \ / / | |
|
\ \ / / | |
|
||||||
@ -125,7 +127,7 @@ class DataMobidziennik(app: App, profile: Profile?, loginStore: LoginStore) : Da
|
|||||||
*/
|
*/
|
||||||
var globalId: String?
|
var globalId: String?
|
||||||
get() { mGlobalId = mGlobalId ?: profile?.getStudentData("globalId", null); return mGlobalId }
|
get() { mGlobalId = mGlobalId ?: profile?.getStudentData("globalId", null); return mGlobalId }
|
||||||
set(value) { profile?.putStudentData("globalId", value) ?: return; mGlobalId = value }
|
set(value) { profile["globalId"] = value; mGlobalId = value }
|
||||||
private var mGlobalId: String? = null
|
private var mGlobalId: String? = null
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -135,7 +137,7 @@ class DataMobidziennik(app: App, profile: Profile?, loginStore: LoginStore) : Da
|
|||||||
*/
|
*/
|
||||||
var loginEmail: String?
|
var loginEmail: String?
|
||||||
get() { mLoginEmail = mLoginEmail ?: profile?.getStudentData("email", null); return mLoginEmail }
|
get() { mLoginEmail = mLoginEmail ?: profile?.getStudentData("email", null); return mLoginEmail }
|
||||||
set(value) { profile?.putStudentData("email", value); mLoginEmail = value }
|
set(value) { profile["email"] = value; mLoginEmail = value }
|
||||||
private var mLoginEmail: String? = null
|
private var mLoginEmail: String? = null
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -144,7 +146,7 @@ class DataMobidziennik(app: App, profile: Profile?, loginStore: LoginStore) : Da
|
|||||||
*/
|
*/
|
||||||
var loginId: String?
|
var loginId: String?
|
||||||
get() { mLoginId = mLoginId ?: profile?.getStudentData("loginId", null); return mLoginId }
|
get() { mLoginId = mLoginId ?: profile?.getStudentData("loginId", null); return mLoginId }
|
||||||
set(value) { profile?.putStudentData("loginId", value) ?: return; mLoginId = value }
|
set(value) { profile["loginId"] = value; mLoginId = value }
|
||||||
private var mLoginId: String? = null
|
private var mLoginId: String? = null
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -152,7 +154,7 @@ class DataMobidziennik(app: App, profile: Profile?, loginStore: LoginStore) : Da
|
|||||||
*/
|
*/
|
||||||
var ciasteczkoAutoryzacji: String?
|
var ciasteczkoAutoryzacji: String?
|
||||||
get() { mCiasteczkoAutoryzacji = mCiasteczkoAutoryzacji ?: profile?.getStudentData("ciasteczkoAutoryzacji", null); return mCiasteczkoAutoryzacji }
|
get() { mCiasteczkoAutoryzacji = mCiasteczkoAutoryzacji ?: profile?.getStudentData("ciasteczkoAutoryzacji", null); return mCiasteczkoAutoryzacji }
|
||||||
set(value) { profile?.putStudentData("ciasteczkoAutoryzacji", value) ?: return; mCiasteczkoAutoryzacji = value }
|
set(value) { profile["ciasteczkoAutoryzacji"] = value; mCiasteczkoAutoryzacji = value }
|
||||||
private var mCiasteczkoAutoryzacji: String? = null
|
private var mCiasteczkoAutoryzacji: String? = null
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.Attendance.Companion.TYPE_PRESE
|
|||||||
import pl.szczodrzynski.edziennik.data.db.entity.Attendance.Companion.TYPE_RELEASED
|
import pl.szczodrzynski.edziennik.data.db.entity.Attendance.Companion.TYPE_RELEASED
|
||||||
import pl.szczodrzynski.edziennik.data.db.entity.Metadata
|
import pl.szczodrzynski.edziennik.data.db.entity.Metadata
|
||||||
import pl.szczodrzynski.edziennik.data.db.enums.MetadataType
|
import pl.szczodrzynski.edziennik.data.db.enums.MetadataType
|
||||||
|
import pl.szczodrzynski.edziennik.ext.dateToSemester
|
||||||
|
|
||||||
class MobidziennikApiAttendance(val data: DataMobidziennik, rows: List<String>) {
|
class MobidziennikApiAttendance(val data: DataMobidziennik, rows: List<String>) {
|
||||||
init { run {
|
init { run {
|
||||||
|
@ -21,6 +21,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.Attendance.Companion.TYPE_UNKNO
|
|||||||
import pl.szczodrzynski.edziennik.data.db.entity.Metadata
|
import pl.szczodrzynski.edziennik.data.db.entity.Metadata
|
||||||
import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS
|
||||||
import pl.szczodrzynski.edziennik.data.db.enums.MetadataType
|
import pl.szczodrzynski.edziennik.data.db.enums.MetadataType
|
||||||
|
import pl.szczodrzynski.edziennik.ext.dateToSemester
|
||||||
import pl.szczodrzynski.edziennik.ext.fixName
|
import pl.szczodrzynski.edziennik.ext.fixName
|
||||||
import pl.szczodrzynski.edziennik.ext.get
|
import pl.szczodrzynski.edziennik.ext.get
|
||||||
import pl.szczodrzynski.edziennik.ext.singleOrNull
|
import pl.szczodrzynski.edziennik.ext.singleOrNull
|
||||||
|
@ -15,6 +15,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_NORMAL
|
|||||||
import pl.szczodrzynski.edziennik.data.db.entity.Metadata
|
import pl.szczodrzynski.edziennik.data.db.entity.Metadata
|
||||||
import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS
|
import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS
|
||||||
import pl.szczodrzynski.edziennik.data.db.enums.MetadataType
|
import pl.szczodrzynski.edziennik.data.db.enums.MetadataType
|
||||||
|
import pl.szczodrzynski.edziennik.ext.dateToSemester
|
||||||
import pl.szczodrzynski.edziennik.ext.fixWhiteSpaces
|
import pl.szczodrzynski.edziennik.ext.fixWhiteSpaces
|
||||||
import pl.szczodrzynski.edziennik.ext.get
|
import pl.szczodrzynski.edziennik.ext.get
|
||||||
import pl.szczodrzynski.edziennik.ext.singleOrNull
|
import pl.szczodrzynski.edziennik.ext.singleOrNull
|
||||||
|
@ -10,7 +10,9 @@ import pl.szczodrzynski.edziennik.data.db.entity.LoginStore
|
|||||||
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
||||||
import pl.szczodrzynski.edziennik.data.db.enums.LoginMethod
|
import pl.szczodrzynski.edziennik.data.db.enums.LoginMethod
|
||||||
import pl.szczodrzynski.edziennik.ext.crc32
|
import pl.szczodrzynski.edziennik.ext.crc32
|
||||||
|
import pl.szczodrzynski.edziennik.ext.getStudentData
|
||||||
import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty
|
import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty
|
||||||
|
import pl.szczodrzynski.edziennik.ext.set
|
||||||
|
|
||||||
class DataPodlasie(app: App, profile: Profile?, loginStore: LoginStore) : Data(app, profile, loginStore) {
|
class DataPodlasie(app: App, profile: Profile?, loginStore: LoginStore) : Data(app, profile, loginStore) {
|
||||||
|
|
||||||
@ -40,7 +42,7 @@ class DataPodlasie(app: App, profile: Profile?, loginStore: LoginStore) : Data(a
|
|||||||
private var mApiUrl: String? = null
|
private var mApiUrl: String? = null
|
||||||
var apiUrl: String?
|
var apiUrl: String?
|
||||||
get() { mApiUrl = mApiUrl ?: profile?.getStudentData("apiUrl", null); return mApiUrl }
|
get() { mApiUrl = mApiUrl ?: profile?.getStudentData("apiUrl", null); return mApiUrl }
|
||||||
set(value) { profile?.putStudentData("apiUrl", value) ?: return; mApiUrl = value }
|
set(value) { profile["apiUrl"] = value; mApiUrl = value }
|
||||||
|
|
||||||
/* ____ _ _
|
/* ____ _ _
|
||||||
/ __ \| | | |
|
/ __ \| | | |
|
||||||
@ -51,32 +53,32 @@ class DataPodlasie(app: App, profile: Profile?, loginStore: LoginStore) : Data(a
|
|||||||
private var mStudentId: String? = null
|
private var mStudentId: String? = null
|
||||||
var studentId: String?
|
var studentId: String?
|
||||||
get() { mStudentId = mStudentId ?: profile?.getStudentData("studentId", null); return mStudentId }
|
get() { mStudentId = mStudentId ?: profile?.getStudentData("studentId", null); return mStudentId }
|
||||||
set(value) { profile?.putStudentData("studentId", value) ?: return; mStudentId = value }
|
set(value) { profile["studentId"] = value; mStudentId = value }
|
||||||
|
|
||||||
private var mStudentLogin: String? = null
|
private var mStudentLogin: String? = null
|
||||||
var studentLogin: String?
|
var studentLogin: String?
|
||||||
get() { mStudentLogin = mStudentLogin ?: profile?.getStudentData("studentLogin", null); return mStudentLogin }
|
get() { mStudentLogin = mStudentLogin ?: profile?.getStudentData("studentLogin", null); return mStudentLogin }
|
||||||
set(value) { profile?.putStudentData("studentLogin", value) ?: return; mStudentLogin = value }
|
set(value) { profile["studentLogin"] = value; mStudentLogin = value }
|
||||||
|
|
||||||
private var mSchoolName: String? = null
|
private var mSchoolName: String? = null
|
||||||
var schoolName: String?
|
var schoolName: String?
|
||||||
get() { mSchoolName = mSchoolName ?: profile?.getStudentData("schoolName", null); return mSchoolName }
|
get() { mSchoolName = mSchoolName ?: profile?.getStudentData("schoolName", null); return mSchoolName }
|
||||||
set(value) { profile?.putStudentData("schoolName", value) ?: return; mSchoolName = value }
|
set(value) { profile["schoolName"] = value; mSchoolName = value }
|
||||||
|
|
||||||
private var mClassName: String? = null
|
private var mClassName: String? = null
|
||||||
var className: String?
|
var className: String?
|
||||||
get() { mClassName = mClassName ?: profile?.getStudentData("className", null); return mClassName }
|
get() { mClassName = mClassName ?: profile?.getStudentData("className", null); return mClassName }
|
||||||
set(value) { profile?.putStudentData("className", value) ?: return; mClassName = value }
|
set(value) { profile["className"] = value; mClassName = value }
|
||||||
|
|
||||||
private var mSchoolYear: String? = null
|
private var mSchoolYear: String? = null
|
||||||
var schoolYear: String?
|
var schoolYear: String?
|
||||||
get() { mSchoolYear = mSchoolYear ?: profile?.getStudentData("schoolYear", null); return mSchoolYear }
|
get() { mSchoolYear = mSchoolYear ?: profile?.getStudentData("schoolYear", null); return mSchoolYear }
|
||||||
set(value) { profile?.putStudentData("schoolYear", value) ?: return; mSchoolYear = value }
|
set(value) { profile["schoolYear"] = value; mSchoolYear = value }
|
||||||
|
|
||||||
private var mCurrentSemester: Int? = null
|
private var mCurrentSemester: Int? = null
|
||||||
var currentSemester: Int
|
var currentSemester: Int
|
||||||
get() { mCurrentSemester = mCurrentSemester ?: profile?.getStudentData("currentSemester", 0); return mCurrentSemester ?: 0 }
|
get() { mCurrentSemester = mCurrentSemester ?: profile?.getStudentData("currentSemester", 0); return mCurrentSemester ?: 0 }
|
||||||
set(value) { profile?.putStudentData("currentSemester", value) ?: return; mCurrentSemester = value }
|
set(value) { profile["currentSemester"] = value; mCurrentSemester = value }
|
||||||
|
|
||||||
val schoolShortName: String?
|
val schoolShortName: String?
|
||||||
get() = studentLogin?.split('@')?.get(1)?.replace(".podlaskie.pl", "")
|
get() = studentLogin?.split('@')?.get(1)?.replace(".podlaskie.pl", "")
|
||||||
|
@ -17,6 +17,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_YEAR_PROPO
|
|||||||
import pl.szczodrzynski.edziennik.data.db.entity.Metadata
|
import pl.szczodrzynski.edziennik.data.db.entity.Metadata
|
||||||
import pl.szczodrzynski.edziennik.data.db.enums.MetadataType
|
import pl.szczodrzynski.edziennik.data.db.enums.MetadataType
|
||||||
import pl.szczodrzynski.edziennik.ext.getLong
|
import pl.szczodrzynski.edziennik.ext.getLong
|
||||||
|
import pl.szczodrzynski.edziennik.ext.getSemesterStart
|
||||||
import pl.szczodrzynski.edziennik.ext.getString
|
import pl.szczodrzynski.edziennik.ext.getString
|
||||||
|
|
||||||
class PodlasieApiFinalGrades(val data: DataPodlasie, val rows: List<JsonObject>) {
|
class PodlasieApiFinalGrades(val data: DataPodlasie, val rows: List<JsonObject>) {
|
||||||
|
@ -10,7 +10,9 @@ import pl.szczodrzynski.edziennik.data.db.entity.LoginStore
|
|||||||
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
||||||
import pl.szczodrzynski.edziennik.data.db.enums.LoginMethod
|
import pl.szczodrzynski.edziennik.data.db.enums.LoginMethod
|
||||||
import pl.szczodrzynski.edziennik.ext.currentTimeUnix
|
import pl.szczodrzynski.edziennik.ext.currentTimeUnix
|
||||||
|
import pl.szczodrzynski.edziennik.ext.getStudentData
|
||||||
import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty
|
import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty
|
||||||
|
import pl.szczodrzynski.edziennik.ext.set
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use http://patorjk.com/software/taag/#p=display&f=Big for the ascii art
|
* Use http://patorjk.com/software/taag/#p=display&f=Big for the ascii art
|
||||||
@ -43,12 +45,12 @@ class DataTemplate(app: App, profile: Profile?, loginStore: LoginStore) : Data(a
|
|||||||
private var mWebCookie: String? = null
|
private var mWebCookie: String? = null
|
||||||
var webCookie: String?
|
var webCookie: String?
|
||||||
get() { mWebCookie = mWebCookie ?: profile?.getStudentData("webCookie", null); return mWebCookie }
|
get() { mWebCookie = mWebCookie ?: profile?.getStudentData("webCookie", null); return mWebCookie }
|
||||||
set(value) { profile?.putStudentData("webCookie", value) ?: return; mWebCookie = value }
|
set(value) { profile["webCookie"] = value; mWebCookie = value }
|
||||||
|
|
||||||
private var mWebExpiryTime: Long? = null
|
private var mWebExpiryTime: Long? = null
|
||||||
var webExpiryTime: Long
|
var webExpiryTime: Long
|
||||||
get() { mWebExpiryTime = mWebExpiryTime ?: profile?.getStudentData("webExpiryTime", 0L); return mWebExpiryTime ?: 0L }
|
get() { mWebExpiryTime = mWebExpiryTime ?: profile?.getStudentData("webExpiryTime", 0L); return mWebExpiryTime ?: 0L }
|
||||||
set(value) { profile?.putStudentData("webExpiryTime", value) ?: return; mWebExpiryTime = value }
|
set(value) { profile["webExpiryTime"] = value; mWebExpiryTime = value }
|
||||||
|
|
||||||
/* _
|
/* _
|
||||||
/\ (_)
|
/\ (_)
|
||||||
@ -61,10 +63,10 @@ class DataTemplate(app: App, profile: Profile?, loginStore: LoginStore) : Data(a
|
|||||||
private var mApiToken: String? = null
|
private var mApiToken: String? = null
|
||||||
var apiToken: String?
|
var apiToken: String?
|
||||||
get() { mApiToken = mApiToken ?: profile?.getStudentData("apiToken", null); return mApiToken }
|
get() { mApiToken = mApiToken ?: profile?.getStudentData("apiToken", null); return mApiToken }
|
||||||
set(value) { profile?.putStudentData("apiToken", value) ?: return; mApiToken = value }
|
set(value) { profile["apiToken"] = value; mApiToken = value }
|
||||||
|
|
||||||
private var mApiExpiryTime: Long? = null
|
private var mApiExpiryTime: Long? = null
|
||||||
var apiExpiryTime: Long
|
var apiExpiryTime: Long
|
||||||
get() { mApiExpiryTime = mApiExpiryTime ?: profile?.getStudentData("apiExpiryTime", 0L); return mApiExpiryTime ?: 0L }
|
get() { mApiExpiryTime = mApiExpiryTime ?: profile?.getStudentData("apiExpiryTime", 0L); return mApiExpiryTime ?: 0L }
|
||||||
set(value) { profile?.putStudentData("apiExpiryTime", value) ?: return; mApiExpiryTime = value }
|
set(value) { profile["apiExpiryTime"] = value; mApiExpiryTime = value }
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,8 @@ import pl.szczodrzynski.edziennik.data.api.models.Data
|
|||||||
import pl.szczodrzynski.edziennik.data.db.entity.LoginStore
|
import pl.szczodrzynski.edziennik.data.db.entity.LoginStore
|
||||||
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
||||||
import pl.szczodrzynski.edziennik.data.db.enums.LoginMethod
|
import pl.szczodrzynski.edziennik.data.db.enums.LoginMethod
|
||||||
|
import pl.szczodrzynski.edziennik.ext.getStudentData
|
||||||
|
import pl.szczodrzynski.edziennik.ext.set
|
||||||
|
|
||||||
class DataUsos(
|
class DataUsos(
|
||||||
app: App,
|
app: App,
|
||||||
@ -69,6 +71,6 @@ class DataUsos(
|
|||||||
|
|
||||||
var studentId: Int
|
var studentId: Int
|
||||||
get() { mStudentId = mStudentId ?: profile?.getStudentData("studentId", 0); return mStudentId ?: 0 }
|
get() { mStudentId = mStudentId ?: profile?.getStudentData("studentId", 0); return mStudentId ?: 0 }
|
||||||
set(value) { profile?.putStudentData("studentId", value) ?: return; mStudentId = value }
|
set(value) { profile["studentId"] = value; mStudentId = value }
|
||||||
private var mStudentId: Int? = null
|
private var mStudentId: Int? = null
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,9 @@ import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
|||||||
import pl.szczodrzynski.edziennik.data.db.enums.LoginMethod
|
import pl.szczodrzynski.edziennik.data.db.enums.LoginMethod
|
||||||
import pl.szczodrzynski.edziennik.ext.crc16
|
import pl.szczodrzynski.edziennik.ext.crc16
|
||||||
import pl.szczodrzynski.edziennik.ext.currentTimeUnix
|
import pl.szczodrzynski.edziennik.ext.currentTimeUnix
|
||||||
|
import pl.szczodrzynski.edziennik.ext.getStudentData
|
||||||
import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty
|
import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty
|
||||||
|
import pl.szczodrzynski.edziennik.ext.set
|
||||||
import pl.szczodrzynski.fslogin.realm.RealmData
|
import pl.szczodrzynski.fslogin.realm.RealmData
|
||||||
|
|
||||||
class DataVulcan(app: App, profile: Profile?, loginStore: LoginStore) : Data(app, profile, loginStore) {
|
class DataVulcan(app: App, profile: Profile?, loginStore: LoginStore) : Data(app, profile, loginStore) {
|
||||||
@ -57,7 +59,7 @@ class DataVulcan(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mSymbol: String? = null
|
private var mSymbol: String? = null
|
||||||
var symbol: String?
|
var symbol: String?
|
||||||
get() { mSymbol = mSymbol ?: profile?.getStudentData("symbol", null); return mSymbol }
|
get() { mSymbol = mSymbol ?: profile?.getStudentData("symbol", null); return mSymbol }
|
||||||
set(value) { profile?.putStudentData("symbol", value); mSymbol = value }
|
set(value) { profile["symbol"] = value; mSymbol = value }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Group symbol/number of the student's school.
|
* Group symbol/number of the student's school.
|
||||||
@ -69,7 +71,7 @@ class DataVulcan(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mSchoolSymbol: String? = null
|
private var mSchoolSymbol: String? = null
|
||||||
var schoolSymbol: String?
|
var schoolSymbol: String?
|
||||||
get() { mSchoolSymbol = mSchoolSymbol ?: profile?.getStudentData("schoolSymbol", null); return mSchoolSymbol }
|
get() { mSchoolSymbol = mSchoolSymbol ?: profile?.getStudentData("schoolSymbol", null); return mSchoolSymbol }
|
||||||
set(value) { profile?.putStudentData("schoolSymbol", value) ?: return; mSchoolSymbol = value }
|
set(value) { profile["schoolSymbol"] = value; mSchoolSymbol = value }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Short name of the school, used in some places.
|
* Short name of the school, used in some places.
|
||||||
@ -79,7 +81,7 @@ class DataVulcan(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mSchoolShort: String? = null
|
private var mSchoolShort: String? = null
|
||||||
var schoolShort: String?
|
var schoolShort: String?
|
||||||
get() { mSchoolShort = mSchoolShort ?: profile?.getStudentData("schoolShort", null); return mSchoolShort }
|
get() { mSchoolShort = mSchoolShort ?: profile?.getStudentData("schoolShort", null); return mSchoolShort }
|
||||||
set(value) { profile?.putStudentData("schoolShort", value) ?: return; mSchoolShort = value }
|
set(value) { profile["schoolShort"] = value; mSchoolShort = value }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A school code consisting of the [symbol] and [schoolSymbol].
|
* A school code consisting of the [symbol] and [schoolSymbol].
|
||||||
@ -91,7 +93,7 @@ class DataVulcan(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mSchoolCode: String? = null
|
private var mSchoolCode: String? = null
|
||||||
var schoolCode: String?
|
var schoolCode: String?
|
||||||
get() { mSchoolCode = mSchoolCode ?: profile?.getStudentData("schoolName", null); return mSchoolCode }
|
get() { mSchoolCode = mSchoolCode ?: profile?.getStudentData("schoolName", null); return mSchoolCode }
|
||||||
set(value) { profile?.putStudentData("schoolName", value) ?: return; mSchoolCode = value }
|
set(value) { profile["schoolName"] = value; mSchoolCode = value }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ID of the student.
|
* ID of the student.
|
||||||
@ -101,7 +103,7 @@ class DataVulcan(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mStudentId: Int? = null
|
private var mStudentId: Int? = null
|
||||||
var studentId: Int
|
var studentId: Int
|
||||||
get() { mStudentId = mStudentId ?: profile?.getStudentData("studentId", 0); return mStudentId ?: 0 }
|
get() { mStudentId = mStudentId ?: profile?.getStudentData("studentId", 0); return mStudentId ?: 0 }
|
||||||
set(value) { profile?.putStudentData("studentId", value) ?: return; mStudentId = value }
|
set(value) { profile["studentId"] = value; mStudentId = value }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ID of the student's account.
|
* ID of the student's account.
|
||||||
@ -111,7 +113,7 @@ class DataVulcan(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mStudentLoginId: Int? = null
|
private var mStudentLoginId: Int? = null
|
||||||
var studentLoginId: Int
|
var studentLoginId: Int
|
||||||
get() { mStudentLoginId = mStudentLoginId ?: profile?.getStudentData("studentLoginId", 0); return mStudentLoginId ?: 0 }
|
get() { mStudentLoginId = mStudentLoginId ?: profile?.getStudentData("studentLoginId", 0); return mStudentLoginId ?: 0 }
|
||||||
set(value) { profile?.putStudentData("studentLoginId", value) ?: return; mStudentLoginId = value }
|
set(value) { profile["studentLoginId"] = value; mStudentLoginId = value }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ID of the student's class.
|
* ID of the student's class.
|
||||||
@ -121,7 +123,7 @@ class DataVulcan(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mStudentClassId: Int? = null
|
private var mStudentClassId: Int? = null
|
||||||
var studentClassId: Int
|
var studentClassId: Int
|
||||||
get() { mStudentClassId = mStudentClassId ?: profile?.getStudentData("studentClassId", 0); return mStudentClassId ?: 0 }
|
get() { mStudentClassId = mStudentClassId ?: profile?.getStudentData("studentClassId", 0); return mStudentClassId ?: 0 }
|
||||||
set(value) { profile?.putStudentData("studentClassId", value) ?: return; mStudentClassId = value }
|
set(value) { profile["studentClassId"] = value; mStudentClassId = value }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ListaUczniow/IdOkresKlasyfikacyjny, e.g. 321
|
* ListaUczniow/IdOkresKlasyfikacyjny, e.g. 321
|
||||||
@ -129,26 +131,26 @@ class DataVulcan(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mStudentSemesterId: Int? = null
|
private var mStudentSemesterId: Int? = null
|
||||||
var studentSemesterId: Int
|
var studentSemesterId: Int
|
||||||
get() { mStudentSemesterId = mStudentSemesterId ?: profile?.getStudentData("studentSemesterId", 0); return mStudentSemesterId ?: 0 }
|
get() { mStudentSemesterId = mStudentSemesterId ?: profile?.getStudentData("studentSemesterId", 0); return mStudentSemesterId ?: 0 }
|
||||||
set(value) { profile?.putStudentData("studentSemesterId", value) ?: return; mStudentSemesterId = value }
|
set(value) { profile["studentSemesterId"] = value; mStudentSemesterId = value }
|
||||||
|
|
||||||
private var mStudentUnitId: Int? = null
|
private var mStudentUnitId: Int? = null
|
||||||
var studentUnitId: Int
|
var studentUnitId: Int
|
||||||
get() { mStudentUnitId = mStudentUnitId ?: profile?.getStudentData("studentUnitId", 0); return mStudentUnitId ?: 0 }
|
get() { mStudentUnitId = mStudentUnitId ?: profile?.getStudentData("studentUnitId", 0); return mStudentUnitId ?: 0 }
|
||||||
set(value) { profile?.putStudentData("studentUnitId", value) ?: return; mStudentUnitId = value }
|
set(value) { profile["studentUnitId"] = value; mStudentUnitId = value }
|
||||||
|
|
||||||
private var mStudentConstituentId: Int? = null
|
private var mStudentConstituentId: Int? = null
|
||||||
var studentConstituentId: Int
|
var studentConstituentId: Int
|
||||||
get() { mStudentConstituentId = mStudentConstituentId ?: profile?.getStudentData("studentConstituentId", 0); return mStudentConstituentId ?: 0 }
|
get() { mStudentConstituentId = mStudentConstituentId ?: profile?.getStudentData("studentConstituentId", 0); return mStudentConstituentId ?: 0 }
|
||||||
set(value) { profile?.putStudentData("studentConstituentId", value) ?: return; mStudentConstituentId = value }
|
set(value) { profile["studentConstituentId"] = value; mStudentConstituentId = value }
|
||||||
|
|
||||||
private var mSemester1Id: Int? = null
|
private var mSemester1Id: Int? = null
|
||||||
var semester1Id: Int
|
var semester1Id: Int
|
||||||
get() { mSemester1Id = mSemester1Id ?: profile?.getStudentData("semester1Id", 0); return mSemester1Id ?: 0 }
|
get() { mSemester1Id = mSemester1Id ?: profile?.getStudentData("semester1Id", 0); return mSemester1Id ?: 0 }
|
||||||
set(value) { profile?.putStudentData("semester1Id", value) ?: return; mSemester1Id = value }
|
set(value) { profile["semester1Id"] = value; mSemester1Id = value }
|
||||||
private var mSemester2Id: Int? = null
|
private var mSemester2Id: Int? = null
|
||||||
var semester2Id: Int
|
var semester2Id: Int
|
||||||
get() { mSemester2Id = mSemester2Id ?: profile?.getStudentData("semester2Id", 0); return mSemester2Id ?: 0 }
|
get() { mSemester2Id = mSemester2Id ?: profile?.getStudentData("semester2Id", 0); return mSemester2Id ?: 0 }
|
||||||
set(value) { profile?.putStudentData("semester2Id", value) ?: return; mSemester2Id = value }
|
set(value) { profile["semester2Id"] = value; mSemester2Id = value }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ListaUczniow/OkresNumer, e.g. 1 or 2
|
* ListaUczniow/OkresNumer, e.g. 1 or 2
|
||||||
@ -156,7 +158,7 @@ class DataVulcan(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mStudentSemesterNumber: Int? = null
|
private var mStudentSemesterNumber: Int? = null
|
||||||
var studentSemesterNumber: Int
|
var studentSemesterNumber: Int
|
||||||
get() { mStudentSemesterNumber = mStudentSemesterNumber ?: profile?.getStudentData("studentSemesterNumber", 0); return mStudentSemesterNumber ?: 0 }
|
get() { mStudentSemesterNumber = mStudentSemesterNumber ?: profile?.getStudentData("studentSemesterNumber", 0); return mStudentSemesterNumber ?: 0 }
|
||||||
set(value) { profile?.putStudentData("studentSemesterNumber", value) ?: return; mStudentSemesterNumber = value }
|
set(value) { profile["studentSemesterNumber"] = value; mStudentSemesterNumber = value }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Date of the end of the current semester ([studentSemesterNumber]).
|
* Date of the end of the current semester ([studentSemesterNumber]).
|
||||||
@ -166,7 +168,7 @@ class DataVulcan(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mCurrentSemesterEndDate: Long? = null
|
private var mCurrentSemesterEndDate: Long? = null
|
||||||
var currentSemesterEndDate: Long
|
var currentSemesterEndDate: Long
|
||||||
get() { mCurrentSemesterEndDate = mCurrentSemesterEndDate ?: profile?.getStudentData("currentSemesterEndDate", 0L); return mCurrentSemesterEndDate ?: 0L }
|
get() { mCurrentSemesterEndDate = mCurrentSemesterEndDate ?: profile?.getStudentData("currentSemesterEndDate", 0L); return mCurrentSemesterEndDate ?: 0L }
|
||||||
set(value) { profile?.putStudentData("currentSemesterEndDate", value) ?: return; mCurrentSemesterEndDate = value }
|
set(value) { profile["currentSemesterEndDate"] = value; mCurrentSemesterEndDate = value }
|
||||||
|
|
||||||
/* _____ _____ ____
|
/* _____ _____ ____
|
||||||
/\ | __ \_ _| |___ \
|
/\ | __ \_ _| |___ \
|
||||||
@ -219,17 +221,17 @@ class DataVulcan(app: App, profile: Profile?, loginStore: LoginStore) : Data(app
|
|||||||
private var mHebeContext: String? = null
|
private var mHebeContext: String? = null
|
||||||
var hebeContext: String?
|
var hebeContext: String?
|
||||||
get() { mHebeContext = mHebeContext ?: profile?.getStudentData("hebeContext", null); return mHebeContext }
|
get() { mHebeContext = mHebeContext ?: profile?.getStudentData("hebeContext", null); return mHebeContext }
|
||||||
set(value) { profile?.putStudentData("hebeContext", value) ?: return; mHebeContext = value }
|
set(value) { profile["hebeContext"] = value; mHebeContext = value }
|
||||||
|
|
||||||
private var mMessageBoxKey: String? = null
|
private var mMessageBoxKey: String? = null
|
||||||
var messageBoxKey: String?
|
var messageBoxKey: String?
|
||||||
get() { mMessageBoxKey = mMessageBoxKey ?: profile?.getStudentData("messageBoxKey", null); return mMessageBoxKey }
|
get() { mMessageBoxKey = mMessageBoxKey ?: profile?.getStudentData("messageBoxKey", null); return mMessageBoxKey }
|
||||||
set(value) { profile?.putStudentData("messageBoxKey", value) ?: return; mMessageBoxKey = value }
|
set(value) { profile["messageBoxKey"] = value; mMessageBoxKey = value }
|
||||||
|
|
||||||
private var mMessageBoxName: String? = null
|
private var mMessageBoxName: String? = null
|
||||||
var messageBoxName: String?
|
var messageBoxName: String?
|
||||||
get() { mMessageBoxName = mMessageBoxName ?: profile?.getStudentData("messageBoxName", null); return mMessageBoxName }
|
get() { mMessageBoxName = mMessageBoxName ?: profile?.getStudentData("messageBoxName", null); return mMessageBoxName }
|
||||||
set(value) { profile?.putStudentData("messageBoxName", value) ?: return; mMessageBoxName = value }
|
set(value) { profile["messageBoxName"] = value; mMessageBoxName = value }
|
||||||
|
|
||||||
val apiUrl: String?
|
val apiUrl: String?
|
||||||
get() {
|
get() {
|
||||||
|
@ -5,25 +5,16 @@
|
|||||||
package pl.szczodrzynski.edziennik.data.db.entity
|
package pl.szczodrzynski.edziennik.data.db.entity
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.PorterDuff
|
|
||||||
import android.graphics.PorterDuffColorFilter
|
|
||||||
import android.graphics.drawable.Drawable
|
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory
|
|
||||||
import androidx.room.ColumnInfo
|
import androidx.room.ColumnInfo
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
import androidx.room.Ignore
|
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
import pl.droidsonroids.gif.GifDrawable
|
|
||||||
import pl.szczodrzynski.edziennik.App
|
|
||||||
import pl.szczodrzynski.edziennik.data.db.enums.LoginType
|
import pl.szczodrzynski.edziennik.data.db.enums.LoginType
|
||||||
import pl.szczodrzynski.edziennik.ext.*
|
import pl.szczodrzynski.edziennik.ext.dateToSemester
|
||||||
import pl.szczodrzynski.edziennik.utils.ProfileImageHolder
|
import pl.szczodrzynski.edziennik.ext.getDrawable
|
||||||
|
import pl.szczodrzynski.edziennik.ext.getHolder
|
||||||
import pl.szczodrzynski.edziennik.utils.models.Date
|
import pl.szczodrzynski.edziennik.utils.models.Date
|
||||||
import pl.szczodrzynski.navlib.ImageHolder
|
|
||||||
import pl.szczodrzynski.navlib.R
|
|
||||||
import pl.szczodrzynski.navlib.drawer.IDrawerProfile
|
import pl.szczodrzynski.navlib.drawer.IDrawerProfile
|
||||||
import pl.szczodrzynski.navlib.getDrawableFromRes
|
|
||||||
|
|
||||||
@Entity(tableName = "profiles", primaryKeys = ["profileId"])
|
@Entity(tableName = "profiles", primaryKeys = ["profileId"])
|
||||||
open class Profile(
|
open class Profile(
|
||||||
@ -60,9 +51,12 @@ open class Profile(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override var image: String? = null
|
override var image: String? = null
|
||||||
|
|
||||||
var empty = true
|
var empty = true
|
||||||
var archived = false
|
var archived = false
|
||||||
|
var syncEnabled = true
|
||||||
|
var enableSharedEvents = true
|
||||||
|
var registration = REGISTRATION_UNSPECIFIED
|
||||||
|
var userCode = ""
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A unique ID matching [archived] profiles with current ones
|
* A unique ID matching [archived] profiles with current ones
|
||||||
@ -70,117 +64,31 @@ open class Profile(
|
|||||||
*/
|
*/
|
||||||
var archiveId: Int? = null
|
var archiveId: Int? = null
|
||||||
|
|
||||||
var syncEnabled = true
|
|
||||||
var enableSharedEvents = true
|
|
||||||
var registration = REGISTRATION_UNSPECIFIED
|
|
||||||
var userCode = ""
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The student's number in the class register.
|
* The student's number in the class register.
|
||||||
*/
|
*/
|
||||||
var studentNumber = -1
|
var studentNumber = -1
|
||||||
var studentClassName: String? = null
|
var studentClassName: String? = null
|
||||||
var studentSchoolYearStart = Date.getToday().let { if (it.month < 9) it.year - 1 else it.year }
|
var studentSchoolYearStart = Date.getToday().let { if (it.month < 9) it.year - 1 else it.year }
|
||||||
|
|
||||||
var dateSemester1Start = Date(studentSchoolYearStart, 9, 1)
|
var dateSemester1Start = Date(studentSchoolYearStart, 9, 1)
|
||||||
var dateSemester2Start = Date(studentSchoolYearStart + 1, 2, 1)
|
var dateSemester2Start = Date(studentSchoolYearStart + 1, 2, 1)
|
||||||
var dateYearEnd = Date(studentSchoolYearStart + 1, 6, 30)
|
var dateYearEnd = Date(studentSchoolYearStart + 1, 6, 30)
|
||||||
fun getSemesterStart(semester: Int) = if (semester == 1) dateSemester1Start else dateSemester2Start
|
|
||||||
fun getSemesterEnd(semester: Int) = if (semester == 1) dateSemester2Start.clone().stepForward(0, 0, -1) else dateYearEnd
|
|
||||||
fun dateToSemester(date: Date) = if (date >= dateSemester2Start) 2 else 1
|
|
||||||
@delegate:Ignore
|
|
||||||
val currentSemester by lazy { dateToSemester(Date.getToday()) }
|
|
||||||
|
|
||||||
fun shouldArchive(): Boolean {
|
|
||||||
// vulcan hotfix
|
|
||||||
if (dateYearEnd.month > 6) {
|
|
||||||
dateYearEnd.month = 6
|
|
||||||
dateYearEnd.day = 30
|
|
||||||
}
|
|
||||||
// fix for when versions <4.3 synced 2020/2021 year dates to older profiles during 2020 Jun-Aug
|
|
||||||
if (dateSemester1Start.year > studentSchoolYearStart) {
|
|
||||||
val diff = dateSemester1Start.year - studentSchoolYearStart
|
|
||||||
dateSemester1Start.year -= diff
|
|
||||||
dateSemester2Start.year -= diff
|
|
||||||
dateYearEnd.year -= diff
|
|
||||||
}
|
|
||||||
return App.config.archiverEnabled
|
|
||||||
&& Date.getToday() >= dateYearEnd
|
|
||||||
&& Date.getToday().year > studentSchoolYearStart
|
|
||||||
}
|
|
||||||
fun isBeforeYear() = false && Date.getToday() < dateSemester1Start
|
|
||||||
|
|
||||||
var disabledNotifications: List<Long>? = null
|
var disabledNotifications: List<Long>? = null
|
||||||
|
|
||||||
var lastReceiversSync: Long = 0
|
var lastReceiversSync: Long = 0
|
||||||
|
|
||||||
fun hasStudentData(key: String) = studentData.has(key)
|
val currentSemester
|
||||||
fun getStudentData(key: String, defaultValue: Boolean) = studentData.getBoolean(key) ?: defaultValue
|
get() = dateToSemester(Date.getToday())
|
||||||
fun getStudentData(key: String, defaultValue: String?) = studentData.getString(key) ?: defaultValue
|
|
||||||
fun getStudentData(key: String, defaultValue: Int) = studentData.getInt(key) ?: defaultValue
|
|
||||||
fun getStudentData(key: String, defaultValue: Long) = studentData.getLong(key) ?: defaultValue
|
|
||||||
fun getStudentData(key: String, defaultValue: Float) = studentData.getFloat(key) ?: defaultValue
|
|
||||||
fun getStudentData(key: String, defaultValue: Char) = studentData.getChar(key) ?: defaultValue
|
|
||||||
fun putStudentData(key: String, value: Boolean) { studentData[key] = value }
|
|
||||||
fun putStudentData(key: String, value: String?) { studentData[key] = value }
|
|
||||||
fun putStudentData(key: String, value: Number) { studentData[key] = value }
|
|
||||||
fun putStudentData(key: String, value: Char) { studentData[key] = value }
|
|
||||||
fun removeStudentData(key: String) { studentData.remove(key) }
|
|
||||||
|
|
||||||
val isParent
|
val isParent
|
||||||
get() = accountName != null
|
get() = accountName != null
|
||||||
|
|
||||||
val accountOwnerName
|
val accountOwnerName
|
||||||
get() = accountName ?: studentNameLong
|
get() = accountName ?: studentNameLong
|
||||||
|
val registerName
|
||||||
@Ignore
|
get() = loginStoreType.name.lowercase()
|
||||||
val registerName = loginStoreType.name.lowercase()
|
|
||||||
|
|
||||||
val canShare
|
val canShare
|
||||||
get() = registration == REGISTRATION_ENABLED && !archived
|
get() = registration == REGISTRATION_ENABLED && !archived
|
||||||
|
|
||||||
override fun getImageDrawable(context: Context): Drawable {
|
override fun getImageDrawable(context: Context) = this.getDrawable(context)
|
||||||
if (archived) {
|
override fun getImageHolder(context: Context) = this.getHolder()
|
||||||
return context.getDrawableFromRes(pl.szczodrzynski.edziennik.R.drawable.profile_archived).also {
|
|
||||||
it.colorFilter = PorterDuffColorFilter(colorFromName(name), PorterDuff.Mode.DST_OVER)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!image.isNullOrEmpty()) {
|
|
||||||
try {
|
|
||||||
return if (image?.endsWith(".gif", true) == true) {
|
|
||||||
GifDrawable(image ?: "")
|
|
||||||
} else {
|
|
||||||
RoundedBitmapDrawableFactory.create(context.resources, image ?: "")
|
|
||||||
//return Drawable.createFromPath(image ?: "") ?: throw Exception()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (e: Exception) {
|
|
||||||
e.printStackTrace()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return context.getDrawableFromRes(R.drawable.profile).also {
|
|
||||||
it.colorFilter = PorterDuffColorFilter(colorFromName(name), PorterDuff.Mode.DST_OVER)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getImageHolder(context: Context): ImageHolder {
|
|
||||||
if (archived) {
|
|
||||||
return ImageHolder(pl.szczodrzynski.edziennik.R.drawable.profile_archived, colorFromName(name))
|
|
||||||
}
|
|
||||||
|
|
||||||
return if (!image.isNullOrEmpty()) {
|
|
||||||
try {
|
|
||||||
ProfileImageHolder(image ?: "")
|
|
||||||
} catch (_: Exception) {
|
|
||||||
ImageHolder(R.drawable.profile, colorFromName(name))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
ImageHolder(R.drawable.profile, colorFromName(name))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
override fun applyImageTo(imageView: ImageView) {
|
override fun applyImageTo(imageView: ImageView) {
|
||||||
getImageHolder(imageView.context).applyTo(imageView)
|
getImageHolder(imageView.context).applyTo(imageView)
|
||||||
}
|
}
|
||||||
|
@ -6,12 +6,37 @@ package pl.szczodrzynski.edziennik.data.firebase
|
|||||||
|
|
||||||
import pl.szczodrzynski.edziennik.App
|
import pl.szczodrzynski.edziennik.App
|
||||||
import pl.szczodrzynski.edziennik.data.api.edziennik.EdziennikTask
|
import pl.szczodrzynski.edziennik.data.api.edziennik.EdziennikTask
|
||||||
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.*
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_ANNOUNCEMENTS
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_ATTENDANCES
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADES
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_CATEGORIES
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_COMMENTS
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_CLASS_FREE_DAYS
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADES
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADE_CATEGORIES
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_DESCRIPTIVE_TEXT_GRADES
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_EVENTS
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_HOMEWORK
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_LUCKY_NUMBER
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_NORMAL_GRADES
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_NORMAL_GRADE_CATEGORIES
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_NORMAL_GRADE_COMMENTS
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_NOTICES
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_POINT_GRADES
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_POINT_GRADE_CATEGORIES
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_PT_MEETINGS
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_SCHOOL_FREE_DAYS
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_TEACHER_FREE_DAYS
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_TEXT_GRADES
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_TIMETABLES
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_MESSAGES_RECEIVED
|
||||||
|
import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_SYNERGIA_HOMEWORK
|
||||||
import pl.szczodrzynski.edziennik.data.api.task.IApiTask
|
import pl.szczodrzynski.edziennik.data.api.task.IApiTask
|
||||||
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
||||||
import pl.szczodrzynski.edziennik.data.db.enums.FeatureType
|
import pl.szczodrzynski.edziennik.data.db.enums.FeatureType
|
||||||
import pl.szczodrzynski.edziennik.data.db.enums.LoginType
|
import pl.szczodrzynski.edziennik.data.db.enums.LoginType
|
||||||
import pl.szczodrzynski.edziennik.ext.getString
|
import pl.szczodrzynski.edziennik.ext.getString
|
||||||
|
import pl.szczodrzynski.edziennik.ext.getStudentData
|
||||||
|
|
||||||
class SzkolnyLibrusFirebase(val app: App, val profiles: List<Profile>, val message: FirebaseService.Message) {
|
class SzkolnyLibrusFirebase(val app: App, val profiles: List<Profile>, val message: FirebaseService.Message) {
|
||||||
/*{
|
/*{
|
||||||
|
@ -12,6 +12,7 @@ import pl.szczodrzynski.edziennik.data.db.enums.FeatureType
|
|||||||
import pl.szczodrzynski.edziennik.data.db.enums.LoginType
|
import pl.szczodrzynski.edziennik.data.db.enums.LoginType
|
||||||
import pl.szczodrzynski.edziennik.ext.getLong
|
import pl.szczodrzynski.edziennik.ext.getLong
|
||||||
import pl.szczodrzynski.edziennik.ext.getString
|
import pl.szczodrzynski.edziennik.ext.getString
|
||||||
|
import pl.szczodrzynski.edziennik.ext.getStudentData
|
||||||
|
|
||||||
class SzkolnyMobidziennikFirebase(val app: App, val profiles: List<Profile>, val message: FirebaseService.Message) {
|
class SzkolnyMobidziennikFirebase(val app: App, val profiles: List<Profile>, val message: FirebaseService.Message) {
|
||||||
/*{
|
/*{
|
||||||
|
@ -4,15 +4,15 @@
|
|||||||
|
|
||||||
package pl.szczodrzynski.edziennik.data.firebase
|
package pl.szczodrzynski.edziennik.data.firebase
|
||||||
|
|
||||||
import pl.szczodrzynski.edziennik.*
|
import pl.szczodrzynski.edziennik.App
|
||||||
import pl.szczodrzynski.edziennik.data.api.edziennik.EdziennikTask
|
import pl.szczodrzynski.edziennik.data.api.edziennik.EdziennikTask
|
||||||
import pl.szczodrzynski.edziennik.data.api.task.IApiTask
|
import pl.szczodrzynski.edziennik.data.api.task.IApiTask
|
||||||
import pl.szczodrzynski.edziennik.data.db.entity.Message
|
|
||||||
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
||||||
import pl.szczodrzynski.edziennik.data.db.enums.FeatureType
|
import pl.szczodrzynski.edziennik.data.db.enums.FeatureType
|
||||||
import pl.szczodrzynski.edziennik.data.db.enums.LoginType
|
import pl.szczodrzynski.edziennik.data.db.enums.LoginType
|
||||||
import pl.szczodrzynski.edziennik.ext.getInt
|
import pl.szczodrzynski.edziennik.ext.getInt
|
||||||
import pl.szczodrzynski.edziennik.ext.getString
|
import pl.szczodrzynski.edziennik.ext.getString
|
||||||
|
import pl.szczodrzynski.edziennik.ext.getStudentData
|
||||||
import pl.szczodrzynski.edziennik.ext.toJsonObject
|
import pl.szczodrzynski.edziennik.ext.toJsonObject
|
||||||
|
|
||||||
class SzkolnyVulcanFirebase(val app: App, val profiles: List<Profile>, val message: FirebaseService.Message) {
|
class SzkolnyVulcanFirebase(val app: App, val profiles: List<Profile>, val message: FirebaseService.Message) {
|
||||||
|
@ -6,14 +6,9 @@ package pl.szczodrzynski.edziennik.ext
|
|||||||
|
|
||||||
import android.util.LongSparseArray
|
import android.util.LongSparseArray
|
||||||
import androidx.core.util.forEach
|
import androidx.core.util.forEach
|
||||||
import com.google.android.material.datepicker.CalendarConstraints
|
|
||||||
import com.google.gson.JsonElement
|
|
||||||
import pl.szczodrzynski.edziennik.App
|
|
||||||
import pl.szczodrzynski.edziennik.config.AppData
|
|
||||||
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
||||||
import pl.szczodrzynski.edziennik.data.db.entity.Teacher
|
import pl.szczodrzynski.edziennik.data.db.entity.Teacher
|
||||||
import pl.szczodrzynski.edziennik.data.db.entity.Team
|
import pl.szczodrzynski.edziennik.data.db.entity.Team
|
||||||
import pl.szczodrzynski.edziennik.data.db.enums.FeatureType
|
|
||||||
|
|
||||||
fun List<Teacher>.byId(id: Long) = firstOrNull { it.id == id }
|
fun List<Teacher>.byId(id: Long) = firstOrNull { it.id == id }
|
||||||
fun List<Teacher>.byNameFirstLast(nameFirstLast: String) = firstOrNull { it.name + " " + it.surname == nameFirstLast }
|
fun List<Teacher>.byNameFirstLast(nameFirstLast: String) = firstOrNull { it.name + " " + it.surname == nameFirstLast }
|
||||||
@ -34,22 +29,3 @@ fun LongSparseArray<Team>.getById(id: Long): Team? {
|
|||||||
}
|
}
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
operator fun Profile.set(key: String, value: JsonElement) = this.studentData.add(key, value)
|
|
||||||
operator fun Profile.set(key: String, value: Boolean) = this.studentData.addProperty(key, value)
|
|
||||||
operator fun Profile.set(key: String, value: String?) = this.studentData.addProperty(key, value)
|
|
||||||
operator fun Profile.set(key: String, value: Number) = this.studentData.addProperty(key, value)
|
|
||||||
operator fun Profile.set(key: String, value: Char) = this.studentData.addProperty(key, value)
|
|
||||||
|
|
||||||
fun Profile.getSchoolYearConstrains(): CalendarConstraints {
|
|
||||||
return CalendarConstraints.Builder()
|
|
||||||
.setStart(dateSemester1Start.inMillisUtc)
|
|
||||||
.setEnd(dateYearEnd.inMillisUtc)
|
|
||||||
.build()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun Profile.hasFeature(featureType: FeatureType) = featureType in this.loginStoreType.features
|
|
||||||
fun Profile.hasUIFeature(featureType: FeatureType) = featureType.isUIAlwaysAvailable || hasFeature(featureType)
|
|
||||||
|
|
||||||
fun Profile.getAppData() =
|
|
||||||
if (App.profileId == this.id) App.data else AppData.get(this.loginStoreType)
|
|
||||||
|
@ -0,0 +1,127 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) Kuba Szczodrzyński 2022-10-25.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package pl.szczodrzynski.edziennik.ext
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.graphics.PorterDuff
|
||||||
|
import android.graphics.PorterDuffColorFilter
|
||||||
|
import android.graphics.drawable.Drawable
|
||||||
|
import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory
|
||||||
|
import com.google.android.material.datepicker.CalendarConstraints
|
||||||
|
import com.google.gson.JsonElement
|
||||||
|
import pl.droidsonroids.gif.GifDrawable
|
||||||
|
import pl.szczodrzynski.edziennik.App
|
||||||
|
import pl.szczodrzynski.edziennik.R
|
||||||
|
import pl.szczodrzynski.edziennik.config.AppData
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.entity.Profile
|
||||||
|
import pl.szczodrzynski.edziennik.data.db.enums.FeatureType
|
||||||
|
import pl.szczodrzynski.edziennik.utils.ProfileImageHolder
|
||||||
|
import pl.szczodrzynski.edziennik.utils.models.Date
|
||||||
|
import pl.szczodrzynski.navlib.ImageHolder
|
||||||
|
import pl.szczodrzynski.navlib.getDrawableFromRes
|
||||||
|
|
||||||
|
// TODO refactor Data* fields and make the receiver non-nullable
|
||||||
|
operator fun Profile?.set(key: String, value: JsonElement) = this?.studentData?.add(key, value)
|
||||||
|
operator fun Profile?.set(key: String, value: Boolean) = this?.studentData?.addProperty(key, value)
|
||||||
|
operator fun Profile?.set(key: String, value: String?) = this?.studentData?.addProperty(key, value)
|
||||||
|
operator fun Profile?.set(key: String, value: Number) = this?.studentData?.addProperty(key, value)
|
||||||
|
operator fun Profile?.set(key: String, value: Char) = this?.studentData?.addProperty(key, value)
|
||||||
|
|
||||||
|
fun Profile.getStudentData(key: String, defaultValue: Boolean) =
|
||||||
|
studentData.getBoolean(key) ?: defaultValue
|
||||||
|
|
||||||
|
fun Profile.getStudentData(key: String, defaultValue: String?) =
|
||||||
|
studentData.getString(key) ?: defaultValue
|
||||||
|
|
||||||
|
fun Profile.getStudentData(key: String, defaultValue: Int) =
|
||||||
|
studentData.getInt(key) ?: defaultValue
|
||||||
|
|
||||||
|
fun Profile.getStudentData(key: String, defaultValue: Long) =
|
||||||
|
studentData.getLong(key) ?: defaultValue
|
||||||
|
|
||||||
|
fun Profile.getStudentData(key: String, defaultValue: Float) =
|
||||||
|
studentData.getFloat(key) ?: defaultValue
|
||||||
|
|
||||||
|
fun Profile.getStudentData(key: String, defaultValue: Char) =
|
||||||
|
studentData.getChar(key) ?: defaultValue
|
||||||
|
|
||||||
|
fun Profile.getSemesterStart(semester: Int) =
|
||||||
|
if (semester == 1) dateSemester1Start else dateSemester2Start
|
||||||
|
|
||||||
|
fun Profile.getSemesterEnd(semester: Int) =
|
||||||
|
if (semester == 1) dateSemester2Start.clone().stepForward(0, 0, -1) else dateYearEnd
|
||||||
|
|
||||||
|
fun Profile.dateToSemester(date: Date) = if (date >= dateSemester2Start) 2 else 1
|
||||||
|
fun Profile.isBeforeYear() = false && Date.getToday() < dateSemester1Start
|
||||||
|
|
||||||
|
fun Profile.getSchoolYearConstrains(): CalendarConstraints {
|
||||||
|
return CalendarConstraints.Builder()
|
||||||
|
.setStart(dateSemester1Start.inMillisUtc)
|
||||||
|
.setEnd(dateYearEnd.inMillisUtc)
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Profile.hasFeature(featureType: FeatureType) = featureType in this.loginStoreType.features
|
||||||
|
fun Profile.hasUIFeature(featureType: FeatureType) =
|
||||||
|
featureType.isUIAlwaysAvailable || hasFeature(featureType)
|
||||||
|
|
||||||
|
fun Profile.getAppData() =
|
||||||
|
if (App.profileId == this.id) App.data else AppData.get(this.loginStoreType)
|
||||||
|
|
||||||
|
fun Profile.shouldArchive(): Boolean {
|
||||||
|
// vulcan hotfix
|
||||||
|
if (dateYearEnd.month > 6) {
|
||||||
|
dateYearEnd.month = 6
|
||||||
|
dateYearEnd.day = 30
|
||||||
|
}
|
||||||
|
// fix for when versions <4.3 synced 2020/2021 year dates to older profiles during 2020 Jun-Aug
|
||||||
|
if (dateSemester1Start.year > studentSchoolYearStart) {
|
||||||
|
val diff = dateSemester1Start.year - studentSchoolYearStart
|
||||||
|
dateSemester1Start.year -= diff
|
||||||
|
dateSemester2Start.year -= diff
|
||||||
|
dateYearEnd.year -= diff
|
||||||
|
}
|
||||||
|
return App.config.archiverEnabled && Date.getToday() >= dateYearEnd && Date.getToday().year > studentSchoolYearStart
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Profile.getDrawable(context: Context): Drawable {
|
||||||
|
if (archived) {
|
||||||
|
return context.getDrawableFromRes(R.drawable.profile_archived).also {
|
||||||
|
it.colorFilter = PorterDuffColorFilter(colorFromName(name), PorterDuff.Mode.DST_OVER)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!image.isNullOrEmpty()) {
|
||||||
|
try {
|
||||||
|
return if (image?.endsWith(".gif", true) == true) {
|
||||||
|
GifDrawable(image ?: "")
|
||||||
|
} else {
|
||||||
|
RoundedBitmapDrawableFactory.create(context.resources, image ?: "")
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return context.getDrawableFromRes(R.drawable.profile).also {
|
||||||
|
it.colorFilter = PorterDuffColorFilter(colorFromName(name), PorterDuff.Mode.DST_OVER)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Profile.getHolder(): ImageHolder {
|
||||||
|
if (archived) {
|
||||||
|
return ImageHolder(R.drawable.profile_archived, colorFromName(name))
|
||||||
|
}
|
||||||
|
|
||||||
|
return if (!image.isNullOrEmpty()) {
|
||||||
|
try {
|
||||||
|
ProfileImageHolder(image ?: "")
|
||||||
|
} catch (_: Exception) {
|
||||||
|
ImageHolder(R.drawable.profile, colorFromName(name))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ImageHolder(R.drawable.profile, colorFromName(name))
|
||||||
|
}
|
||||||
|
}
|
@ -12,8 +12,16 @@ import pl.szczodrzynski.edziennik.R
|
|||||||
import pl.szczodrzynski.edziennik.data.db.enums.FeatureType
|
import pl.szczodrzynski.edziennik.data.db.enums.FeatureType
|
||||||
import pl.szczodrzynski.edziennik.data.db.enums.LoginType
|
import pl.szczodrzynski.edziennik.data.db.enums.LoginType
|
||||||
import pl.szczodrzynski.edziennik.ext.after
|
import pl.szczodrzynski.edziennik.ext.after
|
||||||
|
import pl.szczodrzynski.edziennik.ext.getStudentData
|
||||||
import pl.szczodrzynski.edziennik.ext.hasUIFeature
|
import pl.szczodrzynski.edziennik.ext.hasUIFeature
|
||||||
import pl.szczodrzynski.edziennik.ui.dialogs.settings.*
|
import pl.szczodrzynski.edziennik.ext.set
|
||||||
|
import pl.szczodrzynski.edziennik.ui.dialogs.settings.AgendaConfigDialog
|
||||||
|
import pl.szczodrzynski.edziennik.ui.dialogs.settings.AttendanceConfigDialog
|
||||||
|
import pl.szczodrzynski.edziennik.ui.dialogs.settings.BellSyncConfigDialog
|
||||||
|
import pl.szczodrzynski.edziennik.ui.dialogs.settings.GradesConfigDialog
|
||||||
|
import pl.szczodrzynski.edziennik.ui.dialogs.settings.MessagesConfigDialog
|
||||||
|
import pl.szczodrzynski.edziennik.ui.dialogs.settings.RegistrationConfigDialog
|
||||||
|
import pl.szczodrzynski.edziennik.ui.dialogs.settings.TimetableConfigDialog
|
||||||
import pl.szczodrzynski.edziennik.ui.settings.SettingsCard
|
import pl.szczodrzynski.edziennik.ui.settings.SettingsCard
|
||||||
import pl.szczodrzynski.edziennik.ui.settings.SettingsUtil
|
import pl.szczodrzynski.edziennik.ui.settings.SettingsUtil
|
||||||
|
|
||||||
@ -185,7 +193,7 @@ class SettingsRegisterCard(util: SettingsUtil) : SettingsCard(util) {
|
|||||||
icon = CommunityMaterial.Icon.cmd_account_arrow_right_outline,
|
icon = CommunityMaterial.Icon.cmd_account_arrow_right_outline,
|
||||||
value = app.profile.getStudentData("showTeacherAbsences", true)
|
value = app.profile.getStudentData("showTeacherAbsences", true)
|
||||||
) { _, it ->
|
) { _, it ->
|
||||||
app.profile.putStudentData("showTeacherAbsences", it)
|
app.profile["showTeacherAbsences"] = it
|
||||||
app.profileSave()
|
app.profileSave()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -19,14 +19,18 @@ import androidx.viewpager.widget.ViewPager
|
|||||||
import com.google.android.material.datepicker.MaterialDatePicker
|
import com.google.android.material.datepicker.MaterialDatePicker
|
||||||
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
|
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
|
||||||
import eu.szkolny.font.SzkolnyFont
|
import eu.szkolny.font.SzkolnyFont
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.Job
|
||||||
|
import kotlinx.coroutines.async
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
import pl.szczodrzynski.edziennik.App
|
import pl.szczodrzynski.edziennik.App
|
||||||
import pl.szczodrzynski.edziennik.MainActivity
|
import pl.szczodrzynski.edziennik.MainActivity
|
||||||
import pl.szczodrzynski.edziennik.R
|
import pl.szczodrzynski.edziennik.R
|
||||||
import pl.szczodrzynski.edziennik.data.db.entity.Metadata
|
|
||||||
import pl.szczodrzynski.edziennik.data.db.enums.MetadataType
|
import pl.szczodrzynski.edziennik.data.db.enums.MetadataType
|
||||||
import pl.szczodrzynski.edziennik.databinding.FragmentTimetableV2Binding
|
import pl.szczodrzynski.edziennik.databinding.FragmentTimetableV2Binding
|
||||||
import pl.szczodrzynski.edziennik.ext.getSchoolYearConstrains
|
import pl.szczodrzynski.edziennik.ext.getSchoolYearConstrains
|
||||||
|
import pl.szczodrzynski.edziennik.ext.getStudentData
|
||||||
import pl.szczodrzynski.edziennik.ui.dialogs.settings.TimetableConfigDialog
|
import pl.szczodrzynski.edziennik.ui.dialogs.settings.TimetableConfigDialog
|
||||||
import pl.szczodrzynski.edziennik.ui.event.EventManualDialog
|
import pl.szczodrzynski.edziennik.ui.event.EventManualDialog
|
||||||
import pl.szczodrzynski.edziennik.utils.models.Date
|
import pl.szczodrzynski.edziennik.utils.models.Date
|
||||||
|
@ -202,6 +202,7 @@ public class Date implements Comparable<Date>, Noteable {
|
|||||||
return Week.getWeekDayFromDate(this);
|
return Week.getWeekDayFromDate(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
public Date stepForward(int years, int months, int days) {
|
public Date stepForward(int years, int months, int days) {
|
||||||
this.day += days;
|
this.day += days;
|
||||||
if (day <= 0) {
|
if (day <= 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user