public ActionResult m() { var o = repository.GetOrder(30); var viewloc = o.user1.organisation1.MASTERsubdomain.ToHostName().ToDomainUrl(o.ToOrderLink()); // notify buyer that order has been shipped var emailContent = new OrderShippedEmailContent { orderNumber = o.orderNumber.ToString("D8"), shippingAddress = o.user1.organisation1.ToOrganisationAddress(false, true), sender = o.user.ToEmailName(false), viewloc = viewloc }; string subject = "Order #" + emailContent.orderNumber + " has shipped"; var msg = new Models.message.Message(o.user1, o.user, subdomainid.Value); var controller = new dummyController(); msg.SendMessage(controller, repository, EmailViewType.ORDER_SHIPPED, emailContent, subject, viewloc); return(new EmptyResult()); }
public ActionResult Ship(long id, string trackingno, string trackingAddress, string shippingService, string shipwire) { try { var order = repository.GetOrder(subdomainid.Value, id); if (order == null) { return(Json("Order not found".ToJsonFail())); } var transaction = new Transaction(order, repository, sessionid.Value); if (!string.IsNullOrEmpty(shipwire)) { if (!transaction.HasValidShippingAddress()) { return(SendJsonErrorResponse("The destination shipping address is incomplete.")); } var shipwireService = transaction.GetShipWireService(); var shipwireItems = order.ToShipwireItems(); var shippingMethod = order.shipwireShippingid; var address = transaction.GetShipwireShippingAddress(); shipwireService.CreateOrder(transaction.GetID().ToString(), shippingMethod, shipwireItems, address); var resp = shipwireService.SubmitOrder(); // got response? if (resp == null) { return(SendJsonErrorResponse("No response from Shipwire. Please try again later.")); } // check for exceptions var exceptions = resp.GetExceptions(); if (exceptions.Count != 0) { return(SendJsonErrorResponse(exceptions[transaction.GetID().ToString()])); } // check for one order var submittedOrder = resp.OrderInformation.Order[0]; transaction.UpdateOrderStatus(OrderStatus.SHIPPED); transaction.AddShipwireTransaction(submittedOrder.number.ToString(), XElement.Parse(shipwireService.GetXmlResponse())); transaction.SaveUpdatedTransaction(); } else { transaction.UpdateOrderAsShipped(shippingService, trackingno, trackingAddress); // notify buyer that order has been shipped var viewloc = MASTERdomain.ToHostName().ToDomainUrl(transaction.GetOrderLink()); var emailContent = new OrderShippedEmailContent { orderNumber = transaction.GetOrderNumber(), shippingAddress = transaction.GetShippingAddress().ToHtmlString(), sender = transaction.GetOwner().ToEmailName(false), viewloc = viewloc }; string subject = "Invoice #" + emailContent.orderNumber + " has been shipped"; var msg = new Message(transaction.GetReceiver(), transaction.GetOwner(), subdomainid.Value); var result = msg.SendMessage(this, repository, EmailViewType.ORDER_SHIPPED, emailContent, subject, viewloc); if (!result.success) { Syslog.Write(result.message); } } return(Json("".ToJsonOKMessage())); } catch (Exception ex) { return(SendJsonErrorResponse(ex)); } }
private static bool ShipwirePollForShippedStatus(ITradelrRepository repository) { bool changed = false; var orders = repository.GetOrders().Where( x => x.shipwireTransaction != null && x.shipwireTransaction.state == ShipwireState.ORDER_SUBMITTED.ToString()); foreach (var entry in orders) { var transaction = new Transaction(entry, repository, null); if (transaction.GetReceiver() == null) { continue; } var shipwire = transaction.GetShipWireService(); if (shipwire == null) { continue; } var transactionid = transaction.GetShipwireTransactionID(); shipwire.CreateTrackingUpdate(transactionid); var resp = shipwire.SubmitTrackingUpdate(); if (resp == null) { continue; } // try get matching order var responseOrder = resp.Orders.Where(x => x.id == transactionid).SingleOrDefault(); if (responseOrder != null) { if (responseOrder.shipped) { transaction.UpdateShipwireState(ShipwireState.ORDER_SHIPPED); // add comment string comment = string.Format(OrderComment.ORDER_SHIP_DETAILED, responseOrder.shipperFullName, responseOrder.TrackingNumber.Value, responseOrder.TrackingNumber.href); transaction.AddComment(comment); transaction.SaveUpdatedTransaction(); changed = true; // notify buyer that order has been shipped var subdomain = transaction.GetOwner().organisation1.MASTERsubdomain; repository.AddActivity(transaction.GetReceiver().id, new ActivityMessage(transaction.GetID(), transaction.GetOwner().id, ActivityMessageType.ORDER_SHIPPED, new HtmlLink(transaction.GetOrderNumber(), transaction.GetID()).ToTransactionString(transaction.GetType())), subdomain.id); var viewloc = subdomain.ToHostName().ToDomainUrl(transaction.GetOrderLink()); // notify buyer that order has been shipped var emailContent = new OrderShippedEmailContent { orderNumber = transaction.GetOrderNumber(), shippingAddress = transaction.GetShippingAddress().ToHtmlString(), sender = transaction.GetOwner().ToEmailName(false), viewloc = viewloc }; string subject = "Invoice #" + emailContent.orderNumber + " has shipped"; var msg = new Models.message.Message(transaction.GetReceiver(), transaction.GetOwner(), subdomain.id); var controller = new dummyController(); msg.SendMessage(controller, repository, EmailViewType.ORDER_SHIPPED, emailContent, subject, viewloc); } else { Syslog.Write("Shipwire order not shipped {0} : {1}", transaction.GetShipwireTransactionID(), shipwire.GetXmlResponse()); } } else { transaction.UpdateShipwireState(ShipwireState.ORDER_NOTFOUND); transaction.SaveUpdatedTransaction(); changed = true; Syslog.Write("Cannot find order for {0} : {1}", transaction.GetShipwireTransactionID(), shipwire.GetXmlResponse()); } } return(changed); }