package com.clubminibar.cmbroom;


import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;
import android.support.v4.view.ViewCompat;



public class ProductGroupAdapter extends ArrayAdapter<Option> {

//	private enum actions {ACTION_NONE,ACTION_SALE,ACTION_EXPIRED,ACTION_DAMAGED};
//	private enum roomstatus {STATUS_NONE,STATUS_VC,STATUS_VD,STATUS_OC,STATUS_OD,STATUS_RS,STATUS_DND,STATUS_DND2};
	int layoutResourceId;
	Context context;
	Option data[] = null;
	SPData sp;


	public ProductGroupAdapter(Context context, int layoutResourceId,Option[] data,SPData spdata) {
		super(context, layoutResourceId, data);
		this.layoutResourceId = layoutResourceId;
		this.context = context;
		this.data = data;
		this.sp=spdata;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		View row = convertView;
		MatrixHolder holder = null;

		if (row == null) {
			LayoutInflater inflater = ((Activity) context).getLayoutInflater();
			row = inflater.inflate(layoutResourceId, parent, false);

			holder = new MatrixHolder();
			holder.txtTitle = (TextView) row.findViewById(R.id.itemdescription);
			holder.group = (RadioGroup) row.findViewById(R.id.prods_group);
			if(this.data[position].isrestock<0){
				((RadioButton)holder.group.getChildAt(0)).setText((CharSequence)("X"));
				((RadioButton)holder.group.getChildAt(1)).setText((CharSequence)("Sale"));
				((RadioButton)holder.group.getChildAt(2)).setVisibility(View.VISIBLE);
				((RadioButton)holder.group.getChildAt(3)).setVisibility(View.VISIBLE);
				((RadioButton)holder.group.getChildAt(4)).setVisibility(View.VISIBLE);
				((RadioButton)holder.group.getChildAt(5)).setVisibility(View.VISIBLE);
				((RadioButton)holder.group.getChildAt(6)).setVisibility(View.VISIBLE);

			} else{
				((RadioButton)holder.group.getChildAt(0)).setText((CharSequence)("Unstocked"));
				((RadioButton)holder.group.getChildAt(1)).setText((CharSequence)("Restocked"));
				((RadioButton)holder.group.getChildAt(2)).setVisibility(View.GONE);
				((RadioButton)holder.group.getChildAt(3)).setVisibility(View.GONE);
				((RadioButton)holder.group.getChildAt(4)).setVisibility(View.GONE);
				((RadioButton)holder.group.getChildAt(5)).setVisibility(View.GONE);
				((RadioButton)holder.group.getChildAt(6)).setVisibility(View.GONE);			
			}			
			ViewCompat.setHasTransientState(holder.group , true);
			holder.group.clearCheck();
			switch(this.data[position].action){
				case 0:
					holder.group.check(R.id.prods_none);
					break;
				case 1:
					holder.group.check(R.id.prods_sale);
					break;
				case 2:
					holder.group.check(R.id.prods_expired);
					break;
				case 3:
					holder.group.check(R.id.prods_damaged);
					break;
				case 4:
					holder.group.check(R.id.prods_snr);
					break;
				case 5:
					holder.group.check(R.id.prods_enr);
					break;
				case 6:
					holder.group.check(R.id.prods_dnr);
					break;
			}
				
					
			row.setTag(holder);
			
			holder.group.setOnCheckedChangeListener(new OnCheckedChangeListener() {
				@Override
		        public void onCheckedChanged(RadioGroup group, int checkedId) {
					
	        		Long now = System.currentTimeMillis();
	        		int preaction=-1;
		        	int pos = (Integer)group.getTag();
		        	switch(checkedId){
		        		case R.id.prods_none:
		        			preaction=0;
		        			break;
		        		case R.id.prods_sale:
		        			preaction=1;
		        			break;
		        		case R.id.prods_expired:
		        			preaction=2;
		        			break;
		        		case R.id.prods_damaged:
		        			preaction=3;
		        			break;
		        		case R.id.prods_snr:
		        			preaction=4;
		        			break;
		        		case R.id.prods_enr:
		        			preaction=5;
		        			break;
		        		case R.id.prods_dnr:
		        			preaction=6;
		        			break;		        			
		        	}
		        	if(preaction>=0 && preaction<=6){
		        		if(data[pos].isrestock<0){
		        			if(sp.putItemAction(data[pos].localitemid,data[pos].roomid,preaction, now)){
		        				data[pos].action=preaction;
		        				data[pos].oldcheck=checkedId;
		        			}else{
		        				group.clearCheck();
		        				group.check(data[pos].oldcheck);
		        			}
		        		}else{
		        			if(sp.putItemRestock(data[pos].isrestock,data[pos].localitemid,data[pos].roomid,preaction, now)){
		        				data[pos].action=preaction;
		        				data[pos].oldcheck=checkedId;
		        			}else{
		        				group.clearCheck();
		        				group.check(data[pos].oldcheck);
		        			}
		        		}	
		        	}
				}
		    });

		} else {
			holder = (MatrixHolder) row.getTag();
		}

		Option option = data[position];
		holder.group.setTag(position);
		holder.txtTitle.setText(option.title);
		holder.roomid=option.roomid;
		holder.localitemid=option.localitemid;
		holder.isrestock=option.isrestock;
		holder.action=option.action;
		
		return row;
	}

	static class MatrixHolder {
		TextView txtTitle;
		RadioGroup group;
        int roomid;
        int localitemid;
        int action;
        int oldcheck;
        int isrestock;
		
	}
}
