public ActionResult CreateOrder(CreateOrderViewModel model) { _reservationService.ReservationChecker(); var reservation = _reservationRepository.Get(model.ReservationId); var parametrs = new OrderParametersDTO(); parametrs.Name = model.Name; parametrs.ReservationId = model.ReservationId; parametrs.Address = model.Address; parametrs.City = model.City; parametrs.Email = model.Email; parametrs.Quantity = reservation.ReservedItem.ReservedQuantity; var order = _orderService.CreateOrder(parametrs); return(RedirectToAction("Phone", new { id = order.Id })); }
public Order CreateOrder(OrderParametersDTO parametersDTO) { var res = _resRepo.Get(parametersDTO.ReservationId); if (res.OrderId != null) { throw new InvalidOperationException("Phone has been already issued to this reservation, unable to create another one"); } var phone = _phoneRepository.GetPhone(res.ReservedItem.PhoneId); var newOrder = new Order() { ReservationId = res.Id, OrderDate = DateTime.Now, Name = parametersDTO.Name, Address = parametersDTO.Address, Email = parametersDTO.Email, City = parametersDTO.City, Status = OrderStatusEnum.Active, OrderItems = new List <OrderItem>() }; var priceParametrs = new PriceStrategyParametersDTO(); priceParametrs.PhoneId = phone.Id; priceParametrs.Quantity = parametersDTO.Quantity; newOrder.OrderItems = _priceStr.CalculatePrice(priceParametrs); res.OrderId = newOrder.Id; _resRepo.Update(res); _orderRepository.Create(newOrder); return(newOrder); }