Beispiel #1
0
    public GroupModel Editgroup(int id, GroupModel groupModel)
    {
        var oldgroup = context.Groups.ToList().FirstOrDefault(x => x.GroupId == id);

        oldgroup.Amount      = groupModel.Group.Amount;
        oldgroup.CreatorIdId = groupModel.Group.CreatorIdId;
        oldgroup.Date        = groupModel.Group.Date;
        oldgroup.Title       = groupModel.Group.Title;
        var group = context.Groups.Attach(oldgroup);

        group.State = Microsoft.EntityFrameworkCore.EntityState.Modified;


        var groupMember = context.GroupMembers.Where(x => x.GroupId == id);

        context.GroupMembers.RemoveRange(groupMember);

        var groupExpenses = context.GroupsofExpenses.ToList().Where(x => x.GroupId == id);

        context.GroupsofExpenses.RemoveRange(groupExpenses);

        // foreach (var item in groupExpenses)
        // {
        //     expenserepo.DeleteExpense(item.ExpenseId);
        // }

        foreach (var item in groupModel.MembersId.ToList())
        {
            GroupMembers groupMembers = new GroupMembers();
            groupMembers.GroupId = oldgroup.GroupId;
            groupMembers.UserId  = item;

            context.GroupMembers.Add(groupMembers);
            context.SaveChanges();
        }
        foreach (var item in groupModel.Expenses.ToList())
        {
            GroupExpense groupExpense = new GroupExpense()
            {
                GroupId   = oldgroup.GroupId,
                ExpenseId = item.ExpenseId,
            };

            context.GroupsofExpenses.Add(groupExpense);
            context.SaveChanges();
        }

        var activity = new Activity();

        activity.Activitydata = "You Edited" + groupModel.Group.Title + "group";
        activity.Date         = DateTime.Now.ToString();
        activity.UserId       = groupModel.Group.CreatorIdId;

        context.Activities.Add(activity);
        context.SaveChanges();

        return(groupModel);
    }
    public Expense AddExpense(ExpenseModel expenseModel)
    {
        this.context.Expenses.Add(expenseModel.Expense);
        context.SaveChanges();

        if (expenseModel.Expense
            .GroupId != null)
        {
            GroupExpense groupExpense = new GroupExpense()
            {
                ExpenseId = expenseModel.Expense.ExpenseId,
                GroupId   = expenseModel.Expense.GroupId,
            };
            context.GroupsofExpenses.Add(groupExpense);
            context.SaveChanges();
        }


        foreach (var item in expenseModel.Shares)
        {
            item.ExpenseId = expenseModel.Expense.ExpenseId;
            context.Shareinfo.Add(item);
            context.SaveChanges();
        }
        foreach (var item in expenseModel.Payers)
        {
            var share = GetShare(item.PayerId, expenseModel.Expense.ExpenseId);

            Expenseinfo expenseinfo = new Expenseinfo();
            expenseinfo.ExpenseId   = expenseModel.Expense.ExpenseId;
            expenseinfo.PaidAmouunt = item.Amount;
            expenseinfo.UserId      = item.PayerId;
            expenseinfo.ShareId     = share.ShareId;
            expenseinfo.shareamount = share.ShareAmount;
            if ((share.ShareAmount - item.Amount) >= 0)
            {
                expenseinfo.BorrowedAmout = share.ShareAmount - item.Amount;
                expenseinfo.LentedAmout   = 0;
            }
            else
            {
                expenseinfo.LentedAmout = item.Amount - share.ShareAmount;
            }

            context.Expensesinfo.Add(expenseinfo);
            context.SaveChanges();
        }

        var expenseinfolist = context.Expensesinfo.ToList().Where(x => x.ExpenseId == expenseModel.Expense.ExpenseId);

        foreach (var item in expenseinfolist)
        {
            var LentedAmout = item.LentedAmout;
            if (LentedAmout > 0)
            {
                foreach (var subitem in expenseinfolist)
                {
                    var BorrowedAmout = subitem.BorrowedAmout;

                    if (LentedAmout < 0)
                    {
                        break;
                    }
                    if (item.UserId == subitem.UserId)
                    {
                        continue;
                    }

                    if (BorrowedAmout > 0)
                    {
                        Settelement settelement = new Settelement();
                        settelement.ExpenseId  = expenseModel.Expense.ExpenseId;
                        settelement.BorrowerId = subitem.UserId;
                        settelement.LenterId   = item.UserId;
                        settelement.GroupId    = expenseModel.Expense.GroupId;
                        if (LentedAmout >= BorrowedAmout)
                        {
                            settelement.SettelementAmount = BorrowedAmout;
                            LentedAmout   = LentedAmout - BorrowedAmout;
                            BorrowedAmout = 0;
                        }
                        if (LentedAmout < BorrowedAmout)
                        {
                            settelement.SettelementAmount = LentedAmout;
                            LentedAmout   = 0;
                            BorrowedAmout = BorrowedAmout - LentedAmout;
                        }

                        context.Settelements.Add(settelement);
                        context.SaveChanges();
                    }
                }
            }
        }

        var activity = new Activity()
        {
            Activitydata = "You" + expenseModel.Expense.Title + "Added",
            Date         = DateTime.Now.ToString(),
            UserId       = expenseModel.Expense.UserId,
        };

        context.Activities.Add(activity);
        context.SaveChanges();



        return(expenseModel.Expense);
    }