public async Task SaveUserPaymentItemAsync(UserPaymentItem item)
 {
     if (item.Id == null)
     {
         await userpaymentTabel.InsertAsync(item);
     }
     else
     {
         await userpaymentTabel.UpdateAsync(item);
     }
 }
 public async void DeleteUserPaymentItemAsync(UserPaymentItem item)
 {
     await userpaymentTabel.DeleteAsync(item);
 }
Example #3
0
        private async void saveToDatabes()
        {
            try
            {
                var     name = payNameStatic.Text.ToString().Trim();
                decimal cor  = friendsToPayment.Sum(s => s.Item2);
                var     my1  = friendsToPayment.Find(s => s.Item1 == HomeActivity1.userItem.Name);
                decimal my;
                if (my1 != null)
                {
                    my = my1.Item2;
                }
                else
                {
                    my = 0;
                }

                decimal sum;
                if (cor < 0)
                {
                    if (my >= 0)
                    {
                        sum = friendsToPayment.Where(s => s.Item2 < 0).Sum(s => Math.Abs(s.Item2));
                    }
                    else
                    {
                        sum = friendsToPayment.Where(s => s.Item2 > 0).Sum(s => s.Item2);
                    }
                }
                else
                {
                    if (my > 0)
                    {
                        sum = friendsToPayment.Where(s => s.Item2 < 0).Sum(s => Math.Abs(s.Item2));
                    }
                    else
                    {
                        sum = friendsToPayment.Where(s => s.Item2 > 0).Sum(s => s.Item2);
                    }
                }
                PaymentItem payitem;
                if (paymentItem == null)
                {
                    payitem = new PaymentItem()
                    {
                        Amount = sum,
                        TripId = tripItem.Id,
                        Name   = name,
                        UserCreatingPaymentId = HomeActivity1.userItem.Id
                    };
                    await DatabaseManager.DefaultManager.SavePaymentItemAsync(payitem);
                }
                else
                {
                    payitem        = paymentItem;
                    payitem.Amount = sum;
                    await DatabaseManager.DefaultManager.SavePaymentItemAsync(payitem);
                }



                bool isHeHere = false;
                if (paymentItem == null)
                {
                    foreach (Tuple <string, decimal> tuple in friendsToPayment)
                    {
                        var user   = friends.Where(s => s.Name == tuple.Item1).First().Id;
                        var amount = tuple.Item2;
                        if (user == HomeActivity1.userItem.Id)
                        {
                            isHeHere = true;
                            amount  -= cor;
                        }
                        var payuseritem = new UserPaymentItem()
                        {
                            PayId  = payitem.Id,
                            UserId = user,
                            Amount = amount
                        };
                        await DatabaseManager.DefaultManager.SaveUserPaymentItemAsync(payuseritem);
                    }
                    if (!isHeHere)
                    {
                        var payuseritem = new UserPaymentItem()
                        {
                            PayId  = payitem.Id,
                            UserId = HomeActivity1.userItem.Id,
                            Amount = (-cor)
                        };
                        await DatabaseManager.DefaultManager.SaveUserPaymentItemAsync(payuseritem);
                    }
                }
                else
                {
                    foreach (Tuple <string, decimal> tuple in friendsToPayment)
                    {
                        var user   = friends.Where(s => s.Name == tuple.Item1).First().Id;
                        var amount = tuple.Item2;
                        if (user == HomeActivity1.userItem.Id)
                        {
                            isHeHere = true;
                            amount  -= cor;
                        }
                        var payuseritem = payments.Where(s => s.UserId == user).FirstOrDefault();

                        if (payuseritem != null)
                        {
                            payuseritem.Amount = amount;
                            payments.Remove(payuseritem);
                        }
                        else
                        {
                            payuseritem = new UserPaymentItem()
                            {
                                PayId  = payitem.Id,
                                UserId = user,
                                Amount = amount
                            };
                        }
                        await DatabaseManager.DefaultManager.SaveUserPaymentItemAsync(payuseritem);
                    }
                    if (!isHeHere)
                    {
                        var payuseritem = payments.Where(s => s.UserId == HomeActivity1.userItem.Id).FirstOrDefault();
                        if (payuseritem != null)
                        {
                            payuseritem.Amount = (-cor);
                            if (payuseritem.Amount != 0)
                            {
                                payments.Remove(payuseritem);
                            }
                        }
                        else
                        {
                            payuseritem = new UserPaymentItem()
                            {
                                PayId  = payitem.Id,
                                UserId = HomeActivity1.userItem.Id,
                                Amount = (-cor)
                            };
                        }
                        if (payuseritem.Amount != 0)
                        {
                            await DatabaseManager.DefaultManager.SaveUserPaymentItemAsync(payuseritem);
                        }
                    }
                    foreach (UserPaymentItem paythis in payments)
                    {
                        DatabaseManager.DefaultManager.DeleteUserPaymentItemAsync(paythis);
                    }
                }
                HistoryItem historyItem;
                if (paymentItem == null)
                {
                    historyItem = new HistoryItem(tripItem.Id, HomeActivity1.userItem.Id, "added payment, amount: " + sum);
                }
                else
                {
                    historyItem = new HistoryItem(tripItem.Id, HomeActivity1.userItem.Id, "edited payment, amount: " + sum);
                }
                await DatabaseManager.DefaultManager.SaveHistoryItemAsync(historyItem);

                base.OnBackPressed();
            }
            catch
            {
                Toast.MakeText(this, "Upps", ToastLength.Short).Show();
            }
        }