package vell.bibi.vsigner;

import java.io.Serializable;
import java.util.List;

import vell.bibi.vsigner.adapter.BaseAdapterHelper;
import vell.bibi.vsigner.adapter.QuickAdapter;
import vell.bibi.vsigner.config.Constants;
import vell.bibi.vsigner.model.Channel;
import vell.bibi.vsigner.model.ChannelSigner;
import vell.bibi.vsigner.model.User;
import vell.bibi.vsigner.view.pullable.PullToRefreshLayout;
import vell.bibi.vsigner.view.pullable.PullToRefreshLayout.OnRefreshListener;
import android.content.Intent;
import android.widget.ListView;
import cn.bmob.v3.BmobQuery;
import cn.bmob.v3.listener.FindListener;

public class ShowSignerActivity extends BaseActivity {

	private QuickAdapter<ChannelSigner> mChannelSignerAdapter;
	
	private ListView mSignerListView;
	private PullToRefreshLayout mPullToRefreshLayout;
	private Channel mChannel;
	@Override
	public void setContentView() {
		setContentView(R.layout.activity_show_signer);
	}

	@Override
	public void initViews() {
		mSignerListView = (ListView) findViewById(R.id.lv_signer);
		mPullToRefreshLayout = (PullToRefreshLayout) findViewById(R.id.ptrl_signer);
	}

	@Override
	public void initListeners() {
		mPullToRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
			
			@Override
			public void onRefresh(PullToRefreshLayout pullToRefreshLayout) {
				refreshData();
			}
			
			@Override
			public void onLoadMore(PullToRefreshLayout pullToRefreshLayout) {
				mPullToRefreshLayout.loadmoreFinish(PullToRefreshLayout.SUCCEED);
			}
		});
	}

	@Override
	public void initData() {
		Intent intent = getIntent();
		Serializable serializable = intent.getSerializableExtra(Constants.CHANNEL_KEY);
		if(serializable != null && serializable instanceof Channel) {
			mChannel = (Channel) serializable;
		} else {
			ShowToast(getString(R.string.param_error));
			finish();
		}
		
		if(mChannelSignerAdapter == null) {
			mChannelSignerAdapter = new QuickAdapter<ChannelSigner>(mContext, R.layout.item_signer) {
				@Override
				protected void convert(BaseAdapterHelper helper, ChannelSigner channelSigner) {
					User signer = channelSigner.getSigner();
					helper.setText(R.id.tv_signer_realname, signer.getRealname())
						.setText(R.id.tv_signer_username, signer.getUsername())
						.setText(R.id.tv_sign_address, channelSigner.getAddress())
						.setText(R.id.tv_sign_date, channelSigner.getSignDate().getDate())
						.setText(R.id.tv_signer_phone, signer.getPhoneNumber());
				}
			};
			mSignerListView.setAdapter(mChannelSignerAdapter);
		}
		
		refreshData();
	}
	
	public void refreshData() {
		BmobQuery<ChannelSigner> channelQuery = new BmobQuery<ChannelSigner>();
		channelQuery.addWhereEqualTo(ChannelSigner.CHANNEL_KEY, mChannel.getObjectId());
		channelQuery.addWhereGreaterThanOrEqualTo(ChannelSigner.SIGN_DATE_KEY, mChannel.getStartSignDate());
		channelQuery.include(String.format("%1$s,%2$s", 
				ChannelSigner.SIGNER_KEY,
				ChannelSigner.CHANNEL_KEY));
		channelQuery.setLimit(Constants.QUERY_MAX_NUMBER);
		channelQuery.order(ChannelSigner.SIGNER_KEY);
		channelQuery.findObjects(mContext, new FindListener<ChannelSigner>() {
			@Override
			public void onSuccess(List<ChannelSigner> channelSigners) {
				mChannelSignerAdapter.clear();
				mChannelSignerAdapter.addAll(channelSigners);
				mPullToRefreshLayout.refreshFinish(PullToRefreshLayout.SUCCEED);
			}
			
			@Override
			public void onError(int arg0, String msg) {
				mPullToRefreshLayout.refreshFinish(PullToRefreshLayout.FAIL);
			}
		});
	}
}