diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index cf30795..7da3a10 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,27 +9,20 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.StormWaterUtilityAndroid"> - - - - - - - - - - + + + + + - - - + + + - - + + diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java b/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java index 5603a34..095ca20 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java @@ -22,6 +22,8 @@ import com.google.firebase.firestore.FirebaseFirestore; import com.sf.stormwaterutilityandroid.WaterWay.WaterWayNav; +import java.util.Map; + public class Login extends AppCompatActivity { private EditText inputEmail, inputPassword; @@ -37,13 +39,18 @@ protected void onCreate(Bundle savedInstanceState) { //Get Firebase auth instance auth = FirebaseAuth.getInstance(); + if (auth.getCurrentUser() != null && auth.getCurrentUser().isEmailVerified()) { + fetchAgencyID(); + startActivity(new Intent(Login.this, MainMenu.class)); + finish(); + } mAuthListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { if (firebaseAuth.getCurrentUser() != null && auth.getCurrentUser().isEmailVerified()) { // fetchAgencyID(); - startActivity(new Intent(Login.this, WaterWayNav.class)); + startActivity(new Intent(Login.this, MainMenu.class)); finish(); } if (firebaseAuth.getCurrentUser() == null) { diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/ReportAdapter.java b/app/src/main/java/com/sf/stormwaterutilityandroid/ReportAdapter.java index 36c5d59..f442bbb 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/ReportAdapter.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/ReportAdapter.java @@ -1,5 +1,6 @@ package com.sf.stormwaterutilityandroid; +import android.content.Intent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -7,6 +8,7 @@ import androidx.recyclerview.widget.RecyclerView; +import com.sf.stormwaterutilityandroid.WaterWay.WaterWay; import com.sf.stormwaterutilityandroid.WaterWay.WaterWayReport; import java.util.List; @@ -34,6 +36,14 @@ public void onBindViewHolder(ReportAdapter.MyHolder holder, final int position) holder.inspectorName.setText(data.getH_inspector_name()); holder.site.setText(data.getH_site_name()); holder.date.setText(data.getH_date()); + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(v.getContext(), WaterwayReportDetail.class); + intent.putExtra("report",data); + v.getContext().startActivity(int); + } + }); } diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayFormFragment.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayFormFragment.java index 69bd48c..2ac254b 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayFormFragment.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayFormFragment.java @@ -6,6 +6,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Button; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; @@ -14,10 +15,22 @@ import com.addisonelliott.segmentedbutton.SegmentedButton; +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.Task; +import com.google.firebase.Timestamp; +import com.google.firebase.firestore.DocumentReference; +import com.google.firebase.firestore.FieldValue; +import com.google.firebase.firestore.FirebaseFirestore; +import com.google.firebase.firestore.GeoPoint; +import com.google.firebase.firestore.model.ServerTimestamps; import com.sf.stormwaterutilityandroid.R; import com.sf.stormwaterutilityandroid.SampleFordm; +import com.sf.stormwaterutilityandroid.User; +import java.sql.Time; import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -253,6 +266,16 @@ public void onClick(View v) { WaterWayStringFields.put("CS_comments", ""); WaterWayStringFields.put("CT_other_1", ""); WaterWayStringFields.put("CT_other_2", ""); + + WaterWayReport wp = new WaterWayReport(dateRow,nameOfInspector,nameOfSite, null,new GeoPoint(1.23,17.),WaterWayBoolFields,WaterWayDoubleFields,WaterWayStringFields); + FirebaseFirestore.getInstance().collection("Forms").document(User.agid).collection("Waterway").add(wp).addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful()) { + Toast.makeText(getContext(),"Successfully Uploaded",Toast.LENGTH_LONG).show(); + } + } + }); } @@ -327,7 +350,7 @@ private double calculatePTI() { private double calculateWQI() { double WQIScore = tempVal * 0.11 + turbidityVal * 0.09 + phVal * 0.12 + nitrateVal * 0.1 + phosphateVal * 0.11 + oxygenVal * 0.18; - + System.out.println("WQI"+WQIScore); return WQIScore; } private void setupFormGen() { 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 67cf70a..a6f01e4 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReport.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReport.java @@ -1,16 +1,21 @@ package com.sf.stormwaterutilityandroid.WaterWay; import com.google.firebase.Timestamp; +import com.google.firebase.firestore.FieldValue; import com.google.firebase.firestore.GeoPoint; +import com.google.firebase.firestore.ServerTimestamp; +import java.io.Serializable; +import java.util.Calendar; +import java.util.Date; import java.util.HashMap; import java.util.Map; -public class WaterWayReport { +public class WaterWayReport implements Serializable { String H_date; String H_inspector_name; String H_site_name; - Timestamp SortTimeStamp; + @ServerTimestamp Date timeStamp; GeoPoint location; Map boolFields = new HashMap<>(); Map doubleFields = new HashMap<>(); @@ -18,22 +23,27 @@ public class WaterWayReport { 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) { + public WaterWayReport(String h_date, String h_inspector_name, String h_site_name, Date sortTimeStamp, GeoPoint location, Map boolFields, Map doubleFields, Map stringFields) { H_date = h_date; H_inspector_name = h_inspector_name; H_site_name = h_site_name; - SortTimeStamp = sortTimeStamp; + timeStamp = sortTimeStamp; this.location = location; this.boolFields = boolFields; this.doubleFields = doubleFields; this.stringFields = stringFields; } - public Timestamp getSortTimeStamp() { - return SortTimeStamp; + public Date getTimeStamp() { + return timeStamp; + } + + public void setTimeStamp(Date timeStamp) { + this.timeStamp = timeStamp; } + + public String getH_date() { return H_date; } @@ -45,4 +55,48 @@ public String getH_inspector_name() { public String getH_site_name() { return H_site_name; } + + public void setH_date(String h_date) { + H_date = h_date; + } + + public void setH_inspector_name(String h_inspector_name) { + H_inspector_name = h_inspector_name; + } + + public void setH_site_name(String h_site_name) { + H_site_name = h_site_name; + } + + public GeoPoint getLocation() { + return location; + } + + public void setLocation(GeoPoint location) { + this.location = location; + } + + public Map getBoolFields() { + return boolFields; + } + + public void setBoolFields(Map boolFields) { + this.boolFields = boolFields; + } + + public Map getDoubleFields() { + return doubleFields; + } + + public void setDoubleFields(Map doubleFields) { + this.doubleFields = doubleFields; + } + + public Map getStringFields() { + return stringFields; + } + + public void setStringFields(Map stringFields) { + this.stringFields = stringFields; + } } 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 90cfad8..ed14a2b 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReportFragment.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WaterWayReportFragment.java @@ -76,7 +76,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, searchBar = view.findViewById(R.id.searchView); recyclerView = view.findViewById(R.id.recyclerView); - fetchData(); + fetchData(); searchBar.addTextChangedListener(new TextWatcher() { diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterwayReportDetail.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterwayReportDetail.java new file mode 100644 index 0000000..1d6ce22 --- /dev/null +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterwayReportDetail.java @@ -0,0 +1,124 @@ +package com.sf.stormwaterutilityandroid; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import android.os.Bundle; +import android.util.Log; + +import com.google.firebase.firestore.DocumentSnapshot; +import com.google.firebase.firestore.EventListener; +import com.google.firebase.firestore.FirebaseFirestore; +import com.google.firebase.firestore.FirebaseFirestoreException; +import com.google.firebase.firestore.Query; +import com.google.firebase.firestore.QuerySnapshot; +import com.sf.stormwaterutilityandroid.WaterWay.WaterWayReport; + +import java.util.ArrayList; +import java.util.List; + +public class WaterwayReportDetail extends AppCompatActivity { +WaterWayReport wp; +ArrayList s = new ArrayList<>(); + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_waterway_report_detail); + wp = (WaterWayReport) getIntent().getSerializableExtra("report"); + String[] labels = + {"Chemical (WQI): ", + "Biological (PTI): ", + "Habitat (QHEI): ", + "Name of Inspector: ", + "Name of Site: ", + "Date: ", + "Outfall #: ", + "Longitude: ", + "Latitude: ", + "Invert Elevation: ", + "Type: ", + "Pipe Size: ", + "Channel Bottom Width: ", + "Receiving Water: ", + "Presence Of Flow: ", + "Unusual Odor: ", + "Unusual Color: ", + "Polutants (nearby): ", + "Obstruction: ", + "Needs Mainenance: ", + "Screened Ok: ", + "Routine Evaluation: ", + "Complaint Investigation: ", + "Illicit Discharge Detected: ", + "No Illicit Discharge Detected: ", + "Further Action Needed: ", + "Temperature (C) Change: ", + "Turbidity (NTU): ", + "pH: ", + "Nitrate (mg/L): ", + "Total Phosphate (mg/L): ", + "Dissolved Oxygen (mg/L): ", + "E coli (Col/100ml): ", + "Other 1: ", + "Other 2: ", + "Intolerant: ", + "Moderately Tolerant: ", + "Fairly Tolerant: ", + "Very Tolerant: ", + "Substrate Size: ", + "Smothering: ", + "Silting: ", + "Rootwads: ", + "Overhanging Veg.: ", + "Oxbows/Black Water: ", + "Downed Trees/Logs: ", + "Shallows (in slow water): ", + "Water Plants: ", + "Deep Pools: ", + "Logs/Woody Debris: ", + "Boulders: ", + "Undercut Banks: ", + "Sinuosity: ", + "Natural: ", + "Riparian Width: ", + "Land Use: ", + "Bank Erosion: ", + "Stream Shading: ", + "Deepest Pool: ", + "Velocity: ", + "Riffle/Run Depth: ", + "Riffle/Run Substrate: ", + "Comments: "}; + s.add( labels[0]+wp.getDoubleFields().get("WQI")); + s.add( labels[1]+wp.getDoubleFields().get("PTI")); + s.add( labels[2]+wp.getDoubleFields().get("QHEI")); + s.add( labels[3]+wp.getH_inspector_name()); + s.add( labels[4]+wp.getH_site_name()); + s.add( labels[5]+wp.getH_date()); + s.add( labels[6]+wp.getDoubleFields().get("GOD_longitude")); + s.add(labels[7]+wp.getDoubleFields().get("GOD_latitude")); + s.add(labels[8]+wp.getDoubleFields().get("GOD_invert_elevation")); + s.add(labels[9] + wp.getDoubleFields().get("GOD_type")); + s.add(labels[10] + wp.getDoubleFields().get("GOD_pipe_size")); + s.add(labels[11] + wp.getDoubleFields().get("GOD_channel_bottom_width")); + s.add(labels[12] + wp.getDoubleFields().get("GOD_receiving_water")); + s.add(labels[13] + wp.getBoolFields().get("DWS_presence_of_flow")); + s.add(labels[14] + wp.getBoolFields().get("DWS_unusual_odor")); + s.add(labels[15] + wp.getBoolFields().get("DWS_unusual_color")); + s.add(labels[16] + wp.getBoolFields().get("DWS_polutants")); + s.add(labels[17] + wp.getBoolFields().get("DWS_polutants")); + s.add(labels[18] + wp.getBoolFields().get("DWS_obstruction")); + s.add(labels[19] + wp.getBoolFields().get("DWS_needs_maintenance")); + s.add(labels[20] + wp.getBoolFields().get("DWS_needs_maintenance")); + s.add(labels[21] + wp.getBoolFields().get("DWS_needs_maintenance")); + s.add(labels[22] + wp.getBoolFields().get("DWS_needs_maintenance")); + s.add(labels[23] + wp.getBoolFields().get("DWS_needs_maintenance")); + s.add(labels[24] + wp.getBoolFields().get("DWS_needs_maintenance")); + s.add(labels[25] + wp.getBoolFields().get("DWS_needs_maintenance")); + + + + } +} diff --git a/app/src/main/res/layout/activity_waterway_report_detail.xml b/app/src/main/res/layout/activity_waterway_report_detail.xml new file mode 100644 index 0000000..d20ceaa --- /dev/null +++ b/app/src/main/res/layout/activity_waterway_report_detail.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file