From ff4457cb735664353b2814c9726a64c397a7ca48 Mon Sep 17 00:00:00 2001 From: Samuelford24 Date: Wed, 14 Apr 2021 18:06:31 -0400 Subject: [PATCH 1/5] working on report page --- .../sf/stormwaterutilityandroid/Login.java | 18 +++- .../ReportAdapter.java | 13 +-- .../com/sf/stormwaterutilityandroid/User.java | 6 +- .../WaterWay/WaterWayReport.java | 3 + .../WaterWay/WaterWayReportFragment.java | 83 +++++++++++++++++-- app/src/main/res/layout/activity_reports.xml | 77 ++++++----------- 6 files changed, 132 insertions(+), 68 deletions(-) diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java b/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java index da639e4..5603a34 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java @@ -42,6 +42,7 @@ protected void onCreate(Bundle savedInstanceState) { public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { if (firebaseAuth.getCurrentUser() != null && auth.getCurrentUser().isEmailVerified()) { + // fetchAgencyID(); startActivity(new Intent(Login.this, WaterWayNav.class)); finish(); } @@ -54,6 +55,7 @@ public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { }; + setContentView(R.layout.activity_login); inputEmail = findViewById(R.id.email); inputPassword = findViewById(R.id.password); @@ -61,7 +63,9 @@ public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { btnSignup = findViewById(R.id.btn_signup); btnLogin = findViewById(R.id.btn_login); btnReset = findViewById(R.id.btn_reset_password); - + if (auth.getCurrentUser() != null) { + fetchAgencyID(); + } //Get Firebase auth instance auth = FirebaseAuth.getInstance(); @@ -166,4 +170,16 @@ public void onClick(DialogInterface dialog, int id) { } + private void fetchAgencyID() { + System.out.println("Execute 171"); + FirebaseFirestore.getInstance().collection("Users").document(auth.getUid()).get().addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + System.out.println("Execute 174"); + User.agid = task.getResult().toObject(User.class).getAgencyID(); + System.out.println(User.agid); + } + }); + } + } \ No newline at end of file diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/ReportAdapter.java b/app/src/main/java/com/sf/stormwaterutilityandroid/ReportAdapter.java index 00091c8..36c5d59 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/ReportAdapter.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/ReportAdapter.java @@ -30,17 +30,20 @@ public ReportAdapter.MyHolder onCreateViewHolder(ViewGroup parent, int viewType) public void onBindViewHolder(ReportAdapter.MyHolder holder, final int position) { - // final Report data = listdata.get(position); - // holder.inspectorName.setText(data.getInspectorName()); - // holder.site.setText(data.getSite()); - // holder.date.setText((CharSequence) data.getDate()); + final WaterWayReport data = listdata.get(position); + holder.inspectorName.setText(data.getH_inspector_name()); + holder.site.setText(data.getH_site_name()); + holder.date.setText(data.getH_date()); } @Override public int getItemCount() { - return 0; + if (listdata == null) { + return 0; + } + return listdata.size(); } // @Override diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/User.java b/app/src/main/java/com/sf/stormwaterutilityandroid/User.java index efeb955..d7b420e 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/User.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/User.java @@ -1,7 +1,11 @@ package com.sf.stormwaterutilityandroid; -class User { +public class User { String name, email, uid,agencyID; + public static String agid; + + public User() { + } public User(String name, String email, String uid, String agencyID) { this.name = name; diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReport.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReport.java index 8141c5c..67cf70a 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReport.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReport.java @@ -16,6 +16,9 @@ public class WaterWayReport { Map doubleFields = new HashMap<>(); Map stringFields = new HashMap<>(); + public WaterWayReport() { + } + public WaterWayReport(String h_date, String h_inspector_name, String h_site_name, Timestamp sortTimeStamp, GeoPoint location, Map boolFields, Map doubleFields, Map stringFields) { H_date = h_date; H_inspector_name = h_inspector_name; diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReportFragment.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReportFragment.java index f8e00a7..90cfad8 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReportFragment.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReportFragment.java @@ -1,6 +1,8 @@ package com.sf.stormwaterutilityandroid.WaterWay; import android.os.Bundle; +import android.text.Editable; +import android.text.TextWatcher; import android.util.Log; import android.view.LayoutInflater; import android.view.MenuItem; @@ -22,6 +24,8 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.Task; import com.google.android.material.bottomnavigation.BottomNavigationView; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.firestore.DocumentSnapshot; @@ -29,11 +33,15 @@ import com.google.firebase.firestore.FirebaseFirestore; import com.google.firebase.firestore.FirebaseFirestoreException; import com.google.firebase.firestore.Query; +import com.google.firebase.firestore.QueryDocumentSnapshot; import com.google.firebase.firestore.QuerySnapshot; import com.sf.stormwaterutilityandroid.ConstructionReportAdapter; import com.sf.stormwaterutilityandroid.R; import com.sf.stormwaterutilityandroid.ReportAdapter; +import com.sf.stormwaterutilityandroid.User; + +import org.w3c.dom.Document; import java.util.ArrayList; import java.util.List; @@ -41,9 +49,11 @@ public class WaterWayReportFragment extends Fragment { - private SearchView searchBar;//TODO: Make a search bar later? + private EditText searchBar;//TODO: Make a search bar later? private RecyclerView recyclerView; private Button btnSiteName, btnDate, btnInspectorName; + List reportList; + ReportAdapter reportAdapter; //TODO: Need vars for formdata //TODO: Need a var for tvReports: UITableView! @@ -55,8 +65,9 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.activity_reports, container, false); - recyclerView = view.findViewById(R.id.recyclerView); - + // recyclerView = view.findViewById(R.id.recyclerView); + reportList = new ArrayList<>(); + reportAdapter = new ReportAdapter(reportList); btnSiteName = view.findViewById(R.id.btn_site_name); @@ -66,11 +77,38 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, recyclerView = view.findViewById(R.id.recyclerView); fetchData(); +searchBar.addTextChangedListener(new TextWatcher() { + + + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if (s.toString().length() == 0) { + fetchData(); + } + } + + @Override + public void afterTextChanged(Editable s) { + + } + + +}); btnSiteName.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //startActivity(new Intent(Reports.this, Site_name.class)); + String txt = searchBar.getText().toString().trim(); + if (txt.isEmpty() || txt ==null) { + return; + } + fetchFilteredDate(txt,"H_site_name"); } }); @@ -78,14 +116,22 @@ public void onClick(View v) { btnDate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - //startActivity(new Intent(Reports.this, Date.class)); + String txt = searchBar.getText().toString().trim(); + if (txt.isEmpty() || txt ==null) { + return; + } + fetchFilteredDate(txt,"H_date"); } }); btnInspectorName.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - //startActivity(new Intent(Reports.this, Inspector_name.class)); + String txt = searchBar.getText().toString().trim(); + if (txt.isEmpty() || txt ==null) { + return; + } + fetchFilteredDate(txt,"H_inspector_name"); } }); @@ -94,21 +140,40 @@ public void onClick(View v) { } + + private void fetchFilteredDate(String txt, String searchField) { + FirebaseFirestore.getInstance().collection("Forms").document(User.agid).collection("Waterway").whereEqualTo(searchField,txt).get().addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + reportList.clear(); + if (task.isSuccessful() && task != null) { + for(QueryDocumentSnapshot document:task.getResult()) { + reportList.add(document.toObject(WaterWayReport.class)); + } + reportAdapter.notifyDataSetChanged(); + } + } + }); + + + } + public void fetchData() { - List reportList = new ArrayList<>(); - final ReportAdapter reportAdapter = new ReportAdapter(reportList); - FirebaseFirestore.getInstance().collection("AquaSourceForms").orderBy("SortTimeStamp", Query.Direction.DESCENDING).addSnapshotListener(new EventListener() { + + FirebaseFirestore.getInstance().collection("Forms").document(User.agid).collection("Waterway").orderBy("SortTimeStamp", Query.Direction.DESCENDING).addSnapshotListener(new EventListener() { @Override public void onEvent(@javax.annotation.Nullable QuerySnapshot queryDocumentSnapshots, @javax.annotation.Nullable FirebaseFirestoreException e) { if (e != null) { Log.i("Error", "No data"); } reportList.clear(); - + System.out.println("108:" +queryDocumentSnapshots.size()); for (DocumentSnapshot d:queryDocumentSnapshots){ //needs to be changed to waterway data type + reportList.add( d.toObject(WaterWayReport.class)); } + System.out.println(reportList.size()); reportAdapter.notifyDataSetChanged(); } diff --git a/app/src/main/res/layout/activity_reports.xml b/app/src/main/res/layout/activity_reports.xml index ea37db6..5e6472f 100644 --- a/app/src/main/res/layout/activity_reports.xml +++ b/app/src/main/res/layout/activity_reports.xml @@ -6,91 +6,64 @@ android:layout_height="match_parent"> - - - - - - - - - - + app:layout_constraintTop_toTopOf="parent" + android:hint="Date,name,or site" /> - + app:layout_constraintTop_toBottomOf="@+id/btn_inspector_name" />