order services

This commit is contained in:
cimenmus
2017-10-21 21:23:17 +03:00
parent eb6b9b9bb9
commit 1283fbb631
25 changed files with 482 additions and 175 deletions

1
.idea/modules.xml generated
View File

@@ -4,6 +4,7 @@
<modules> <modules>
<module fileurl="file://$PROJECT_DIR$/Pizzalink.iml" filepath="$PROJECT_DIR$/Pizzalink.iml" /> <module fileurl="file://$PROJECT_DIR$/Pizzalink.iml" filepath="$PROJECT_DIR$/Pizzalink.iml" />
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" /> <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
<module fileurl="file://$PROJECT_DIR$/pizzalink-android.iml" filepath="$PROJECT_DIR$/pizzalink-android.iml" />
</modules> </modules>
</component> </component>
</project> </project>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="ch.pizzalink.android"> package="ch.pizzalink.android">
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
@@ -12,19 +13,39 @@
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme.NoActionBar"> android:theme="@style/AppTheme.NoActionBar">
<activity android:name=".activity.SplashActivity">
<activity
android:name=".activity.SplashActivity"
android:screenOrientation="portrait">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name=".activity.WelcomeActivity" />
<activity android:name=".activity.LoginActivity" /> <activity
<activity android:name=".activity.RegisterActivity" /> android:name=".activity.WelcomeActivity"
<activity android:name=".activity.MainActivity" /> android:screenOrientation="portrait"/>
<activity android:name=".activity.OrderActivity" />
<activity android:name=".activity.ForgotPasswordActivity"></activity> <activity
android:name=".activity.LoginActivity"
android:screenOrientation="portrait"/>
<activity
android:name=".activity.RegisterActivity"
android:screenOrientation="portrait"/>
<activity
android:name=".activity.MainActivity"
android:screenOrientation="portrait"/>
<activity
android:name=".activity.OrderActivity"
android:screenOrientation="portrait"/>
<activity
android:name=".activity.ForgotPasswordActivity"
android:screenOrientation="portrait"/>
</application> </application>
</manifest> </manifest>

View File

