package com.yeetou.xinyongkaguanjia.db.service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.yeetou.xinyongkaguanjia.db.DBHelper;
import com.yeetou.xinyongkaguanjia.db.base.DbBankCard;
import com.yeetou.xinyongkaguanjia.db.base.DbLcBank;
import com.yeetou.xinyongkaguanjia.db.dao.DbBankCardInterface;
public class DbBankCardService implements DbBankCardInterface {
private DBHelper dbHelper;
private DbBankCardService() {
}
public DbBankCardService(Context mContext) {
DBHelper.init(mContext);
this.dbHelper = DBHelper.dbHelper();
}
@Override
public List<DbBankCard> getAllCreditCard() {
return getCards(true);
}
private List<DbBankCard> getCards(boolean isCredit) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = null;
if (isCredit) {
cursor = db.rawQuery("select * from card_bank_cards where card_type='credit'", new String[] {});
} else {
cursor = db.rawQuery("select * from card_bank_cards where card_type<>'credit'", new String[] {});
}
List<DbBankCard> bankCards = new ArrayList<DbBankCard>();
while (cursor.moveToNext()) {
DbBankCard bankcard = new DbBankCard();
bankcard.setId(cursor.getInt(0));
bankcard.setCard_type(cursor.getString(1));
bankcard.setBank_id(cursor.getInt(2));
bankcard.setName(cursor.getString(3));
bankcard.setSex(cursor.getString(4));
bankcard.setNumber(cursor.getString(5));
bankcard.setCredit_limit(cursor.getInt(6));
bankcard.setCash_limit(cursor.getInt(7));
bankcard.setSource_from(cursor.getString(8));
bankcard.setCreated_at(cursor.getLong(9));
bankcard.setUpdated_at(cursor.getLong(10));
bankcard.setBank_logo(cursor.getString(11));
bankcard.setBank_name(cursor.getString(12));
bankCards.add(bankcard);
}
cursor.close();
return bankCards;
}
@Override
public List<DbBankCard> getAllDebitCard() {
return getCards(false);
}
private void delete(int id) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.execSQL("delete from card_bank_cards where _id=?", new Integer[] { id });
}
@Override
public void synSave(List<DbBankCard> bankcards) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
for (DbBankCard bankcard : bankcards) {
ContentValues values = new ContentValues();
delete(bankcard.getId());
values.put("_id", bankcard.getId());
values.put("card_type", bankcard.getCard_type());
values.put("bank_id", bankcard.getBank_id());
values.put("name", bankcard.getName());
values.put("sex", bankcard.getSex());
values.put("number", bankcard.getNumber());
values.put("credit_limit", bankcard.getCredit_limit());
values.put("cash_limit", bankcard.getCash_limit());
values.put("source_from", bankcard.getSource_from());
values.put("created_at", bankcard.getCreated_at());
values.put("updated_at", bankcard.getUpdated_at());
Cursor cur = db.rawQuery("select name,logo from card_banks where _id=?", new String[] { bankcard.getBank_id() + "" });
if (cur.moveToFirst()) {
values.put("bank_logo", cur.getString(1));
values.put("bank_name", cur.getString(0));
setLcBank(cur.getString(0),cur.getString(1),true);
}
db.insert("card_bank_cards", null, values);
}
}
public DbBankCard getById(String id) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = db.rawQuery("select * from card_bank_cards where _id=?", new String[] { id });
DbBankCard bankcard = new DbBankCard();
if (cursor.moveToFirst()) {
bankcard.setId(cursor.getInt(0));
bankcard.setCard_type(cursor.getString(1));
bankcard.setBank_id(cursor.getInt(2));
bankcard.setName(cursor.getString(3));
bankcard.setSex(cursor.getString(4));
bankcard.setNumber(cursor.getString(5));
bankcard.setCredit_limit(cursor.getInt(6));
bankcard.setCash_limit(cursor.getInt(7));
bankcard.setSource_from(cursor.getString(8));
bankcard.setCreated_at(cursor.getLong(9));
bankcard.setUpdated_at(cursor.getLong(10));
bankcard.setBank_logo(cursor.getString(11));
bankcard.setBank_name(cursor.getString(12));
}
cursor.close();
return bankcard;
}
public Map<String, Boolean> getLcBanks() {
Map<String, Boolean> result = new HashMap<String, Boolean>();
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = db.rawQuery("select bank_name from lccp", new String[] { });
while (cursor.moveToNext()) {
if (!result.containsKey(cursor.getString(0))) {
result.put(cursor.getString(0), true);
}
}
cursor.close();
return result;
}
public List<DbLcBank> getAllLcBanks() {
List<DbLcBank> result = new ArrayList<DbLcBank>();
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = db.rawQuery("select * from lccp", new String[] { });
while (cursor.moveToNext()) {
DbLcBank newOne = new DbLcBank(cursor.getString(1),cursor.getString(2));
newOne.setIs_choose(true);
result.add(newOne);
}
cursor.close();
return result;
}
public long getLcChangeTime() {
Long result = System.currentTimeMillis();
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = db.rawQuery("select max(thedate) from lccp", new String[] { });
while (cursor.moveToNext()) {
result = cursor.getLong(0);
}
cursor.close();
return result;
}
public List<DbLcBank> getHaveBanks() {
List<DbLcBank> result = new ArrayList<DbLcBank>();
Map<String, Boolean> choose = getLcBanks();
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = db.rawQuery("select bank_name,bank_logo from card_bank_cards group by bank_name", new String[] {});
while (cursor.moveToNext()) {
DbLcBank temp = new DbLcBank();
temp.setLogo(cursor.getString(1));
temp.setName(cursor.getString(0));
if (choose.containsKey(cursor.getString(0))) {
temp.setIs_choose(true);
}
result.add(temp);
}
cursor.close();
return result;
}
public List<DbLcBank> getBigBanks() {
Map<String, DbLcBank> bigBanks = new HashMap<String, DbLcBank>();
bigBanks.put("中国银行", new DbLcBank("中国银行", "zgyh.png"));
bigBanks.put("农业银行", new DbLcBank("农业银行", "nyyh.png"));
bigBanks.put("工商银行", new DbLcBank("工商银行", "gsyh.png"));
bigBanks.put("建设银行", new DbLcBank("建设银行", "jsyh.png"));
bigBanks.put("交通银行", new DbLcBank("交通银行", "jtyh.png"));
bigBanks.put("民生银行", new DbLcBank("民生银行", "msyh.png"));
bigBanks.put("兴业银行", new DbLcBank("兴业银行", "xyyh.png"));
bigBanks.put("招商银行", new DbLcBank("招商银行", "zsyh.png"));
bigBanks.put("华夏银行", new DbLcBank("华夏银行", "hxyh.png"));
bigBanks.put("中信银行", new DbLcBank("中信银行", "zxyh.png"));
List<DbLcBank> have = getHaveBanks();
for (DbLcBank temp : have) {
bigBanks.remove(temp.getName());
}
List<DbLcBank> result = new ArrayList<DbLcBank>();
Map<String, Boolean> choose = getLcBanks();
for (DbLcBank newOne : bigBanks.values()) {
if (choose.containsKey(newOne.getName())) {
newOne.setIs_choose(true);
}
result.add(newOne);
}
return result;
}
public List<DbLcBank> getOtherBanks() {
List<DbLcBank> result = new ArrayList<DbLcBank>();
Map<String, Boolean> choose = getLcBanks();
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = db.rawQuery("select name,logo from card_banks where name not in (select bank_name from card_bank_cards) and name not in ('中国银行','农业银行','工商银行','建设银行', '交通银行', '民生银行', '兴业银行', '招商银行', '华夏银行', '中信银行') order by logo", new String[] {});
while (cursor.moveToNext()) {
DbLcBank temp = new DbLcBank();
temp.setLogo(cursor.getString(1));
temp.setName(cursor.getString(0));
if (choose.containsKey(cursor.getString(0))) {
temp.setIs_choose(true);
}
result.add(temp);
}
cursor.close();
return result;
}
public void deleteOneLc(String bankname){
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.execSQL("delete from lccp where bank_name=?", new String[] { bankname });
}
public void setLcBank(String bankname,String logo,boolean isCheck){
SQLiteDatabase db = dbHelper.getWritableDatabase();
deleteOneLc(bankname);
if(isCheck){
ContentValues values = new ContentValues();
values.put("bank_name", bankname);
values.put("bank_logo", logo);
values.put("is_choose", true);
values.put("thedate", System.currentTimeMillis());
db.insert("lccp", null, values);
}
}
}