Пример #1
0
        public async Task <UpdateResult <Job> > UpdateOrder(Job job, OrderModel orderModel, string mode)
        {
            if (job.Order.Type != orderModel.Type)
            {
                throw new InvalidOperationException("Updating with a different ordermodel for this job");
            }

            // FIXME: Finding a resolver here would help here dude
            switch (orderModel.Type)
            {
            case OrderTypes.Delivery:
            case OrderTypes.ClassifiedDelivery:
            {
                var orderCalculationService         = new DefaultOrderCalculationService();
                var serviceChargeCalculationService = new DefaultDeliveryServiceChargeCalculationService();
                var orderProcessor = new DeliveryOrderProcessor(
                    orderCalculationService,
                    serviceChargeCalculationService);
                orderProcessor.ProcessOrder(orderModel);
                var jobUpdater = new DeliveryJobUpdater(job);
                jobUpdater.UpdateJob(orderModel, mode);
                job = jobUpdater.Job;
                break;
            }
            }

            var result = await UpdateJob(job);

            return(new UpdateResult <Job>(result.MatchedCount, result.ModifiedCount, job));
        }
Пример #2
0
        public async Task<ReplaceOneResult> UpdateOrder(Job job, OrderModel orderModel)
        {
            if (job.Order.Type != orderModel.Type)
            {
                throw new InvalidOperationException("Updating with a different ordermodel for this job");
            }

            // FIXME: Finding a resolver here would help here dude
            switch (orderModel.Type)
            {
                case OrderTypes.Delivery:
                case OrderTypes.ClassifiedDelivery:
                    {
                        var orderCalculationService = new DefaultOrderCalculationService();
                        var serviceChargeCalculationService = new DefaultDeliveryServiceChargeCalculationService();
                        var orderProcessor = new DeliveryOrderProcessor(
                            orderCalculationService,
                            serviceChargeCalculationService);
                        orderProcessor.ProcessOrder(orderModel);
                        var jobUpdater = new DeliveryJobUpdater(job);
                        jobUpdater.UpdateJob(orderModel);
                        job = jobUpdater.Job;
                        break;
                    }
            }

            var result = await UpdateJob(job);
            return result;
        }