diff --git a/app/src/main/java/com/example/hpostesting/data/DataHolder.kt b/app/src/main/java/com/example/hpostesting/data/DataHolder.kt index 113ea46..c7703e7 100644 --- a/app/src/main/java/com/example/hpostesting/data/DataHolder.kt +++ b/app/src/main/java/com/example/hpostesting/data/DataHolder.kt @@ -22,7 +22,7 @@ object DataHolder { val wavelengthToPixelArray = ArrayList() val intensityReferenceArray = ArrayList() var selectedTest: UserData? = null - var HomocubeTestType: HemoCubeTestData? = null + var hemoCubeTestData: HemoCubeTestData? = null var kitSerial: String = "" diff --git a/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt b/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt index 455b270..6ff4c8e 100644 --- a/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt +++ b/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt @@ -10,8 +10,10 @@ data class HemoCubeTestData( var name: String = "", var birthYear: String = "", var userImageURL: String = "", + var location: UserData.Location? = null, var createdBy: String? = "", var reportUploadTime: String? = "", + var testType: String? = "HEMOCUBE", var testTime: String? = "", var testStatus: Boolean? = false, var mobileId: String = "", @@ -19,6 +21,7 @@ data class HemoCubeTestData( var kitSerial: String = "", var reportPath: String = "", var resultRatio: Double? = null, + var resultData: String = "", var led1: Double? = null, var led2: Double? = null ) \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/data/model/patient/UserData.kt b/app/src/main/java/com/example/hpostesting/data/model/patient/UserData.kt index b149b9e..a54ef0e 100644 --- a/app/src/main/java/com/example/hpostesting/data/model/patient/UserData.kt +++ b/app/src/main/java/com/example/hpostesting/data/model/patient/UserData.kt @@ -36,3 +36,20 @@ data class UserData( var longitude: Double? = null ) } + +fun UserData.toHemoCubeTestData() = HemoCubeTestData( + _id = _id, + name = name, + birthYear = birthYear, + userImageURL = userImageURL, + location = location, + createdBy = createdBy, + reportUploadTime = reportUploadTime, + testTime = testTime, + testStatus = testStatus, + mobileId = mobileId, + deviceSerialNumber = deviceSerialNumber, + kitSerial = kitSerial, + reportPath = reportPath, + resultRatio = resultRatio, +) diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt index f48a973..65dbfe8 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt @@ -1,8 +1,6 @@ package com.example.hpostesting.presentation.hemocube -import android.app.PendingIntent import android.content.Context -import android.content.Intent import android.content.SharedPreferences import android.hardware.usb.UsbDevice import android.hardware.usb.UsbDeviceConnection @@ -14,10 +12,10 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import android.widget.Toast -import androidx.lifecycle.ViewModel; import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import com.example.hpostesting.data.DataHolder +import com.example.hpostesting.data.model.patient.toHemoCubeTestData import com.example.hpostesting.presentation.UsbServiceListener import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.FragmentHemoCubeReferenceBinding @@ -25,7 +23,8 @@ import `in`.sminnovations.hpostesting.databinding.FragmentHemoCubeReferenceBindi class HemoCubeFragment : Fragment() { private var testTime: String? = null - private var resultRatio: String? = null + private var resultRatio: String? = "" + private var resultData: String = "" private var kitSerial: String? = null private lateinit var binding: FragmentHemoCubeReferenceBinding private val hemoCubeViewModel: HemoCubeViewModel by activityViewModels() @@ -68,8 +67,8 @@ class HemoCubeFragment : Fragment() { hemoCubeViewModel.networkStatusLiveData.observe(viewLifecycleOwner) { isNetworkAvailable -> apply { - kitSerial = DataHolder.HomocubeTestType?.kitSerial - testTime = DataHolder.HomocubeTestType?.testTime + kitSerial = DataHolder.hemoCubeTestData?.kitSerial + testTime = DataHolder.hemoCubeTestData?.testTime isOnline = isNetworkAvailable } } @@ -83,33 +82,35 @@ class HemoCubeFragment : Fragment() { binding.btnSubmit.setOnClickListener { - Toast.makeText( - requireContext(), - "Test Data uploaded", - Toast.LENGTH_SHORT - ).show() - Log.e("Testdb", "success") + binding.progressBar.visibility = View.VISIBLE + + if (DataHolder.hemoCubeTestData == null) { + DataHolder.hemoCubeTestData = DataHolder.selectedTest?.toHemoCubeTestData() + } + if (isOnline) { resultRatio?.let { ratio -> Log.e("Testdb", "upload") - hemoCubeViewModel.uploadHemocubeResultToDatabase( + hemoCubeViewModel.uploadHemoCubeResultToDatabase( requireContext(), isOnline, true, kitSerial, ratio, + resultData, testTime ) } binding.progressBar.visibility = View.VISIBLE } else { resultRatio?.let { ratio -> - hemoCubeViewModel.uploadHemocubeResultToDatabase( + hemoCubeViewModel.uploadHemoCubeResultToDatabase( requireContext(), isOnline, true, kitSerial, ratio, + resultData, testTime ) } @@ -164,7 +165,6 @@ class HemoCubeFragment : Fragment() { Log.d("greenBuffer", blueBIntensity.toString()) } - private fun displayValuesOnTextView(parsedData: Map) { val fullReadOutput = StringBuilder() val textView: TextView = requireView().findViewById(R.id.tv_subtitle4) @@ -179,6 +179,10 @@ class HemoCubeFragment : Fragment() { } private fun fetchHemoCubeResult() { + if (DataHolder.hemoCubeTestData == null) { + DataHolder.hemoCubeTestData = DataHolder.selectedTest?.toHemoCubeTestData() + } + hemoCubeViewModel.progressBar.postValue(true) val fullReadOutput = StringBuilder() (activity as HemocubeActivity).mService.eventDrivenWriteHemoCube(object : @@ -189,8 +193,10 @@ class HemoCubeFragment : Fragment() { fullReadOutput.append(stringData) binding.tvSubtitle4.text = fullReadOutput - resultRatio = fullReadOutput.toString() - val data = parseUsbData(fullReadOutput.toString()) + resultData = fullReadOutput.toString() + DataHolder.hemoCubeTestData?.resultData = resultData + resultRatio = "" //TODO + val pareseddata = parseUsbData(fullReadOutput.toString()) Log.d("Result", data.toString()) hemoCubeViewModel.progressBar.postValue(false) } @@ -202,7 +208,6 @@ class HemoCubeFragment : Fragment() { }) } - private fun fetchHemoCubeResultNew() { hemoCubeViewModel.progressBar.postValue(true) val fullReadOutput = StringBuilder() @@ -239,10 +244,4 @@ class HemoCubeFragment : Fragment() { } }) } - - - - - - } diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt index 0fbbbb7..eb8118c 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt @@ -2,8 +2,6 @@ package com.example.hpostesting.presentation.hemocube import android.content.Context import android.util.Log -import android.widget.Toast -import androidx.core.content.ContentProviderCompat.requireContext import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel @@ -12,6 +10,7 @@ import com.example.hpostesting.data.DataHolder import com.example.hpostesting.data.NetworkStatusLiveData import com.example.hpostesting.data.dao.HemoCubeDao import com.example.hpostesting.data.model.Response +import com.example.hpostesting.data.model.patient.toHemoCubeTestData import com.example.hpostesting.data.repository.DatabaseRepository import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch @@ -19,6 +18,7 @@ import java.text.SimpleDateFormat import java.util.Calendar import java.util.Locale import javax.inject.Inject + @HiltViewModel class HemoCubeViewModel @Inject constructor( private val hemoCubeDao: HemoCubeDao, @@ -27,15 +27,15 @@ class HemoCubeViewModel @Inject constructor( ) : ViewModel() { var isServiceConnected = false val progressBar = MutableLiveData(false) - val testDetails = DataHolder.HomocubeTestType - val testDetailuser = DataHolder.selectedTest + val testDetails = DataHolder.selectedTest?.toHemoCubeTestData() private val _networkStatusLiveData = NetworkStatusLiveData(context) val networkStatusLiveData: LiveData get() = _networkStatusLiveData val fireBaseUpload = MutableLiveData() - fun uploadHemocubeResultToDatabase( + fun uploadHemoCubeResultToDatabase( context: Context, isOnline: Boolean, testStatus: Boolean, kitSerial: String?, resultRatio: String, + resultData: String, testTime: String? ) = viewModelScope.launch { if (kitSerial != null) { @@ -63,7 +63,8 @@ class HemoCubeViewModel @Inject constructor( private fun addResultTestToDb() { testDetails?.resultRatio = DataHolder.hemocubeResult - testDetailuser?.location = DataHolder.location + testDetails?.resultData = DataHolder.hemoCubeTestData?.resultData.toString() + testDetails?.location = DataHolder.location testDetails?.testTime = SimpleDateFormat( "yyyy-MM-dd HH:mm:ss", Locale.getDefault() ).format(Calendar.getInstance().time)