コード例 #1
0
        public CustomerUpsellListModel Create(IEnumerable <Order> orders, IEnumerable <EventBasicInfoViewModel> eventListModel, IEnumerable <Customer> customers, IEnumerable <OrderedPair <long, string> > packages,
                                              IEnumerable <OrderedPair <long, string> > tests, IEnumerable <OrderedPair <long, string> > products, IEnumerable <OrderedPair <long, string> > agents)
        {
            var model = new CustomerUpsellListModel();
            var customerUpsellModels = new List <CustomerUpsellModel>();

            orders.ToList().ForEach(o =>
            {
                var customer = customers.FirstOrDefault(c => c.CustomerId == o.CustomerId);

                var eventModel = eventListModel.FirstOrDefault(e => e.Id == o.EventId.Value);

                var eventCustomer = new CustomerUpsellModel
                {
                    CustomerId   = customer.CustomerId,
                    CustomerCode = customer.CustomerId,
                    EventDate    = eventModel.EventDate,
                    Name         = customer.Name,
                    Pod          = eventModel.PodNames()
                };

                Associate(eventCustomer, o, packages, tests, products, agents);

                customerUpsellModels.Add(eventCustomer);
            });

            model.Collection = customerUpsellModels;
            return(model);
        }
コード例 #2
0
        private void Associate(CustomerUpsellModel model, Order order, IEnumerable <OrderedPair <long, string> > packages, IEnumerable <OrderedPair <long, string> > tests,
                               IEnumerable <OrderedPair <long, string> > products, IEnumerable <OrderedPair <long, string> > agents)
        {
            var previousCompositionofOrderItems = GetPreviousSuccesfulCompositionofOrderDetails(order);

            var newValidCompositionofOrderItems = order.OrderDetails.Where(
                od =>
                od.OrderItemStatus.OrderStatusState == OrderStatusState.FinalSuccess).ToList();

            model.ScheduledCost = previousCompositionofOrderItems.Sum(od => od.Price);
            model.RevisedCost   = newValidCompositionofOrderItems.Sum(od => od.Price);

            var orgRoleUserId = order.OrderDetails.LastOrDefault().DataRecorderMetaData.DataRecorderCreator.Id;

            model.ChangingAgent = agents.Where(a => a.FirstValue == orgRoleUserId).FirstOrDefault().SecondValue;

            model.ScheduledPackage = GetPurchasedProductName(previousCompositionofOrderItems, packages, tests, products);
            model.EventPackage     = GetPurchasedProductName(newValidCompositionofOrderItems, packages, tests, products);
        }