From 6edab4ec77119156db1f0e76cff8a172c008f22c Mon Sep 17 00:00:00 2001 From: Nezumi <123229563+Nez27@users.noreply.github.com> Date: Fri, 17 Mar 2023 18:32:38 +0700 Subject: [PATCH] Check phone and email user before register --- .idea/misc.xml | 2 +- .../com/capstone/foodify/API/FoodApi.java | 6 +- .../capstone/foodify/API/FoodApiToken.java | 2 +- .../foodify/Activity/SignUpActivity.java | 57 ++++++++++++++----- .../Model/Response/EmailOrPhoneExist.java | 22 +++++++ 5 files changed, 71 insertions(+), 18 deletions(-) create mode 100644 app/src/main/java/com/capstone/foodify/Model/Response/EmailOrPhoneExist.java diff --git a/.idea/misc.xml b/.idea/misc.xml index 8978d23..773fe0f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + diff --git a/app/src/main/java/com/capstone/foodify/API/FoodApi.java b/app/src/main/java/com/capstone/foodify/API/FoodApi.java index 88e7e14..7eae629 100644 --- a/app/src/main/java/com/capstone/foodify/API/FoodApi.java +++ b/app/src/main/java/com/capstone/foodify/API/FoodApi.java @@ -3,6 +3,7 @@ package com.capstone.foodify.API; import com.capstone.foodify.Model.Category; import com.capstone.foodify.Model.DistrictWardResponse; import com.capstone.foodify.Model.Food; +import com.capstone.foodify.Model.Response.EmailOrPhoneExist; import com.capstone.foodify.Model.Response.Foods; import com.capstone.foodify.Model.Response.Shops; import com.capstone.foodify.Model.Shop; @@ -28,7 +29,7 @@ public interface FoodApi { Gson gson = new GsonBuilder().setDateFormat("HH:mm:ss dd-MM-yyyy").setLenient().create(); FoodApi apiService = new Retrofit.Builder() - .baseUrl("http://192.168.1.183:8080/api/").addConverterFactory(GsonConverterFactory.create(gson)) + .baseUrl("http://192.168.1.88:8080/api/").addConverterFactory(GsonConverterFactory.create(gson)) .build() .create(FoodApi.class); @@ -74,4 +75,7 @@ public interface FoodApi { @Headers({"accept: */*", "Content-Type: application/json"}) @POST("auth/signup") Call register(@Body User user); + + @POST("auth/check") + Call checkEmailOrPhoneExist (@Body User user); } diff --git a/app/src/main/java/com/capstone/foodify/API/FoodApiToken.java b/app/src/main/java/com/capstone/foodify/API/FoodApiToken.java index 741cd19..27f839d 100644 --- a/app/src/main/java/com/capstone/foodify/API/FoodApiToken.java +++ b/app/src/main/java/com/capstone/foodify/API/FoodApiToken.java @@ -43,7 +43,7 @@ public interface FoodApiToken { FoodApiToken apiService = new Retrofit.Builder() .client(client) - .baseUrl("http://192.168.1.183:8080/api/").addConverterFactory(GsonConverterFactory.create(gson)) + .baseUrl("http://192.168.1.88:8080/api/").addConverterFactory(GsonConverterFactory.create(gson)) .build() .create(FoodApiToken.class); diff --git a/app/src/main/java/com/capstone/foodify/Activity/SignUpActivity.java b/app/src/main/java/com/capstone/foodify/Activity/SignUpActivity.java index 2a107ba..5a0e21f 100644 --- a/app/src/main/java/com/capstone/foodify/Activity/SignUpActivity.java +++ b/app/src/main/java/com/capstone/foodify/Activity/SignUpActivity.java @@ -26,6 +26,7 @@ import com.capstone.foodify.API.FoodApi; import com.capstone.foodify.Common; import com.capstone.foodify.Model.Address; import com.capstone.foodify.Model.DistrictWardResponse; +import com.capstone.foodify.Model.Response.EmailOrPhoneExist; import com.capstone.foodify.Model.User; import com.capstone.foodify.R; import com.google.android.material.button.MaterialButton; @@ -152,15 +153,53 @@ public class SignUpActivity extends AppCompatActivity { signUpButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - //TODO Check user have exits in database before sign up if(validateData()){ loading(); - signUp(); + checkEmailOrPhoneExist(); } } }); } + private void checkEmailOrPhoneExist(){ + //Create user object + User user = new User(); + user.setAddress(new Address(address, ward, district)); + user.setDateOfBirth(dateOfBirth); + user.setEmail(email); + user.setFullName(name); + user.setIdentifiedCode(""); + user.setImageUrl(""); + user.setLocked(false); + user.setPhoneNumber(phone); + user.setRoleName("ROLE_USER"); + + FoodApi.apiService.checkEmailOrPhoneExist(user).enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + EmailOrPhoneExist dataTemp = response.body(); + + boolean isExist = false; + + if(dataTemp != null) + isExist = dataTemp.isTrue(); + + if(!isExist){ + //If user not exist on database, the app will create account + signUp(user); + } else { + loadCompleted(); + Toast.makeText(SignUpActivity.this, "Email or Phone exist!", Toast.LENGTH_SHORT).show(); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + + } + }); + } + private boolean validateData(){ boolean dataHasValidate = true; @@ -280,7 +319,7 @@ public class SignUpActivity extends AppCompatActivity { } } - private void signUp(){ + private void signUp(User user){ FirebaseAuth auth = FirebaseAuth.getInstance(); PhoneAuthOptions options = PhoneAuthOptions.newBuilder(auth) .setPhoneNumber(Common.PHONE_CODE + edt_phone.getText().toString()) @@ -292,18 +331,6 @@ public class SignUpActivity extends AppCompatActivity { @NonNull PhoneAuthProvider.ForceResendingToken forceResendingToken) { loadCompleted(); - //Create user object - User user = new User(); - user.setAddress(new Address(address, ward, district)); - user.setDateOfBirth(dateOfBirth); - user.setEmail(email); - user.setFullName(name); - user.setIdentifiedCode(""); - user.setImageUrl(""); - user.setLocked(false); - user.setPhoneNumber(phone); - user.setRoleName("ROLE_USER"); - Intent intent = new Intent(SignUpActivity.this, VerifyAccountActivity.class); intent.putExtra("user", user); intent.putExtra("phone", edt_phone.getText().toString()); diff --git a/app/src/main/java/com/capstone/foodify/Model/Response/EmailOrPhoneExist.java b/app/src/main/java/com/capstone/foodify/Model/Response/EmailOrPhoneExist.java new file mode 100644 index 0000000..24a0e09 --- /dev/null +++ b/app/src/main/java/com/capstone/foodify/Model/Response/EmailOrPhoneExist.java @@ -0,0 +1,22 @@ +package com.capstone.foodify.Model.Response; + +public class EmailOrPhoneExist { + private String title; + private boolean isTrue; + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public boolean isTrue() { + return isTrue; + } + + public void setTrue(boolean aTrue) { + isTrue = aTrue; + } +}