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); }
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); }