public void BuildSelectListsForOrderViewModel(OrderViewModel orderViewModel)
        {
            var creditTermDurations = _creditTermDurationSelectListBuilder.BuildSelectList();
            var paymentTermTypes = _paymentTermTypeSelectListBuilder.BuildSelectList(_paymentTermTypeRepository.GetAllPaymentTermTypes());
            var splitPercentages = _splitPercentagesSelectListBuilder.BuildSelectList();

            orderViewModel.CurrencyTypesSelectList = _currencyTypeSelectListBuilder.BuildSelectListItemsForCurrencyTypes(_currencyTypeRepository.GetAllCurrencyTypes());
            orderViewModel.PaymentTerm1.PaymentTermTypes = paymentTermTypes;
            orderViewModel.PaymentTerm2.PaymentTermTypes = paymentTermTypes;
            orderViewModel.PaymentTerm1.CreditTermDurations = creditTermDurations;
            orderViewModel.PaymentTerm2.CreditTermDurations = creditTermDurations;
            orderViewModel.PaymentTerm1.SplitPercentages = splitPercentages;
            orderViewModel.PaymentTerm2.SplitPercentages = splitPercentages;
        }
        public ActionResult Edit(OrderViewModel orderEditViewModel)
        {
            Order order = _orderRepository.GetOrderById(orderEditViewModel.OrderId);

            _orderViewDataBuilder.BuildViewData(ViewData, order);

            SetViewModelFields(orderEditViewModel, order.CustomerId);

            if (orderEditViewModel.PaymentTerm1.PaymentTerm.SplitPercentage + orderEditViewModel.PaymentTerm2.PaymentTerm.SplitPercentage != 1M)
            {
                ModelState.AddModelError("", "Split Percentages Must Total 100%");
            }
            if (!ModelState.IsValid)
            {
                return View(orderEditViewModel);
            }

            CopyOrderViewModelToOrder(orderEditViewModel, order);

            _orderRepository.SaveChanges();

            orderEditViewModel.SavedSuccessfully = true;
            return View(orderEditViewModel);
        }
        public ActionResult New(int id, OrderViewModel orderViewModel)
        {
            Customer customer = _customerRepository.GetCustomerById(id);

            if (orderViewModel.PaymentTerm1.PaymentTerm.SplitPercentage + orderViewModel.PaymentTerm2.PaymentTerm.SplitPercentage != 1M)
            {
                ModelState.AddModelError("", "Split Percentages Must Total 100%");
            }
            if (!ModelState.IsValid)
            {
                orderViewModel.IsNew = true;
                SetViewModelFields(orderViewModel, id);
                return View(orderViewModel);
            }

            var order = new Order();

            CopyOrderViewModelToOrder(orderViewModel, order);
            order.CustomerId = customer.CustomerId;

            orderViewModel.PaymentTerm1.PaymentTerm.PaymentTermId = order.PaymentTerm1 != null ? order.PaymentTerm1.PaymentTermId : 0;
            orderViewModel.PaymentTerm2.PaymentTerm.PaymentTermId = order.PaymentTerm2 != null ? order.PaymentTerm2.PaymentTermId : 0;
            order.PaymentTerm1 = _paymentTermProcessor.ProcessPaymentTerm(orderViewModel.PaymentTerm1.PaymentTerm);
            order.PaymentTerm2 = _paymentTermProcessor.ProcessPaymentTerm(orderViewModel.PaymentTerm2.PaymentTerm);

            orderViewModel.SavedSuccessfully = true;

            _orderRepository.Add(order);
            _orderRepository.SaveChanges();

            return RedirectToAction("Edit", new {id = order.OrderId});
        }
 public ActionResult New(int id)
 {
     var orderViewModel = new OrderViewModel
     {
         PaymentTerm1 = new OrderPaymentTermViewModel
         {
             PaymentTerm = new PaymentTerm()
         },
         PaymentTerm2 = new OrderPaymentTermViewModel
         {
             PaymentTerm = new PaymentTerm()
         },
         IsNew = true
     };
     SetViewModelFields(orderViewModel, id);
     return View(orderViewModel);
 }
 private void SetViewModelFields(OrderViewModel viewModel, int customerId)
 {
     viewModel.CustomerId = customerId;
     viewModel.SuggestedValues = _suggestedValueRepository.GetAllSuggestedValues();
     viewModel.Customer = _customerRepository.GetCustomerById(viewModel.CustomerId);
     _orderViewModelSelectListBuilder.BuildSelectListsForOrderViewModel(viewModel);
 }
 private void CopyOrderViewModelToOrder(OrderViewModel orderViewModel, Order order)
 {
     order.OrderId = orderViewModel.OrderId;
     order.OrderNumber = orderViewModel.OrderNumber;
     order.ContractWeight = orderViewModel.ContractWeight;
     order.ContractAmount = orderViewModel.ContractAmount;
     order.OrderDate = orderViewModel.OrderDate;
     order.IsActive = orderViewModel.IsActive;
     order.ContractCurrencyTypeId = order.ContractCurrencyTypeId;
     order.PaymentTermsOverride = orderViewModel.PaymentTermsOverride;
     order.IntentComments = orderViewModel.IntentComments;
     order.InvoiceComments = orderViewModel.InvoiceComments;
     order.FooterComments = orderViewModel.FooterComments;
     order.HeaderComments = orderViewModel.HeaderComments;
 }