// Path: app/src/main/java/com/ae/apps/tripmeter/models/Trip.java
// public class Trip {
//     private String id;
//     private String name;
//     private String memberIds;
//     private long startDate;
//     private float totalExpenses;
//     private boolean isSettled;
// 
//     private List<ContactVo> members;
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setMemberIds(String memberIds) {
//         this.memberIds = memberIds;
//     }
// 
//     public String getMemberIds() {
//         return memberIds;
//     }
// 
//     public void setStartDate(long startDate) {
//         this.startDate = startDate;
//     }
// 
//     public long getStartDate() {
//         return startDate;
//     }
// 
//     public void setTotalExpenses(float totalExpenses) {
//         this.totalExpenses = totalExpenses;
//     }
// 
//     public float getTotalExpenses() {
//         return totalExpenses;
//     }
// 
//     public void setSettled(boolean settled) {
//         isSettled = settled;
//     }
// 
//     public boolean isSettled() {
//         return isSettled;
//     }
// 
//     public List<ContactVo> getMembers() {
//         if(null == members){
//             members = new ArrayList<>();
//         }
//         return members;
//     }
// }
// 
// Path: app/src/main/java/com/ae/apps/tripmeter/models/TripExpense.java
// public class TripExpense {
//     private String id;
//     private String tripId;
//     private String memberIds;
//     private String paidById;
//     private String category;
//     private String note;
//     private float amount;
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getTripId() {
//         return tripId;
//     }
// 
//     public void setTripId(String tripId) {
//         this.tripId = tripId;
//     }
// 
//     public float getAmount() {
//         return amount;
//     }
// 
//     public void setAmount(float amount) {
//         this.amount = amount;
//     }
// 
//     public String getMemberIds() {
//         return memberIds;
//     }
// 
//     public void setMemberIds(String memberIds) {
//         this.memberIds = memberIds;
//     }
// 
//     public String getPaidById() {
//         return paidById;
//     }
// 
//     public void setPaidById(String paidById) {
//         this.paidById = paidById;
//     }
// 
//     public String getCategory() {
//         return category;
//     }
// 
//     public void setCategory(String category) {
//         this.category = category;
//     }
// 
//     public String getNote() {
//         return note;
//     }
// 
//     public void setNote(String note) {
//         this.note = note;
//     }
// }
// 
// Path: app/src/main/java/com/ae/apps/tripmeter/models/TripMemberShare.java
// public class TripMemberShare {
//     private String id;
//     private String tripId;
//     private String memberId;
//     private String expenseId;
//     private float share;
// 
//     // Used by view
//     private ContactVo contactVo;
//     private BitmapDrawable contactPhoto;
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getTripId() {
//         return tripId;
//     }
// 
//     public void setTripId(String tripId) {
//         this.tripId = tripId;
//     }
// 
//     public String getMemberId() {
//         return memberId;
//     }
// 
//     public void setMemberId(String memberId) {
//         this.memberId = memberId;
//     }
// 
//     public String getExpenseId() {
//         return expenseId;
//     }
// 
//     public void setExpenseId(String expenseId) {
//         this.expenseId = expenseId;
//     }
// 
//     public float getShare() {
//         return share;
//     }
// 
//     public void setShare(float share) {
//         this.share = share;
//     }
// 
//     public void setContactVo(ContactVo contactVo) {
//         this.contactVo = contactVo;
//     }
// 
//     public ContactVo getContactVo() {
//         return contactVo;
//     }
// 
//     public void setContactPhoto(BitmapDrawable contactPhoto) {
//         this.contactPhoto = contactPhoto;
//     }
// 
//     public BitmapDrawable getContactPhoto() {
//         return contactPhoto;
//     }
// }


import com.ae.apps.tripmeter.models.TripMemberShare;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import com.ae.apps.common.db.DataBaseHelper;
import com.ae.apps.tripmeter.models.Trip;
import com.ae.apps.tripmeter.models.TripExpense;
                DatabaseConstants.TRIPS_MASTER_COLUMNS,
                null, null, null, null, null);
        List<Trip> tripsList = new ArrayList<>();
        try {
            // Create Trip models from the cursor
            while (tripsCursor.moveToNext()) {
                tripsList.add(mapTripModel(tripsCursor));
            }
        } finally {
            tripsCursor.close();
        }
        return tripsList;
    }


    /**
     * @param tripId tripId
     * @return trip expenses list
     */
    public List<TripExpense> getExpensesForTrip(String tripId) {
        String[] args = {tripId};
        Cursor cursor = query(DatabaseConstants.TRIP_EXPENSE_TABLE,
                DatabaseConstants.TRIP_EXPENSE_COLUMNS,
                DatabaseConstants.TRIP_EXPENSE_TRIP_ID + " = ? ",
                args, null, null, null);
        List<TripExpense> expensesList = new ArrayList<>();
        if (null == cursor || cursor.getCount() == 0) {
            // Return an empty list instead of null
            return expensesList;
        }
// Path: app/src/main/java/com/ae/apps/tripmeter/models/Trip.java
// public class Trip {
//     private String id;
//     private String name;
//     private String memberIds;
//     private long startDate;
//     private float totalExpenses;
//     private boolean isSettled;
// 
//     private List<ContactVo> members;
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setMemberIds(String memberIds) {
//         this.memberIds = memberIds;
//     }
// 
//     public String getMemberIds() {
//         return memberIds;
//     }
// 
//     public void setStartDate(long startDate) {
//         this.startDate = startDate;
//     }
// 
//     public long getStartDate() {
//         return startDate;
//     }
// 
//     public void setTotalExpenses(float totalExpenses) {
//         this.totalExpenses = totalExpenses;
//     }
// 
//     public float getTotalExpenses() {
//         return totalExpenses;
//     }
// 
//     public void setSettled(boolean settled) {
//         isSettled = settled;
//     }
// 
//     public boolean isSettled() {
//         return isSettled;
//     }
// 
//     public List<ContactVo> getMembers() {
//         if(null == members){
//             members = new ArrayList<>();
//         }
//         return members;
//     }
// }
// 
// Path: app/src/main/java/com/ae/apps/tripmeter/models/TripExpense.java
// public class TripExpense {
//     private String id;
//     private String tripId;
//     private String memberIds;
//     private String paidById;
//     private String category;
//     private String note;
//     private float amount;
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getTripId() {
//         return tripId;
//     }
// 
//     public void setTripId(String tripId) {
//         this.tripId = tripId;
//     }
// 
//     public float getAmount() {
//         return amount;
//     }
// 
//     public void setAmount(float amount) {
//         this.amount = amount;
//     }
// 
//     public String getMemberIds() {
//         return memberIds;
//     }
// 
//     public void setMemberIds(String memberIds) {
//         this.memberIds = memberIds;
//     }
// 
//     public String getPaidById() {
//         return paidById;
//     }
// 
//     public void setPaidById(String paidById) {
//         this.paidById = paidById;
//     }
// 
//     public String getCategory() {
//         return category;
//     }
// 
//     public void setCategory(String category) {
//         this.category = category;
//     }
// 
//     public String getNote() {
//         return note;
//     }
// 
//     public void setNote(String note) {
//         this.note = note;
//     }
// }
// 
// Path: app/src/main/java/com/ae/apps/tripmeter/models/TripMemberShare.java
// public class TripMemberShare {
//     private String id;
//     private String tripId;
//     private String memberId;
//     private String expenseId;
//     private float share;
// 
//     // Used by view
//     private ContactVo contactVo;
//     private BitmapDrawable contactPhoto;
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getTripId() {
//         return tripId;
//     }
// 
//     public void setTripId(String tripId) {
//         this.tripId = tripId;
//     }
// 
//     public String getMemberId() {
//         return memberId;
//     }
// 
//     public void setMemberId(String memberId) {
//         this.memberId = memberId;
//     }
// 
//     public String getExpenseId() {
//         return expenseId;
//     }
// 
//     public void setExpenseId(String expenseId) {
//         this.expenseId = expenseId;
//     }
// 
//     public float getShare() {
//         return share;
//     }
// 
//     public void setShare(float share) {
//         this.share = share;
//     }
// 
//     public void setContactVo(ContactVo contactVo) {
//         this.contactVo = contactVo;
//     }
// 
//     public ContactVo getContactVo() {
//         return contactVo;
//     }
// 
//     public void setContactPhoto(BitmapDrawable contactPhoto) {
//         this.contactPhoto = contactPhoto;
//     }
// 
//     public BitmapDrawable getContactPhoto() {
//         return contactPhoto;
//     }
// }


// Path: app/src/main/java/com/ae/apps/tripmeter/database/TripExpensesDatabase.java
import com.ae.apps.tripmeter.models.TripMemberShare;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import com.ae.apps.common.db.DataBaseHelper;
import com.ae.apps.tripmeter.models.Trip;
import com.ae.apps.tripmeter.models.TripExpense;

                DatabaseConstants.TRIPS_MASTER_COLUMNS,
                null, null, null, null, null);
        List<Trip> tripsList = new ArrayList<>();
        try {
            // Create Trip models from the cursor
            while (tripsCursor.moveToNext()) {
                tripsList.add(mapTripModel(tripsCursor));
            }
        } finally {
            tripsCursor.close();
        }
        return tripsList;
    }


    /**
     * @param tripId tripId
     * @return trip expenses list
     */
    public List<TripExpense> getExpensesForTrip(String tripId) {
        String[] args = {tripId};
        Cursor cursor = query(DatabaseConstants.TRIP_EXPENSE_TABLE,
                DatabaseConstants.TRIP_EXPENSE_COLUMNS,
                DatabaseConstants.TRIP_EXPENSE_TRIP_ID + " = ? ",
                args, null, null, null);
        List<TripExpense> expensesList = new ArrayList<>();
        if (null == cursor || cursor.getCount() == 0) {
            // Return an empty list instead of null
            return expensesList;
        }
        try {