@@ -27,12 +27,8 @@ public class OrderActivity extends BaseActivity {
@BindView(R.id.orderToolbar) PizzalinkToolbar orderToolbar; @BindView(R.id.orderToolbar) PizzalinkToolbar orderToolbar;
@BindView(R.id.stepperIndicator) StepperIndicator stepperIndicator; @BindView(R.id.stepperIndicator) StepperIndicator stepperIndicator;
@BindView(R.id.previousTextView) TextView previousTextView;
@BindView(R.id.nextTextView) TextView nextTextView;
private FragmentManager fragmentManager; private FragmentManager fragmentManager;
private String currentFragmentName = "";
private int currentPosition;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@@ -42,31 +38,6 @@ public class OrderActivity extends BaseActivity {
initViews(); initViews();
} }
@OnClick({R.id.previousTextView, R.id.nextTextView})
protected void onClick(View view){
switch (view.getId()){
case R.id.previousTextView:
if(currentPosition == 0){
onBackPressed();
break;
}
openFragment(--currentPosition);
break;
case R.id.nextTextView:
if(currentPosition == 4){
Intent mainActivityIntent = new Intent(this, MainActivity.class);
mainActivityIntent.putExtra("isStartWithOrderHistory", true);
startActivity(mainActivityIntent);
SharedPrefsHelper.setCartItemCount(0);
finishAffinity();
break;
}
openFragment(++currentPosition);
break;
}
}
private void initViews(){ private void initViews(){
orderToolbar.setBackIconClickListener(new View.OnClickListener() { orderToolbar.setBackIconClickListener(new View.OnClickListener() {
@Override @Override
@@ -118,21 +89,67 @@ public class OrderActivity extends BaseActivity {
break; break;
} }
stepperIndicator.setCurrentStep(position); stepperIndicator.setCurrentStep(position);
}
public void onNextClicked(String clickedFragmentName){
switch (clickedFragmentName){
case ShippingMethodFragment.FRAGMENT_NAME:
openFragment(1);
break;
case ShippingAddressFragment.FRAGMENT_NAME:
openFragment(2);
break;
case PaymentMethodFragment.FRAGMENT_NAME:
openFragment(3);
break;
case OrderSummaryFragment.FRAGMENT_NAME:
openFragment(4);
break;
case OrderResultFragment.FRAGMENT_NAME:
Intent mainActivityIntent = new Intent(this, MainActivity.class);
mainActivityIntent.putExtra("isStartWithOrderHistory", true);
startActivity(mainActivityIntent);
SharedPrefsHelper.setCartItemCount(0);
finishAffinity();
break;
}
}
public void onPreviousClicked(String clickedFragmentName){
switch (clickedFragmentName){
case ShippingAddressFragment.FRAGMENT_NAME:
openFragment(0);
break;
case PaymentMethodFragment.FRAGMENT_NAME:
openFragment(1);
break;
case OrderSummaryFragment.FRAGMENT_NAME:
openFragment(2);
break;
}
}
public void setShippingInfo(){
} }
/* public void getShippingMethodTitle(){
private void initOrderViewPager(){
orderPagerAdapter = new OrderPagerAdapter(getSupportFragmentManager()); }
orderViewPager.setAdapter(orderPagerAdapter);
stepperIndicator.setViewPager(orderViewPager, true); public void getShippingMethodCode(){
stepperIndicator.setCurrentStep();
stepperIndicator.addOnStepClickListener(new StepperIndicator.OnStepClickListener() { }
@Override
public void onStepClicked(int step) { public void setPaymentInfo(){
orderViewPager.setCurrentItem(step, true);
} }
});
public void getPaymentMethodTitle(){
}
public void getPaymentMethodCode(){
} }
*/
} }

View File

@@ -100,7 +100,7 @@ public class PaymentMethodsRecyclerAdapter extends RecyclerView.Adapter<Recycler
switch (holder.getItemViewType()){ switch (holder.getItemViewType()){
case HOLDER_PAYMENT_METHOD : case HOLDER_PAYMENT_METHOD :
OrderViewHolder orderViewHolder = (OrderViewHolder) holder; OrderViewHolder orderViewHolder = (OrderViewHolder) holder;
orderViewHolder.paymentMethodRadioButton.setText(paymentMethodList.get(position).getName()); orderViewHolder.paymentMethodRadioButton.setText(paymentMethodList.get(position).getTitle());
orderViewHolder.paymentMethodRadioButton.setChecked(paymentMethodList.get(position).isSelected()); orderViewHolder.paymentMethodRadioButton.setChecked(paymentMethodList.get(position).isSelected());
break; break;

View File

@@ -101,8 +101,8 @@ public class ShippingMethodsRecyclerAdapter extends RecyclerView.Adapter<Recycle
switch (holder.getItemViewType()){ switch (holder.getItemViewType()){
case HOLDER_SHIPPING_METHOD : case HOLDER_SHIPPING_METHOD :
OrderViewHolder orderViewHolder = (OrderViewHolder) holder; OrderViewHolder orderViewHolder = (OrderViewHolder) holder;
orderViewHolder.shipmentMethodPriceTextView.setText(shippingMethodList.get(position).getPrice()); orderViewHolder.shipmentMethodPriceTextView.setText(shippingMethodList.get(position).getPriceText());
orderViewHolder.shipmentMethodRadioButton.setText(shippingMethodList.get(position).getName()); orderViewHolder.shipmentMethodRadioButton.setText(shippingMethodList.get(position).getTitle());
orderViewHolder.shipmentMethodRadioButton.setChecked(shippingMethodList.get(position).isSelected()); orderViewHolder.shipmentMethodRadioButton.setChecked(shippingMethodList.get(position).isSelected());
break; break;

View File

@@ -15,9 +15,9 @@ public class ApiEndPoints {
public static final String API_GET_PRODUCTS_BY_CATEGORY = PREFIX + "getProductsByCategory" + SUFFIX; public static final String API_GET_PRODUCTS_BY_CATEGORY = PREFIX + "getProductsByCategory" + SUFFIX;
public static final String API_GET_PRODUCT = PREFIX + "getProduct" + SUFFIX; public static final String API_GET_PRODUCT = PREFIX + "getProduct" + SUFFIX;
public static final String API_ADD_PRODUCTS_TO_BASKET = PREFIX + "addProductsToBasket" + SUFFIX + "&token="; public static final String API_ADD_PRODUCTS_TO_BASKET = PREFIX + "addProductsToBasket" + SUFFIX + "&token=";
public static final String API_GET_SHIPPING_METHODS = PREFIX + "getShippingMethods" + SUFFIX; public static final String API_GET_SHIPPING_METHODS = PREFIX + "getShippingMethodsArray" + SUFFIX;
public static final String API_GET_CUSTOMER_ADDRESSES = PREFIX + "getAddresses" + SUFFIX; public static final String API_GET_CUSTOMER_ADDRESSES = PREFIX + "getAddresses" + SUFFIX;
public static final String API_GET_PAYMENT_METHODS = PREFIX + "getPaymentMethods" + SUFFIX; public static final String API_GET_PAYMENT_METHODS = PREFIX + "getPaymentMethodsArray" + SUFFIX;
} }

View File

@@ -5,7 +5,9 @@ import java.util.HashMap;
import ch.pizzalink.android.model.AddProductToBasketResponseModel; import ch.pizzalink.android.model.AddProductToBasketResponseModel;
import ch.pizzalink.android.model.AddressModel; import ch.pizzalink.android.model.AddressModel;
import ch.pizzalink.android.model.PaymentMethodModel; import ch.pizzalink.android.model.PaymentMethodModel;
import ch.pizzalink.android.model.PaymentMethodsResponseModel;
import ch.pizzalink.android.model.ShippingMethodModel; import ch.pizzalink.android.model.ShippingMethodModel;
import ch.pizzalink.android.model.ShippingMethodsResponseModel;
import ch.pizzalink.android.model.cart.CartInfoModel; import ch.pizzalink.android.model.cart.CartInfoModel;
import ch.pizzalink.android.model.CategoryModel; import ch.pizzalink.android.model.CategoryModel;
import ch.pizzalink.android.model.OrderModel; import ch.pizzalink.android.model.OrderModel;
@@ -87,6 +89,6 @@ public interface ApiInterface {
Call<ResponseArray<AddressModel>> getCustomerAddresses(@Query("token") String token); Call<ResponseArray<AddressModel>> getCustomerAddresses(@Query("token") String token);
@GET(ApiEndPoints.API_GET_PAYMENT_METHODS) @GET(ApiEndPoints.API_GET_PAYMENT_METHODS)
Call<ResponseArray<PaymentMethodModel>> getPaymentMethods(@Query("token") String token); Call<ResponseObject<PaymentMethodsResponseModel>> getPaymentMethods(@Query("token") String token);
} }

View File

@@ -0,0 +1,17 @@
package ch.pizzalink.android.fragment.order;
import android.widget.TextView;
import butterknife.BindView;
import ch.pizzalink.android.R;
import ch.pizzalink.android.fragment.BaseFragment;
/**
* Created by cimenmus on 21.10.2017.
*/
public class OrderBaseFragment extends BaseFragment {
@BindView(R.id.previousTextView) TextView previousTextView;
@BindView(R.id.nextTextView) TextView nextTextView;
}

View File

@@ -7,17 +7,23 @@ import android.view.ViewGroup;
import butterknife.BindString; import butterknife.BindString;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.OnClick;
import ch.pizzalink.android.R; import ch.pizzalink.android.R;
import ch.pizzalink.android.activity.OrderActivity;
import ch.pizzalink.android.fragment.BaseFragment; import ch.pizzalink.android.fragment.BaseFragment;
/** /**
* Created by cimenmus on 17/10/2017. * Created by cimenmus on 17/10/2017.
*/ */
public class OrderResultFragment extends BaseFragment { public class OrderResultFragment extends OrderBaseFragment {
@BindString(R.string.done_order) String doneOrderText;
public static final java.lang.String FRAGMENT_NAME = "orderResultFragment"; public static final java.lang.String FRAGMENT_NAME = "orderResultFragment";
private boolean isOrderSuccessed;
public OrderResultFragment() {} public OrderResultFragment() {}
public static OrderResultFragment newInstance() { public static OrderResultFragment newInstance() {
@@ -37,6 +43,24 @@ public class OrderResultFragment extends BaseFragment {
return view; return view;
} }
@OnClick({R.id.previousTextView, R.id.nextTextView})
protected void onClick(View view){
OrderActivity orderActivity = (OrderActivity) getActivity();
switch (view.getId()){
case R.id.previousTextView:
orderActivity.onPreviousClicked(FRAGMENT_NAME);
break;
case R.id.nextTextView:
if(isOrderSuccessed){
orderActivity.onNextClicked(FRAGMENT_NAME);
}
break;
}
}
private void initViews(){ private void initViews(){
isOrderSuccessed = true;
previousTextView.setVisibility(View.GONE);
nextTextView.setText(doneOrderText);
} }
} }

View File

@@ -7,14 +7,18 @@ import android.view.ViewGroup;
import butterknife.BindString; import butterknife.BindString;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.OnClick;
import ch.pizzalink.android.R; import ch.pizzalink.android.R;
import ch.pizzalink.android.activity.OrderActivity;
import ch.pizzalink.android.fragment.BaseFragment; import ch.pizzalink.android.fragment.BaseFragment;
/** /**
* Created by cimenmus on 17/10/2017. * Created by cimenmus on 17/10/2017.
*/ */
public class OrderSummaryFragment extends BaseFragment { public class OrderSummaryFragment extends OrderBaseFragment {
@BindString(R.string.confirm_order) String confirmOrderText;
public static final java.lang.String FRAGMENT_NAME = "orderSummaryFragment"; public static final java.lang.String FRAGMENT_NAME = "orderSummaryFragment";
@@ -37,6 +41,13 @@ public class OrderSummaryFragment extends BaseFragment {
return view; return view;
} }
@OnClick(R.id.nextTextView)
protected void onClick(){
OrderActivity orderActivity = (OrderActivity) getActivity();
orderActivity.onNextClicked(FRAGMENT_NAME);
}
private void initViews(){ private void initViews(){
nextTextView.setText(confirmOrderText);
} }
} }

View File

@@ -12,17 +12,21 @@ import java.util.ArrayList;
import butterknife.BindString; import butterknife.BindString;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.OnClick;
import ch.pizzalink.android.R; import ch.pizzalink.android.R;
import ch.pizzalink.android.activity.BaseActivity; import ch.pizzalink.android.activity.BaseActivity;
import ch.pizzalink.android.activity.OrderActivity;
import ch.pizzalink.android.adapter.recycler.PaymentMethodsRecyclerAdapter; import ch.pizzalink.android.adapter.recycler.PaymentMethodsRecyclerAdapter;
import ch.pizzalink.android.api.ApiErrorUtils; import ch.pizzalink.android.api.ApiErrorUtils;
import ch.pizzalink.android.api.ApiService; import ch.pizzalink.android.api.ApiService;
import ch.pizzalink.android.api.ResponseArray; import ch.pizzalink.android.api.ResponseArray;
import ch.pizzalink.android.api.ResponseObject;
import ch.pizzalink.android.fragment.BaseFragment; import ch.pizzalink.android.fragment.BaseFragment;
import ch.pizzalink.android.helper.DialogHelper; import ch.pizzalink.android.helper.DialogHelper;
import ch.pizzalink.android.helper.SessionHelper; import ch.pizzalink.android.helper.SessionHelper;
import ch.pizzalink.android.interfaces.RecyclerItemClickListener; import ch.pizzalink.android.interfaces.RecyclerItemClickListener;
import ch.pizzalink.android.model.PaymentMethodModel; import ch.pizzalink.android.model.PaymentMethodModel;
import ch.pizzalink.android.model.PaymentMethodsResponseModel;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response; import retrofit2.Response;
@@ -31,13 +35,17 @@ import retrofit2.Response;
* Created by cimenmus on 17/10/2017. * Created by cimenmus on 17/10/2017.
*/ */
public class PaymentMethodFragment extends BaseFragment { public class PaymentMethodFragment extends OrderBaseFragment {
@BindView(R.id.paymentMethodsRecyclerView) RecyclerView paymentMethodsRecyclerView; @BindView(R.id.paymentMethodsRecyclerView) RecyclerView paymentMethodsRecyclerView;
@BindString(R.string.alert_choose_payment_method) String choosePaymentMethodText;
private ArrayList<PaymentMethodModel> paymentMethodList = new ArrayList<>(); private ArrayList<PaymentMethodModel> paymentMethodList = new ArrayList<>();
private PaymentMethodsRecyclerAdapter paymentMethodsRecyclerAdapter; private PaymentMethodsRecyclerAdapter paymentMethodsRecyclerAdapter;
private boolean isPaymentMethodSelected;
public static final java.lang.String FRAGMENT_NAME = "paymentMethodFragment"; public static final java.lang.String FRAGMENT_NAME = "paymentMethodFragment";
public PaymentMethodFragment() {} public PaymentMethodFragment() {}
@@ -56,27 +64,44 @@ public class PaymentMethodFragment extends BaseFragment {
View view = inflater.inflate(R.layout.fragment_payment_method, container, false); View view = inflater.inflate(R.layout.fragment_payment_method, container, false);
ButterKnife.bind(this, view); ButterKnife.bind(this, view);
initViews(); initViews();
//getPaymentMethods(); getPaymentMethods();
createSamplePaymentModels();
return view; return view;
} }
@OnClick({R.id.previousTextView, R.id.nextTextView})
protected void onClick(View view){
OrderActivity orderActivity = (OrderActivity) getActivity();
switch (view.getId()){
case R.id.previousTextView:
orderActivity.onPreviousClicked(FRAGMENT_NAME);
break;
case R.id.nextTextView:
if(isPaymentMethodSelected){
orderActivity.onNextClicked(FRAGMENT_NAME);
}
else {
DialogHelper.showAlertDialog(BaseActivity.currentActivity, choosePaymentMethodText);
}
break;
}
}
private void initViews(){ private void initViews(){
initRecyclerView(); initRecyclerView();
} }
private void getPaymentMethods(){ private void getPaymentMethods(){
DialogHelper.showLoadingDialog(); DialogHelper.showLoadingDialog();
Call<ResponseArray<PaymentMethodModel>> call = ApiService.apiInterface.getPaymentMethods( Call<ResponseObject<PaymentMethodsResponseModel>> call = ApiService.apiInterface.getPaymentMethods(
SessionHelper.getCustomerToken().getToken()); SessionHelper.getCustomerToken().getToken());
call.enqueue(new Callback<ResponseArray<PaymentMethodModel>>() { call.enqueue(new Callback<ResponseObject<PaymentMethodsResponseModel>>() {
@Override @Override
public void onResponse(Call<ResponseArray<PaymentMethodModel>> call, Response<ResponseArray<PaymentMethodModel>> response) { public void onResponse(Call<ResponseObject<PaymentMethodsResponseModel>> call, Response<ResponseObject<PaymentMethodsResponseModel>> response) {
DialogHelper.hideLoadingDialog(); DialogHelper.hideLoadingDialog();
if(response.isSuccessful() && if(response.isSuccessful() &&
response.body().getData() != null && response.body().getData() != null &&
response.body().isSuccess()){ response.body().isSuccess()){
fillAndNotifyAdapter(response.body().getData()); fillAndNotifyAdapter(response.body().getData().getPaymentMethodsList());
} }
else { else {
ApiErrorUtils.parseError(response); ApiErrorUtils.parseError(response);
@@ -84,7 +109,7 @@ public class PaymentMethodFragment extends BaseFragment {
} }
@Override @Override
public void onFailure(Call<ResponseArray<PaymentMethodModel>> call, Throwable t) { public void onFailure(Call<ResponseObject<PaymentMethodsResponseModel>> call, Throwable t) {
DialogHelper.hideLoadingDialog(); DialogHelper.hideLoadingDialog();
DialogHelper.showFailedDialog(); DialogHelper.showFailedDialog();
} }
@@ -93,10 +118,12 @@ public class PaymentMethodFragment extends BaseFragment {
private void fillAndNotifyAdapter(ArrayList<PaymentMethodModel> paymentMethodModels){ private void fillAndNotifyAdapter(ArrayList<PaymentMethodModel> paymentMethodModels){
PaymentMethodModel.checkNull(paymentMethodModels); PaymentMethodModel.checkNull(paymentMethodModels);
PaymentMethodModel.sort(paymentMethodModels);
paymentMethodList.clear(); paymentMethodList.clear();
paymentMethodList.addAll(paymentMethodModels); paymentMethodList.addAll(paymentMethodModels);
if(paymentMethodList.size() != 0){ if(paymentMethodList.size() != 0){
paymentMethodList.get(0).setSelected(true); paymentMethodList.get(0).setSelected(true);
isPaymentMethodSelected = true;
} }
paymentMethodsRecyclerAdapter.notifyDataSetChanged(); paymentMethodsRecyclerAdapter.notifyDataSetChanged();
} }
@@ -109,6 +136,7 @@ public class PaymentMethodFragment extends BaseFragment {
paymentMethodModel.setSelected(false); paymentMethodModel.setSelected(false);
} }
paymentMethodList.get(position).setSelected(true); paymentMethodList.get(position).setSelected(true);
isPaymentMethodSelected = true;
paymentMethodsRecyclerAdapter.notifyDataSetChanged(); paymentMethodsRecyclerAdapter.notifyDataSetChanged();
} }
}); });
@@ -116,13 +144,4 @@ public class PaymentMethodFragment extends BaseFragment {
paymentMethodsRecyclerView.setLayoutManager(layoutManager); paymentMethodsRecyclerView.setLayoutManager(layoutManager);
paymentMethodsRecyclerView.setAdapter(paymentMethodsRecyclerAdapter); paymentMethodsRecyclerView.setAdapter(paymentMethodsRecyclerAdapter);
} }
private void createSamplePaymentModels(){
paymentMethodList.add(new PaymentMethodModel("Kapıda Ödeme"));
paymentMethodList.add(new PaymentMethodModel("Havale"));
paymentMethodList.add(new PaymentMethodModel("Kredi Kartı"));
paymentMethodList.add(new PaymentMethodModel("Banka kartı"));
paymentMethodList.get(0).setSelected(true);
paymentMethodsRecyclerAdapter.notifyDataSetChanged();
}
} }

View File

@@ -9,10 +9,13 @@ import android.view.ViewGroup;
import java.util.ArrayList; import java.util.ArrayList;
import butterknife.BindString;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.OnClick;
import ch.pizzalink.android.R; import ch.pizzalink.android.R;
import ch.pizzalink.android.activity.BaseActivity; import ch.pizzalink.android.activity.BaseActivity;
import ch.pizzalink.android.activity.OrderActivity;
import ch.pizzalink.android.adapter.recycler.ShippingAddressesRecyclerAdapter; import ch.pizzalink.android.adapter.recycler.ShippingAddressesRecyclerAdapter;
import ch.pizzalink.android.api.ApiErrorUtils; import ch.pizzalink.android.api.ApiErrorUtils;
import ch.pizzalink.android.api.ApiService; import ch.pizzalink.android.api.ApiService;
@@ -30,13 +33,17 @@ import retrofit2.Response;
* Created by cimenmus on 17/10/2017. * Created by cimenmus on 17/10/2017.
*/ */
public class ShippingAddressFragment extends BaseFragment { public class ShippingAddressFragment extends OrderBaseFragment {
@BindView(R.id.shippingAddressesRecyclerView) RecyclerView shippingAddressesRecyclerView; @BindView(R.id.shippingAddressesRecyclerView) RecyclerView shippingAddressesRecyclerView;
@BindString(R.string.alert_choose_shipping_address) String chooseShippingAddressText;
private ArrayList<AddressModel> addressList = new ArrayList<>(); private ArrayList<AddressModel> addressList = new ArrayList<>();
private ShippingAddressesRecyclerAdapter shippingAddressesRecyclerAdapter; private ShippingAddressesRecyclerAdapter shippingAddressesRecyclerAdapter;
private boolean isShippingAddressSelected;
public static final java.lang.String FRAGMENT_NAME = "shippingAddressMethod"; public static final java.lang.String FRAGMENT_NAME = "shippingAddressMethod";
public ShippingAddressFragment() {} public ShippingAddressFragment() {}
@@ -59,6 +66,24 @@ public class ShippingAddressFragment extends BaseFragment {
return view; return view;
} }
@OnClick({R.id.previousTextView, R.id.nextTextView})
protected void onClick(View view){
OrderActivity orderActivity = (OrderActivity) getActivity();
switch (view.getId()){
case R.id.previousTextView:
orderActivity.onPreviousClicked(FRAGMENT_NAME);
break;
case R.id.nextTextView:
if(isShippingAddressSelected){
orderActivity.onNextClicked(FRAGMENT_NAME);
}
else {
DialogHelper.showAlertDialog(BaseActivity.currentActivity, chooseShippingAddressText);
}
break;
}
}
private void initViews(){ private void initViews(){
initRecyclerView(); initRecyclerView();
} }
@@ -95,6 +120,7 @@ public class ShippingAddressFragment extends BaseFragment {
addressList.addAll(addressModels); addressList.addAll(addressModels);
if(addressList.size() != 0){ if(addressList.size() != 0){
addressList.get(0).setSelected(true); addressList.get(0).setSelected(true);
isShippingAddressSelected = true;
} }
shippingAddressesRecyclerAdapter.notifyDataSetChanged(); shippingAddressesRecyclerAdapter.notifyDataSetChanged();
} }
@@ -107,6 +133,7 @@ public class ShippingAddressFragment extends BaseFragment {
addressModel.setSelected(false); addressModel.setSelected(false);
} }
addressList.get(position).setSelected(true); addressList.get(position).setSelected(true);
isShippingAddressSelected = true;
shippingAddressesRecyclerAdapter.notifyDataSetChanged(); shippingAddressesRecyclerAdapter.notifyDataSetChanged();
} }
}); });

