From 4a1f7c332cb896993e4a7b19cad8ebd7b3ed9f4f Mon Sep 17 00:00:00 2001 From: eurosecom Date: Tue, 17 Jan 2017 20:47:02 +0100 Subject: [PATCH] Absence Activity #5 - change firebase database structure, table attendances, absences, absencetypes - new layout for AttendanceListFragment.java and AttendanceViewHolder.java --- .../com/eusecom/attendance/MainActivity.java | 2 +- .../attendance/NewAbsenceActivity.java | 12 ++-- .../attendance/fragment/AbsTypesFragment.java | 16 ++--- .../fragment/AttendanceListFragment.java | 5 +- .../fragment/MyAbsenceFragment.java | 2 +- .../fragment/MyAttendanceFragment.java | 2 +- .../viewholder/AttendanceViewHolder.java | 72 +++++++++++++++---- app/src/main/res/layout/fragment_absences.xml | 2 +- .../main/res/layout/fragment_attendances.xml | 18 +++++ app/src/main/res/layout/item_attendance.xml | 15 ++-- 10 files changed, 107 insertions(+), 39 deletions(-) create mode 100644 app/src/main/res/layout/fragment_attendances.xml diff --git a/app/src/main/java/com/eusecom/attendance/MainActivity.java b/app/src/main/java/com/eusecom/attendance/MainActivity.java index d6f9e73..a6284e7 100644 --- a/app/src/main/java/com/eusecom/attendance/MainActivity.java +++ b/app/src/main/java/com/eusecom/attendance/MainActivity.java @@ -299,7 +299,7 @@ public void onClick(View v) { private void writeAttendance(String usico, String usid, String ume, String dmxa, String dmna, String daod, String dado, String dnixa, String hodxb, String longi, String lati, String datm) { - String key = mDatabase.child("attendance").push().getKey(); + String key = mDatabase.child("attendances").push().getKey(); String gpslat; String gpslon; GPSTracker mGPS = new GPSTracker(MainActivity.this); diff --git a/app/src/main/java/com/eusecom/attendance/NewAbsenceActivity.java b/app/src/main/java/com/eusecom/attendance/NewAbsenceActivity.java index 48d22c7..c118600 100644 --- a/app/src/main/java/com/eusecom/attendance/NewAbsenceActivity.java +++ b/app/src/main/java/com/eusecom/attendance/NewAbsenceActivity.java @@ -294,7 +294,7 @@ public void onDataChange(DataSnapshot dataSnapshot) { Long tsLong = System.currentTimeMillis() / 1000; String ts = tsLong.toString(); - writeAttendance(icox, userId, "0", "506","Holliday", dateodlx, datedolx, "0", hodinyx, "0", "0", ts); + writeAbsence(icox, userId, "0", "506","Holliday", dateodlx, datedolx, "0", hodinyx, "0", "0", ts); } @@ -314,11 +314,11 @@ public void onCancelled(DatabaseError databaseError) { } // [START basic_write] - private void writeAttendance(String usico, String usid, String ume, String dmxa, String dmna, String daod, String dado, String dnixa, + private void writeAbsence(String usico, String usid, String ume, String dmxa, String dmna, String daod, String dado, String dnixa, String hodxb, String longi, String lati, String datm) { String userIDX = FirebaseAuth.getInstance().getCurrentUser().getUid(); - String key = mDatabase.child("attendance").push().getKey(); + String key = mDatabase.child("absences").push().getKey(); String gpslat; String gpslon; GPSTracker mGPS = new GPSTracker(NewAbsenceActivity.this); @@ -341,9 +341,9 @@ private void writeAttendance(String usico, String usid, String ume, String dmxa, Map childUpdates = new HashMap<>(); - childUpdates.put("/attendances/" + key, attValues); - childUpdates.put("/company-attendances/" + usico + "/" + key, attValues); - childUpdates.put("/user-attendances/" + userIDX + "/" + key, attValues); + childUpdates.put("/absences/" + key, attValues); + childUpdates.put("/company-absences/" + usico + "/" + key, attValues); + childUpdates.put("/user-absences/" + userIDX + "/" + key, attValues); mDatabase.updateChildren(childUpdates); diff --git a/app/src/main/java/com/eusecom/attendance/fragment/AbsTypesFragment.java b/app/src/main/java/com/eusecom/attendance/fragment/AbsTypesFragment.java index ce1de6e..5b5076e 100644 --- a/app/src/main/java/com/eusecom/attendance/fragment/AbsTypesFragment.java +++ b/app/src/main/java/com/eusecom/attendance/fragment/AbsTypesFragment.java @@ -27,37 +27,37 @@ public Query getQuery(DatabaseReference databaseReference) { databaseReference.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot snapshot) { - if (snapshot.hasChild("absences")) { + if (snapshot.hasChild("absencetypes")) { // run some code }else{ Log.d("table interrupts ", "does not exist"); mDatabase = FirebaseDatabase.getInstance().getReference(); - String key = mDatabase.child("absences").push().getKey(); + String key = mDatabase.child("absencetypes").push().getKey(); Absence absence = new Absence("506","Holliday"); Map intValues = absence.toMap(); Map childUpdates = new HashMap<>(); - childUpdates.put("/absences/" + key, intValues); + childUpdates.put("/absencetypes/" + key, intValues); key = mDatabase.child("interrupts").push().getKey(); absence = new Absence("510","Bank holliday"); intValues = absence.toMap(); - childUpdates.put("/absences/" + key, intValues); + childUpdates.put("/absencetypes/" + key, intValues); key = mDatabase.child("interrupts").push().getKey(); absence = new Absence("518","Visit Doctor"); intValues = absence.toMap(); - childUpdates.put("/absences/" + key, intValues); + childUpdates.put("/absencetypes/" + key, intValues); key = mDatabase.child("interrupts").push().getKey(); absence = new Absence("520","Other"); intValues = absence.toMap(); - childUpdates.put("/absences/" + key, intValues); + childUpdates.put("/absencetypes/" + key, intValues); key = mDatabase.child("interrupts").push().getKey(); absence = new Absence("801","Illness"); intValues = absence.toMap(); - childUpdates.put("/absences/" + key, intValues); + childUpdates.put("/absencetypes/" + key, intValues); mDatabase.updateChildren(childUpdates); @@ -70,7 +70,7 @@ public void onCancelled(DatabaseError databaseError) { } }); // [START absences_query] - Query recentAbsencesQuery = databaseReference.child("absences") + Query recentAbsencesQuery = databaseReference.child("absencetypes") .limitToFirst(200); // [END absences_query] diff --git a/app/src/main/java/com/eusecom/attendance/fragment/AttendanceListFragment.java b/app/src/main/java/com/eusecom/attendance/fragment/AttendanceListFragment.java index 2bcc34a..77066c1 100644 --- a/app/src/main/java/com/eusecom/attendance/fragment/AttendanceListFragment.java +++ b/app/src/main/java/com/eusecom/attendance/fragment/AttendanceListFragment.java @@ -59,13 +59,13 @@ public AttendanceListFragment() {} public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); - View rootView = inflater.inflate(R.layout.fragment_all_posts, container, false); + View rootView = inflater.inflate(R.layout.fragment_attendances, container, false); // [START create_database_reference] mDatabase = FirebaseDatabase.getInstance().getReference(); // [END create_database_reference] - mRecycler = (RecyclerView) rootView.findViewById(R.id.messages_list); + mRecycler = (RecyclerView) rootView.findViewById(R.id.attendances_list); mRecycler.setHasFixedSize(true); return rootView; @@ -101,6 +101,7 @@ public void onCancelled(DatabaseError error) { // Set up Layout Manager, reverse layout mManager = new LinearLayoutManager(getActivity()); + // order by datm desc mManager.setReverseLayout(true); mManager.setStackFromEnd(true); mRecycler.setLayoutManager(mManager); diff --git a/app/src/main/java/com/eusecom/attendance/fragment/MyAbsenceFragment.java b/app/src/main/java/com/eusecom/attendance/fragment/MyAbsenceFragment.java index c39c19f..ae39e8a 100644 --- a/app/src/main/java/com/eusecom/attendance/fragment/MyAbsenceFragment.java +++ b/app/src/main/java/com/eusecom/attendance/fragment/MyAbsenceFragment.java @@ -16,7 +16,7 @@ public Query getQuery(DatabaseReference databaseReference) { final String userId = FirebaseAuth.getInstance().getCurrentUser().getUid(); // [START absences_query] - Query recentAbsencesQuery = databaseReference.child("user-attendances").child(userId).orderByChild("dmxa").startAt("500") + Query recentAbsencesQuery = databaseReference.child("user-absences").child(userId).orderByChild("datm") .limitToFirst(200); // [END absences_query] diff --git a/app/src/main/java/com/eusecom/attendance/fragment/MyAttendanceFragment.java b/app/src/main/java/com/eusecom/attendance/fragment/MyAttendanceFragment.java index 1a2c67b..3440a4e 100644 --- a/app/src/main/java/com/eusecom/attendance/fragment/MyAttendanceFragment.java +++ b/app/src/main/java/com/eusecom/attendance/fragment/MyAttendanceFragment.java @@ -16,7 +16,7 @@ public Query getQuery(DatabaseReference databaseReference) { final String userId = FirebaseAuth.getInstance().getCurrentUser().getUid(); // [START absences_query] - Query recentAbsencesQuery = databaseReference.child("user-attendances").child(userId).orderByChild("dmxa").startAt("1").endAt("2") + Query recentAbsencesQuery = databaseReference.child("user-attendances").child(userId).orderByChild("datm") .limitToFirst(200); // [END absences_query] diff --git a/app/src/main/java/com/eusecom/attendance/viewholder/AttendanceViewHolder.java b/app/src/main/java/com/eusecom/attendance/viewholder/AttendanceViewHolder.java index 0232d5f..2d12734 100644 --- a/app/src/main/java/com/eusecom/attendance/viewholder/AttendanceViewHolder.java +++ b/app/src/main/java/com/eusecom/attendance/viewholder/AttendanceViewHolder.java @@ -8,40 +8,88 @@ import android.widget.TextView; import com.eusecom.attendance.R; +import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.auth.FirebaseUser; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; public class AttendanceViewHolder extends RecyclerView.ViewHolder { - public TextView titleView; - public TextView authorView; + public TextView absence_name; public ImageView starView; public TextView numStarsView; - public TextView bodyView; + public TextView datefrom; + public TextView dateto; + public TextView hodxb; + public TextView datm; + FirebaseUser user; + private FirebaseAuth mAuth; + String usemail = ""; public AttendanceViewHolder(View itemView) { super(itemView); - titleView = (TextView) itemView.findViewById(R.id.post_title); - authorView = (TextView) itemView.findViewById(R.id.post_author); + absence_name = (TextView) itemView.findViewById(R.id.absence_name); starView = (ImageView) itemView.findViewById(R.id.star); numStarsView = (TextView) itemView.findViewById(R.id.post_num_stars); - bodyView = (TextView) itemView.findViewById(R.id.post_body); - - - + datefrom = (TextView) itemView.findViewById(R.id.datefrom); + dateto = (TextView) itemView.findViewById(R.id.dateto); + hodxb = (TextView) itemView.findViewById(R.id.hodxb); + datm = (TextView) itemView.findViewById(R.id.datm); + + mAuth = FirebaseAuth.getInstance(); + user = mAuth.getCurrentUser(); + if (user != null) { + usemail = user.getEmail(); + } } public void bindToAttendance(com.eusecom.attendance.models.Attendance attendance, View.OnClickListener starClickListener) { - titleView.setText(attendance.dmxa); - authorView.setText(attendance.dmna); + absence_name.setText(attendance.dmxa + " " + attendance.dmna); numStarsView.setText("0"); - bodyView.setText("0"); + + //convert unix epoch timestamp (seconds) to milliseconds + long timestampod = Long.parseLong(attendance.daod) * 1000L; + datefrom.setText(getDate(timestampod )); + + long timestampdo = Long.parseLong(attendance.dado) * 1000L; + dateto.setText(getDate(timestampdo )); + + long timestamp = Long.parseLong(attendance.daod) * 1000L; + hodxb.setText(attendance.hodxb); + + long timestampm = Long.parseLong(attendance.datm) * 1000L; + datm.setText(usemail + " " + getDateTime(timestampm )); starView.setOnClickListener(starClickListener); + } + private String getDate(long timeStamp){ + + try{ + DateFormat sdf = new SimpleDateFormat("dd.MM.yyyy"); + Date netDate = (new Date(timeStamp)); + return sdf.format(netDate); + } + catch(Exception ex){ + return "xx"; + } } + private String getDateTime(long timeStamp){ + try{ + DateFormat sdf = new SimpleDateFormat("dd.MM.yyyy hh:mm"); + Date netDate = (new Date(timeStamp)); + return sdf.format(netDate); + } + catch(Exception ex){ + return "xx"; + } + } } diff --git a/app/src/main/res/layout/fragment_absences.xml b/app/src/main/res/layout/fragment_absences.xml index 9c93e56..a983f46 100644 --- a/app/src/main/res/layout/fragment_absences.xml +++ b/app/src/main/res/layout/fragment_absences.xml @@ -3,7 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".DatabaseActivity"> + tools:context=".AbsenceActivity"> + + + + + diff --git a/app/src/main/res/layout/item_attendance.xml b/app/src/main/res/layout/item_attendance.xml index 48810a2..424e8ff 100644 --- a/app/src/main/res/layout/item_attendance.xml +++ b/app/src/main/res/layout/item_attendance.xml @@ -1,4 +1,5 @@ + @@ -21,9 +22,9 @@ android:id="@+id/star_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignBottom="@+id/post_author_layout" + android:layout_alignBottom="@+id/absence_type" android:layout_alignParentRight="true" - android:layout_alignTop="@+id/post_author_layout" + android:layout_alignTop="@+id/absence_type" android:gravity="center_vertical" android:orientation="horizontal"> @@ -45,11 +46,11 @@ -