// Path: app/src/main/java/com/vsahin/moneycim/Model/Entity/RawSpending.java
// @Entity(tableName = "spending")
// public class RawSpending implements Serializable {
// 
//     @PrimaryKey(autoGenerate = true)
//     @ColumnInfo(name = "id")
//     public int id;
// 
//     @ForeignKey(entity = SpendingGroup.class, parentColumns = "group-id", childColumns = "group-id")
//     @ColumnInfo(name = "group_id")
//     private int groupId;
// 
//     @TypeConverters(Converters.class)
//     @ColumnInfo(name = "date")
//     private Date date;
// 
//     @ColumnInfo(name = "quantity")
//     private Double quantity;
// 
//     @ColumnInfo(name = "description")
//     private String description;
// 
//     public int getId() {
//         return id;
//     }
// 
//     public int getGroupId() {
//         return groupId;
//     }
// 
//     public void setGroupId(int groupId) {
//         this.groupId = groupId;
//     }
// 
//     public Date getDate() {
//         return date;
//     }
// 
//     public void setDate(Date date) {
//         this.date = date;
//     }
// 
//     public Double getQuantity() {
//         return quantity;
//     }
// 
//     public void setQuantity(Double quantity) {
//         this.quantity = quantity;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
// }
// 
// Path: app/src/main/java/com/vsahin/moneycim/Model/Entity/SpendingGroup.java
// @Entity(tableName = "spending_group")
// public class SpendingGroup {
// 
//     @PrimaryKey(autoGenerate = true)
//     @ColumnInfo(name = "group_id")
//     private int groupId;
// 
//     @ColumnInfo(name = "group_name")
//     private String groupName;
// 
//     public int getGroupId() {
//         return groupId;
//     }
// 
//     public void setGroupId(int groupId) {
//         this.groupId = groupId;
//     }
// 
//     public String getGroupName() {
//         return groupName;
//     }
// 
//     public void setGroupName(String groupName) {
//         this.groupName = groupName;
//     }
// }
// 
// Path: app/src/main/java/com/vsahin/moneycim/Model/Repository/SpendingRepository.java
// @Singleton
// public class SpendingRepository {
//     private final AppDatabase appDatabase;
//     @Inject
//     public SpendingRepository(AppDatabase appDatabase) {
//         this.appDatabase = appDatabase;
//     }
// 
//     public LiveData<List<Spending>> getSpendings(){
//         return appDatabase.spendingDao().getSpendingsWithGroups();
//     }
// 
//     public LiveData<Double> getTotalSpendingQuantity(){
//         return appDatabase.spendingDao().getTotalSpendingQuantity();
//     }
// 
//     public void addSpending(RawSpending s){
//         appDatabase.spendingDao().addSpending(s);
//     }
// 
//     public LiveData<List<SpendingGroup>> getSpendingGroups(){
//         return appDatabase.spendingGroupDao().getAllSpendingGroups();
//     }
// 
//     public void deleteSpending(int id){
//         appDatabase.spendingDao().deleteSpending(id);
//     }
// }


import com.vsahin.moneycim.Model.Entity.RawSpending;
import com.vsahin.moneycim.Model.Entity.SpendingGroup;
import com.vsahin.moneycim.Model.Repository.SpendingRepository;
import java.util.List;
import javax.inject.Inject;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.ViewModel;

package com.vsahin.moneycim.View.AddAndEditSpending;





/**
 * Created by Volkan Şahin on 27.08.2017.
 */

public class AddAndEditSpendingViewModel extends ViewModel {

    private SpendingRepository spendingRepository;

    final LiveData<List<SpendingGroup>> spendingGroups;

    @Inject
    public AddAndEditSpendingViewModel(SpendingRepository spendingRepository) {
        this.spendingRepository = spendingRepository;
        spendingGroups = getSpendingGroups();
    }

