Ya casiii
This commit is contained in:
94
app/src/main/java/com/example/basurapp/AddAddressActivity.kt
Normal file
94
app/src/main/java/com/example/basurapp/AddAddressActivity.kt
Normal file
@@ -0,0 +1,94 @@
|
||||
package com.example.basurapp
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.ArrayAdapter
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.example.basurapp.api.ApiClient
|
||||
import com.example.basurapp.databinding.ActivityAddAddressBinding
|
||||
import com.example.basurapp.models.Address
|
||||
import com.example.basurapp.models.ColoniaRuta
|
||||
import com.google.firebase.auth.FirebaseAuth
|
||||
import com.google.firebase.firestore.FirebaseFirestore
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class AddAddressActivity : AppCompatActivity() {
|
||||
|
||||
private lateinit var binding: ActivityAddAddressBinding
|
||||
private val auth: FirebaseAuth by lazy { FirebaseAuth.getInstance() }
|
||||
private val db: FirebaseFirestore by lazy { FirebaseFirestore.getInstance() }
|
||||
|
||||
private var coloniasList: List<ColoniaRuta> = emptyList()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = ActivityAddAddressBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
loadColonias()
|
||||
|
||||
binding.btnSave.setOnClickListener {
|
||||
saveAddress()
|
||||
}
|
||||
}
|
||||
|
||||
private fun loadColonias() {
|
||||
binding.progressBar.visibility = View.VISIBLE
|
||||
lifecycleScope.launch {
|
||||
try {
|
||||
coloniasList = ApiClient.api.getColoniasRutas()
|
||||
val names = coloniasList.map { it.colonia }
|
||||
val adapter = ArrayAdapter(this@AddAddressActivity, android.R.layout.simple_dropdown_item_1line, names)
|
||||
binding.actvColonia.setAdapter(adapter)
|
||||
binding.progressBar.visibility = View.GONE
|
||||
} catch (e: Exception) {
|
||||
binding.progressBar.visibility = View.GONE
|
||||
Toast.makeText(this@AddAddressActivity, "Error cargando colonias: ${e.localizedMessage}", Toast.LENGTH_LONG).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun saveAddress() {
|
||||
val street = binding.etStreet.text?.toString()?.trim().orEmpty()
|
||||
val number = binding.etNumber.text?.toString()?.trim().orEmpty()
|
||||
val coloniaSelected = binding.actvColonia.text?.toString()?.trim().orEmpty()
|
||||
val reference = binding.etReference.text?.toString()?.trim().orEmpty()
|
||||
|
||||
if (street.isEmpty() || number.isEmpty() || coloniaSelected.isEmpty()) {
|
||||
Toast.makeText(this, "Completa calle, número y colonia", Toast.LENGTH_SHORT).show()
|
||||
return
|
||||
}
|
||||
|
||||
// Validar que la colonia exista en el catálogo
|
||||
val validColonia = coloniasList.any { it.colonia.equals(coloniaSelected, ignoreCase = true) }
|
||||
if (!validColonia) {
|
||||
Toast.makeText(this, "Selecciona una colonia válida de la lista", Toast.LENGTH_SHORT).show()
|
||||
return
|
||||
}
|
||||
|
||||
val uid = auth.currentUser?.uid ?: return
|
||||
val addressId = db.collection("addresses").document().id
|
||||
val address = Address(
|
||||
id = addressId,
|
||||
userId = uid,
|
||||
street = street,
|
||||
number = number,
|
||||
neighborhood = coloniaSelected,
|
||||
city = "Celaya",
|
||||
reference = reference
|
||||
)
|
||||
|
||||
binding.btnSave.isEnabled = false
|
||||
db.collection("addresses").document(addressId).set(address)
|
||||
.addOnSuccessListener {
|
||||
Toast.makeText(this, "Dirección guardada", Toast.LENGTH_SHORT).show()
|
||||
finish()
|
||||
}
|
||||
.addOnFailureListener { e ->
|
||||
binding.btnSave.isEnabled = true
|
||||
Toast.makeText(this, e.localizedMessage ?: "Error", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user