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)); }
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; }