diff --git a/Foodify/app/build.gradle b/Foodify/app/build.gradle index d29a3e0..a064719 100644 --- a/Foodify/app/build.gradle +++ b/Foodify/app/build.gradle @@ -58,6 +58,7 @@ dependencies { implementation 'com.stepstone.apprating:app-rating:2.0.0' implementation 'com.squareup.retrofit2:retrofit:2.7.1' implementation 'com.squareup.retrofit2:converter-gson:2.7.1' + implementation 'com.github.d-max:spots-dialog:0.7@aar' implementation 'com.squareup.picasso:picasso:2.5.2' implementation 'com.firebaseui:firebase-ui-database:1.2.0' diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/Home.java b/Foodify/app/src/main/java/com/waterbase/foodify/Home.java index 08476ae..29add57 100644 --- a/Foodify/app/src/main/java/com/waterbase/foodify/Home.java +++ b/Foodify/app/src/main/java/com/waterbase/foodify/Home.java @@ -1,7 +1,9 @@ package com.waterbase.foodify; +import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; +import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -10,6 +12,7 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.ActionBarDrawerToggle; +import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import androidx.core.view.GravityCompat; @@ -19,10 +22,14 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.firebase.ui.database.FirebaseRecyclerAdapter; +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.OnFailureListener; +import com.google.android.gms.tasks.Task; import com.google.android.material.navigation.NavigationView; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.iid.FirebaseInstanceId; +import com.rengwuxian.materialedittext.MaterialEditText; import com.squareup.picasso.Picasso; import com.waterbase.foodify.Common.Common; import com.waterbase.foodify.Interface.ItemClickListener; @@ -30,6 +37,10 @@ import com.waterbase.foodify.Model.Category; import com.waterbase.foodify.Model.Token; import com.waterbase.foodify.ViewHolder.MenuViewHolder; +import java.util.HashMap; +import java.util.Map; + +import dmax.dialog.SpotsDialog; import io.paperdb.Paper; @@ -148,7 +159,10 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati } else if (id == R.id.nav_order) { Intent orderIntent = new Intent(Home.this, OrderStatus.class); startActivity(orderIntent); - } else if (id == R.id.nav_log_out) { + } else if (id == R.id.nav_change_pwd) { + showChangePasswordDialog(); + } + else if (id == R.id.nav_log_out) { //Delete Remember user & password Paper.book().destroy(); @@ -165,4 +179,66 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati return true; } + + private void showChangePasswordDialog() { + AlertDialog.Builder alertDialog = new AlertDialog.Builder(Home.this); + alertDialog.setTitle("Đổi mật khẩu"); + alertDialog.setMessage("Vui lòng điền đầy đủ thông tin"); + + LayoutInflater inflater = LayoutInflater.from(this); + View layout_pwd = inflater.inflate(R.layout.change_password_layout, null); + + MaterialEditText edtPassword = (MaterialEditText) layout_pwd.findViewById(R.id.edtPassword); + MaterialEditText edtNewPassword = (MaterialEditText) layout_pwd.findViewById(R.id.edtNewPassword); + MaterialEditText edtRepeatPassword = (MaterialEditText) layout_pwd.findViewById(R.id.edtRepeatPassword); + + alertDialog.setView(layout_pwd); + + //Button + alertDialog.setPositiveButton("Đổi mật khẩu", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + + android.app.AlertDialog waitingDialog = new SpotsDialog(Home.this); + waitingDialog.show(); + + //Check old password + if(edtPassword.getText().toString().equals(Common.currentUser.getPassword())) { + + //Check new password and repeat password + if(edtNewPassword.getText().toString().equals(edtRepeatPassword.getText().toString())){ + Map passwordUpdate = new HashMap<>(); + passwordUpdate.put("password", edtNewPassword.getText().toString()); + + //Make update + DatabaseReference user = FirebaseDatabase.getInstance().getReference("User"); + user.child(Common.currentUser.getPhone()) + .updateChildren(passwordUpdate) + .addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + waitingDialog.dismiss(); + Toast.makeText(Home.this, "Mật khẩu đã được cập nhật!", Toast.LENGTH_SHORT).show(); + } + }) + .addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception e) { + Toast.makeText(Home.this, "Đã xảy ra lỗi hệ thống: " + e.getMessage(), Toast.LENGTH_SHORT).show(); + } + }); + } else { + waitingDialog.dismiss(); + Toast.makeText(Home.this, "Mật khẩu chưa khớp! Vui lòng thử lại!", Toast.LENGTH_SHORT).show(); + } + } else { + waitingDialog.dismiss(); + Toast.makeText(Home.this, "Sai mật khẩu! Vui lòng thử lại!", Toast.LENGTH_SHORT).show(); + } + } + }); + + AlertDialog dialog = alertDialog.create(); + dialog.show(); + } } \ No newline at end of file diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/SignIn.java b/Foodify/app/src/main/java/com/waterbase/foodify/SignIn.java index 4bfa520..cc120d8 100644 --- a/Foodify/app/src/main/java/com/waterbase/foodify/SignIn.java +++ b/Foodify/app/src/main/java/com/waterbase/foodify/SignIn.java @@ -86,6 +86,8 @@ public class SignIn extends AppCompatActivity { Common.currentUser = user; startActivity(homeIntent); finish(); + + table_user.removeEventListener(this); } else { Toast.makeText(SignIn.this, "Số điện thoại hoặc mật khẩu không đúng. Xin vui lòng thử lại!", Toast.LENGTH_SHORT).show(); } diff --git a/Foodify/app/src/main/res/drawable/ic_baseline_security_24.xml b/Foodify/app/src/main/res/drawable/ic_baseline_security_24.xml new file mode 100644 index 0000000..adde47d --- /dev/null +++ b/Foodify/app/src/main/res/drawable/ic_baseline_security_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/Foodify/app/src/main/res/layout/change_password_layout.xml b/Foodify/app/src/main/res/layout/change_password_layout.xml new file mode 100644 index 0000000..3f9370c --- /dev/null +++ b/Foodify/app/src/main/res/layout/change_password_layout.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Foodify/app/src/main/res/menu/activity_main_drawer.xml b/Foodify/app/src/main/res/menu/activity_main_drawer.xml index 87d050e..334329b 100644 --- a/Foodify/app/src/main/res/menu/activity_main_drawer.xml +++ b/Foodify/app/src/main/res/menu/activity_main_drawer.xml @@ -12,6 +12,13 @@ android:id="@+id/nav_order" android:icon="@drawable/ic_baseline_access_time_24" android:title="Tình trạng đơn hàng" /> + + + android:layout_height="match_parent"> - + - + - + + + + + + - + + + + + + + + + + + \ No newline at end of file