diff --git a/Foodify/app/build.gradle b/Foodify/app/build.gradle
index 6ba663b..c6d3059 100644
--- a/Foodify/app/build.gradle
+++ b/Foodify/app/build.gradle
@@ -10,7 +10,7 @@ android {
minSdk 23
targetSdk 30
versionCode 1
- versionName "97.2"
+ versionName "98.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
diff --git a/Foodify/app/src/main/AndroidManifest.xml b/Foodify/app/src/main/AndroidManifest.xml
index 849dc36..cc37605 100644
--- a/Foodify/app/src/main/AndroidManifest.xml
+++ b/Foodify/app/src/main/AndroidManifest.xml
@@ -23,13 +23,16 @@
android:theme="@style/Theme.Foodify"
tools:replace="android:theme"
tools:targetApi="31">
+
-
+
@@ -61,16 +64,15 @@
+ android:theme="@style/Theme.Foodify.NoActionBar" />
+ android:theme="@style/Theme.Foodify.NoActionBar" />
+ android:theme="@style/Theme.Foodify.NoActionBar" />
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/Cart.java b/Foodify/app/src/main/java/com/waterbase/foodify/Cart.java
index 7d3eb14..9e21568 100644
--- a/Foodify/app/src/main/java/com/waterbase/foodify/Cart.java
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/Cart.java
@@ -249,7 +249,7 @@ public class Cart extends AppCompatActivity implements RecyclerItemTouchHelperLi
} else {
edtAddress.setText("");
edtAddress.setEnabled(false);
- Toast.makeText(Cart.this, "Vui lòng điền địa chỉ mặc định của bạn!", Toast.LENGTH_SHORT).show();
+ Toast.makeText(Cart.this, "Địa chỉ mặc định chưa có sẵn! Vui lòng điền địa chỉ mặc định trong thông tin cá nhân!", Toast.LENGTH_SHORT).show();
}
}
}
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/Common/Common.java b/Foodify/app/src/main/java/com/waterbase/foodify/Common/Common.java
index 26e3aa0..f4f836a 100644
--- a/Foodify/app/src/main/java/com/waterbase/foodify/Common/Common.java
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/Common/Common.java
@@ -20,6 +20,8 @@ import java.util.Locale;
public class Common {
public static User currentUser;
+ public final static String PASSWORD_PATTERN = "^(?=.*[0-9])(?=.*[A-Z])(?=.*[@#$%^&+=!_])(?=\\S+$).{4,}$";
+
public static String versionAppNewest = "";
public static String changelog = "";
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 630e189..1332cbc 100644
--- a/Foodify/app/src/main/java/com/waterbase/foodify/Home.java
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/Home.java
@@ -90,7 +90,7 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
FirebaseDatabase database;
DatabaseReference category;
- final String PASSWORD_PATTERN = "^(?=.*[0-9])(?=.*[A-Z])(?=.*[@#$%^&+=!_])(?=\\S+$).{4,}$";
+
RecyclerView recyler_menu;
FirebaseRecyclerAdapter adapter;
@@ -105,6 +105,8 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
DownloadManager manager = null;
+ TextView navUserName;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -241,7 +243,7 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
//Set name for user
View headerView = navigationView.getHeaderView(0);
- TextView navUserName = (TextView) headerView.findViewById(R.id.txtFullName);
+ navUserName = (TextView) headerView.findViewById(R.id.txtFullName);
navUserName.setText("Xin chào " + Common.currentUser.getName() + "!");
updateToken(FirebaseInstanceId.getInstance().getToken());
@@ -432,6 +434,7 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
protected void onResume() {
super.onResume();
adapter.startListening();
+ navUserName.setText("Xin chào " + Common.currentUser.getName() + "!");
fab.setCount(new Database(this).getCountCart(Common.currentUser.getPhone()));
}
@@ -462,10 +465,8 @@ 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_change_pwd) {
- showChangePasswordDialog();
- } else if (id == R.id.nav_home_address) {
- showHomeAddressDialog();
+ } else if (id == R.id.nav_information) {
+ startActivity(new Intent(Home.this, InformationUser.class));
} else if (id == R.id.nav_setting) {
showSettingDialog();
} else if (id == R.id.nav_favorites) {
@@ -570,95 +571,6 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
alertDialog.show();
}
- 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);
-
- alertDialog.setPositiveButton("Đổi mật khẩu", null);
-
- AlertDialog d = alertDialog.create();
- d.setOnShowListener(new DialogInterface.OnShowListener() {
- @Override
- public void onShow(DialogInterface dialog) {
- Button changePassword = d.getButton(AlertDialog.BUTTON_POSITIVE);
- changePassword.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- android.app.AlertDialog waitingDialog = new SpotsDialog(Home.this);
- waitingDialog.show();
-
- if (!TextUtils.isEmpty(edtPassword.getText().toString()) && !TextUtils.isEmpty(edtNewPassword.getText().toString()) && !TextUtils.isEmpty(edtRepeatPassword.getText().toString())) {
- //Verify password
- Pattern patternPassword = Pattern.compile(PASSWORD_PATTERN);
- Matcher matcherPassword = patternPassword.matcher(edtRepeatPassword.getText().toString());
-
- if (matcherPassword.matches() && edtRepeatPassword.getText().toString().length() >= 8) {
- //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();
- Common.currentUser.setPassword(edtNewPassword.getText().toString());
- Toast.makeText(Home.this, "Mật khẩu đã được cập nhật!", Toast.LENGTH_SHORT).show();
- d.dismiss();
- }
- })
- .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();
- edtRepeatPassword.setError("Mật khẩu chưa khớp! Vui lòng thử lại!");
- }
- } else {
- waitingDialog.dismiss();
- edtPassword.setError("Sai mật khẩu, vui lòng thử lại!");
- }
- } else {
- waitingDialog.dismiss();
- Toast.makeText(Home.this, "Mật khẩu của bạn cần tối thiểu có 8 ký tự, 1 ký tự viết hoa, 1 số và 1 ký tự đặc biệt!", Toast.LENGTH_LONG).show();
- }
- } else {
- waitingDialog.dismiss();
- if (TextUtils.isEmpty(edtPassword.getText().toString())) {
- edtPassword.setError("Vui lòng điền vào trường này!");
- } else if (TextUtils.isEmpty(edtNewPassword.getText().toString())) {
- edtNewPassword.setError("Vui lòng điền vào trường này!");
- } else if (TextUtils.isEmpty(edtRepeatPassword.getText().toString())) {
- edtRepeatPassword.setError("Vui lòng điền vào trường này!");
- }
- }
- }
- });
- }
- });
- d.show();
- }
-
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/InformationUser.java b/Foodify/app/src/main/java/com/waterbase/foodify/InformationUser.java
new file mode 100644
index 0000000..bd2e22b
--- /dev/null
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/InformationUser.java
@@ -0,0 +1,164 @@
+package com.waterbase.foodify;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.ActionBar;
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.graphics.drawable.ColorDrawable;
+import android.os.Bundle;
+import android.text.Html;
+import android.text.TextUtils;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.Button;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.OnFailureListener;
+import com.google.android.gms.tasks.Task;
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.database.FirebaseDatabase;
+import com.waterbase.foodify.Common.Common;
+import com.waterbase.foodify.Model.User;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class InformationUser extends AppCompatActivity {
+
+ TextView edtFullName, edtPhone, edtHomeAddress, edtOldPassword, edtPassword, edtNewPassword;
+ Button btnSave;
+
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_information_user);
+
+ final ProgressBar progressBar = findViewById(R.id.progressBar);
+
+ edtFullName = findViewById(R.id.edtFullName);
+ edtPhone = findViewById(R.id.edtPhone);
+ edtHomeAddress = findViewById(R.id.edtHomeAddress);
+ edtOldPassword = findViewById(R.id.edtOldPassword);
+ edtPassword = findViewById(R.id.edtPassword);
+ edtNewPassword = findViewById(R.id.edtPasswordVerify);
+
+ btnSave = findViewById(R.id.btnSave);
+
+ //Load data
+ edtFullName.setText(Common.currentUser.getName());
+ edtPhone.setText(Common.currentUser.getPhone());
+ edtHomeAddress.setText(Common.currentUser.getHomeAddress());
+
+ btnSave.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ boolean verifyName = false, verifyHomeAddress = false, verifyPassword = false;
+
+ progressBar.setVisibility(View.VISIBLE);
+ btnSave.setVisibility(View.GONE);
+
+ User user = new User();
+
+ //Validate Name
+ if (!TextUtils.isEmpty(edtFullName.getText().toString())) {
+ if (edtFullName.getText().toString().length() >= 8) {
+ user.setName(edtFullName.getText().toString());
+ verifyName = true;
+ } else {
+ edtFullName.setError("Vui lòng điền trường này với ít nhất là 8 ký tự!");
+ }
+ } else {
+ edtFullName.setError("Vui lòng không bỏ trống trường này!");
+ }
+
+ user.setPhone(edtPhone.getText().toString());
+
+ //Validate Home Address
+ if (!TextUtils.isEmpty(edtHomeAddress.getText().toString())) {
+ if (edtHomeAddress.getText().toString().length() >= 12) {
+ user.setHomeAddress(edtHomeAddress.getText().toString());
+ verifyHomeAddress = true;
+ } else {
+ edtHomeAddress.setError("Vui lòng điền trường này với ít nhất là 12 ký tự!");
+ }
+ } else {
+ verifyHomeAddress = true;
+ }
+
+
+ //Validate Password
+ if (!TextUtils.isEmpty(edtOldPassword.getText().toString()) && !TextUtils.isEmpty(edtPassword.getText().toString()) && !TextUtils.isEmpty(edtNewPassword.getText().toString())) {
+ //Verify password
+ Pattern patternPassword = Pattern.compile(Common.PASSWORD_PATTERN);
+ Matcher matcherPassword = patternPassword.matcher(edtNewPassword.getText().toString());
+
+ if (matcherPassword.matches() && edtNewPassword.getText().toString().length() >= 8) {
+ //Check old password
+ if (Common.encryptPassword(edtOldPassword.getText().toString()).equals(Common.currentUser.getPassword())) {
+
+ //Check new password and repeat password
+ if (edtPassword.getText().toString().equals(edtNewPassword.getText().toString())) {
+ user.setPassword(Common.encryptPassword(edtNewPassword.getText().toString()));
+ verifyPassword = true;
+ } else {
+ edtNewPassword.setError("Mật khẩu chưa khớp! Vui lòng thử lại!");
+ }
+ } else {
+ edtOldPassword.setError("Sai mật khẩu, vui lòng thử lại!");
+ }
+ } else {
+ Toast.makeText(InformationUser.this, "Mật khẩu của bạn cần tối thiểu có 8 ký tự, 1 ký tự viết hoa, 1 số và 1 ký tự đặc biệt!", Toast.LENGTH_LONG).show();
+ }
+ } else {
+ user.setPassword(Common.currentUser.getPassword());
+ verifyPassword = true;
+ }
+
+ if (verifyName && verifyPassword && verifyHomeAddress) {
+ Common.currentUser = user;
+ FirebaseDatabase.getInstance().getReference("User")
+ .child(Common.currentUser.getPhone())
+ .setValue(user).addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+
+ progressBar.setVisibility(View.GONE);
+ btnSave.setVisibility(View.VISIBLE);
+ Toast.makeText(InformationUser.this, "Cập nhật thông tin thành công!", Toast.LENGTH_SHORT).show();
+ }
+ });
+ } else {
+ progressBar.setVisibility(View.GONE);
+ btnSave.setVisibility(View.VISIBLE);
+ }
+ }
+ });
+
+
+ // calling the action bar
+ ActionBar actionBar = getSupportActionBar();
+ actionBar.setBackgroundDrawable(new ColorDrawable(0xFFFF5353));
+ actionBar.setTitle(Html.fromHtml("Giỏ hàng"));
+
+ // showing the back button in action bar
+ actionBar.setDisplayHomeAsUpEnabled(true);
+
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ this.finish();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+}
\ No newline at end of file
diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/Model/User.java b/Foodify/app/src/main/java/com/waterbase/foodify/Model/User.java
index 84b0bdf..3a4b241 100644
--- a/Foodify/app/src/main/java/com/waterbase/foodify/Model/User.java
+++ b/Foodify/app/src/main/java/com/waterbase/foodify/Model/User.java
@@ -15,7 +15,6 @@ public class User implements Serializable {
public User(String name, String password){
Name = name;
Password = password;
- IsStaff = "false";
}
public String getName() {
diff --git a/Foodify/app/src/main/res/layout/activity_information_user.xml b/Foodify/app/src/main/res/layout/activity_information_user.xml
new file mode 100644
index 0000000..2e4cda3
--- /dev/null
+++ b/Foodify/app/src/main/res/layout/activity_information_user.xml
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Foodify/app/src/main/res/layout/activity_sign_in.xml b/Foodify/app/src/main/res/layout/activity_sign_in.xml
index 46db117..7fb49d7 100644
--- a/Foodify/app/src/main/res/layout/activity_sign_in.xml
+++ b/Foodify/app/src/main/res/layout/activity_sign_in.xml
@@ -58,7 +58,7 @@
android:fontFamily="@font/regular"
android:inputType="phone"
android:textColor="@color/white"
- android:textColorHint="@color/white"
+ android:textColorHint="#6DA3A3A3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txtSignUp"
@@ -76,7 +76,7 @@
android:fontFamily="@font/regular"
android:inputType="textPassword"
android:textColor="@color/white"
- android:textColorHint="@color/white"
+ android:textColorHint="#6DA3A3A3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edtPhone"
diff --git a/Foodify/app/src/main/res/layout/activity_sign_up.xml b/Foodify/app/src/main/res/layout/activity_sign_up.xml
index dae3e5c..a4c32f7 100644
--- a/Foodify/app/src/main/res/layout/activity_sign_up.xml
+++ b/Foodify/app/src/main/res/layout/activity_sign_up.xml
@@ -56,7 +56,7 @@
android:hint="Họ và tên"
android:fontFamily="@font/regular"
android:textColor="@color/white"
- android:textColorHint="@color/white"
+ android:textColorHint="#6DA3A3A3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txtSignUp"
@@ -75,7 +75,7 @@
android:maxLength="10"
android:inputType="phone"
android:textColor="@color/white"
- android:textColorHint="@color/white"
+ android:textColorHint="#6DA3A3A3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txtFullName"
@@ -93,7 +93,7 @@
android:layout_margin="10dp"
android:inputType="textPassword"
android:textColor="@color/white"
- android:textColorHint="@color/white"
+ android:textColorHint="#6DA3A3A3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edtPhone"
@@ -111,7 +111,7 @@
android:layout_margin="10dp"
android:inputType="textPassword"
android:textColor="@color/white"
- android:textColorHint="@color/white"
+ android:textColorHint="#6DA3A3A3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edtPassword"
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 f60459c..0bfa4ef 100644
--- a/Foodify/app/src/main/res/menu/activity_main_drawer.xml
+++ b/Foodify/app/src/main/res/menu/activity_main_drawer.xml
@@ -5,10 +5,10 @@
-