    private LiveData<List<SpendingGroup>> getSpendingGroups() {
        return spendingRepository.getSpendingGroups();
    }


// Path: app/src/main/java/com/vsahin/moneycim/Model/Entity/RawSpending.java
// @Entity(tableName = "spending")
// public class RawSpending implements Serializable {
// 
//     @PrimaryKey(autoGenerate = true)
//     @ColumnInfo(name = "id")
//     public int id;
// 
//     @ForeignKey(entity = SpendingGroup.class, parentColumns = "group-id", childColumns = "group-id")
//     @ColumnInfo(name = "group_id")
//     private int groupId;
// 
//     @TypeConverters(Converters.class)
//     @ColumnInfo(name = "date")
//     private Date date;
// 
//     @ColumnInfo(name = "quantity")
//     private Double quantity;
// 
//     @ColumnInfo(name = "description")
//     private String description;
// 
//     public int getId() {
//         return id;
//     }
// 
//     public int getGroupId() {
//         return groupId;
//     }
// 
//     public void setGroupId(int groupId) {
//         this.groupId = groupId;
//     }
// 
//     public Date getDate() {
//         return date;
//     }
// 
//     public void setDate(Date date) {
//         this.date = date;
//     }
// 
//     public Double getQuantity() {
//         return quantity;
//     }
// 
//     public void setQuantity(Double quantity) {
//         this.quantity = quantity;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
//     public void setDescription(String description) {
//         this.description = description;
//     }
// }
// 
// Path: app/src/main/java/com/vsahin/moneycim/Model/Entity/SpendingGroup.java
// @Entity(tableName = "spending_group")
// public class SpendingGroup {
// 
//     @PrimaryKey(autoGenerate = true)
//     @ColumnInfo(name = "group_id")
//     private int groupId;
// 
//     @ColumnInfo(name = "group_name")
//     private String groupName;
// 
//     public int getGroupId() {
//         return groupId;
//     }
// 
//     public void setGroupId(int groupId) {
//         this.groupId = groupId;
//     }
// 
//     public String getGroupName() {
//         return groupName;
//     }
// 
//     public void setGroupName(String groupName) {
//         this.groupName = groupName;
//     }
// }
// 
// Path: app/src/main/java/com/vsahin/moneycim/Model/Repository/SpendingRepository.java
// @Singleton
// public class SpendingRepository {
//     private final AppDatabase appDatabase;
//     @Inject
//     public SpendingRepository(AppDatabase appDatabase) {
//         this.appDatabase = appDatabase;
//     }
// 
//     public LiveData<List<Spending>> getSpendings(){
//         return appDatabase.spendingDao().getSpendingsWithGroups();
//     }
// 
//     public LiveData<Double> getTotalSpendingQuantity(){
//         return appDatabase.spendingDao().getTotalSpendingQuantity();
//     }
// 
//     public void addSpending(RawSpending s){
//         appDatabase.spendingDao().addSpending(s);
//     }
// 
//     public LiveData<List<SpendingGroup>> getSpendingGroups(){
//         return appDatabase.spendingGroupDao().getAllSpendingGroups();
//     }
// 
//     public void deleteSpending(int id){
//         appDatabase.spendingDao().deleteSpending(id);
//     }
// }


// Path: app/src/main/java/com/vsahin/moneycim/View/AddAndEditSpending/AddAndEditSpendingViewModel.java
import com.vsahin.moneycim.Model.Entity.RawSpending;
import com.vsahin.moneycim.Model.Entity.SpendingGroup;
import com.vsahin.moneycim.Model.Repository.SpendingRepository;
import java.util.List;
import javax.inject.Inject;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.ViewModel;

package com.vsahin.moneycim.View.AddAndEditSpending;





/**
 * Created by Volkan Şahin on 27.08.2017.
 */

public class AddAndEditSpendingViewModel extends ViewModel {

    private SpendingRepository spendingRepository;

    final LiveData<List<SpendingGroup>> spendingGroups;

    @Inject
    public AddAndEditSpendingViewModel(SpendingRepository spendingRepository) {
        this.spendingRepository = spendingRepository;
        spendingGroups = getSpendingGroups();
    }

    private LiveData<List<SpendingGroup>> getSpendingGroups() {
        return spendingRepository.getSpendingGroups();
    }


    void addSpending(RawSpending s){
