Untitled
unknown
plain_text
3 years ago
45 kB
5
Indexable
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...