View File

@@ -6,23 +6,28 @@ import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList; import java.util.ArrayList;
import butterknife.BindString; import butterknife.BindString;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.OnClick;
import ch.pizzalink.android.R; import ch.pizzalink.android.R;
import ch.pizzalink.android.activity.BaseActivity; import ch.pizzalink.android.activity.BaseActivity;
import ch.pizzalink.android.activity.OrderActivity;
import ch.pizzalink.android.adapter.recycler.ShippingMethodsRecyclerAdapter; import ch.pizzalink.android.adapter.recycler.ShippingMethodsRecyclerAdapter;
import ch.pizzalink.android.api.ApiErrorUtils; import ch.pizzalink.android.api.ApiErrorUtils;
import ch.pizzalink.android.api.ApiService; import ch.pizzalink.android.api.ApiService;
import ch.pizzalink.android.api.ResponseArray; import ch.pizzalink.android.api.ResponseArray;
import ch.pizzalink.android.api.ResponseObject;
import ch.pizzalink.android.fragment.BaseFragment; import ch.pizzalink.android.fragment.BaseFragment;
import ch.pizzalink.android.helper.DialogHelper; import ch.pizzalink.android.helper.DialogHelper;
import ch.pizzalink.android.helper.SessionHelper; import ch.pizzalink.android.helper.SessionHelper;
import ch.pizzalink.android.interfaces.RecyclerItemClickListener; import ch.pizzalink.android.interfaces.RecyclerItemClickListener;
import ch.pizzalink.android.model.ShippingMethodModel; import ch.pizzalink.android.model.ShippingMethodModel;
import ch.pizzalink.android.model.ShippingMethodsResponseModel;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response; import retrofit2.Response;
@@ -31,13 +36,17 @@ import retrofit2.Response;
* Created by cimenmus on 17/10/2017. * Created by cimenmus on 17/10/2017.
*/ */
public class ShippingMethodFragment extends BaseFragment { public class ShippingMethodFragment extends OrderBaseFragment {
@BindView(R.id.shippingMethodsRecyclerView) RecyclerView shippingMethodsRecyclerView; @BindView(R.id.shippingMethodsRecyclerView) RecyclerView shippingMethodsRecyclerView;
@BindString(R.string.alert_choose_shipping_method) String chooseShippingMethodText;
private ArrayList<ShippingMethodModel> shippingMethodList = new ArrayList<>(); private ArrayList<ShippingMethodModel> shippingMethodList = new ArrayList<>();
private ShippingMethodsRecyclerAdapter shippingMethodsRecyclerAdapter; private ShippingMethodsRecyclerAdapter shippingMethodsRecyclerAdapter;
private boolean isShippingMethodSelected;
public static final java.lang.String FRAGMENT_NAME = "shippingMethodFragment"; public static final java.lang.String FRAGMENT_NAME = "shippingMethodFragment";
public ShippingMethodFragment() {} public ShippingMethodFragment() {}
@@ -56,13 +65,24 @@ public class ShippingMethodFragment extends BaseFragment {
View view = inflater.inflate(R.layout.fragment_shipping_method, container, false); View view = inflater.inflate(R.layout.fragment_shipping_method, container, false);
ButterKnife.bind(this, view); ButterKnife.bind(this, view);
initViews(); initViews();
//getShippingMethods(); getShippingMethods();
createSampleShippingMethods();
return view; return view;
} }
@OnClick(R.id.nextTextView)
protected void onClick(){
if(isShippingMethodSelected){
OrderActivity orderActivity = (OrderActivity) getActivity();
orderActivity.onNextClicked(FRAGMENT_NAME);
}
else {
DialogHelper.showAlertDialog(BaseActivity.currentActivity, chooseShippingMethodText);
}
}
private void initViews(){ private void initViews(){
initRecyclerView(); initRecyclerView();
previousTextView.setVisibility(View.GONE);
} }
private void getShippingMethods(){ private void getShippingMethods(){
@@ -97,6 +117,7 @@ public class ShippingMethodFragment extends BaseFragment {
shippingMethodList.addAll(shippingMethodModels); shippingMethodList.addAll(shippingMethodModels);
if(shippingMethodList.size() != 0){ if(shippingMethodList.size() != 0){
shippingMethodList.get(0).setSelected(true); shippingMethodList.get(0).setSelected(true);
isShippingMethodSelected = true;
} }
shippingMethodsRecyclerAdapter.notifyDataSetChanged(); shippingMethodsRecyclerAdapter.notifyDataSetChanged();
} }
@@ -109,6 +130,7 @@ public class ShippingMethodFragment extends BaseFragment {
shippingMethodModel.setSelected(false); shippingMethodModel.setSelected(false);
} }
shippingMethodList.get(position).setSelected(true); shippingMethodList.get(position).setSelected(true);
isShippingMethodSelected = true;
shippingMethodsRecyclerAdapter.notifyDataSetChanged(); shippingMethodsRecyclerAdapter.notifyDataSetChanged();
} }
}); });
@@ -116,11 +138,4 @@ public class ShippingMethodFragment extends BaseFragment {
shippingMethodsRecyclerView.setLayoutManager(layoutManager); shippingMethodsRecyclerView.setLayoutManager(layoutManager);
shippingMethodsRecyclerView.setAdapter(shippingMethodsRecyclerAdapter); shippingMethodsRecyclerView.setAdapter(shippingMethodsRecyclerAdapter);
} }
private void createSampleShippingMethods(){
shippingMethodList.add(new ShippingMethodModel("Gel al", "CHF 0.00"));
shippingMethodList.add(new ShippingMethodModel("Kapına gelsin", "CHF 5.00"));
shippingMethodList.get(0).setSelected(true);
shippingMethodsRecyclerAdapter.notifyDataSetChanged();
}
} }

View File

@@ -1,6 +1,11 @@
package ch.pizzalink.android.model; package ch.pizzalink.android.model;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/** /**
* Created by cimenmus on 17/10/2017. * Created by cimenmus on 17/10/2017.
@@ -8,16 +13,27 @@ import java.util.ArrayList;
public class PaymentMethodModel { public class PaymentMethodModel {
private String id; private String code;
private String name; private String title;
private String terms;
private boolean isSelected; private boolean isSelected;
public PaymentMethodModel(String name) { @Expose @SerializedName("sort_order")
this.name = name; private String sortOrder;
}
private void checkNull(){ private void checkNull(){
if(code == null)
code = "";
if(title == null)
title = "";
if(terms == null)
terms = "";
if(sortOrder == null)
sortOrder = "0";
} }
public static void checkNull(ArrayList<PaymentMethodModel> paymentMethodList){ public static void checkNull(ArrayList<PaymentMethodModel> paymentMethodList){
@@ -26,20 +42,37 @@ public class PaymentMethodModel {
} }
} }
public String getId() { public static void sort(ArrayList<PaymentMethodModel> paymentMethodList){
return id; Collections.sort(paymentMethodList, new Comparator<PaymentMethodModel>() {
@Override
public int compare(PaymentMethodModel pm1, PaymentMethodModel pm2){
return Integer.valueOf(pm1.sortOrder).compareTo(Integer.valueOf(pm2.sortOrder));
}
});
} }
public void setId(String id) { public String getCode() {
this.id = id; return code;
} }
public String getName() { public void setCode(String code) {
return name; this.code = code;
} }
public void setName(String name) { public String getTitle() {
this.name = name; return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getTerms() {
return terms;
}
public void setTerms(String terms) {
this.terms = terms;
} }
public boolean isSelected() { public boolean isSelected() {
@@ -49,4 +82,12 @@ public class PaymentMethodModel {
public void setSelected(boolean selected) { public void setSelected(boolean selected) {
isSelected = selected; isSelected = selected;
} }
public String getSortOrder() {
return sortOrder;
}
public void setSortOrder(String sortOrder) {
this.sortOrder = sortOrder;
}
} }

View File

@@ -0,0 +1,25 @@
package ch.pizzalink.android.model;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import java.util.ArrayList;
/**
* Created by cimenmus on 21.10.2017.
*/
public class PaymentMethodsResponseModel {
@Expose
@SerializedName("payment_methods")
private ArrayList<PaymentMethodModel> paymentMethodsList;
public ArrayList<PaymentMethodModel> getPaymentMethodsList() {
return paymentMethodsList;
}
public void setPaymentMethodsList(ArrayList<PaymentMethodModel> paymentMethodsList) {
this.paymentMethodsList = paymentMethodsList;
}
}

View File

@@ -1,5 +1,8 @@
package ch.pizzalink.android.model; package ch.pizzalink.android.model;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import java.util.ArrayList; import java.util.ArrayList;
/** /**
@@ -8,17 +11,33 @@ import java.util.ArrayList;
public class ShippingMethodModel { public class ShippingMethodModel {
private String name; private String code;
private String price; private String title;
private boolean isSelected; private boolean isSelected;
public ShippingMethodModel(String name, String price) { @Expose
this.name = name; @SerializedName("cost")
this.price = price; private double priceDouble;
}
@Expose
@SerializedName("tax_class_id")
private int taxClassId;
@Expose
@SerializedName("text")
private String priceText;
private void checkNull(){ private void checkNull(){
if(code == null)
code = "";
if(title == null)
title = "";
if(priceText == null)
priceText = "";
} }
public static void checkNull(ArrayList<ShippingMethodModel> shippingMethodList){ public static void checkNull(ArrayList<ShippingMethodModel> shippingMethodList){
@@ -27,20 +46,20 @@ public class ShippingMethodModel {
} }
} }
public String getName() { public String getCode() {
return name; return code;
} }
public void setName(String name) { public void setCode(String code) {
this.name = name; this.code = code;
} }
public String getPrice() { public String getTitle() {
return price; return title;
} }
public void setPrice(String price) { public void setTitle(String title) {
this.price = price; this.title = title;
} }
public boolean isSelected() { public boolean isSelected() {
@@ -50,4 +69,28 @@ public class ShippingMethodModel {
public void setSelected(boolean selected) { public void setSelected(boolean selected) {
isSelected = selected; isSelected = selected;
} }
public double getPriceDouble() {
return priceDouble;
}
public void setPriceDouble(double priceDouble) {
this.priceDouble = priceDouble;
}
public int getTaxClassId() {
return taxClassId;
}
public void setTaxClassId(int taxClassId) {
this.taxClassId = taxClassId;
}
public String getPriceText() {
return priceText;
}
public void setPriceText(String priceText) {
this.priceText = priceText;
}
} }

View File

@@ -0,0 +1,25 @@
package ch.pizzalink.android.model;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import java.util.ArrayList;
/**
* Created by cimenmus on 21.10.2017.
*/
public class ShippingMethodsResponseModel {
@Expose
@SerializedName("shipping_methods")
private ArrayList<ShippingMethodModel> paymentMethodsList;
public ArrayList<ShippingMethodModel> getPaymentMethodsList() {
return paymentMethodsList;
}
public void setPaymentMethodsList(ArrayList<ShippingMethodModel> paymentMethodsList) {
this.paymentMethodsList = paymentMethodsList;
}
}

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
@@ -22,8 +22,7 @@
android:id="@+id/stepIndicatorLayout" android:id="@+id/stepIndicatorLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical">
android:layout_below="@+id/orderToolbar">
<com.badoualy.stepperindicator.StepperIndicator <com.badoualy.stepperindicator.StepperIndicator
android:id="@+id/stepperIndicator" android:id="@+id/stepperIndicator"
@@ -42,57 +41,7 @@
<FrameLayout <FrameLayout
android:id="@+id/orderFragmentsContainer" android:id="@+id/orderFragmentsContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="match_parent"
android:background="@color/actvity_default_background_color_1" android:background="@color/actvity_default_background_color_1" />
android:layout_below="@+id/stepIndicatorLayout"
android:layout_above="@+id/ordersBottomLayout"/>
<LinearLayout </LinearLayout>
android:id="@+id/ordersBottomLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignParentBottom="true">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@drawable/shadow"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize">
<TextView
android:id="@+id/previousTextView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textColor="@color/red"
android:text="@string/previous"
android:textStyle="bold"
android:paddingLeft="16dp"
android:paddingStart="16dp"
android:paddingRight="16dp"
android:paddingEnd="16dp"
android:gravity="center" />
<TextView
android:id="@+id/nextTextView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textColor="@color/red"
android:text="@string/next"
android:textStyle="bold"
android:paddingLeft="16dp"
android:paddingStart="16dp"
android:paddingRight="16dp"
android:paddingEnd="16dp"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:gravity="center" />
</RelativeLayout>
</LinearLayout>
</RelativeLayout>

