Untitled
unknown
plain_text
2 years ago
46 kB
3
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...