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 7e8ef4b..88e7e14 100644 --- a/app/src/main/java/com/capstone/foodify/API/FoodApi.java +++ b/app/src/main/java/com/capstone/foodify/API/FoodApi.java @@ -16,14 +16,16 @@ import java.util.List; import retrofit2.Call; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; +import retrofit2.http.Body; import retrofit2.http.GET; +import retrofit2.http.Headers; import retrofit2.http.POST; import retrofit2.http.Path; import retrofit2.http.Query; public interface FoodApi { - Gson gson = new GsonBuilder().setDateFormat("HH:mm:ss dd-MM-yyyy").create(); + 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)) @@ -69,6 +71,7 @@ public interface FoodApi { @GET("sliders") Call> listSlider(); - @POST("api/auth/signup") - Call register(User user); + @Headers({"accept: */*", "Content-Type: application/json"}) + @POST("auth/signup") + Call register(@Body User user); } diff --git a/app/src/main/java/com/capstone/foodify/Activity/SignInActivity.java b/app/src/main/java/com/capstone/foodify/Activity/SignInActivity.java index 9193370..20c721d 100644 --- a/app/src/main/java/com/capstone/foodify/Activity/SignInActivity.java +++ b/app/src/main/java/com/capstone/foodify/Activity/SignInActivity.java @@ -10,7 +10,9 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; +import com.capstone.foodify.API.FoodApi; import com.capstone.foodify.Common; +import com.capstone.foodify.Model.User; import com.capstone.foodify.R; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; @@ -25,7 +27,13 @@ import com.google.firebase.auth.GetTokenResult; import com.saadahmedsoft.popupdialog.PopupDialog; import com.saadahmedsoft.popupdialog.Styles; +import org.json.JSONException; +import org.json.JSONObject; + import io.paperdb.Paper; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; public class SignInActivity extends AppCompatActivity { 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 1f4a5bf..99e3a5c 100644 --- a/app/src/main/java/com/capstone/foodify/Activity/SignUpActivity.java +++ b/app/src/main/java/com/capstone/foodify/Activity/SignUpActivity.java @@ -24,6 +24,7 @@ import android.widget.Toast; 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.User; import com.capstone.foodify.R; @@ -157,6 +158,7 @@ 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(); @@ -288,8 +290,19 @@ public class SignUpActivity extends AppCompatActivity { 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()); intent.putExtra("verificationId", verificationId); intent.putExtra("token", forceResendingToken); diff --git a/app/src/main/java/com/capstone/foodify/Activity/VerifyAccountActivity.java b/app/src/main/java/com/capstone/foodify/Activity/VerifyAccountActivity.java index f71ceeb..4554982 100644 --- a/app/src/main/java/com/capstone/foodify/Activity/VerifyAccountActivity.java +++ b/app/src/main/java/com/capstone/foodify/Activity/VerifyAccountActivity.java @@ -17,6 +17,8 @@ import android.widget.TextView; import android.widget.Toast; import com.capstone.foodify.API.FoodApi; +import com.capstone.foodify.Common; +import com.capstone.foodify.Model.User; import com.capstone.foodify.R; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; @@ -32,6 +34,10 @@ import com.saadahmedsoft.popupdialog.Styles; import java.util.concurrent.TimeUnit; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + public class VerifyAccountActivity extends AppCompatActivity { private static final String PHONE_CODE = "+84"; @@ -41,6 +47,7 @@ public class VerifyAccountActivity extends AppCompatActivity { String verificationId, phone = null; ConstraintLayout progressLayout; TextView resendCodeText, resendCodeTextButton, countDown, errorText; + User user; @Override protected void onCreate(Bundle savedInstanceState) { @@ -53,6 +60,7 @@ public class VerifyAccountActivity extends AppCompatActivity { if(getIntent() != null){ verificationId = getIntent().getStringExtra("verificationId"); phone = getIntent().getStringExtra("phone"); + user = (User) getIntent().getSerializableExtra("user"); } @@ -176,10 +184,19 @@ public class VerifyAccountActivity extends AppCompatActivity { if(task.isSuccessful()) { //Add information user to server -// FoodApi.apiService.register() + FoodApi.apiService.register(user).enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + //Create user success; + Toast.makeText(VerifyAccountActivity.this, "Tạo tài khoản thành công!", Toast.LENGTH_SHORT).show(); + startActivity(new Intent(VerifyAccountActivity.this, SignInActivity.class)); + } - Toast.makeText(VerifyAccountActivity.this, "Tạo tài khoản thành công!", Toast.LENGTH_SHORT).show(); - startActivity(new Intent(VerifyAccountActivity.this, SignInActivity.class)); + @Override + public void onFailure(Call call, Throwable t) { + Common.showErrorServerNotification(VerifyAccountActivity.this); + } + }); } else { Toast.makeText(VerifyAccountActivity.this, "Mã code không đúng. Vui lòng kiểm tra lại!", Toast.LENGTH_SHORT).show(); } diff --git a/app/src/main/java/com/capstone/foodify/Common.java b/app/src/main/java/com/capstone/foodify/Common.java index 59ec245..d6f02ee 100644 --- a/app/src/main/java/com/capstone/foodify/Common.java +++ b/app/src/main/java/com/capstone/foodify/Common.java @@ -106,7 +106,7 @@ public class Common { } } - private static void showErrorServerNotification(Activity activity){ + public static void showErrorServerNotification(Activity activity){ PopupDialog.getInstance(activity) .setStyle(Styles.FAILED) .setHeading("Lỗi") diff --git a/app/src/main/java/com/capstone/foodify/Model/Address.java b/app/src/main/java/com/capstone/foodify/Model/Address.java index f9a85c4..661571c 100644 --- a/app/src/main/java/com/capstone/foodify/Model/Address.java +++ b/app/src/main/java/com/capstone/foodify/Model/Address.java @@ -1,11 +1,19 @@ package com.capstone.foodify.Model; -public class Address { +import java.io.Serializable; + +public class Address implements Serializable { private int id; private String address; private String ward; private String district; + public Address(String address, String ward, String district) { + this.address = address; + this.ward = ward; + this.district = district; + } + public Address(int id, String address, String ward, String district) { this.id = id; this.address = address; diff --git a/app/src/main/java/com/capstone/foodify/Model/User.java b/app/src/main/java/com/capstone/foodify/Model/User.java index 5d2247b..6f45634 100644 --- a/app/src/main/java/com/capstone/foodify/Model/User.java +++ b/app/src/main/java/com/capstone/foodify/Model/User.java @@ -1,24 +1,38 @@ package com.capstone.foodify.Model; -public class User { +import com.google.gson.annotations.SerializedName; + +import java.io.Serializable; + +public class User implements Serializable { + @SerializedName("addressDto") + private Address address; private String dateOfBirth; private String email; private String fullName; private String identifiedCode; private String imageUrl; - private String isLocked; + private boolean isLocked; private String phoneNumber; private String roleName; - public User(String dateOfBirth, String email, String fullName, String identifiedCode, String imageUrl, String isLocked, String phoneNumber, String roleName) { - this.dateOfBirth = dateOfBirth; - this.email = email; - this.fullName = fullName; - this.identifiedCode = identifiedCode; - this.imageUrl = imageUrl; - this.isLocked = isLocked; - this.phoneNumber = phoneNumber; - this.roleName = roleName; + public User() { + } + + public Address getAddress() { + return address; + } + + public void setAddress(Address address) { + this.address = address; + } + + public boolean isLocked() { + return isLocked; + } + + public void setLocked(boolean locked) { + isLocked = locked; } public String getDateOfBirth() { @@ -61,11 +75,11 @@ public class User { this.imageUrl = imageUrl; } - public String getIsLocked() { + public boolean getIsLocked() { return isLocked; } - public void setIsLocked(String isLocked) { + public void setIsLocked(boolean isLocked) { this.isLocked = isLocked; }