From d965f562d20ee93b10512a561fe8e13b29156a50 Mon Sep 17 00:00:00 2001 From: Nezumi2711 <73208452+Nezumi2711@users.noreply.github.com> Date: Fri, 22 Jul 2022 08:05:58 +0700 Subject: [PATCH] Add information page --- Foodify/app/build.gradle | 2 +- Foodify/app/src/main/AndroidManifest.xml | 12 +- .../main/java/com/waterbase/foodify/Cart.java | 2 +- .../com/waterbase/foodify/Common/Common.java | 2 + .../main/java/com/waterbase/foodify/Home.java | 102 +-------- .../waterbase/foodify/InformationUser.java | 164 ++++++++++++++ .../com/waterbase/foodify/Model/User.java | 1 - .../res/layout/activity_information_user.xml | 202 ++++++++++++++++++ .../src/main/res/layout/activity_sign_in.xml | 4 +- .../src/main/res/layout/activity_sign_up.xml | 8 +- .../main/res/menu/activity_main_drawer.xml | 12 +- app-debug.apk | Bin 27066793 -> 27070181 bytes 12 files changed, 393 insertions(+), 118 deletions(-) create mode 100644 Foodify/app/src/main/java/com/waterbase/foodify/InformationUser.java create mode 100644 Foodify/app/src/main/res/layout/activity_information_user.xml 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +