package com.basket.lists;
import java.util.ArrayList;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import com.basket.activities.BidWinActivity;
import com.basket.activities.BidsOnProductActivity;
import com.basket.adapters.ProductInMyShopBidAdapter;
import com.basket.containers.BasketSession;
import com.basket.general.BidEvent;
import com.basket.general.CarJsonSpringAndroidSpiceService;
import com.basket.restrequest.BidEventList;
import com.basket.restrequest.BidOnEventList;
import com.basket.restrequest.BidOnEventRequest;
import com.basket.restrequest.TerminateEventRequest;
import com.basket.restrequest.UpdateBidRequest;
import com.example.basket.R;
import com.octo.android.robospice.SpiceManager;
import com.octo.android.robospice.exception.RequestCancelledException;
import com.octo.android.robospice.persistence.DurationInMillis;
import com.octo.android.robospice.persistence.exception.SpiceException;
import com.octo.android.robospice.request.listener.RequestListener;
import com.octo.android.robospice.request.listener.RequestProgress;
import com.octo.android.robospice.request.listener.RequestProgressListener;
import eu.erikw.PullToRefreshListView;
import eu.erikw.PullToRefreshListView.OnRefreshListener;
public class SellingBidItemsListView extends android.app.ListFragment{
private SpiceManager spiceManager= new SpiceManager(CarJsonSpringAndroidSpiceService.class);
private ArrayList<BidEvent> sellingItems;
private int pos;
private PullToRefreshListView listView;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View rootView = inflater.inflate(R.layout.myshop_bids, container, false);
sellingItems = BasketSession.getUser().getCurrentlySellingOnBid();
setListAdapter(new ProductInMyShopBidAdapter(getActivity(), sellingItems));
listView = (PullToRefreshListView) rootView.findViewById(R.id.pull_to_refresh_listview);
listView.setShowLastUpdatedText(true);
listView.setOnRefreshListener(new OnRefreshListener()
{
@Override
public void onRefresh()
{
if(!spiceManager.isStarted()){
spiceManager.start(getActivity());
UpdateBidRequest JsonSpringAndroidRequest = new UpdateBidRequest(BasketSession.getUser().getUserId());
spiceManager.execute(JsonSpringAndroidRequest, "", DurationInMillis.ALWAYS_EXPIRED, new UpdateBidSellerListener());
}
}
});
return rootView;
}
public void onListItemClick(ListView l, View v, int pos , long id )
{
if (!spiceManager.isStarted())
{
spiceManager.start(getActivity());
this.pos=pos;
BidOnEventRequest JsonSpringAndroidRequest = new BidOnEventRequest(BasketSession.getUser().getCurrentlySellingOnBid().get(pos).getId());
spiceManager.execute(JsonSpringAndroidRequest, "", DurationInMillis.ALWAYS_EXPIRED, new GetBidsListener());
}
}
private class UpdateBidSellerListener implements RequestListener<BidEventList>, RequestProgressListener {
@Override
public void onRequestFailure(SpiceException arg0) {
Log.d("error",arg0.getMessage());
if (!(arg0 instanceof RequestCancelledException)) {
Toast.makeText(getActivity(), "No connection to server", Toast.LENGTH_SHORT).show();
}
spiceManager.shouldStop();
listView.refreshDrawableState();
listView.onRefreshComplete();
}
@Override
public void onRequestSuccess(BidEventList finished)
{
spiceManager.shouldStop();
ArrayAdapter a =((ArrayAdapter)getListAdapter());
BasketSession.getUser().setCurrentlySellingOnBid(finished.getEvents());
if (a!=null)
a.notifyDataSetChanged();
listView.refreshDrawableState();
listView.onRefreshComplete();
}
@Override
public void onRequestProgressUpdate(RequestProgress arg0)
{
}
}
private class GetBidsListener implements RequestListener<BidOnEventList>, RequestProgressListener {
@Override
public void onRequestFailure(SpiceException arg0) {
Log.d("error",arg0.getMessage());
if (!(arg0 instanceof RequestCancelledException)) {
Toast.makeText(getActivity(), "No connection to server", Toast.LENGTH_SHORT).show();
}
spiceManager.shouldStop();
}
@Override
public void onRequestSuccess(BidOnEventList bids)
{
spiceManager.shouldStop();
BasketSession.setBids(bids.getBids());
BidEvent e =BasketSession.getUser().getCurrentlySellingOnBid().get(pos);
Intent i=null;
if (e.isFinished())
{
if(e.getWinningBid()!=null)
i = new Intent(getActivity(),BidWinActivity.class);
else
{
spiceManager.start(getActivity());
TerminateEventRequest ev = new TerminateEventRequest(e,e.getId());
spiceManager.execute(ev, "", DurationInMillis.ALWAYS_EXPIRED, new TerminateListener());
}
}
else
i = new Intent(getActivity(),BidsOnProductActivity.class);
if(i!=null)
{
i.putExtra("itemClicked", pos);
startActivity(i);
}
}
@Override
public void onRequestProgressUpdate(RequestProgress arg0)
{
}
}
public void onResume()
{
super.onResume();
ArrayAdapter a =((ArrayAdapter)this.getListAdapter());
if (a!=null)
a.notifyDataSetChanged();
}
private class TerminateListener implements RequestListener<Boolean>, RequestProgressListener {
@Override
public void onRequestFailure(SpiceException arg0) {
Log.d("error",arg0.getMessage());
if (!(arg0 instanceof RequestCancelledException)) {
Toast.makeText(getActivity(), "No connection to server", Toast.LENGTH_SHORT).show();
}
spiceManager.shouldStop();
}
@Override
public void onRequestSuccess(Boolean bids)
{
spiceManager.shouldStop();
Toast.makeText(getActivity(), "No Bidder", Toast.LENGTH_SHORT).show();
BasketSession.getUser().getCurrentlySellingOnBid().remove(pos);
}
@Override
public void onRequestProgressUpdate(RequestProgress arg0)
{
}
}
}