@@ -30,6 +30,8 @@ import org.ole.planet.myplanet.model.RealmHealthExamination
3030import org.ole.planet.myplanet.model.RealmMyHealth
3131import org.ole.planet.myplanet.model.RealmMyHealth.RealmMyHealthProfile
3232import org.ole.planet.myplanet.model.RealmUser
33+ import org.ole.planet.myplanet.repository.HealthRepository
34+ import org.ole.planet.myplanet.repository.UserRepository
3335import org.ole.planet.myplanet.services.UserSessionManager
3436import org.ole.planet.myplanet.utils.AndroidDecrypter.Companion.decrypt
3537import org.ole.planet.myplanet.utils.AndroidDecrypter.Companion.encrypt
@@ -50,6 +52,10 @@ class AddExaminationActivity : AppCompatActivity(), CompoundButton.OnCheckedChan
5052 lateinit var databaseService: DatabaseService
5153 @Inject
5254 lateinit var userSessionManager: UserSessionManager
55+ @Inject
56+ lateinit var healthRepository: HealthRepository
57+ @Inject
58+ lateinit var userRepository: UserRepository
5359 private lateinit var binding: ActivityAddExaminationBinding
5460 lateinit var mRealm: Realm
5561 var userId: String? = null
@@ -87,38 +93,9 @@ class AddExaminationActivity : AppCompatActivity(), CompoundButton.OnCheckedChan
8793 mapConditions = HashMap ()
8894 mRealm = databaseService.createManagedRealmInstance()
8995 userId = intent.getStringExtra(" userId" )
90- pojo = mRealm.where(RealmHealthExamination ::class .java).equalTo(" _id" , userId).findFirst()
91- if (pojo == null ) {
92- pojo = mRealm.where(RealmHealthExamination ::class .java).equalTo(" userId" , userId).findFirst()
93- }
94- user = mRealm.where(RealmUser ::class .java).equalTo(" id" , userId).findFirst()
95- if (user != null && (user?.key == null || user?.iv == null )) {
96- val startedTransaction = ! mRealm.isInTransaction
97- if (startedTransaction) {
98- mRealm.beginTransaction()
99- }
100- try {
101- user?.key = generateKey()
102- user?.iv = generateIv()
103- if (startedTransaction) {
104- mRealm.commitTransaction()
105- }
106- } catch (e: Exception ) {
107- if (startedTransaction && mRealm.isInTransaction) {
108- mRealm.cancelTransaction()
109- }
110- throw e
111- }
112- }
113- if (pojo != null && ! TextUtils .isEmpty(pojo?.data)) {
114- health = JsonUtils .gson.fromJson(decrypt(pojo?.data, user?.key, user?.iv), RealmMyHealth ::class .java)
115- }
116- if (health == null ) {
117- initHealth()
118- }
119- initExamination()
120- validateFields()
121- findViewById<View >(R .id.btn_save).setOnClickListener {
96+ val btnSave = findViewById<View >(R .id.btn_save)
97+ btnSave.isEnabled = false
98+ btnSave.setOnClickListener {
12299 if (! allowSubmission){
123100 scrollToView(binding.etBloodpressure)
124101 }
@@ -127,6 +104,33 @@ class AddExaminationActivity : AppCompatActivity(), CompoundButton.OnCheckedChan
127104 }
128105 saveData()
129106 }
107+
108+ lifecycleScope.launch {
109+ if (userId != null ) {
110+ val (u, p) = healthRepository.getHealthEntry(userId!! )
111+ user = u
112+ pojo = p
113+
114+ val updatedUser = userRepository.ensureUserSecurityKeys(userId!! )
115+ if (updatedUser != null ) {
116+ user = updatedUser
117+ }
118+ }
119+
120+ if (pojo != null && ! TextUtils .isEmpty(pojo?.data)) {
121+ try {
122+ health = JsonUtils .gson.fromJson(decrypt(pojo?.data, user?.key, user?.iv), RealmMyHealth ::class .java)
123+ } catch (e: Exception ) {
124+ e.printStackTrace()
125+ }
126+ }
127+ if (health == null ) {
128+ initHealth()
129+ }
130+ initExamination()
131+ validateFields()
132+ btnSave.isEnabled = true
133+ }
130134 }
131135
132136 private fun initExamination () {
@@ -280,7 +284,8 @@ class AddExaminationActivity : AppCompatActivity(), CompoundButton.OnCheckedChan
280284 createPojo()
281285 if (examination == null ) {
282286 val odUserId = generateIv()
283- examination = mRealm.createObject(RealmHealthExamination ::class .java, odUserId)
287+ examination = RealmHealthExamination ()
288+ examination?._id = odUserId
284289 examination?.userId = odUserId
285290 }
286291 examination?.profileId = health?.userKey
@@ -321,6 +326,10 @@ class AddExaminationActivity : AppCompatActivity(), CompoundButton.OnCheckedChan
321326 } catch (e: Exception ) {
322327 e.printStackTrace()
323328 }
329+
330+ pojo?.let { mRealm.copyToRealmOrUpdate(it) }
331+ examination?.let { mRealm.copyToRealmOrUpdate(it) }
332+
324333 if (startedTransaction) {
325334 mRealm.commitTransaction()
326335 }
@@ -411,7 +420,8 @@ class AddExaminationActivity : AppCompatActivity(), CompoundButton.OnCheckedChan
411420 private fun createPojo () {
412421 try {
413422 if (pojo == null ) {
414- pojo = mRealm.createObject(RealmHealthExamination ::class .java, userId)
423+ pojo = RealmHealthExamination ()
424+ pojo?._id = userId
415425 pojo?.userId = user?._id
416426 }
417427 health?.lastExamination = Date ().time
0 commit comments