示例#1
0
        public void AddCheckoutToTeam(int serverTeamId, CheckoutEntity checkout)
        {
            TeamEntity team = teamRepository.GetTeamById(serverTeamId);

            if (checkout.ShiftDate.Date != team.ShiftDate.Date)
            {
                throw new InvalidOperationException("You cannot add a checkout to a team with different shift dates.");
            }

            TeamCheckoutEntity addedCheckout = new TeamCheckoutEntity
            {
                Team      = team,
                Checkout  = checkout,
                ShiftDate = checkout.ShiftDate
            };

            if (teamRepository.CheckoutHasAlreadyBeenAdded(checkout.Id, checkout.ShiftDate))
            {
                throw new InvalidOperationException("That checkout is currently on another team");
            }

            teamRepository.AddCheckoutToTeam(addedCheckout);

            if (!teamRepository.Save())
            {
                throw new Exception("An unexpected error occured while trying to add the checkout to the team.");
            }
        }
示例#2
0
        public void DeleteCheckout(int checkoutId)
        {
            CheckoutEntity checkout = _repository.GetCheckOutById(checkoutId);

            _repository.DeleteCheckOut(checkout);

            UtilityMethods.VerifyDatabaseSaveSuccess(_repository);
        }
示例#3
0
        public void CreateCheckout_Creates_Checkout()
        {
            var entity = new CheckoutEntity();
            var dto    = new CheckoutDto();

            mockMapper.Setup(m => m.Map <CheckoutEntity>(dto)).Returns(entity);
            checkoutService.CreateCheckout(dto);

            mockRepo.Verify(r => r.Insert(entity), Times.Once);
        }
示例#4
0
        public void CreateCheckout_Returns_CheckoutDto()
        {
            var entity = new CheckoutEntity();
            var dto    = new CheckoutDto();

            mockRepo.Setup(r => r.Insert(It.IsAny <CheckoutEntity>())).Returns(entity);
            mockMapper.Setup(m => m.Map <CheckoutDto>(entity)).Returns(dto);
            var actual = checkoutService.CreateCheckout(dto);

            Assert.AreEqual(dto, actual);
        }
示例#5
0
        public void UpdateCheckout_Calls_Update_In_Repo()
        {
            var entity = new CheckoutEntity();
            var dto    = new CheckoutDto {
                Id = Guid.NewGuid()
            };

            mockRepo.Setup(r => r.Get(It.IsAny <Guid>())).Returns(entity);
            checkoutService.UpdateCheckout(dto);

            mockRepo.Verify(r => r.Update(It.IsAny <CheckoutEntity>()), Times.Once);
        }
示例#6
0
        public void GetByReservationId_Returns_Collection_CheckoutDtos()
        {
            var reservationId = Guid.NewGuid();
            var entity        = new CheckoutEntity();
            var dto           = new CheckoutDto();

            mockRepo.Setup(r => r.GetByReservationId(It.IsAny <Guid>())).Returns(entity);
            mockMapper.Setup(m => m.Map <CheckoutDto>(entity)).Returns(dto);

            var actual = checkoutService.GetByReservationId(reservationId);

            Assert.AreEqual(dto, actual);
        }
示例#7
0
        public CheckoutDto GetCheckoutByDate(GetCheckoutByDateDto data, StaffMemberDto staffMemberDto)
        {
            DateTime       shiftDate      = Convert.ToDateTime(data.StringDate).Date;
            CheckoutEntity checkoutEntity = _repository.GetCheckOutForStaffMemberForSpecificDate(shiftDate, staffMemberDto.Id, data.LunchOrDinner);

            if (checkoutEntity == null)
            {
                throw new KeyNotFoundException("No checkout for the provided staffmember was found for the given parameters.");
            }

            CheckoutDto checkoutDto = Mapper.Map <CheckoutDto>(checkoutEntity);

            return(checkoutDto);
        }
示例#8
0
        public void UpdateCheckout_Updates_Checkout()
        {
            var entity = new CheckoutEntity();
            var dto    = new CheckoutDto {
                Id = Guid.NewGuid(), CheckoutDateTime = DateTime.UtcNow
            };

            mockRepo.Setup(r => r.Get(It.IsAny <Guid>())).Returns(entity);
            checkoutService.UpdateCheckout(dto);

            mockRepo.Verify(r => r.Update(
                                It.Is <CheckoutEntity>(r =>
                                                       r.CheckoutDateTime == dto.CheckoutDateTime)),
                            Times.Once);
        }
