package com.basket.fragments; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.basket.activities.BidEventPageActivity; import com.basket.containers.BasketSession; import com.basket.general.Bid; import com.basket.general.BidEvent; import com.basket.general.BooleanContainer; import com.basket.general.CarJsonSpringAndroidSpiceService; import com.basket.restrequest.BidRequest; import com.basket.restrequest.CurrentWinningRequest; 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; public class HarvestFragment extends Fragment { private SpiceManager spiceManager = new SpiceManager(CarJsonSpringAndroidSpiceService.class); private View view; Bid newBid; private BidEvent event; private TextView seller; private TextView winningBid; private TextView nextBid; private TextView nextTime; private String currentTime; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = inflater.inflate(R.layout.harvest_layout, container, false); event = (BidEvent) BasketSession.getProductSearch().get(this.getActivity().getIntent().getIntExtra("selectedEvent", 0)); seller =(TextView)view.findViewById(R.id.Seller); seller.setText(event.getCreator()); winningBid =(TextView)view.findViewById(R.id.tvCatTitle); if(event.getWinningBid()!=null) winningBid.setText(Double.toString(event.getWinningBid().getAmmount())); else winningBid.setText(Double.toString(event.getStartingBid())); nextBid =(TextView)view.findViewById(R.id.TextView02); nextTime =(TextView)view.findViewById(R.id.pricemybasket); if(event.getWinningBid()!=null){ nextBid.setText(Double.toString(event.getWinningBid().getAmmount()+event.getMinBid())); java.util.Date date = null; SimpleDateFormat formatter, FORMATTER; formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); String oldDate = event.getEndingTime(); try { date = formatter.parse(event.getWinningBid().getBidTime()); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } FORMATTER = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss"); if(date!=null) nextTime.setText(FORMATTER.format(date)); else nextTime.setText(event.getWinningBid().getBidTime()); } else{ nextBid.setText(Double.toString(event.getStartingBid()+event.getMinBid())); nextTime.setText(""); } Button harvest = (Button) view.findViewById(R.id.harvest); harvest.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { try { TextView ammountT = (TextView)view.findViewById(R.id.etCategoryPage); double ammount =Double.parseDouble(ammountT.getText().toString()); Calendar c = Calendar.getInstance(); int minute = c.get(Calendar.MINUTE); int hour = c.get(Calendar.HOUR); int day = c.get(Calendar.DAY_OF_MONTH); int month= c.get(Calendar.MONTH); int year = c.get(Calendar.YEAR); int second= c.get(Calendar.SECOND); java.util.Date dt = new java.util.Date(); java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); currentTime = sdf.format(dt); double current; if(event.getWinningBid()!=null) current=event.getWinningBid().getAmmount(); else current=event.getStartingBid(); //arreglar aqui!! if(ammount<current+event.getMinBid()) { Toast.makeText(HarvestFragment.this.getActivity(), "Bid needs to be higher than minumum or current", Toast.LENGTH_LONG).show(); } else{ newBid = new Bid(ammount, day, month, year, hour, minute, BasketSession.getUser().getUsername()); newBid.setDate(currentTime); if (!spiceManager.isStarted()) { spiceManager.start(getActivity()); BidRequest JsonSpringAndroidRequest = new BidRequest(newBid,event); spiceManager.execute(JsonSpringAndroidRequest, "", DurationInMillis.ALWAYS_EXPIRED, new BidListener()); } } } catch( NumberFormatException e) { Toast.makeText(getActivity(), "Error in Bid", Toast.LENGTH_SHORT).show(); if (spiceManager.isStarted()) spiceManager.shouldStop(); } } }); return view; } private class BidListener implements RequestListener<BooleanContainer>, RequestProgressListener { @Override public void onRequestFailure(SpiceException arg0) { Log.d("error",arg0.getMessage()); if (!(arg0 instanceof RequestCancelledException)) { Toast.makeText(getActivity(), "Bid Failed", Toast.LENGTH_SHORT).show(); spiceManager.shouldStop(); } Toast.makeText(getActivity(), "Bid Failed", Toast.LENGTH_SHORT).show(); if(spiceManager.isStarted()) spiceManager.shouldStop(); } @Override public void onRequestSuccess(BooleanContainer bool) { spiceManager.shouldStop(); if(bool.getState()) { boolean found=false; for (BidEvent b: BasketSession.getUser().getCurrentlyBiddingOn()){ if (b.getId()==event.getId()) { b.setWinningBid(newBid); found=true; } } if (!found) BasketSession.getUser().getCurrentlyBiddingOn().add(event); winningBid.setText(Double.toString(newBid.getAmmount())); nextTime.setText(currentTime); nextBid.setText(Double.toString(newBid.getAmmount()+event.getMinBid())); BidEventPageActivity a =(BidEventPageActivity)getActivity(); a.updateBid(newBid); if(event.getWinningBid()!=null) { event.getWinningBid().setAmmount(newBid.getAmmount()); event.getWinningBid().setBidTime(currentTime); event.getWinningBid().setDate(currentTime); } else{ Bid win = new Bid(); win.setAmmount(newBid.getAmmount()); win.setBidTime(currentTime); win.setDate(currentTime); event.setWinningBid(win); } Toast.makeText(getActivity(), "Bid Posted", Toast.LENGTH_SHORT).show(); }else { Toast.makeText(getActivity(), "Please try again, someone beat that bid from you!", Toast.LENGTH_SHORT).show(); spiceManager.start(getActivity()); CurrentWinningRequest update = new CurrentWinningRequest(event.getId()); spiceManager.execute(update, "", DurationInMillis.ALWAYS_EXPIRED, new BidLis()); } } @Override public void onRequestProgressUpdate(RequestProgress arg0) { } } private class BidLis implements RequestListener<Bid>, RequestProgressListener { @Override public void onRequestFailure(SpiceException arg0) { Log.d("error",arg0.getMessage()); if (!(arg0 instanceof RequestCancelledException)) { Toast.makeText(getActivity(), "Update Failed", Toast.LENGTH_SHORT).show(); spiceManager.shouldStop(); } Toast.makeText(getActivity(), "Update Failed", Toast.LENGTH_SHORT).show(); if(spiceManager.isStarted()) spiceManager.shouldStop(); } @Override public void onRequestSuccess(Bid winning) { spiceManager.shouldStop(); boolean found=false; for (BidEvent b: BasketSession.getUser().getCurrentlyBiddingOn()){ if (b.getId()==event.getId()) { b.setWinningBid(winning); found=true; } } if (!found) BasketSession.getUser().getCurrentlyBiddingOn().add(event); winningBid.setText(Double.toString(winning.getAmmount())); SimpleDateFormat formatter, FORMATTER; formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); String oldDate = event.getEndingTime(); java.util.Date date = null; try { date = formatter.parse(winning.getBidTime()); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } FORMATTER = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss"); nextTime.setText(FORMATTER.format(date)); //Verificar si winning es nulo o no nextBid.setText(Double.toString(winning.getAmmount()+event.getMinBid())); event.getWinningBid().setAmmount(winning.getAmmount()); event.getWinningBid().setBidTime(currentTime); BidEventPageActivity a =(BidEventPageActivity)getActivity(); a.updateBid(winning); } @Override public void onRequestProgressUpdate(RequestProgress arg0) { } } }