Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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);
        }