示例#9
0
        public List <StaffMemberEntity> GetTeamMembers(int teamId)
        {
            List <StaffMemberEntity> staffMembers = new List <StaffMemberEntity>();

            foreach (TeamCheckoutEntity x in _context.TeamCheckouts
                     .Where(r => r.TeamId == teamId))
            {
                CheckoutEntity checkoutEntity = _context.CheckOuts.Where(c => c.Id == x.CheckoutId)
                                                .Include(c => c.StaffMember).FirstOrDefault();
                StaffMemberEntity s = checkoutEntity.StaffMember;
                staffMembers.Add(s);
            }

            return(staffMembers);
        }
示例#10
0
        public CheckoutDto CreateCheckout(CreateCheckoutDto data, StaffMemberDto staffMemberDto, JobDto jobDto)
        {
            Checkout checkout = new Checkout(Mapper.Map <StaffMember>(staffMemberDto), data.ShiftDate, Mapper.Map <Job>(jobDto));

            if (_repository.CheckoutExists(data.ShiftDate, staffMemberDto.Id, data.LunchOrDinner))
            {
                throw new InvalidOperationException("A checkout for this employee already exists for this day and shift.");
            }
            Mapper.Map(data, checkout);
            CheckoutEntity checkOutEntity = Mapper.Map <CheckoutEntity>(checkout);

            _repository.AddCheckOut(checkOutEntity);

            _repository.VerifyDatabaseSaveSuccess();
            return(Mapper.Map <CheckoutDto>(checkOutEntity));
        }
示例#11
0
        public bool UpdateCheckout(UpdateCheckoutDto data)
        {
            CheckoutEntity        checkoutToUpdate = _repository.GetCheckOutById(data.Id);
            List <CheckoutEntity> checkouts        = _repository.GetCheckOutsForAShift(checkoutToUpdate.ShiftDate.Date, checkoutToUpdate.LunchOrDinner).ToList();

            if (checkouts.Any(c => c.StaffMemberId == data.StaffMemberId && c.Id != data.Id))
            {
                throw new InvalidOperationException("The staff member is already assigned to a checkout for that shift");
            }

            Mapper.Map(data, checkoutToUpdate);

            UtilityMethods.VerifyDatabaseSaveSuccess(_repository);

            return(true);
        }
示例#12
0
        public List <ServerTeamGroupedCheckoutsDto> FormatServerTeamGroupCheckouts(ServerTeamDto s, IEnumerable <CheckoutEntity> entities, List <CheckoutOverviewDto> checkouts, List <ServerTeamDto> serverTeams, List <EarningDto> shiftEarnings)
        {
            List <ServerTeamGroupedCheckoutsDto> pageData = new List <ServerTeamGroupedCheckoutsDto>();

            //Grab the first entity to get a related earning for the team
            CheckoutEntity checkout = entities.ElementAt(0);

            if (entities.Count() == 1)
            {
                //Mark the teams that have only one server so they can be presented as a solo team
                ServerTeamGroupedCheckoutsDto soloTeam = new ServerTeamGroupedCheckoutsDto
                {
                    CheckoutHasBeenRun = s.CheckoutHasBeenRun,
                    IsSoloTeam         = true,
                    TeamId             = s.Id,
                    TeamEarning        = shiftEarnings.FirstOrDefault(e => e.StaffMemberId == checkout.StaffMemberId),
                };
                soloTeam.TeamCheckouts.Add(Mapper.Map <CheckoutOverviewDto>(checkout));
                pageData.Add(soloTeam);
            }
            else
            {
                ServerTeamGroupedCheckoutsDto team = new ServerTeamGroupedCheckoutsDto
                {
                    CheckoutHasBeenRun = s.CheckoutHasBeenRun,
                    IsSoloTeam         = false,
                    TeamId             = s.Id,
                    TeamEarning        = shiftEarnings.FirstOrDefault(e => e.StaffMemberId == checkout.StaffMemberId)
                };

                foreach (CheckoutEntity c in entities)
                {
                    team.TeamCheckouts.Add(Mapper.Map <CheckoutOverviewDto>(c));
                }
                pageData.Add(team);
            }

            return(pageData);
        }
示例#13
0
 public void DeleteCheckOut(CheckoutEntity c)
 {
     _context.CheckOuts.Remove(c);
 }
示例#14
0
 public void AddCheckOut(CheckoutEntity c)
 {
     _context.CheckOuts.Add(c);
 }
示例#15
0
 public void Update(CheckoutEntity checkout)
 {
     _context.Checkouts.Update(checkout);
     _context.SaveChanges();
 }
示例#16
0
 public CheckoutEntity Insert(CheckoutEntity checkout)
 {
     _context.Checkouts.Add(checkout);
     _context.SaveChanges();
     return(checkout);
 }