package ch.pizzapp.android.activity; import android.support.annotation.NonNull; import android.os.Bundle; import android.widget.Button; import com.afollestad.materialdialogs.DialogAction; import com.afollestad.materialdialogs.MaterialDialog; import java.util.HashMap; import butterknife.BindString; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import ch.pizzapp.android.R; import ch.pizzapp.android.api.ApiEndPoints; import ch.pizzapp.android.api.ApiErrorUtils; import ch.pizzapp.android.api.ApiService; import ch.pizzapp.android.api.ResponseObject; import ch.pizzapp.android.helper.DialogHelper; import ch.pizzapp.android.helper.SessionHelper; import ch.pizzapp.android.model.UserModel; import ch.pizzapp.android.view.AppEditText; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; public class UpdateProfileActivity extends BaseActivity { @BindView(R.id.firstnamePizzalinkEditText) AppEditText firstnameAppEditText; @BindView(R.id.lasstnamePizzalinkEditText) AppEditText lasstnameAppEditText; @BindView(R.id.telephonePizzalinkEditText) AppEditText telephoneAppEditText; @BindView(R.id.emailPizzalinkEditText) AppEditText emailAppEditText; @BindView(R.id.updateProfileButton) Button updateProfileButton; @BindString(R.string.alert_fill_all_fields) String fillAllFieldsText; @BindString(R.string.alert_invalid_email) String validEmailText; @BindString(R.string.profile_updated) String profileUpdatedText; private UserModel userModel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_update_profile); ButterKnife.bind(this); getDataFromIntent(); setFields(); } @OnClick(R.id.updateProfileButton) public void onClick(){ if(checkFields()) updateProfile(); } private void getDataFromIntent(){ userModel = (UserModel) getIntent().getSerializableExtra("userModel"); } private void setFields(){ firstnameAppEditText.setText(userModel.getFirstname()); lasstnameAppEditText.setText(userModel.getLastname()); telephoneAppEditText.setText(userModel.getTelephone()); emailAppEditText.setText(userModel.getEmail()); } private void updateProfile(){ DialogHelper.showLoadingDialog(); Call> call = ApiService.apiInterface.updateProfile( ApiEndPoints.API_UPDATE_PROFILE + SessionHelper.getCustomerToken().getToken(), getUpdateProfileParams()); call.enqueue(new Callback>() { @Override public void onResponse(Call> call, final Response> response) { DialogHelper.hideLoadingDialog(); if(response.isSuccessful() && response.body().getData() != null && response.body().isSuccess()){ SessionHelper.saveCustomer(response.body().getData()); DialogHelper.showOneButtonDialogWithCallback(profileUpdatedText, new MaterialDialog.SingleButtonCallback() { @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { setResult(RESULT_OK); finish(); } }); } else { ApiErrorUtils.parseError(response); } } @Override public void onFailure(Call> call, Throwable t) { DialogHelper.hideLoadingDialog(); DialogHelper.showFailedDialog(); } }); } private HashMap getUpdateProfileParams(){ HashMap params = new HashMap<>(); params.put("firstname", firstnameAppEditText.getText()); params.put("lastname", lasstnameAppEditText.getText()); params.put("email", emailAppEditText.getText()); params.put("telephone", telephoneAppEditText.getText()); return params; } private boolean checkFields(){ if(firstnameAppEditText.isEmpty() || lasstnameAppEditText.isEmpty() || telephoneAppEditText.isEmpty() || emailAppEditText.isEmpty()){ DialogHelper.showAlertDialog(BaseActivity.currentActivity, fillAllFieldsText); return false; } if(!emailAppEditText.isEmail()){ DialogHelper.showAlertDialog(BaseActivity.currentActivity, validEmailText); return false; } return true; } }