Пример #1
0
        public override Purchase Add(AbstractAddCommand <Purchase> command)
        {
            Purchase purchase = _mapper.Map <Purchase>(command);
            Session  session  = _sessionRepository.GetById(purchase.SessionId);

            purchase.Session     = session;
            purchase.User        = GetUserByEmail(command as PurchaseAddCommand);
            purchase.Date        = DateTime.Now;
            purchase.MovieName   = session.Movie.Name;
            purchase.Total       = purchase.CalculateTotal();
            purchase.SessionDate = purchase.Session.Start.ToShortDateString();

            purchase.Validate();
            foreach (var seat in purchase.SeatsArray)
            {
                ValidateSelectedSeat(session, seat);
                session.TakenSeats.Add(seat);
            }

            var newEntity = _repository.Add(purchase);

            _sessionRepository.Update(session);

            _repository.Save();
            return(newEntity);
        }
Пример #2
0
        private Session PopulateSession(AbstractAddCommand <Session> command)
        {
            Session session = _mapper.Map <Session>(command);

            session.Movie  = _movieService.GetById(session.MovieId);
            session.Lounge = _loungeService.GetById(session.LoungeId);
            session.End    = session.Start.AddMinutes(session.Movie.Length);
            return(session);
        }
Пример #3
0
        public virtual T Add(AbstractAddCommand <T> command)
        {
            T entity = _mapper.Map <T>(command);

            entity.Validate();
            var newEntity = _repository.Add(entity);

            _repository.Save();
            return(newEntity);
        }
Пример #4
0
        public override Session Add(AbstractAddCommand <Session> command)
        {
            Session session = PopulateSession(command);

            session.Validate();

            if (!GetAvailableLounges(session).Select(x => x.Id).Contains(session.LoungeId))
            {
                throw new BusinessException(ErrorCodes.BadRequest, "A sala selecionada não está disponível.");
            }

            var newSession = _repository.Add(session);

            _repository.Save();
            return(new Session {
                Id = newSession.Id
            });
        }