public List <Earnings> RunBarTeamCheckout(DateTime shiftDate, string lunchOrDinner, int barBackCount) { TeamEntity barTeam = _teamRepository.GetBarTeamForShift(shiftDate, lunchOrDinner); BarTeam team = Mapper.Map <BarTeam>(barTeam); List <CheckoutEntity> checkouts = _checkoutRepository.GetCheckoutsForATeam(team.Id).ToList(); foreach (CheckoutEntity c in checkouts) { Checkout chkout = Mapper.Map <Checkout>(c); team.Checkouts.Add(chkout); } List <TipOutEntity> serverTipOuts = _teamRepository.GetTipOuts(shiftDate, lunchOrDinner, "server"); decimal serverTips = 0; foreach (TipOutEntity t in serverTipOuts) { serverTips += t.BarTipOut; } if (team.CheckoutHasBeenRun == true) { _teamRepository.DeleteTipOut(team.Id); } List <Earnings> teamEarnings = team.RunBarCheckout(serverTips, barBackCount); TipOutEntity tipoutEntity = Mapper.Map <TipOutEntity>(team.TipOut); tipoutEntity.Team = barTeam; _teamRepository.AddTipOut(tipoutEntity); return(teamEarnings); }
public void EarningsShouldBeGeneratedForEachTeamMember() { Checkout checkout1 = new Checkout(StaffMember1, ShiftDate, Bartender) { Sales = 1200, ShiftDate = ShiftDate, BarSales = 300, CashTips = 0, CcTips = 230, Hours = 7m, LunchOrDinner = "dinner", }; Checkout checkout3 = new Checkout(StaffMember2, ShiftDate, Bartender) { Sales = 900, ShiftDate = ShiftDate, BarSales = 100, CashTips = 0, CcTips = 120, Hours = 5.5m, LunchOrDinner = "dinner", }; Team.Checkouts.Add(checkout1); Team.Checkouts.Add(checkout3); List <Earnings> earnings = Team.RunBarCheckout(123, 1); var grantsEarning = earnings.FirstOrDefault(e => e.StaffMember.Id == 1); var jamesEarning = earnings.FirstOrDefault(e => e.StaffMember.Id == 2); Assert.IsTrue(earnings.Any(e => e.StaffMember.Id == 1)); Assert.IsTrue(earnings.Any(e => e.StaffMember.Id == 2)); Assert.AreNotEqual(earnings[0], earnings[1]); Assert.IsTrue(grantsEarning.CcTips > jamesEarning.CcTips); }