View File

@@ -10,6 +10,9 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Order Result" android:text="Order Result"
android:layout_centerInParent="true"/> android:layout_centerInParent="true"
android:layout_above="@+id/ordersBottomLayout"/>
<include layout="@layout/layout_orders_bottom"/>
</RelativeLayout> </RelativeLayout>

View File

@@ -10,6 +10,9 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Order Summary" android:text="Order Summary"
android:layout_centerInParent="true"/> android:layout_centerInParent="true"
android:layout_above="@+id/ordersBottomLayout"/>
<include layout="@layout/layout_orders_bottom"/>
</RelativeLayout> </RelativeLayout>

View File

@@ -10,6 +10,9 @@
android:id="@+id/paymentMethodsRecyclerView" android:id="@+id/paymentMethodsRecyclerView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:scrollbars="vertical"/> android:scrollbars="vertical"
android:layout_above="@+id/ordersBottomLayout"/>
<include layout="@layout/layout_orders_bottom"/>
</RelativeLayout> </RelativeLayout>

View File

@@ -10,6 +10,9 @@
android:id="@+id/shippingAddressesRecyclerView" android:id="@+id/shippingAddressesRecyclerView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:scrollbars="vertical"/> android:scrollbars="vertical"
android:layout_above="@+id/ordersBottomLayout"/>
<include layout="@layout/layout_orders_bottom"/>
</RelativeLayout> </RelativeLayout>

