package com.basket.activities;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TimePicker;
import android.widget.Toast;
import com.basket.containers.BasketSession;
import com.basket.general.BidEvent;
import com.basket.general.CarJsonSpringAndroidSpiceService;
import com.basket.general.Category;
import com.basket.general.Product;
import com.basket.restrequest.NewBidSellEventRequest;
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 CreateBidActivity extends Activity {
private EditText prodName, prodPrice, stopDate, prodFeat, prodDescription, prodW, prodH, prodD, prodMan, eM,eD,eY;
private Button mCreateBuyEventButton;
private SpiceManager spiceManager= new SpiceManager(CarJsonSpringAndroidSpiceService.class);
private int M, D ,Y;
private Spinner mSpinner;
private EditText eventName;
private EditText productId;
private EditText dimensions;
private EditText minBid;
private DatePicker date;
private TimePicker time;
private byte[] blob;
private static int RESULT_LOAD_IMAGE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create_bid);
prodName = (EditText) findViewById(R.id.buyEventProductNameET);
prodPrice= (EditText) findViewById(R.id.buyEventProductPrice);
prodFeat = (EditText) findViewById(R.id.buyEventProductFeatures);
prodDescription = (EditText) findViewById(R.id.buyEventProductDescription);
prodW = (EditText) findViewById(R.id.buyEventProductWidth);
prodH = (EditText) findViewById(R.id.buyEventProductHeight);
prodD = (EditText) findViewById(R.id.buyEventProductDepth);
prodMan = (EditText) findViewById(R.id.buyEventProductManufacturer);
eventName= (EditText) findViewById(R.id.eventName);
productId= (EditText) findViewById(R.id.productId);
dimensions= (EditText) findViewById(R.id.dimensions);
minBid= (EditText) findViewById(R.id.minBid);
date= (DatePicker) findViewById(R.id.datePicker1);
time= (TimePicker) findViewById(R.id.timePicker1);
mSpinner=(Spinner) this.findViewById(R.id.spinner1);
ArrayList<String>cats=new ArrayList<String>();
for (Category c: BasketSession.getCategory()){
if (c.getParent()!=null)
{
cats.add(c.getName());
}
}
ArrayAdapter<String> catNameAdapter = new ArrayAdapter<String>(this, R.layout.simple_spinner_item,cats);
catNameAdapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item);
mSpinner.setAdapter(catNameAdapter);
final BidEvent newBidEvent = new BidEvent();
final Product prod = new Product();
mCreateBuyEventButton= (Button) findViewById(R.id.createBuyEvent);
mCreateBuyEventButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(blob==null)
{
Toast.makeText(CreateBidActivity.this, "Please select a Picture for event.", Toast.LENGTH_LONG).show();
return;
}
try{
M = date.getMonth()+1;
Y = date.getYear();
D = date.getDayOfMonth();
int hour = time.getCurrentHour();
int minute = time.getCurrentMinute();
String date = Y+"-"+M+"-"+D+" "+hour+":"+minute+":00";
prod.setDimensions(dimensions.getText().toString());
prod.setProductPId(Integer.parseInt(productId.getText().toString()));
prod.setManufacturer(prodMan.getText().toString());
prod.setDepth(Integer.parseInt(prodD.getText().toString()));
prod.setWidth(Integer.parseInt(prodW.getText().toString()));
prod.setHeight(Integer.parseInt(prodH.getText().toString()));
prod.setName(prodName.getText().toString());
newBidEvent.setEndingTime(date);
newBidEvent.setPicture(blob);
newBidEvent.setProduct(prod);
newBidEvent.setDescription(prodDescription.getText().toString());
newBidEvent.setFeatures(prodFeat.getText().toString());
newBidEvent.setStartingBid(Double.parseDouble(prodPrice.getText().toString()));
newBidEvent.setBidTitle(eventName.getText().toString());
newBidEvent.setRating(BasketSession.getUser().getRating());
newBidEvent.setMinBid(Double.parseDouble(minBid.getText().toString()));
BasketSession.getUser().getCurrentlySellingOnBid().add(newBidEvent);
spiceManager.start(CreateBidActivity.this);
NewBidSellEventRequest JsonSpringAndroidRequest = new NewBidSellEventRequest(newBidEvent,BasketSession.getUser().getUserId(),(String)mSpinner.getSelectedItem());
spiceManager.execute(JsonSpringAndroidRequest, "Bid_Sell_Create", DurationInMillis.ALWAYS_EXPIRED, new NewBidEventSellListner());
}
catch (NumberFormatException e){
Toast.makeText(CreateBidActivity.this, "Wrong input on dimensions or in price. Make sure its a number", Toast.LENGTH_LONG);
}
}
});
this.findViewById(R.id.selpic).setOnClickListener(new OnClickListener(){
public void onClick(View arg0)
{
Intent i = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
}
});
}
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
ByteArrayOutputStream outStr = new ByteArrayOutputStream();
Bitmap picture = BitmapFactory.decodeFile(picturePath);
picture.compress(Bitmap.CompressFormat.JPEG, 100, outStr);
blob = outStr.toByteArray();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.create_bid, menu);
return true;
}
private class NewBidEventSellListner implements RequestListener<Boolean>, RequestProgressListener {
@Override
public void onRequestFailure(SpiceException arg0) {
Log.d("error",arg0.getMessage());
if (!(arg0 instanceof RequestCancelledException)) {
Toast.makeText(CreateBidActivity.this, "Could not put item to bid sale", Toast.LENGTH_SHORT).show();
}
BasketSession.getUser().getCurrentlySellingOnBid().remove(BasketSession.getUser().getCurrentlySellingOnBid().size()-1);
spiceManager.shouldStop();
}
@Override
public void onRequestSuccess(Boolean bool)
{
spiceManager.shouldStop();
Toast.makeText(CreateBidActivity.this, "Successfully created bid sale", Toast.LENGTH_SHORT).show();
CreateBidActivity.this.finish();
}
@Override
public void onRequestProgressUpdate(RequestProgress arg0)
{
}
}
}