Commit e4777055 authored by Wahyu Wibowo's avatar Wahyu Wibowo

create login with api

parent 1ec17828
......@@ -11,12 +11,19 @@ import android.view.View;
import android.widget.Toast;
import com.example.yourcashiertest.R;
import com.example.yourcashiertest.clients.ApiClient;
import com.example.yourcashiertest.databinding.ActivityLoginBinding;
import com.example.yourcashiertest.models.Login;
import com.example.yourcashiertest.models.ResponseLogin;
import com.example.yourcashiertest.services.UserService;
import com.example.yourcashiertest.viewmodels.UserViewModel;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class LoginActivity extends AppCompatActivity {
ActivityLoginBinding binding;
public static final String DATA_LOGIN = "DATA_LOGIN";
private PrefManager prefManager;
UserViewModel viewModel;
......@@ -44,7 +51,6 @@ public class LoginActivity extends AppCompatActivity {
binding.setLoading(true);
viewModel.setListUser();
launchMain();
finish();
}
});
}
......@@ -55,28 +61,41 @@ public class LoginActivity extends AppCompatActivity {
startActivity(new Intent(LoginActivity.this, RegisterActivity.class));
}
public void launchMain() {
Login login = new Login();
login.setEmail(binding.etUsername.getText().toString());
login.setPassword(binding.etPassword.getText().toString());
requestLogin(login);
}
public void requestLogin(Login login){
try {
viewModel.getListUser().observe(this, users -> {
for (int i = 0; i < users.size(); i++) {
if (binding.etUsername.getText().toString().equals(users.get(i).getEmail())
&& binding.etPassword.getText().toString().equals(users.get(i).getPassword())) {
ApiClient.client(UserService.class, UserViewModel.BASE_URL).loginUser(login).enqueue(new Callback<ResponseLogin>() {
@Override
public void onResponse(Call<ResponseLogin> call, Response<ResponseLogin> response) {
if (response.code() >= 200 & response.code() <= 299){
Log.d("body", String.valueOf(response.body().getData().getFullName()));
prefManager.setFirstLogin(false);
binding.setLoading(false);
startActivity(new Intent(LoginActivity.this, MainActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
prefManager.setDataUser(users.get(i).getFullName());
prefManager.setDataUser(response.body().getData().getFullName());
finish();
return;
}else{
Toast.makeText(getApplicationContext(), "Email or password wrong", Toast.LENGTH_LONG).show();
binding.setLoading(false);
}
}
Toast.makeText(LoginActivity.this, "User Not Found!", Toast.LENGTH_LONG).show();
binding.setLoading(false);
return;
@Override
public void onFailure(Call<ResponseLogin> call, Throwable t) {
t.printStackTrace();
}
});
}catch (Exception e){
e.printStackTrace();
}
}
public void checkSession(){
prefManager.setFirstLogin(false);
startActivity(new Intent(LoginActivity.this, MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
......
......@@ -32,9 +32,7 @@ public class RegisterActivity extends AppCompatActivity {
viewModel = new ViewModelProvider(this, new ViewModelProvider.NewInstanceFactory()).get(UserViewModel.class);
binding.btnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
binding.btnRegister.setOnClickListener(v -> {
if(binding.etUsername.getText().toString().length() == 0 || binding.etPassword.getText().toString().length() == 0
|| binding.etEmail.getText().toString().length() == 0 ||binding.etPhoneNumber.getText().toString().length() == 0){
Toast.makeText(getApplicationContext(), "Please input All Required Data", Toast.LENGTH_SHORT).show();
......@@ -51,7 +49,6 @@ public class RegisterActivity extends AppCompatActivity {
Toast.makeText(getApplicationContext(), "Register Was Successful", Toast.LENGTH_LONG).show();
startActivity(new Intent(getApplicationContext(), LoginActivity.class));
}
}
});
}
......
package com.example.yourcashiertest.models;
import com.google.gson.annotations.SerializedName;
public class Data{
@SerializedName("password")
private String password;
@SerializedName("full_name")
private String fullName;
@SerializedName("updated_at")
private String updatedAt;
@SerializedName("created_at")
private String createdAt;
@SerializedName("phone_number")
private String phoneNumber;
@SerializedName("id")
private int id;
@SerializedName("email")
private String email;
public void setPassword(String password){
this.password = password;
}
public String getPassword(){
return password;
}
public void setFullName(String fullName){
this.fullName = fullName;
}
public String getFullName(){
return fullName;
}
public void setUpdatedAt(String updatedAt){
this.updatedAt = updatedAt;
}
public String getUpdatedAt(){
return updatedAt;
}
public void setCreatedAt(String createdAt){
this.createdAt = createdAt;
}
public String getCreatedAt(){
return createdAt;
}
public void setPhoneNumber(String phoneNumber){
this.phoneNumber = phoneNumber;
}
public String getPhoneNumber(){
return phoneNumber;
}
public void setId(int id){
this.id = id;
}
public int getId(){
return id;
}
public void setEmail(String email){
this.email = email;
}
public String getEmail(){
return email;
}
}
\ No newline at end of file
package com.example.yourcashiertest.models;
import com.google.gson.annotations.SerializedName;
public class Login{
@SerializedName("email")
private String email;
@SerializedName("password")
private String password;
public String getEmail(){
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword(){
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
\ No newline at end of file
package com.example.yourcashiertest.models;
import com.google.gson.annotations.SerializedName;
public class ResponseLogin{
@SerializedName("data")
private Data data;
@SerializedName("messages")
private String messages;
@SerializedName("status")
private boolean status;
public void setData(Data data){
this.data = data;
}
public Data getData(){
return data;
}
public void setMessages(String messages){
this.messages = messages;
}
public String getMessages(){
return messages;
}
public void setStatus(boolean status){
this.status = status;
}
public boolean isStatus(){
return status;
}
}
\ No newline at end of file
package com.example.yourcashiertest.services;
import com.example.yourcashiertest.models.Login;
import com.example.yourcashiertest.models.Password;
import com.example.yourcashiertest.models.ResponseLogin;
import com.example.yourcashiertest.models.ResponseUser;
import com.example.yourcashiertest.models.User;
import java.util.List;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
......@@ -23,6 +23,10 @@ public interface UserService {
@POST("v1/customer")
Call<User> registerUser(@Body User user);
@Headers("Content-Type: application/json")
@POST("v1/login")
Call<ResponseLogin> loginUser(@Body Login login);
@Headers("Content-Type: application/json")
@PUT("v1/change_password/{id}")
Call<Password> editPassword(@Path("id") int id, @Body Password password);
......
......@@ -6,11 +6,11 @@ import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import com.example.yourcashiertest.clients.ApiClient;
import com.example.yourcashiertest.models.Login;
import com.example.yourcashiertest.models.Password;
import com.example.yourcashiertest.models.ResponseUser;
import com.example.yourcashiertest.models.User;
import com.example.yourcashiertest.services.UserService;
import com.google.gson.Gson;
import java.util.List;
......@@ -21,7 +21,7 @@ import retrofit2.Response;
public class UserViewModel extends ViewModel {
MutableLiveData<List<User>> listUser = new MutableLiveData<>();
public final String BASE_URL = "https://your-cashier.herokuapp.com/api/";
public static final String BASE_URL = "https://your-cashier.herokuapp.com/api/";
public MutableLiveData<List<User>> getListUser(){
......@@ -74,8 +74,19 @@ public class UserViewModel extends ViewModel {
});
}
public String toStringPassword(String password){
return "{ new_password:" + password + "}";
}
// public void login(Login login){
// ApiClient.client(UserService.class, BASE_URL)
// .loginUser(login).enqueue(new Callback<Login>() {
// @Override
// public void onResponse(Call<Login> call, Response<Login> response) {
//
// }
//
// @Override
// public void onFailure(Call<Login> call, Throwable t) {
//
// }
// });
// }
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment