public OrderView(order o, organisation s, string receiverAddress, long sessionid, TransactionType type) { order = o.ToModel(type, sessionid); sender = s.ToFullOrganisationAddress(); banner = s.logo.HasValue ? s.image.ToModel(Imgsize.BANNER).url.ToHtmlImage() : ""; receiver = receiverAddress; currency = o.currency.ToCurrency(); // handle addresses if (!o.allDigitalOrderItems()) { order.billingAddress = o.address1.ToHtmlString(); order.shippingAddress = o.address.ToHtmlString(); } if (o.shipwireTransaction != null) { submittedToShipwire = true; } transactionID = (o.transactions ?? o.transactions1.First()).id; // init commentrs for new inline format comments = Enumerable.Empty <OrderComment>(); }
public static Order ToModel(this order o, TransactionType type, long sessionid) { var order = new Order(); order.currency = o.currency.ToCurrency(); // discount and total dependent on this being initialised first if (o.discountPercentage.HasValue) { order.discount = o.discountPercentage.Value.ToString("n2"); order.discountType = "%"; } else if (o.discountValue.HasValue) { order.discount = o.discountValue.Value.ToString("n" + order.currency.decimalCount); } order.discountCode = o.discountCouponCode; order.id = o.id; order.isOwner = o.owner == sessionid; order.terms = o.terms; order.orderStatus = o.status.ToEnum <OrderStatus>(); order.TransactionType = type; order.orderNumber = o.orderNumber; order.orderDate = o.orderDate.ToLocalTime(); order.location = o.inventoryLocation.HasValue ? o.inventoryLocation1.name : GeneralConstants.INVENTORY_LOCATION_DEFAULT; if (o.user.organisation.HasValue) { order.receiverOrgID = o.user.organisation.Value; order.receiverName = o.user.organisation1.name; } else { throw new Exception(); } // handle tax order.totalTax = o.taxAmount.HasValue ? o.taxAmount.Value.ToString("n" + order.currency.decimalCount) : ""; // handle shipping order.shippingCost = o.shippingCost.HasValue ? o.shippingCost.Value.ToString("n" + order.currency.decimalCount) : ""; order.shippingMethod = o.shippingMethod; order.shipwireShippingID = o.shipwireShippingid; if (string.IsNullOrEmpty(order.shippingMethod)) { if (o.allDigitalOrderItems()) { order.shippingNotes = "Digital product. Not applicable."; } else { //order.shippingNotes = "Shipping method not specified."; } } else { if (string.IsNullOrEmpty(order.shippingCost)) { order.shippingNotes = string.Format("{0}. Shipping cost has not been determined.", order.shippingMethod); } else { order.shippingNotes = string.Format("{0}. Shipping cost is {1}{2}.", order.shippingMethod, order.currency.symbol, order.shippingCost); } } // handle payment var cart = o.carts.SingleOrDefault(); if (cart != null) { var methodType = cart.paymentMethod.ToEnum <PaymentMethodType>(); var method = ""; var instructions = ""; switch (methodType) { case PaymentMethodType.Custom: if (cart.paymentCustomId.HasValue) { method = cart.paymentMethod1.name; instructions = cart.paymentMethod1.instructions; } break; case PaymentMethodType.Paypal: method = "Paypal"; break; default: // customer will get here when shipping method not found so no payment method specified break; } order.paymentMethod = method; order.paymentInstructions = instructions; } // have unreviewed payment? if (o.payments.Any(x => x.status == PaymentStatus.New.ToString())) { order.hasUnreviewedCustomPayment = true; } // shipping costs already included in order total so there is no need to check order.orderTotal = o.total.ToString("n" + order.currency.decimalCount); order.totalPaid = o.totalPaid.ToString("n" + order.currency.decimalCount); order.amountDue = (o.total - o.totalPaid); order.orderItems = o.orderItems.ToModel(order.currency); order.subTotal = order.orderItems.Sum(x => x.subTotal).ToString("n" + order.currency.decimalCount); return(order); }