Commit 3805ca52 authored by iptriana's avatar iptriana
Browse files

Issuses correct

parent dccd8ef4
......@@ -9,23 +9,23 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.PesquisaVirtual">
<activity android:name=".AddTest"></activity>
<activity android:name=".ui.diagnose.AddTestActivity" />
<activity
android:name=".User"
android:name=".ui.user.UserActivity"
android:label="Usuario"
android:parentActivityName=".TestListActivity" />
<activity android:name=".TestListActivity" />
android:parentActivityName=".MainActivity" />
<activity android:name=".MainActivity" />
<activity android:name=".ui.change_person.ListPersonActivity" />
<activity
android:name=".AddUserActivity"
android:label="Añade a otra persona"
android:parentActivityName=".MainActivity" />
android:name=".ui.add_person.AddPersonActivity"
android:label="Añade a una persona"
/>
<activity
android:name=".Edit"
android:name=".ui.edit.Edit"
android:label="Editar"
android:parentActivityName=".User" />
android:parentActivityName=".ui.user.UserActivity" />
<activity
android:name=".Splash"
android:name=".ui.splash.SplashActivity"
android:theme="@style/Theme.PesquisaVirtual.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
......
package cu.iptriana.pesquisavirtual
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.google.android.material.snackbar.Snackbar
import com.google.android.material.navigation.NavigationView
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
import androidx.drawerlayout.widget.DrawerLayout
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.navigateUp
import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController
import androidx.drawerlayout.widget.DrawerLayout
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.PopupMenu
import androidx.appcompat.widget.Toolbar
import androidx.lifecycle.lifecycleScope
import cu.iptriana.pesquisavirtual.data.AplicationDB
import cu.iptriana.pesquisavirtual.data.Person
import kotlinx.coroutines.launch
import com.google.android.material.navigation.NavigationView
import cu.iptriana.pesquisavirtual.ui.user.UserActivity
class TestListActivity : AppCompatActivity() {
class MainActivity : AppCompatActivity() {
private lateinit var appBarConfiguration: AppBarConfiguration
private lateinit var allEntrys: Map<String, *>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_test_list)
setContentView(R.layout.activity_main)
val toolbar: Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
......@@ -45,10 +37,6 @@ class TestListActivity : AppCompatActivity() {
)
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
val pref = getSharedPreferences("MyPrefer", Context.MODE_PRIVATE)
if (pref != null) {
allEntrys = pref.all
}
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
......@@ -59,29 +47,11 @@ class TestListActivity : AppCompatActivity() {
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == R.id.action_settings){
startActivity(Intent(this, User::class.java))
startActivity(Intent(this, UserActivity::class.java))
}
return false
}
private fun getPersonId(allEntrys: Map<String, *>) : Int{
var id: Int = 0
for (entry in allEntrys){
if (entry.key == "id") id = entry.value as Int
break
}
return id
}
private fun getPersonById(id:Int): Person{
var person: Person? = null
lifecycleScope.launch {
val db = AplicationDB.getAplicationDB(this@TestListActivity)
person = db?.personDao()?.getById(id)!!
}
return person!!
}
override fun onSupportNavigateUp(): Boolean {
val navController = findNavController(R.id.nav_host_fragment)
return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
......
......@@ -13,20 +13,19 @@ abstract class AplicationDB: RoomDatabase() {
abstract fun personDao():PersonDao
abstract fun testDao():TestDao
companion object{
var INTANCE: AplicationDB? = null
fun getAplicationDB(context: Context): AplicationDB? {
if (INTANCE == null){
synchronized(AplicationDB::class){
INTANCE = Room.databaseBuilder(
context.applicationContext,
AplicationDB::class.java,"mydb"
).build()
}
private const val DATABASE_NAME = "database"
@Volatile var instance: AplicationDB? = null
fun getAplicationDB(context: Context): AplicationDB{
return instance ?: synchronized(this) {
instance ?: buildDatabase(context).also { instance = it }
}
return INTANCE
}
fun destroyDB(){
INTANCE = null
private fun buildDatabase(context: Context) : AplicationDB {
return Room.databaseBuilder(context, AplicationDB::class.java, DATABASE_NAME)
.fallbackToDestructiveMigration()
.build()
}
}
}
\ No newline at end of file
......@@ -6,7 +6,7 @@ import androidx.room.PrimaryKey
@Entity
data class Person(
@PrimaryKey(autoGenerate = true)
val id : Int = 0,
var id : Int = 0,
val name:String,
val last_name:String,
val ci:String,
......
package cu.iptriana.pesquisavirtual.data
import androidx.lifecycle.LiveData
import androidx.room.*
@Dao
interface PersonDao {
@Query("SELECT * FROM Person")
suspend fun getAll():List<Person>
fun getAll():LiveData<List<Person>>
@Query("SELECT * FROM Person WHERE id = :id")
suspend fun getById(id:Int):Person
fun getById(id:Int):LiveData<Person>
@Update
suspend fun update(person:Person)
@Insert
suspend fun insert(person: Person)
suspend fun insert(person: Person):Long
@Delete
suspend fun delete(person:Person)
......
package cu.iptriana.pesquisavirtual.data
import androidx.lifecycle.LiveData
import androidx.room.*
@Dao
interface TestDao {
@Query("SELECT * FROM Test WHERE id_person = :id_person")
suspend fun getAll(id_person: Int):List<Test>
fun getAll(id_person: Int):LiveData<List<Test>>
@Query("SELECT * FROM Test WHERE id_test = :id")
suspend fun getById(id:Int):Test
......
......@@ -6,15 +6,12 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import cu.iptriana.pesquisavirtual.R
import cu.iptriana.pesquisavirtual.TestListActivity
import cu.iptriana.pesquisavirtual.data.Person
import cu.iptriana.pesquisavirtual.MainActivity
import cu.iptriana.pesquisavirtual.databinding.FragmentAddPersonBinding
import kotlinx.coroutines.launch
import cu.iptriana.pesquisavirtual.di.Injector
import cu.iptriana.pesquisavirtual.ui.change_person.ListPersonActivity
class AddPersonFragment : Fragment() {
......@@ -25,36 +22,38 @@ class AddPersonFragment : Fragment() {
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
viewModelAdd = ViewModelProvider(this)
.get(AddPersonViewModel::class.java)
viewModelAdd = ViewModelProvider(
this,
AddPersonViewModelFactory(
Injector.getPersonRepository(requireContext()),
Injector.getPreferences(requireContext())
)
).get(AddPersonViewModel::class.java)
val binding = FragmentAddPersonBinding
.inflate(LayoutInflater.from(context), container, false)
with(binding) {
buttonAgregar.setOnClickListener {
lifecycleScope.launch {
val person = Person(
0
, txtName.text.toString()
buttonAdd.setOnClickListener {
viewModelAdd.addPerson(
txtName.text.toString()
, txtLastName.text.toString()
, txtCi.text.toString()
, txtAge.text.toString().toInt()
, viewModelAdd.isMale(radioButtonMasculino.isSelected)
, radioButtonMasculino.isChecked
)
context?.let { it1 -> viewModelAdd.addPerson(it1, person) }
}
Toast.makeText(context, "Registro insertado correctamente", Toast.LENGTH_SHORT)
.show()
viewModelAdd.clean(this)
txtName.setText("")
txtLastName.setText("")
txtCi.setText("")
txtAge.setText("")
}
buttonCancelar.setOnClickListener{
context?.let { it1 ->
ContextCompat.startActivity(
it1,
Intent(context, TestListActivity::class.java),
null
)
}
buttonCancel.setOnClickListener {
val intent: Intent?
if (viewModelAdd.getSelectionEmpty())
intent = Intent(requireContext(), ListPersonActivity::class.java)
else intent = Intent(requireContext(), MainActivity::class.java)
startActivity(intent)
activity?.finish()
}
}
......
package cu.iptriana.pesquisavirtual.ui.add_person
import android.content.Context
import android.widget.Toast
import androidx.lifecycle.ViewModel
import cu.iptriana.pesquisavirtual.data.AplicationDB
import androidx.lifecycle.viewModelScope
import cu.iptriana.pesquisavirtual.data.Person
import cu.iptriana.pesquisavirtual.databinding.FragmentAddPersonBinding
class AddPersonViewModel : ViewModel() {
suspend fun addPerson(context: Context, person: Person){
val db = AplicationDB.getAplicationDB(context)
db?.personDao()?.insert(person)
Toast.makeText(
context,
"Registro insertado correctamente",
Toast.LENGTH_SHORT
).show()
import cu.iptriana.pesquisavirtual.data.PersonRepository
import cu.iptriana.pesquisavirtual.preferences.AppPreferences
import kotlinx.coroutines.launch
class AddPersonViewModel(
private val personRepository: PersonRepository
, preferences: AppPreferences
) : ViewModel() {
private var personAdded: Person? = null
private var selectEmpty:Boolean = preferences.isEmpty()
fun getSelectionEmpty():Boolean = selectEmpty
fun addPerson(name: String, last_name: String, ci: String, age: Int, male: Boolean) {
viewModelScope.launch {
personAdded = Person(0, name, last_name, ci, age, isMale(male))
val personiId = personRepository.insert(personAdded!!)
personAdded!!.id = personiId.toInt()
}
}
fun isMale(flag: Boolean): String{
if(flag)
private fun isMale(flag: Boolean): String {
if (flag)
return "Masculino"
return "Femenino"
}
fun clean(binding: FragmentAddPersonBinding) {
with(binding) {
txtName.setText("")
txtLastName.setText("")
txtCi.setText("")
txtAge.setText("")
}
}
}
\ No newline at end of file
package cu.iptriana.pesquisavirtual.ui.change_person
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import cu.iptriana.pesquisavirtual.MainActivity
import cu.iptriana.pesquisavirtual.adapter.PersonAdapter
import cu.iptriana.pesquisavirtual.adapter.TestAdapter
import cu.iptriana.pesquisavirtual.data.Person
import cu.iptriana.pesquisavirtual.databinding.FragmentChangePersonBinding
import kotlinx.coroutines.launch
import cu.iptriana.pesquisavirtual.di.Injector
class ChangePersonFragment : Fragment() {
private lateinit var viewModel: ChangePersonViewModel
private lateinit var recycler: RecyclerView
private lateinit var adapter: PersonAdapter
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
viewModel = ViewModelProvider(this)
.get(ChangePersonViewModel::class.java)
val viewModel = ViewModelProvider(
this,
ChangePersonViewModelFactory(
Injector.getPersonRepository(requireContext()),
Injector.getPreferences(requireContext())
)
).get(ChangePersonViewModel::class.java)
val binding = FragmentChangePersonBinding.inflate(
LayoutInflater.from(context), container, false)
with(binding){
recycler = recyclerview
recycler.layoutManager = LinearLayoutManager(context)
adapter = PersonAdapter(listOf())
recyclerview.layoutManager = LinearLayoutManager(context)
val adapter = PersonAdapter(listOf())
adapter.setOnItemClickListener(object : PersonAdapter.OnRecyclerClickListener<Person>{
override fun onClick(model: Person) {
viewModel.changePerson(model, root.context)
viewModel.changePerson(model)
startActivity(Intent(requireContext(), MainActivity::class.java))
activity!!.finish()
}
......@@ -47,18 +48,13 @@ class ChangePersonFragment : Fragment() {
}
})
viewModel.allPerson.observe(requireActivity(), Observer {
adapter.persons = it
recyclerview.adapter = adapter
})
}
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
var list = listOf<Person>()
lifecycleScope.launch {
adapter.persons = context?.let { viewModel.actualizar(it) }!!
recycler.adapter = adapter
}
}
}
\ No newline at end of file
package cu.iptriana.pesquisavirtual.ui.change_person
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import androidx.core.content.ContextCompat.startActivity
import androidx.lifecycle.LiveData
import androidx.lifecycle.ViewModel
import cu.iptriana.pesquisavirtual.TestListActivity
import cu.iptriana.pesquisavirtual.data.AplicationDB
import cu.iptriana.pesquisavirtual.data.Person
import cu.iptriana.pesquisavirtual.data.PersonRepository
import cu.iptriana.pesquisavirtual.preferences.AppPreferences
class ChangePersonViewModel : ViewModel() {
fun changePerson(model:Person, context: Context){
startActivity(context,Intent(context, TestListActivity::class.java), null)
val sharedPreferences = context.getSharedPreferences(
"MyPrefer", Context.MODE_PRIVATE)
val edit: SharedPreferences.Editor = sharedPreferences!!.edit()
edit.clear()
edit.putInt("id", model.id)
edit.apply()
}
suspend fun actualizar(context: Context) : List<Person>{
val db: AplicationDB? = AplicationDB.getAplicationDB(context)
return db?.personDao()?.getAll()!!
}
class ChangePersonViewModel(
personRepository: PersonRepository
, private val preferences: AppPreferences
) : ViewModel() {
val allPerson: LiveData<List<Person>> = personRepository.getAll()
fun changePerson(model: Person) = preferences.changePerson(model)
}
\ No newline at end of file
......@@ -4,9 +4,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import cu.iptriana.pesquisavirtual.R
......@@ -21,8 +19,7 @@ class HomeFragment : Fragment() {
): View? {
homeViewModel =
ViewModelProvider(this).get(HomeViewModel::class.java)
val root = inflater.inflate(R.layout.fragment_home, container, false)
return root
return inflater.inflate(R.layout.fragment_home, container, false)
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".AddUserActivity">
tools:context=".ui.add_person.AddPersonActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<include layout="@layout/toolbar"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="675dp"
android:padding="16dp">
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/txt_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:background="@color/white"
android:hint="Nombre" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/txt_last_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:background="@color/white"
android:hint="Apellidos" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
tools:ignore="UselessParent">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/txt_ci"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:background="@color/white"
android:hint="CI"
android:inputType="number"
android:maxLength="11" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/txt_age"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:background="@color/white"
android:hint="Edad"
android:inputType="number"
android:maxLength="3" />
</com.google.android.material.textfield.TextInputLayout>
<include layout="@layout/toolbar"/>
<RadioGroup
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragment_container_add_person"
android:name="cu.iptriana.pesquisavirtual.ui.add_person.AddPersonFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="50dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/radioButton_masculino"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:checked="true"
android:text="Masculino" />
<RadioButton
android:id="@+id/radioButton_femenino"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Femenino" />
</RadioGroup>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
<LinearLayout
android:layout_width="335dp"
android:layout_height="48dp"
android:layout_gravity="bottom|center"
android:orientation="horizontal"
>
<Button
android:id="@+id/button_cancelar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:text="Cancelar" />
<Button
android:id="@+id/button_agregar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_weight="1"
android:text="Agregar" />
/>
</LinearLayout>
</FrameLayout>
\ No newline at end of file
......@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Splash">
tools:context=".ui.splash.SplashActivity">
<ImageView
android:id="@+id/imageView"
......
......@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".User">
tools:context=".ui.user.UserActivity">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
......@@ -116,7 +116,11 @@
</LinearLayout>
</androidx.cardview.widget.CardView>
<include layout="@layout/content_main_activity" />
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recyclerview">
</androidx.recyclerview.widget.RecyclerView>
</androidx.appcompat.widget.LinearLayoutCompat>
......
......@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".TestListActivity">
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
......
......@@ -112,7 +112,7 @@
android:orientation="horizontal">
<Button
android:id="@+id/button_cancelar"
android:id="@+id/button_cancel"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_weight="1"
......@@ -120,7 +120,7 @@
android:text="Atras" />
<Button
android:id="@+id/button_agregar"
android:id="@+id/button_add"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_weight="1"
......
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="cu.iptriana.pesquisavirtual.MainActivity">
tools:context="cu.iptriana.pesquisavirtual.ui.change_person.ListPersonActivity">
<item
android:id="@+id/action_settings"
android:title="@string/action_settings"
......
......@@ -25,13 +25,13 @@
<fragment
android:id="@+id/nav_diagnosticar"
android:name="cu.iptriana.pesquisavirtual.ui.diagnosticar.DiagnosticarFragment"
android:name="cu.iptriana.pesquisavirtual.ui.diagnose.DiagnoseFragment"
android:label="Diagnosticar enfermendad"
tools:layout="@layout/fragment_diagnosticar" />
<fragment
android:id="@+id/nav_fatalaidad"
android:name="cu.iptriana.pesquisavirtual.ui.fatalidad.FatalidadFragment"
android:name="cu.iptriana.pesquisavirtual.ui.fatality.FatalityFragment"
android:label="Fatalidad"
tools:layout="@layout/fragment_fatalidad" />
</navigation>
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment