예제 #1
0
        public EarningDto GetEarning(int staffMemberId, DateTime shiftDate, string lunchOrDinner)
        {
            EarningsEntity entity  = earningsRepository.GetEarning(staffMemberId, shiftDate, lunchOrDinner);
            EarningDto     earning = Mapper.Map <EarningDto>(entity);

            return(earning);
        }
예제 #2
0
        public IActionResult RunServerTeamCheckout([FromBody] RunServerTeamCheckoutDto data)
        {
            try
            {
                if (!serverTeamsCore.ServerTeamExists(data.ServerTeamId))
                {
                    ModelState.AddModelError("Team ID Not Found", "No team with that ID was found");
                    return(BadRequest(ModelState));
                }

                UtilityMethods.ValidateLunchOrDinnerSpecification(data.LunchOrDinner);
                data.FormattedDate = Convert.ToDateTime(data.StringDate);

                ServerTeamDto         team      = serverTeamsCore.GetServerTeamById(data.ServerTeamId);
                List <StaffMemberDto> teammates = serverTeamsCore.GetStaffMembersOnServerTeam(data.ServerTeamId);

                //need to reset earnings for the staff memebers if the checkout is being updated
                earningsCore.ResetEarningsForServerTeam(teammates, data.FormattedDate, data.LunchOrDinner);


                List <CheckoutEntity> checkouts  = checkoutsCore.GetCheckoutEntitiesForATeam(data.ServerTeamId).ToList();
                EarningDto            earningDto = serverTeamsCore.RunServerTeamCheckout(data, checkouts);
                TipOutDto             tipOutDto  = serverTeamsCore.GetServerTeamTipOut(data.ServerTeamId);

                //The earnings get added to servers here to seperate earnings work into its own section
                List <EarningDto> earnings = earningsCore.AddServerEarning(teammates, earningDto);

                ServerTipOutEarningDto tipoutAndEarning = new ServerTipOutEarningDto
                {
                    TeamTipOut     = tipOutDto,
                    ServerEarnings = earnings
                };

                return(CreatedAtRoute("RunCheckout", tipoutAndEarning));
            }
            catch (Exception e)
            {
                if (e.InnerException is InvalidOperationException)
                {
                    ModelState.AddModelError("Invalid Operation", e.Message);
                    return(BadRequest(ModelState));
                }
                else if (e.InnerException is KeyNotFoundException)
                {
                    ModelState.AddModelError("Key Not Found", e.Message);
                    return(BadRequest(ModelState));
                }
                ModelState.AddModelError("Run CheckoutError", e.Message);
                return(StatusCode(500, ModelState));
            }
        }
예제 #3
0
        public List <EarningDto> AddServerEarning(List <StaffMemberDto> staffMembers, EarningDto earning)
        {
            List <EarningDto> earningDtos = new List <EarningDto>();

            foreach (StaffMemberDto staffMember in staffMembers)
            {
                if (earningsRepository.EarningExists(staffMember.Id, earning.ShiftDate, earning.LunchOrDinner))
                {
                    EarningsEntity earn = earningsRepository.GetEarning(staffMember.Id, earning.ShiftDate, earning.LunchOrDinner);
                    earningsRepository.DeleteEarning(earn.Id);
                }

                EarningsEntity    earningsEntity    = Mapper.Map <EarningsEntity>(earning);
                StaffMemberEntity staffMemberEntity = Mapper.Map <StaffMemberEntity>(staffMember);
                earningsEntity.StaffMember = staffMemberEntity;
                earningsRepository.AddEarning(earningsEntity);

                UtilityMethods.VerifyDatabaseSaveSuccess(earningsRepository);

                EarningDto earningToReturn = Mapper.Map <EarningDto>(earningsEntity);
                earningDtos.Add(earningToReturn);
            }
            return(earningDtos);
        }
예제 #4
0
        public void Test1()
        {
            // When given a list of checkouts and earnings, the group formatted should be able to return the
            // correct earnings for bartenders
            DateTime            shiftDate = DateTime.Now;
            CheckoutOverviewDto checkout1 = new CheckoutOverviewDto("Grant Elmer", "Bartender")
            {
                Sales         = 1200,
                ShiftDate     = shiftDate,
                BarSales      = 300,
                CashTips      = 0,
                CcTips        = 230,
                StaffMemberId = 1,
                Hours         = 6.5m,
                Id            = 2,
                LunchOrDinner = "dinner",
            };
            CheckoutOverviewDto checkout2 = new CheckoutOverviewDto("Alyson Elmer", "Server")
            {
                Sales         = 1200,
                ShiftDate     = shiftDate,
                BarSales      = 300,
                CashTips      = 0,
                CcTips        = 230,
                StaffMemberId = 1,
                Hours         = 6.5m,
                Id            = 2,
                LunchOrDinner = "dinner",
            };
            CheckoutOverviewDto checkout3 = new CheckoutOverviewDto("James Brooks", "Bartender")
            {
                Sales         = 1200,
                ShiftDate     = shiftDate,
                BarSales      = 300,
                CashTips      = 0,
                CcTips        = 230,
                StaffMemberId = 1,
                Hours         = 6.5m,
                Id            = 3,
                LunchOrDinner = "dinner",
            };
            List <CheckoutOverviewDto> checkouts = new List <CheckoutOverviewDto>()
            {
                checkout1,
                checkout2,
                checkout3
            };
            EarningDto earning1 = new EarningDto
            {
                CcTips              = 100,
                JobWorked           = "Bartender",
                Id                  = 3,
                StaffMemberId       = 1,
                LunchOrDinner       = "Dinner",
                ShiftDate           = shiftDate,
                CashTips            = 0,
                TotalTipsForPayroll = 100,
            };
            EarningDto earning2 = new EarningDto
            {
                CcTips              = 100,
                JobWorked           = "Server",
                Id                  = 6,
                StaffMemberId       = 2,
                LunchOrDinner       = "Dinner",
                ShiftDate           = shiftDate,
                CashTips            = 0,
                TotalTipsForPayroll = 100,
            };
            EarningDto earning3 = new EarningDto
            {
                CcTips              = 100,
                JobWorked           = "Bartender",
                Id                  = 9,
                StaffMemberId       = 3,
                LunchOrDinner       = "Dinner",
                ShiftDate           = shiftDate,
                CashTips            = 0,
                TotalTipsForPayroll = 100,
            };
            List <EarningDto> earnings = new List <EarningDto>()
            {
                earning1,
                earning2,
                earning3
            };
            BarTeam barTeam = new BarTeam(shiftDate, "dinner")
            {
                CheckoutHasBeenRun = true
            };

            TeamGroupedCheckoutsDto barData = groupFormatter.FormatBarCheckouts(barTeam, checkouts, earnings);

            Assert.Contains(earning1, barData.TeamEarnings);
            Assert.Contains(checkout3, barData.TeamCheckouts);
        }