Example #1
0
 private void deleteDB()
 {
     String ConnectionString = @"isostore:/BillDB.sdf";
     using (GroupDataContext context = new GroupDataContext(ConnectionString))
     {
         if (!context.DatabaseExists())
         {
             context.DeleteDatabase();
         }
     }
     MessageBox.Show("Successfully deleted database.");
 }
Example #2
0
 public MainPage()
 {
     InitializeComponent();
     using (GroupDataContext context = new GroupDataContext(ConnectionString))
     {
         if (!context.DatabaseExists())
         {
             // create database if it does not exist
             context.CreateDatabase();
         }
     }
     //deleteIsolatedStorage();
 }
        public static int AddGroup(String group_name)
        {
            using (GroupDataContext context = new GroupDataContext(ConnectionString))
            {
                Group group = new Group();

                group.Name = group_name;
                group.Created = DateTime.Now;

                context.Groups.InsertOnSubmit(group);
                context.SubmitChanges();

                return group.ID;
            }
        }
        public static int AddMember(int group_id, String member_name, String email, string phone_number)
        {
            // Get associated Group for group_id
            IList<Group> groupList = null;
            using (GroupDataContext context = new GroupDataContext(ConnectionString))
            {
                IQueryable<Group> query = from c in context.Groups where c.ID == group_id select c;
                groupList = query.ToList();

                Member member = new Member();
                member.Name = member_name;
                member.Active = true;
                member.Email = email;
                member.Phone = phone_number;
                member.Group = groupList.FirstOrDefault();

                context.Members.InsertOnSubmit(member);
                context.SubmitChanges();

                return member.ID;
            }
        }
        public static int AddItem(int group_id, String item_name, String item_desc, DateTime due)
        {
            // Get associated Group for group_id
            IList<Group> groupList = null;
            using (GroupDataContext context = new GroupDataContext(ConnectionString))
            {
                IQueryable<Group> query = from c in context.Groups where c.ID == group_id select c;
                groupList = query.ToList();

                Item item = new Item();
                item.Title = item_name;
                item.Description = item_desc;
                item.Created = DateTime.Now;
                item.Due = due;
                item.Group = groupList.FirstOrDefault();

                context.Items.InsertOnSubmit(item);
                context.SubmitChanges();

                return item.ID;
            }
        }
 public static IList<Item> GetOwedItems(int member_id)
 {
     IList<Item> itemList = null;
     using (GroupDataContext context = new GroupDataContext(ConnectionString))
     {
         IQueryable<Item> query = from c in context.Transactions where (c.MemberID == member_id && c.Amount < 0) select c.Item;
         itemList = query.ToList();
     }
     return itemList;
 }
 public static decimal GetMemberTotal(int member_id)
 {
     IList<Transaction> transactionList = null;
     using (GroupDataContext context = new GroupDataContext(ConnectionString))
     {
         IQueryable<Transaction> query = from c in context.Transactions where c.MemberID == member_id select c;
         transactionList = query.ToList();
     }
     decimal cost = 0;
     foreach (Transaction transaction in transactionList)
     {
         cost += transaction.Amount;
     }
     return cost;
 }
 public static string GetMemberGroupName(int member_id)
 {
     using (GroupDataContext context = new GroupDataContext(ConnectionString))
     {
         return (from c in context.Members where c.ID == member_id select c).FirstOrDefault().Group.Name;
     }
 }
 public static IList<Member> GetAllMembers(int group_id)
 {
     IList<Member> memberList = null;
     using (GroupDataContext context = new GroupDataContext(ConnectionString))
     {
         IQueryable<Member> query = from c in context.Members where c.Group.ID == group_id select c;
         memberList = query.ToList();
     }
     return memberList;
 }
        public static void setMemberActivity(int member_id, bool active)
        {
            using (GroupDataContext context = new GroupDataContext(ConnectionString))
            {
                Member member = (from c in context.Members where c.ID == member_id select c).Single();

                member.Active = active;

                context.SubmitChanges();
            }
        }
        public static void removeItem(int item_id)
        {
            using (GroupDataContext context = new GroupDataContext(ConnectionString))
            {
                IQueryable<Transaction> query = from c in context.Transactions where c.ItemID == item_id select c;
                context.Transactions.DeleteAllOnSubmit(query);

                Item item = (from c in context.Items where c.ID == item_id select c).Single();
                context.Items.DeleteOnSubmit(item);
                context.SubmitChanges();
            }
        }
        public static void PrintItem(String group_name)
        {
            IList<Item> itemList = null;
            using (GroupDataContext context = new GroupDataContext(ConnectionString))
            {
                IQueryable<Item> query = from c in context.Items where c.Group.Name == group_name select c;
                itemList = query.ToList();
            }

            StringBuilder messageBuilder = new StringBuilder();
            messageBuilder.AppendLine("Items: ");
            foreach (Item item in itemList)
            {
                messageBuilder.AppendLine(item.Title + " - " + item.Description);
            }
            MessageBox.Show(messageBuilder.ToString());
        }
 public static IList<Item> GetItems(int group_id)
 {
     IList<Item> itemList = null;
     using (GroupDataContext context = new GroupDataContext(ConnectionString))
     {
         IQueryable<Item> query = from c in context.Items orderby c.Created where c.GroupID == group_id select c;
         itemList = query.ToList();
     }
     return itemList;
 }
 public static decimal GetItemCost(int item_id)
 {
     IList<Transaction> transactionList = null;
     using (GroupDataContext context = new GroupDataContext(ConnectionString))
     {
         IQueryable<Transaction> query = from c in context.Transactions where c.ItemID == item_id select c;
         transactionList = query.ToList();
     }
     decimal cost = 0;
     foreach (Transaction transaction in transactionList)
     {
         if (transaction.Amount < 0)
             cost += transaction.Amount;
     }
     return cost * -1;
 }
        public static Item GetItem(int item_id)
        {
            using (GroupDataContext context = new GroupDataContext(ConnectionString))
            {
                Item item = (from c in context.Items where c.ID == item_id select c).Single();

                return item;
            }
        }
 public static IList<Group> GetGroups()
 {
     IList<Group> groupList = null;
     using (GroupDataContext context = new GroupDataContext(ConnectionString))
     {
         IQueryable<Group> query = from c in context.Groups select c;
         groupList = query.ToList();
     }
     return groupList;
 }
 /*******************************
  * Groups
  ******************************* */
 public static string GetGroupNameByGroupID(int group_id)
 {
     using (GroupDataContext context = new GroupDataContext(ConnectionString))
     {
         return (from c in context.Groups where c.ID == group_id select c).Single().Name;
     }
 }
 public static string GetGroupName(int item_id)
 {
     using (GroupDataContext context = new GroupDataContext(ConnectionString))
     {
         return (from c in context.Items where c.ID == item_id select c).Single().Group.Name;
     }
 }
 /*******************************
  * Transactions
  ******************************* */
 public static IList<Transaction> GetTransactions()
 {
     IList<Transaction> transactionList = null;
     using (GroupDataContext context = new GroupDataContext(ConnectionString))
     {
         IQueryable<Transaction> query = from c in context.Transactions select c;
         transactionList = query.ToList();
     }
     return transactionList;
 }
        public static bool IsSplitEvenly(int item_id)
        {
            IList<Transaction> transactionList = null;
            using (GroupDataContext context = new GroupDataContext(ConnectionString))
            {
                IQueryable<Transaction> query = from c in context.Transactions where c.ItemID == item_id select c;
                transactionList = query.ToList();
            }

            decimal cost = 0;
            bool is_split_even = false;
            int num_owers = 0;
            foreach (Transaction transaction in transactionList)
            {
                if (!is_split_even && transaction.Amount < 0)
                { // if the transaction is for amount owned, hold onto the cost
                    cost = transaction.Amount;
                    is_split_even = true;
                    num_owers = 1;
                }
                else if (cost == transaction.Amount)
                    num_owers++;
            }
            if (num_owers == 1)
                is_split_even = false;
            return is_split_even;
        }
 public static IList<Item> GetItemsSortByDueDate()
 {
     IList<Item> itemList = null;
     using (GroupDataContext context = new GroupDataContext(ConnectionString))
     {
         IQueryable<Item> query = from c in context.Items orderby c.Due descending select c;
         itemList = query.ToList();
     }
     return itemList;
 }
 public static IList<Transaction> GetItemTransactions(int item_id)
 {
     IList<Transaction> transactionList = null;
     using (GroupDataContext context = new GroupDataContext(ConnectionString))
     {
         IQueryable<Transaction> query = from c in context.Transactions where c.ItemID == item_id select c;
         transactionList = query.ToList();
     }
     return transactionList;
 }
        public static int AddTransaction(int item_id, int member_id, decimal amount)
        {
            // Get associated Item for item_id and Member for member_id
            IList<Item> itemList = null;
            IList<Member> memberList = null;
            using (GroupDataContext context = new GroupDataContext(ConnectionString))
            {
                IQueryable<Item> query1 = from c in context.Items where c.ID == item_id select c;
                itemList = query1.ToList();
                IQueryable<Member> query2 = from c in context.Members where c.ID == member_id select c;
                memberList = query2.ToList();

                Transaction transaction = new Transaction();
                transaction.Amount = amount;
                transaction.Member = memberList.FirstOrDefault();
                transaction.Item = itemList.FirstOrDefault();

                context.Transactions.InsertOnSubmit(transaction);
                context.SubmitChanges();

                return transaction.ID;
            }
        }
        /*******************************
         * Misc Functions
         ******************************* */
        public static void sendLedgerEmail(int group_id)
        {
            StringBuilder messageBuilder = new StringBuilder();
            messageBuilder.AppendLine("Ledger for ");
            using (GroupDataContext context = new GroupDataContext(ConnectionString))
            {
                IQueryable<Group> gquery = from c in context.Groups where c.ID == group_id select c;
                IList<Group> group = gquery.ToList();
                messageBuilder.AppendLine("Group Name: " + group.FirstOrDefault().Name + "\n==========================\n");

                IQueryable<Member> mquery = from c in context.Members where c.Group.ID == group_id select c;
                IList<Member> members = mquery.ToList();
                string membernames = "";
                foreach (Member member in members)
                {
                    membernames = membernames + member.Name + ", ";
                }

                messageBuilder.AppendLine("Members:\n" + membernames + "\n==========================\n");

                IQueryable<Item> iquery = from c in context.Items where c.Group.ID == group_id select c;
                IList<Item> items = iquery.ToList();
                foreach (Item item in items)
                {
                    messageBuilder.AppendLine("\nItem: " + item.Title + " (" + item.ID.ToString() + ")");
                    messageBuilder.AppendLine("Transactions:\n");
                    IQueryable<Transaction> tquery = from c in context.Transactions where c.ItemID == item.ID orderby c.Member.Name select c;
                    IList<Transaction> transactions = tquery.ToList();
                    foreach (Transaction transaction in transactions)
                    {
                        messageBuilder.AppendLine("\t" + transaction.Member.Name + ": " + transaction.Amount);
                    }
                }
            }

            EmailComposeTask email = new EmailComposeTask();
            email.Body = messageBuilder.ToString();
            email.Subject = "BillSync ledger for group ID " + group_id.ToString();
            email.To = "*****@*****.**";
            email.Show();
        }
        public static void EditItem(int item_id, String item_name, String item_desc, DateTime due)
        {
            using (GroupDataContext context = new GroupDataContext(ConnectionString))
            {
                Item item = (from c in context.Items where c.ID == item_id select c).Single();

                item.Title = item_name;
                item.Description = item_desc;
                item.Due = due;

                context.SubmitChanges();
            }
        }
        public static void ChangeDate(int item_id, DateTime datetime)
        {
            using (GroupDataContext context = new GroupDataContext(ConnectionString))
            {
                Item item = (from c in context.Items where c.ID == item_id select c).Single();

                item.Created = datetime;

                context.SubmitChanges();
            }
        }
        public static void EditMember(int member_id, String member_name, String email, string phone_number)
        {
            using (GroupDataContext context = new GroupDataContext(ConnectionString))
            {
                Member member = (from c in context.Members where c.ID == member_id select c).Single();

                member.Name = member_name;
                member.Email = email;
                member.Phone = phone_number;

                context.SubmitChanges();
            }
        }
        public static Member GetMemberByGroupID(int group_id)
        {
            using (GroupDataContext context = new GroupDataContext(ConnectionString))
            {
                Member member = (from c in context.Members where c.Group.ID == group_id select c).Single();

                return member;
            }
        }
        public static void EditGroup(int group_id, String group_name)
        {
            using (GroupDataContext context = new GroupDataContext(ConnectionString))
            {
                Group group = (from c in context.Groups where c.ID == group_id select c).Single();

                group.Name = group_name;

                context.SubmitChanges();
            }
        }