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); }
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); }
public virtual T Add(AbstractAddCommand <T> command) { T entity = _mapper.Map <T>(command); entity.Validate(); var newEntity = _repository.Add(entity); _repository.Save(); return(newEntity); }
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 }); }