Example #1
0
        private List <SettlementViewModel.SingleExpense> GenerateCoveredUserLiabilities(int currentUserId, int displayedDays)
        {
            var chosenDate          = DateTime.Now.AddDays(-displayedDays);
            var userPartialExpenses = _context.PartialExpenses
                                      .Where(pe => pe.UserId == currentUserId && pe.Covered && DateTime.Compare(pe.SettlementDate.Value, chosenDate) > 0)
                                      .AsNoTracking()
                                      .ToList();

            var userTotalExpenses = _context.TotalExpenses
                                    .Where(te => userPartialExpenses.Any(pe => pe.TotalExpenseId == te.Id) && te.OwnerId != currentUserId)
                                    .AsNoTracking()
                                    .ToList();

            //Users with the logged in user
            var userDetails = _context.Users
                              .Where(u => userPartialExpenses.Any(pe => pe.UserId == u.Id))
                              .AsNoTracking()
                              .ToList();

            var teamDetails = _context.Teams
                              .Where(t => userPartialExpenses.Any(pe => pe.TeamId == t.Id))
                              .AsNoTracking()
                              .ToList();

            var userLiabilities = new List <SettlementViewModel.SingleExpense>();

            foreach (var totalExpense in userTotalExpenses)
            {
                PartialExpense pe = userPartialExpenses.Find(partial => partial.TotalExpenseId == totalExpense.Id);
                var            singleExpenseVM = new SettlementViewModel.SingleExpense
                {
                    UserInfo         = new Tuple <int, string>(pe.UserId, userDetails.Find(u => u.Id == pe.UserId).FullName),
                    TeamInfo         = new Tuple <int, string>(pe.TeamId, teamDetails.Find(t => t.Id == pe.TeamId).Name),
                    Value            = pe.Value,
                    FinalizationDate = pe.SettlementDate.Value,
                    TotalExpenseId   = totalExpense.Id
                };
                userLiabilities.Add(singleExpenseVM);
            }

            return(userLiabilities);
        }
Example #2
0
        private static PartialExpense [] InitializePartialExpenses(FlatmateContext context, UserTeam [] userTeams, TotalExpense [] totalExpenses)
        {
            var partialExpenses = new PartialExpense[]
            {
                new PartialExpense
                {
                    Covered        = false,
                    TotalExpenseId = totalExpenses.First(te => te.Subject == "Nowe żarówki").Id,
                    TeamId         = userTeams.First(ut => ut.Team.Name == "Grzybowska 96").TeamId,
                    UserId         = userTeams.First(ut => ut.User.FirstName == "Tom").UserId,
                    Value          = 5.0
                },
                new PartialExpense
                {
                    Covered        = false,
                    TotalExpenseId = totalExpenses.First(te => te.Subject == "Nowe żarówki").Id,
                    TeamId         = userTeams.First(ut => ut.Team.Name == "Grzybowska 96").TeamId,
                    UserId         = userTeams.First(ut => ut.User.FirstName == "Alice").UserId,
                    Value          = 5.0
                },
                new PartialExpense
                {
                    Covered        = false,
                    TotalExpenseId = totalExpenses.First(te => te.Subject == "Nowa kanapa").Id,
                    TeamId         = userTeams.First(ut => ut.Team.Name == "Grzybowska 96").TeamId,
                    UserId         = userTeams.First(ut => ut.User.FirstName == "Alice").UserId,
                    Value          = 50.0
                },
                new PartialExpense
                {
                    Covered        = false,
                    TotalExpenseId = totalExpenses.First(te => te.Subject == "Nowa kanapa").Id,
                    TeamId         = userTeams.First(ut => ut.Team.Name == "Grzybowska 96").TeamId,
                    UserId         = userTeams.First(ut => ut.User.FirstName == "Robert").UserId,
                    Value          = 50.0
                },
                new PartialExpense
                {
                    Covered        = false,
                    TotalExpenseId = totalExpenses.First(te => te.Subject == "Paliwo").Id,
                    TeamId         = userTeams.First(ut => ut.Team.Name == "Atomówki").TeamId,
                    UserId         = userTeams.First(ut => ut.User.FirstName == "Adam").UserId,
                    Value          = 54.0
                },
                new PartialExpense
                {
                    Covered        = false,
                    TotalExpenseId = totalExpenses.First(te => te.Subject == "Paliwo").Id,
                    TeamId         = userTeams.First(ut => ut.Team.Name == "Atomówki").TeamId,
                    UserId         = userTeams.First(ut => ut.User.FirstName == "Alice").UserId,
                    Value          = 53.0
                },
                new PartialExpense
                {
                    Covered        = false,
                    TotalExpenseId = totalExpenses.First(te => te.Subject == "Żarcie na przyjęcie").Id,
                    TeamId         = userTeams.First(ut => ut.Team.Name == "Misie Pysie").TeamId,
                    UserId         = userTeams.First(ut => ut.User.FirstName == "Adam").UserId,
                    Value          = 25.0
                },
                new PartialExpense
                {
                    Covered        = false,
                    TotalExpenseId = totalExpenses.First(te => te.Subject == "Żarcie na przyjęcie").Id,
                    TeamId         = userTeams.First(ut => ut.Team.Name == "Misie Pysie").TeamId,
                    UserId         = userTeams.First(ut => ut.User.FirstName == "Max").UserId,
                    Value          = 44.99
                }
            };

            foreach (PartialExpense pe in partialExpenses)
            {
                context.PartialExpenses.Add(pe);
            }
            context.SaveChanges();

            return(partialExpenses);
        }