View File

@@ -10,6 +10,9 @@
android:id="@+id/shippingMethodsRecyclerView" android:id="@+id/shippingMethodsRecyclerView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:scrollbars="vertical"/> android:scrollbars="vertical"
android:layout_above="@+id/ordersBottomLayout"/>
<include layout="@layout/layout_orders_bottom"/>
</RelativeLayout> </RelativeLayout>

View File

@@ -0,0 +1,48 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ordersBottomLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignParentBottom="true">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@drawable/shadow"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize">
<TextView
android:id="@+id/previousTextView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textColor="@color/red"
android:text="@string/previous"
android:textStyle="bold"
android:paddingLeft="16dp"
android:paddingStart="16dp"
android:paddingRight="16dp"
android:paddingEnd="16dp"
android:gravity="center" />
<TextView
android:id="@+id/nextTextView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textColor="@color/red"
android:text="@string/next"
android:textStyle="bold"
android:paddingLeft="16dp"
android:paddingStart="16dp"
android:paddingRight="16dp"
android:paddingEnd="16dp"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:gravity="center" />
</RelativeLayout>
</LinearLayout>

View File

@@ -133,6 +133,13 @@
<string name="next">NEXT</string> <string name="next">NEXT</string>
<string name="previous">PREVIOUS</string> <string name="previous">PREVIOUS</string>
<string name="alert_choose_shipping_method">Lütfen bir teslimat yöntemi seçiniz.</string>
<string name="alert_choose_shipping_address">Lütfen bir teslimat adresi seçiniz ya da yeni bir teslimat adresi ekleyiniz.</string>
<string name="alert_choose_payment_method">Lütfen bir ödeme yöntemi seçiniz.</string>
<string name="confirm_order">APPROVE</string>
<string name="done_order">DONE</string>
<string-array name="stepperLabels"> <string-array name="stepperLabels">
<item>Shipping Method</item> <item>Shipping Method</item>
<item>Shipping Address</item> <item>Shipping Address</item>