Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class SendOrderHandler : BaseSendOrderHandler<OrderRequest, OrderResponse>
- {
- ...
- protected override AxComEdiJournal BuildEdiJournal(OrderRequest order)
- {
- this.Order = order;
- var customer = order.Customer;
- if (customer == null) throw new ArgumentNullException("SendOrder has no customer defined to match a customer in AX.");
- // Get AX Customer
- var axCustomer =
- _customerService.GetCustomer(
- _mapper.Map<Customer, AxCustComSetup>(customer)
- );
- // Vendor
- var vendor = new AxVendor() { AccountNum = "111", Name = "VENDOR" };
- // Get AX Articles
- var articles = _mapper.Map<IEnumerable<OrderLine>, IEnumerable<AxComArticle>>(order.Order.OrderLines);
- articles = _articleService.GetArticles(
- _mapper.Map(vendor, articles).ToList()
- );
- // Create EDI Journal and return true if succeeded
- var ediJournal = _mapper.Map<AxCustomer, AxComEdiJournal>(axCustomer);
- _mapper.Map(vendor, ediJournal);
- _mapper.Map(order.Order, ediJournal);
- var ediJournalLines = _mapper.Map<IEnumerable<AxComArticle>,
- IEnumerable<AxComEdiJournalLine>>(articles);
- ediJournal.Lines = ediJournalLines.ToList();
- ediJournal.CreateDate = DateTime.Now;
- ediJournal.OrderId = string.Empty;
- ediJournal.Remark = string.Empty;
- return ediJournal;
- }
- }
- public class SendOrderHandler : BaseSendOrderHandler<MultiShipmentOrder, OrderResponse>
- {
- ...
- protected override AxComEdiJournal BuildEdiJournal(MultiShipmentOrder order)
- {
- var user = order.OrderPartyInformation?.User;
- if (user == null) throw new ArgumentNullException("MultiShipmentorder has no user defined to match a customer in AX.");
- // Get AX Customer
- var customer =
- _customerService.GetCustomer(
- _mapper.Map<User, AxCustComSetup>(user)
- );
- // Vendor
- var vendor = new AxVendor() { AccountNum = "2222", Name = "VENDOR2" };
- // Get AX Articles
- var articles = _mapper.Map<IEnumerable<MultiShipmentOrderLineItem>, IEnumerable<AxComArticle>>(order.MultiShipmentOrderLineItems);
- articles = _articleService.GetArticles(
- _mapper.Map(vendor, articles).ToList()
- );
- // Create EDI Journal and return true if succeeded
- var ediJournal = _mapper.Map<AxCustomer, AxComEdiJournal>(customer);
- _mapper.Map(vendor, ediJournal);
- _mapper.Map(order, ediJournal);
- var ediJournalLines = _mapper.Map<IEnumerable<AxComArticle>, IEnumerable<AxComEdiJournalLine>>(articles);
- ediJournal.Lines = ediJournalLines.ToList();
- ediJournal.CreateDate = DateTime.Now;
- ediJournal.OrderId = string.Empty;
- ediJournal.Remark = string.Empty;
- return ediJournal;
- }
- }
- public abstract class BaseSendOrderHandler<TIn, TOut> : BaseHandler<TOut>, ISendOrderHandler<TIn, TOut>
- where TIn : class where TOut : class
- {
- protected AxComEdiJournal EdiJournal { get; private set; }
- ...
- public void Process(TIn order)
- {
- this.IsValid = false;
- // Build Edi Journal
- this.EdiJournal = BuildEdiJournal(order);
- // Validate
- ...
- }
- protected abstract AxComEdiJournal BuildEdiJournal(TIn order);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement