Untitled
unknown
plain_text
3 years ago
46 kB
6
Indexable
package com.android.kepr.ui.filters
import android.database.CursorWindow
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.util.Log
import android.view.View
import android.view.View.VISIBLE
import android.widget.AdapterView
import android.widget.Spinner
import androidx.core.view.isVisible
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import androidx.sqlite.db.SimpleSQLiteQuery
import com.android.kepr.R
import com.android.kepr.data.db.AgentDatabase
import com.android.kepr.data.db.AppExecutors
import com.android.kepr.data.domain.apiresponse.*
import com.android.kepr.ui.base.BaseFragment
import com.android.kepr.ui.filters.adapters.FiltersAdapter
import com.android.kepr.ui.scanner.adapter.*
import com.android.kepr.utils.Utils
import com.google.android.material.textfield.TextInputLayout
import kotlinx.android.synthetic.main.fragment_filters.*
import java.lang.reflect.Field
import java.lang.reflect.Method
class FilterFragment : BaseFragment(R.layout.fragment_filters), FiltersAdapter.ItemClickListener {
private var isDataForAssetClass: Boolean = false
private var isDataForUpdatedBuilding: Boolean = false
private var isDataForUpdatedRoom: Boolean = false
private var spinnerFilterSelected: Boolean? = false
private var spinnerFilterName: String? = ""
private var filtersObjListing: ArrayList<FiltersObject> = ArrayList()
private lateinit var listAllBuildingData: List<BuildingDataObject>
private lateinit var listAllRoomData: List<RoomDataObject>
private var isSpinnerTouched = false
private lateinit var agentDatabase: AgentDatabase
private var roomPosition: Int? = null
private var updatedRoomPosition: Int? = null
private var updatedBuildingPosition: Int? = null
private var buildingPosition: Int? = null
private var roomDataObj: RoomDataObject? = null
private var buildingDataObj: BuildingDataObject? = null
private var updatedRoomDataObj: RoomDataObject? = null
private var updatedBuildingDataObj: BuildingDataObject? = null
private var roomNumber: String? = ""
private var roomName: String? = ""
private lateinit var buildingName: String
private lateinit var updatedBuildingName: String
private var isDataForBuilding: Boolean = false
private var isDataForRoom: Boolean = false
private lateinit var buildingId: String
private lateinit var updatedBuildingId: String
private var departmentDataObj: DepartmentDataObject? = null
private var custodiansDataObj: CustodiansDataObject? = null
private var departmentID: String? = ""
private var departmentName: String? = ""
private var custodiansID: String? = ""
private var custodiansName: String? = ""
private var isDataForCustodians: Boolean = false
private var isDataForDepartment: Boolean = false
private lateinit var listingSyncAllDepartment: List<DepartmentDataObject>
private lateinit var listingSyncAllCustodians: List<CustodiansDataObject>
private var statusObjListing: java.util.ArrayList<StatusObj> = java.util.ArrayList()
private var isSpinnerTouchedForStatus = false
private var spinnerStatusKey: String? = ""
private var spinnerStatusVal: String? = ""
private val filtersAdapter: FiltersAdapter by lazy {
FiltersAdapter(requireActivity(), filtersObjListing, this)
}
private val adapter: CustomRoomAdapter by lazy {
CustomRoomAdapter(requireActivity(), R.id.tv_spinner_item, listAllRoomData)
}
private val updatedRoomsAdapter: UpdatedRoomAdapter by lazy {
UpdatedRoomAdapter(requireActivity(), R.id.tv_spinner_item, listAllRoomData)
}
private val buildingAdapter: BuildingAdapter by lazy {
BuildingAdapter(requireActivity(), R.id.tv_spinner_item, listAllBuildingData)
}
private val updatedBuildingAdapter: UpdatedBuildingAdapter by lazy {
UpdatedBuildingAdapter(requireActivity(), R.id.tv_spinner_item, listAllBuildingData)
}
private val departmentAdapter: DepartmentAdapter by lazy {
DepartmentAdapter(requireActivity(), R.id.tv_spinner_item, listingSyncAllDepartment)
}
private val custodiansAdapter: CustodiansAdapter by lazy {
CustodiansAdapter(requireActivity(), R.id.tv_spinner_item, listingSyncAllCustodians)
}
private val verifyAssetStatusAdapter: VerifyAssetStatusAdapter by lazy {
VerifyAssetStatusAdapter(requireActivity(), statusObjListing)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
addValuesToList()
addDataToList()
increaseCursorSize()
setClickListeners()
addTextWatcherListener()
agentDatabase = AgentDatabase.getInstance(activity)
AppExecutors.getInstance().diskIO()
.execute {
try {
listAllBuildingData =
agentDatabase.daoAccess().getAllBuildingData()
activity?.runOnUiThread {
autocompletetextview.setAdapter(buildingAdapter)
}
activity?.runOnUiThread {
autocompletetextviewUpdatedBuild.setAdapter(updatedBuildingAdapter)
}
} catch (e: Exception) {
Log.e("Exception", "" + e.printStackTrace())
}
try {
listAllRoomData = agentDatabase.daoAccess().getAllRoomsData()
activity?.runOnUiThread {
autocompletetextviewRoom.setAdapter(adapter)
}
activity?.runOnUiThread {
autocompletetextviewRoomUpdated.setAdapter(updatedRoomsAdapter)
}
} catch (e: Exception) {
Log.e("Exception", "" + e.printStackTrace())
}
try {
listingSyncAllDepartment = agentDatabase.daoAccess().getAllDepartments()
activity?.runOnUiThread {
autocompletetextviewDepartments.setAdapter(departmentAdapter)
}
} catch (e: Exception) {
Log.e("Exception", "" + e.printStackTrace())
}
try {
listingSyncAllCustodians = agentDatabase.daoAccess().getAllCustodians()
activity?.runOnUiThread {
autocompletetextviewCustodians.setAdapter(custodiansAdapter)
}
} catch (e: Exception) {
Log.e("Exception", "" + e.printStackTrace())
}
}
sp_filters.setOnTouchListener { _, _ ->
sp_filters.adapter = filtersAdapter
isSpinnerTouched = true
false
}
sp_filters.adapter = filtersAdapter
sp_filters?.onItemSelectedListener =
object : AdapterView.OnItemSelectedListener {
override fun onNothingSelected(parent: AdapterView<*>?) {
}
override fun onItemSelected(
parent: AdapterView<*>?,
view: View?,
position: Int,
id: Long
) {
if (!isSpinnerTouched) return
sp_filters.setSelection(0)
val filtersObject: FiltersObject = filtersAdapter.getItem(position)
spinnerFilterName = filtersObject.filterName
spinnerFilterSelected = filtersObject.isSelected
checkAllTheMandatoryFieldsAreFilledOrNot()
}
}
}
private fun addDataToList() {
statusObjListing.clear()
statusObjListing.add(StatusObj("Please select", "Please select"))
statusObjListing.add(StatusObj(" ", "Not Accounted For"))
statusObjListing.add(StatusObj("Y", "Accounted"))
statusObjListing.add(StatusObj("NA", "Not Active"))
statusObjListing.add(StatusObj("PS", "Pending Surplus"))
statusObjListing.add(StatusObj("VNS", "Verified Not Scanned"))
statusObjListing.add(StatusObj("W/T", "Wrong Tag"))
statusObjListing.add(StatusObj("NT", "Not Tagged"))
statusObjListing.add(StatusObj("UT", "Untaggable"))
statusObjListing.add(StatusObj("OS", "Off-Site"))
}
private fun setClickListeners() {
tv_remove_building.setOnClickListener(listener)
tv_remove_room.setOnClickListener(listener)
tv_remove_accounted_for.setOnClickListener(listener)
tv_remove_custodians.setOnClickListener(listener)
tv_remove_department.setOnClickListener(listener)
tv_remove_updated_building.setOnClickListener(listener)
tv_remove_updated_room.setOnClickListener(listener)
tv_remove_asset_class.setOnClickListener(listener)
tv_action_search.setOnClickListener(listener)
autocompletetextview.setOnItemClickListener { _, _, position, _ ->
buildingDataObj = (buildingAdapter?.getItem(position) as BuildingDataObject?)!!
buildingPosition = position
Utils.hideSoftKeyboard(requireActivity(), autocompletetextview)
autocompletetextview.setText(buildingDataObj?.buildingName)
buildingName = buildingDataObj?.buildingName.toString()
buildingId = buildingDataObj?.buildingId.toString()
Log.e("building id", "" + buildingId)
autocompletetextview.setSelection(autocompletetextview.length())
isDataForBuilding = true
checkAllTheMandatoryFieldsAreFilledOrNot()
}
autocompletetextviewRoom.setOnItemClickListener { _, _, position, _ ->
roomDataObj = (adapter.getItem(position) as RoomDataObject?)!!
roomPosition = position
Utils.hideSoftKeyboard(requireActivity(), autocompletetextview)
roomName = roomDataObj?.roomName
roomNumber = roomDataObj?.roomNumber
autocompletetextviewRoom.setText("(#$roomNumber)$roomName")
autocompletetextviewRoom.setSelection(autocompletetextviewRoom.length())
isDataForRoom = true
textInputLayoutRooms.endIconMode =
TextInputLayout.END_ICON_DROPDOWN_MENU // may be set in xml
checkAllTheMandatoryFieldsAreFilledOrNot()
textInputLayoutRooms.setEndIconOnClickListener {
autocompletetextviewRoom.showDropDown()
}
}
autocompletetextviewCustodians.setOnItemClickListener { _, _, position, _ ->
custodiansDataObj = (custodiansAdapter.getItem(position) as CustodiansDataObject?)!!
Utils.hideSoftKeyboard(requireActivity(), autocompletetextviewCustodians)
custodiansName = custodiansDataObj?.name
custodiansID = custodiansDataObj?.custodianId
autocompletetextviewCustodians.setText(custodiansName)
isDataForCustodians = true
checkAllTheMandatoryFieldsAreFilledOrNot()
autocompletetextviewCustodians.setSelection(autocompletetextviewCustodians.length())
}
autocompletetextviewDepartments.setOnItemClickListener { _, _, position, _ ->
departmentDataObj = (departmentAdapter.getItem(position) as DepartmentDataObject?)!!
Utils.hideSoftKeyboard(requireActivity(), autocompletetextviewDepartments)
departmentName = departmentDataObj?.departmentName
departmentID = departmentDataObj?.departmentId
autocompletetextviewDepartments.setText(departmentName)
isDataForDepartment = true
checkAllTheMandatoryFieldsAreFilledOrNot()
autocompletetextviewDepartments.setSelection(autocompletetextviewDepartments.length())
}
autocompletetextviewUpdatedBuild.setOnItemClickListener { _, _, position, _ ->
updatedBuildingDataObj =
(updatedBuildingAdapter?.getItem(position) as BuildingDataObject?)!!
updatedBuildingPosition = position
Utils.hideSoftKeyboard(requireActivity(), autocompletetextviewUpdatedBuild)
autocompletetextviewUpdatedBuild.setText(updatedBuildingDataObj?.buildingName)
updatedBuildingName = updatedBuildingDataObj?.buildingName.toString()
updatedBuildingId = updatedBuildingDataObj?.buildingId.toString()
autocompletetextviewUpdatedBuild.setSelection(autocompletetextviewUpdatedBuild.length())
isDataForUpdatedBuilding = true
checkAllTheMandatoryFieldsAreFilledOrNot()
}
autocompletetextviewRoomUpdated.setOnItemClickListener { _, _, position, _ ->
updatedRoomDataObj = (updatedRoomsAdapter.getItem(position) as RoomDataObject?)!!
updatedRoomPosition = position
Utils.hideSoftKeyboard(requireActivity(), autocompletetextviewRoomUpdated)
roomName = updatedRoomDataObj?.roomName
roomNumber = updatedRoomDataObj?.roomNumber
autocompletetextviewRoomUpdated.setText("(#$roomNumber)$roomName")
autocompletetextviewRoomUpdated.setSelection(autocompletetextviewRoomUpdated.length())
isDataForUpdatedRoom = true
textInputLayoutUpdatedRooms.endIconMode =
TextInputLayout.END_ICON_DROPDOWN_MENU // may be set in xml
textInputLayoutUpdatedRooms.setEndIconOnClickListener {
autocompletetextviewRoomUpdated.showDropDown()
}
checkAllTheMandatoryFieldsAreFilledOrNot()
}
sp_status.setOnTouchListener { _, _ ->
isSpinnerTouchedForStatus = true
false
}
sp_status.adapter = verifyAssetStatusAdapter
sp_status?.onItemSelectedListener =
object : AdapterView.OnItemSelectedListener {
override fun onNothingSelected(parent: AdapterView<*>?) {
}
override fun onItemSelected(
parent: AdapterView<*>?,
view: View?,
position: Int,
id: Long
) {
if (!isSpinnerTouched) return
val spinnerStatus: StatusObj = verifyAssetStatusAdapter.getItem(position)
spinnerStatusKey = spinnerStatus.statusKey
spinnerStatusVal = spinnerStatus.statusValue
checkAllTheMandatoryFieldsAreFilledOrNot()
}
}
}
private fun checkAllTheMandatoryFieldsAreFilledOrNot() {
if (ll_parent_building.isVisible && isDataForBuilding) {
tv_action_search.alpha = 1f
}
if (ll_parent_room.isVisible && isDataForRoom) {
tv_action_search.alpha = 1f
}
if (ll_parent_department.isVisible && isDataForDepartment) {
tv_action_search.alpha = 1f
}
if (ll_parent_custodians.isVisible && isDataForCustodians) {
tv_action_search.alpha = 1f
}
if (ll_parent_accounted_for.isVisible && !spinnerStatusKey.equals("")) {
tv_action_search.alpha = 1f
}
if (ll_parent_asset_class.isVisible && !et_asset_class.text.toString().trim().equals("")) {
tv_action_search.alpha = 1f
}
if (ll_parent_updated_building.isVisible && isDataForUpdatedBuilding) {
tv_action_search.alpha = 1f
}
if (ll_parent_updated_room.isVisible && isDataForUpdatedRoom) {
tv_action_search.alpha = 1f
}
}
private fun addTextWatcherListener() {
autocompletetextview.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
if (s?.length!! > 0) {
isDataForBuilding = false
tv_action_search.alpha = 0.5f
checkAllTheMandatoryFieldsAreFilledOrNot()
} else {
isDataForBuilding = false
tv_action_search.alpha = 0.5f
checkAllTheMandatoryFieldsAreFilledOrNot()
}
}
})
autocompletetextviewRoom.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
if (s?.length!! > 0) {
tv_action_search.alpha = 0.5f
isDataForRoom = false
checkAllTheMandatoryFieldsAreFilledOrNot()
} else {
tv_action_search.alpha = 0.5f
isDataForRoom = false
checkAllTheMandatoryFieldsAreFilledOrNot()
}
}
})
autocompletetextviewUpdatedBuild.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
if (s?.length!! > 0) {
isDataForUpdatedBuilding = false
tv_action_search.alpha = 0.5f
checkAllTheMandatoryFieldsAreFilledOrNot()
} else {
isDataForUpdatedBuilding = false
checkAllTheMandatoryFieldsAreFilledOrNot()
tv_action_search.alpha = 0.5f
}
}
})
autocompletetextviewRoomUpdated.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
if (s?.length!! > 0) {
tv_action_search.alpha = 0.5f
isDataForUpdatedRoom = false
checkAllTheMandatoryFieldsAreFilledOrNot()
} else {
tv_action_search.alpha = 0.5f
isDataForUpdatedRoom = false
checkAllTheMandatoryFieldsAreFilledOrNot()
}
}
})
autocompletetextviewDepartments.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
isDataForDepartment = false
checkAllTheMandatoryFieldsAreFilledOrNot()
}
})
et_asset_class.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
if (s?.length!! > 0) {
tv_action_search.alpha = 0.5f
isDataForAssetClass = true
checkAllTheMandatoryFieldsAreFilledOrNot()
} else {
tv_action_search.alpha = 0.5f
isDataForAssetClass = false
checkAllTheMandatoryFieldsAreFilledOrNot()
}
}
})
autocompletetextviewCustodians.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
isDataForCustodians = false
checkAllTheMandatoryFieldsAreFilledOrNot()
}
})
}
private fun updateObjForAsset(filterType: String) {
filtersObjListing.mapIndexed { _, filtersObject ->
if (filtersObject.filterName == resources.getString(R.string.building) && filtersObject.isSelected && filterType == resources.getString(
R.string.building
)
) {
filtersObject.isSelected = false
} else if (filtersObject.filterName == resources.getString(R.string.label_room_small) && filtersObject.isSelected && filterType == resources.getString(
R.string.label_room_small
)
) {
filtersObject.isSelected = false
} else if (filtersObject.filterName == resources.getString(R.string.department_small) && filtersObject.isSelected && filterType == resources.getString(
R.string.department_small
)
) {
filtersObject.isSelected = false
} else if (filtersObject.filterName == resources.getString(R.string.custodian_small) && filtersObject.isSelected && filterType == resources.getString(
R.string.custodian_small
)
) {
filtersObject.isSelected = false
} else if (filtersObject.filterName == resources.getString(R.string.asset_class) && filtersObject.isSelected && filterType == resources.getString(
R.string.asset_class
)
) {
filtersObject.isSelected = false
} else if (filtersObject.filterName == resources.getString(R.string.accounted_for) && filtersObject.isSelected && filterType == resources.getString(
R.string.accounted_for
)
) {
filtersObject.isSelected = false
} else if (filtersObject.filterName == resources.getString(R.string.updated_building) && filtersObject.isSelected && filterType == resources.getString(
R.string.updated_building
)
) {
filtersObject.isSelected = false
} else if (filtersObject.filterName == resources.getString(R.string.updated_room) && filtersObject.isSelected && filterType == resources.getString(
R.string.updated_room
)
) {
filtersObject.isSelected = false
}
}
filtersAdapter.updateList(filtersObjListing)
}
private val listener = View.OnClickListener { view ->
when (view.id) {
R.id.tv_action_search -> {
if (tv_action_search.alpha == 1f) {
if (checkValidation()) {
fetchResultBasedOnFilters()
}
}
}
R.id.tv_remove_building -> {
ll_parent_building.isVisible = false
autocompletetextview.setText("")
mFinalBuildingId = ""
buildingDataObj = null
filtersObjListing.mapIndexed { _, filtersObject ->
if (filtersObject.filterName == resources.getString(R.string.building) && filtersObject.isSelected) {
filtersObject.isSelected = false
}
}
filtersAdapter.updateList(filtersObjListing)
checkAllTheMandatoryFieldsAreFilledOrNot()
//updateObjForAsset(resources.getString(R.string.building))
}
R.id.tv_remove_room -> {
ll_parent_room.isVisible = false
autocompletetextviewRoom.setText("")
mFinalRoomId = ""
roomDataObj = null
filtersObjListing.mapIndexed { _, filtersObject ->
if (filtersObject.filterName == resources.getString(R.string.label_room_small) && filtersObject.isSelected) {
filtersObject.isSelected = false
}
}
checkAllTheMandatoryFieldsAreFilledOrNot()
filtersAdapter.updateList(filtersObjListing)
//updateObjForAsset(resources.getString(R.string.label_room_small))
}
R.id.tv_remove_department -> {
autocompletetextviewDepartments.setText("")
ll_parent_department.isVisible = false
departmentID = ""
departmentDataObj = null
filtersObjListing.mapIndexed { _, filtersObject ->
if (filtersObject.filterName == resources.getString(R.string.department_small) && filtersObject.isSelected) {
filtersObject.isSelected = false
}
}
checkAllTheMandatoryFieldsAreFilledOrNot()
filtersAdapter.updateList(filtersObjListing)
///updateObjForAsset(resources.getString(R.string.department_small))
}
R.id.tv_remove_custodians -> {
autocompletetextviewCustodians.setText("")
ll_parent_custodians.isVisible = false
custodiansID = ""
custodiansDataObj = null
filtersObjListing.mapIndexed { _, filtersObject ->
if (filtersObject.filterName == resources.getString(R.string.custodian_small) && filtersObject.isSelected) {
filtersObject.isSelected = false
}
}
checkAllTheMandatoryFieldsAreFilledOrNot()
filtersAdapter.updateList(filtersObjListing)
// updateObjForAsset(resources.getString(R.string.custodian_small))
}
R.id.tv_remove_asset_class -> {
et_asset_class.setText("")
ll_parent_asset_class.isVisible = false
filtersObjListing.mapIndexed { _, filtersObject ->
if (filtersObject.filterName == resources.getString(R.string.asset_class) && filtersObject.isSelected) {
filtersObject.isSelected = false
}
}
filtersAdapter.updateList(filtersObjListing)
checkAllTheMandatoryFieldsAreFilledOrNot()
//updateObjForAsset(resources.getString(R.string.asset_class))
}
R.id.tv_remove_accounted_for -> {
sp_status.setSelection(0)
ll_parent_accounted_for.isVisible = false
spinnerStatusKey = ""
filtersObjListing.mapIndexed { _, filtersObject ->
if (filtersObject.filterName == resources.getString(R.string.accounted_for) && filtersObject.isSelected) {
filtersObject.isSelected = false
}
}
filtersAdapter.updateList(filtersObjListing)
checkAllTheMandatoryFieldsAreFilledOrNot()
// updateObjForAsset(resources.getString(R.string.accounted_for))
}
R.id.tv_remove_updated_building -> {
autocompletetextviewUpdatedBuild.setText("")
ll_parent_updated_building.isVisible = false
mFinalUpdatedBuildingId = ""
updatedBuildingDataObj = null
filtersObjListing.mapIndexed { _, filtersObject ->
if (filtersObject.filterName == resources.getString(R.string.updated_building) && filtersObject.isSelected) {
filtersObject.isSelected = false
}
}
filtersAdapter.updateList(filtersObjListing)
checkAllTheMandatoryFieldsAreFilledOrNot()
//updateObjForAsset(resources.getString(R.string.updated_building))
}
R.id.tv_remove_updated_room -> {
autocompletetextviewRoomUpdated.setText("")
ll_parent_updated_room.isVisible = false
mFinalUpdatedRoomId = ""
updatedRoomDataObj = null
filtersObjListing.mapIndexed { _, filtersObject ->
if (filtersObject.filterName == resources.getString(R.string.updated_room) && filtersObject.isSelected) {
filtersObject.isSelected = false
}
}
filtersAdapter.updateList(filtersObjListing)
checkAllTheMandatoryFieldsAreFilledOrNot()
//updateObjForAsset(resources.getString(R.string.updated_room))
}
}
}
private lateinit var dataList: List<AssetDataObject>
private fun checkValidation(): Boolean {
if (buildingDataObj != null) {
mFinalBuildingId = if (buildingDataObj?.buildingId == null) {
buildingDataObj?.buildingId.toString().replace("null", "")
} else {
buildingDataObj?.buildingId.toString()
}
}
if (roomDataObj != null) {
mFinalRoomId = if (roomDataObj?.roomId == null) {
roomDataObj?.roomId.toString().replace("null", "")
} else {
roomDataObj?.roomId.toString()
}
}
if (updatedBuildingDataObj != null) {
mFinalUpdatedBuildingId = if (updatedBuildingDataObj?.buildingId == null) {
updatedBuildingDataObj?.buildingId.toString().replace("null", "")
} else {
updatedBuildingDataObj?.buildingId.toString()
}
}
if (updatedRoomDataObj != null) {
mFinalUpdatedRoomId = if (updatedRoomDataObj?.roomId == null) {
updatedRoomDataObj?.roomId.toString().replace("null", "")
} else {
updatedRoomDataObj?.roomId.toString()
}
}
if (ll_parent_building.visibility == VISIBLE && mFinalBuildingId == "") {
Utils.showToastForFragments(requireActivity(), "Please select building")
tv_action_search.alpha = 0.5f
return false
} else if (ll_parent_room.visibility == VISIBLE && mFinalRoomId == "") {
Utils.showToastForFragments(requireActivity(), "Please select room")
tv_action_search.alpha = 0.5f
return false
} else if (ll_parent_department.visibility == VISIBLE && departmentID == "") {
Utils.showToastForFragments(requireActivity(), "Please select department")
tv_action_search.alpha = 0.5f
return false
} else if (ll_parent_custodians.visibility == VISIBLE && custodiansID == "") {
Utils.showToastForFragments(requireActivity(), "Please select custodian")
tv_action_search.alpha = 0.5f
return false
} else if (ll_parent_asset_class.visibility == VISIBLE && et_asset_class.text.toString()
.trim() == ""
) {
Utils.showToastForFragments(requireActivity(), "Please enter asset class")
tv_action_search.alpha = 0.5f
return false
} else if (ll_parent_accounted_for.visibility == VISIBLE && spinnerStatusKey == "Please select") {
Utils.showToastForFragments(requireActivity(), "Please select accounted for")
tv_action_search.alpha = 0.5f
return false
} else if (ll_parent_updated_building.visibility == VISIBLE && mFinalUpdatedBuildingId == "") {
Utils.showToastForFragments(requireActivity(), "Please select updated building")
tv_action_search.alpha = 0.5f
return false
} else if (ll_parent_updated_room.visibility == VISIBLE && mFinalUpdatedRoomId == "") {
Utils.showToastForFragments(requireActivity(), "Please select updated room")
tv_action_search.alpha = 0.5f
return false
} /*else {
tv_action_search.alpha = 0.5f
return false
}*/
return true
}
var mFinalBuildingId: String = ""
var mFinalRoomId: String = ""
var mFinalUpdatedBuildingId: String = ""
var mFinalUpdatedRoomId: String = ""
private fun fetchResultBasedOnFilters() {
if (buildingDataObj != null) {
mFinalBuildingId = if (buildingDataObj?.buildingId == null) {
buildingDataObj?.buildingId.toString().replace("null", "")
} else {
buildingDataObj?.buildingId.toString()
}
}
if (roomDataObj != null) {
mFinalRoomId = if (roomDataObj?.roomId == null) {
roomDataObj?.roomId.toString().replace("null", "")
} else {
roomDataObj?.roomId.toString()
}
}
if (updatedBuildingDataObj != null) {
mFinalUpdatedBuildingId = if (updatedBuildingDataObj?.buildingId == null) {
updatedBuildingDataObj?.buildingId.toString().replace("null", "")
} else {
updatedBuildingDataObj?.buildingId.toString()
}
}
if (updatedRoomDataObj != null) {
mFinalUpdatedRoomId = if (updatedRoomDataObj?.roomId == null) {
updatedRoomDataObj?.roomId.toString().replace("null", "")
} else {
updatedRoomDataObj?.roomId.toString()
}
}
activity?.runOnUiThread {
progressBar.isVisible = true
}
AppExecutors.getInstance().diskIO()
.execute {
try {
// Query string
var queryString = String()
val args = ArrayList<String>()
var containsCondition = false
queryString += "SELECT * FROM all_assets WHERE 1"
// Optional parts are added to query string and to args upon here
if (mFinalBuildingId.isNotEmpty()) {
queryString += " AND originalBuildingId = ? "
args.add(mFinalBuildingId)
containsCondition = true
}
if (mFinalRoomId.isNotEmpty()) {
if (containsCondition) {
queryString += " AND"
} else {
queryString += " AND"
containsCondition = true
}
queryString += " originalRoomId = ? "
args.add(mFinalRoomId)
}
if (departmentID.toString().isNotEmpty()) {
if (containsCondition) {
queryString += " AND"
} else {
queryString += " AND"
containsCondition = true
}
queryString += " departmentId = ? "
args.add(departmentID.toString())
}
if (custodiansID.toString().isNotEmpty()) {
if (containsCondition) {
queryString += " AND"
} else {
queryString += " AND"
containsCondition = true
}
queryString += " custodianId = ? "
args.add(departmentID.toString())
}
if (et_asset_class.text.toString().trim().isNotEmpty()) {
if (containsCondition) {
queryString += " AND"
} else {
queryString += " AND"
containsCondition = true
}
queryString += " assetClass = ? "
args.add(et_asset_class.text.toString().trim())
}
if (spinnerStatusKey?.isNotEmpty()!!) {
if (containsCondition) {
queryString += " AND"
} else {
queryString += " AND"
containsCondition = true
}
queryString += " accountedForStatus = ? "
args.add(spinnerStatusKey!!)
}
if (mFinalUpdatedBuildingId.isNotEmpty()) {
if (containsCondition) {
queryString += " AND"
} else {
queryString += " AND"
containsCondition = true
}
queryString += " updatedBuildingId = ? "
args.add(departmentID.toString())
}
if (mFinalUpdatedRoomId.isNotEmpty()) {
if (containsCondition) {
queryString += " AND"
} else {
queryString += " AND"
containsCondition = true
}
queryString += " updatedRoomId = ? "
args.add(departmentID.toString())
}
// End of query string
Log.d("tags:", "" + queryString)
Log.d("args:", "" + args.toString())
Log.d("args:", "" + args.toArray())
val query = SimpleSQLiteQuery(queryString, args.toArray())
Log.d("query:", "" + query.sql.toString())
dataList =
AgentDatabase.getInstance(activity).daoAccess()
.getAssetsAccordingToFilter(query)
Log.d("dataList", "dataList" + dataList.size)
Log.d(
"dataList", "dataList" + "mFinalRoomId " + mFinalRoomId +
"mFinalBuildingId " + mFinalBuildingId + "mFinalDepartmentId " + departmentID.toString() + "mFinalCustodians " + custodiansID.toString() + "mSpinnerStiatusKeyId " + spinnerStatusKey + "mFinalUpdatedBuildId " + mFinalUpdatedBuildingId + "mFinalUpdatedRoomId " + mFinalUpdatedRoomId
+ " asset class " + et_asset_class.text.toString().trim()
)
if (dataList.isNotEmpty()) {
activity?.runOnUiThread(Runnable {
progressBar.isVisible = false
AgentDatabase.getInstance(requireActivity()).daoAccess().makeNullItems()
parentFragmentManager.doTransaction {
add(
R.id.fl_dashboard,
FilteredAssetsFragment.newInstance(dataList)
)
}
})
} else {
activity?.runOnUiThread {
progressBar.isVisible = false
Utils.showToastForFragments(
requireActivity(),
"No Assets found, please choose different filter"
)
}
}
} catch (e: Exception) {
e.printStackTrace()
}
}
}
private fun increaseCursorSize() {
try {
val field: Field = CursorWindow::class.java.getDeclaredField("sCursorWindowSize")
field.isAccessible = true
field.set(null, 500 * 1024 * 1024) //the 100MB is the new size
} catch (e: java.lang.Exception) {
e.printStackTrace()
}
}
fun FragmentManager.doTransaction(
func: FragmentTransaction.() ->
FragmentTransaction
) {
beginTransaction().func().addToBackStack(null).commit()
}
private fun addValuesToList() {
filtersObjListing.add(FiltersObject("Please select", false))
filtersObjListing.add(FiltersObject("Building", false))
filtersObjListing.add(FiltersObject("Room", false))
filtersObjListing.add(FiltersObject("Department", false))
filtersObjListing.add(FiltersObject("Custodian", false))
filtersObjListing.add(FiltersObject("Asset Class", false))
filtersObjListing.add(FiltersObject("Accounted For", false))
filtersObjListing.add(FiltersObject("Updated Building", false))
filtersObjListing.add(FiltersObject("Updated Room", false))
}
//2
companion object {
fun newInstance(): FilterFragment {
return FilterFragment()
}
}
private fun hideSpinnerDropDown(spinner: Spinner?) {
try {
val method: Method = Spinner::class.java.getDeclaredMethod("onDetachedFromWindow")
method.isAccessible = true
method.invoke(spinner)
} catch (e: Exception) {
e.printStackTrace()
}
}
override fun onItemClick(position: Int, filtersObject: FiltersObject) {
hideSpinnerDropDown(sp_filters)
checkAllTheMandatoryFieldsAreFilledOrNot()
if (filtersObject.isSelected) {
when (filtersObject.filterName) {
activity?.resources?.getString(R.string.building) -> {
ll_parent_building.isVisible = true
}
activity?.resources?.getString(R.string.label_room_small) -> {
ll_parent_room.isVisible = true
}
activity?.resources?.getString(R.string.department_small) -> {
ll_parent_department.isVisible = true
}
activity?.resources?.getString(R.string.custodian_small) -> {
ll_parent_custodians.isVisible = true
}
activity?.resources?.getString(R.string.asset_class) -> {
ll_parent_asset_class.isVisible = true
}
activity?.resources?.getString(R.string.accounted_for) -> {
ll_parent_accounted_for.isVisible = true
}
activity?.resources?.getString(R.string.updated_building) -> {
ll_parent_updated_building.isVisible = true
}
activity?.resources?.getString(R.string.updated_room) -> {
ll_parent_updated_room.isVisible = true
}
}
} else {
when (filtersObject.filterName) {
activity?.resources?.getString(R.string.building) -> {
ll_parent_building.isVisible = false
}
activity?.resources?.getString(R.string.label_room_small) -> {
ll_parent_room.isVisible = false
}
activity?.resources?.getString(R.string.department_small) -> {
ll_parent_department.isVisible = false
}
activity?.resources?.getString(R.string.custodian_small) -> {
ll_parent_custodians.isVisible = false
}
activity?.resources?.getString(R.string.asset_class) -> {
ll_parent_asset_class.isVisible = false
}
activity?.resources?.getString(R.string.accounted_for) -> {
ll_parent_accounted_for.isVisible = false
}
activity?.resources?.getString(R.string.updated_building) -> {
ll_parent_updated_building.isVisible = false
}
activity?.resources?.getString(R.string.updated_room) -> {
ll_parent_updated_room.isVisible = false
}
}
}
}
}Editor is loading...