Exemple #1
0
        // Estimates the portion of other totals before report goes live
        private void ProcessOrderPortions(List <OrderTransaction> transactions)
        {
            if (transactions == null)
            {
                return;
            }

            List <string>        orderIds   = (from t in transactions select t.OrderId).Distinct().ToList();
            List <OrderSnapshot> orderSnaps = MTApp.OrderServices.Orders.FindManySnapshots(orderIds);

            foreach (OrderTransaction t in transactions)
            {
                OrderSnapshot snap = orderSnaps.Where(y => y.bvin == t.OrderId).FirstOrDefault();
                if (snap != null)
                {
                    decimal percentOfTotal = 0;
                    if (snap.TotalGrand > 0)
                    {
                        percentOfTotal = t.AmountAppliedToOrder / snap.TotalGrand;
                    }

                    t.TempEstimatedHandlingPortion  = Math.Round(snap.TotalHandling * percentOfTotal, 2);
                    t.TempEstimatedItemPortion      = Math.Round(snap.TotalOrderBeforeDiscounts * percentOfTotal, 2);
                    t.TempEstimatedItemDiscount     = Math.Round(snap.TotalOrderDiscounts * percentOfTotal, 2);
                    t.TempEstimatedShippingPortion  = Math.Round(snap.TotalShippingBeforeDiscounts * percentOfTotal, 2);
                    t.TempEstimatedShippingDiscount = Math.Round(snap.TotalShippingDiscounts * percentOfTotal, 2);
                    t.TempEstimatedTaxPortion       = Math.Round((snap.TotalTax + snap.TotalTax2) * percentOfTotal, 2);
                    t.TempCustomerEmail             = snap.UserEmail;
                    t.TempCustomerName = snap.BillingAddress.LastName + ", " + snap.BillingAddress.FirstName;
                }
            }
        }
Exemple #2
0
        protected override void LoadSnapshot(ISnapshot snapshot)
        {
            OrderSnapshot state = (OrderSnapshot)snapshot;

            items.AddRange(state.Items);
            totalPrice = state.TotalPrice;
        }
        public async Task PlaceOrderAsync(PlaceOrderRequest request)
        {
            var queue = await StateManager.GetOrAddAsync <IReliableQueue <OrderSnapshot> >("queue");

            var state = await StateManager.GetOrAddAsync <IReliableDictionary <Guid, OrderSnapshot> >("state");

            var snapshot = new OrderSnapshot
            {
                Id            = request.Id,
                BaseCurrency  = request.BaseCurrency,
                QuoteCurrency = request.QuoteCurrency,
                Side          = request.Side,
                Price         = request.Price,
                Amount        = request.Amount,
                Remaining     = request.Amount
            };

            using (var transaction = StateManager.CreateTransaction())
            {
                await queue.EnqueueAsync(transaction, snapshot);

                await state.AddAsync(transaction, snapshot.Id, snapshot);

                await transaction.CommitAsync();
            }
        }
        /// <summary>
        /// Submits an order to be executed by the broker
        /// </summary>
        /// <param name="order">The order to submit</param>
        public void SubmitOrder(Broker.Order order)
        {
            Dictionary <Broker.Order.OrderType, BasicallyMe.RobinhoodNet.OrderType> orderTypeLookup = new Dictionary <Broker.Order.OrderType, OrderType>()
            {
                { Broker.Order.OrderType.MARKET, BasicallyMe.RobinhoodNet.OrderType.Market },
                { Broker.Order.OrderType.LIMIT, BasicallyMe.RobinhoodNet.OrderType.Limit },
                { Broker.Order.OrderType.STOP, BasicallyMe.RobinhoodNet.OrderType.StopLoss },
                { Broker.Order.OrderType.STOP_LIMIT, BasicallyMe.RobinhoodNet.OrderType.StopLoss },
            };
            bool isStopOrder = ((order.Type == Broker.Order.OrderType.STOP) || (order.Type == Broker.Order.OrderType.STOP_LIMIT));

            NewOrderSingle newOrder = new NewOrderSingle()
            {
                AccountUrl    = getAccount().AccountUrl,
                InstrumentUrl = Client.FindInstrument(order.Symbol).Result.First().InstrumentUrl,
                OrderType     = orderTypeLookup[order.Type],
                Price         = order.LimitPrice,
                Quantity      = (int)order.Quantity,
                Side          = ((order.BuySell == Broker.Order.BuySellType.BUY) ? Side.Buy : Side.Sell),
                StopPrice     = (isStopOrder ? order.StopPrice : (decimal?)null),
                Symbol        = order.Symbol,
                TimeInForce   = TimeInForce.GoodForDay,
                Trigger       = isStopOrder ? TriggerType.Stop : TriggerType.Immediate
            };

            Client.PlaceOrder(newOrder).ContinueWith((result) =>
            {
                OrderSnapshot orderResult = result.Result;
                ActiveOrders.Add(new RobinhoodOrder(order.Symbol, orderResult));
            });
        }
Exemple #5
0
        static void PlaceOrder()
        {
            //Order settings
            NewOrderSingle newOrder = new NewOrderSingle(CurrentStockSymbol);

            newOrder.AccountUrl  = Setup.UserAccount.AccountUrl;
            newOrder.Quantity    = Math.Abs(Quantity);
            newOrder.Side        = Side.Buy;
            newOrder.TimeInForce = OrderDuration;

            if (Price == 0)
            {
                newOrder.OrderType = OrderType.Market;
            }
            else
            {
                newOrder.OrderType = OrderType.Limit;
                newOrder.Price     = Price;
            }

            //Places the order
            OrderSnapshot order = new OrderSnapshot();

            try
            {
                order = Setup.Client.PlaceOrder(newOrder).Result;
                Console.WriteLine("Order Placed");
                Console.ReadKey();
            }
            catch
            {
                Console.WriteLine("There was a problem placing the order, might be insufficent funds or shares");
                Console.ReadKey();
            }
        }
Exemple #6
0
        public async Task <bool> SaveOrderSnapshot(OrderSnapshot snapshot)
        {
            var streamId = $"Order:{snapshot.Id.ToString()}";
            await _snapshotStore
            .SaveSnapshotAsync(streamId, snapshot.Version, snapshot);

            return(true);
        }
        private async Task PersistChanges(Order order, OrderSnapshot initial, IReliableDictionary <Guid, OrderSnapshot> dictionary, ITransaction transaction)
        {
            var updated = await dictionary.TryUpdateAsync(transaction, order.Id, order.GetSnapshot(), initial);

            if (updated && order.IsClosed())
            {
                await dictionary.TryRemoveAsync(transaction, order.Id);
            }
        }
Exemple #8
0
        /// <summary>
        /// Saves the snapshot.
        /// </summary>
        /// <param name="snapshot">The snapshot.</param>
        /// <param name="order">The order.</param>
        public void SaveSnapshot(OrderSnapshot snapshot, Order order)
        {
            var previousSnapshot = GetLatestSnapshot(order.Id);

            if (previousSnapshot == null || previousSnapshot.Version < snapshot.Version)
            {
                _eventStore.AddSnapshot(StreamNameFor(order.Id), snapshot);
            }
        }
Exemple #9
0
        protected void dgList_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                OrderSnapshot order = (OrderSnapshot)e.Item.DataItem;
            }

            if (e.Item.ItemType == ListItemType.Footer)
            {
                e.Item.Cells[0].Text = "Totals:";
                e.Item.Cells[2].Text = string.Format("{0:C}", TotalSub);
            }
        }
Exemple #10
0
        protected void dgList_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                OrderSnapshot order = (OrderSnapshot)e.Item.DataItem;

                Label lblDate = (Label)e.Item.FindControl("lblDate");
                if (lblDate != null)
                {
                    lblDate.Text = TimeZoneInfo.ConvertTimeFromUtc(order.TimeOfOrderUtc, MTApp.CurrentStore.Settings.TimeZone).ToShortDateString();
                }

                HyperLink lnkViewOrder = (HyperLink)e.Item.FindControl("lnkViewOrder");
                if (lnkViewOrder != null)
                {
                    lnkViewOrder.NavigateUrl = "~/BVAdmin/Orders/ViewOrder.aspx?id=" + order.bvin;
                }

                if (order.OrderNumber == "DayTotal")
                {
                    TableCell cell = new TableCell();
                    cell.ColumnSpan = e.Item.Cells.Count;
                    cell.Text       = "Day Total: " + string.Format("{0:c}", order.TotalGrand);
                    e.Item.Cells.Clear();
                    e.Item.Cells.Add(cell);
                    e.Item.ControlStyle.CssClass = "separator";
                }
                else if (order.OrderNumber == "MonthTotal")
                {
                    TableCell cell = new TableCell();
                    cell.ColumnSpan = e.Item.Cells.Count;
                    cell.Text       = "Month Total: " + string.Format("{0:c}", order.TotalGrand);
                    e.Item.Cells.Clear();
                    e.Item.Cells.Add(cell);
                    e.Item.ControlStyle.CssClass = "separator";
                }
            }

            if (e.Item.ItemType == ListItemType.Footer)
            {
                e.Item.Cells[0].Text = "Totals:";
                e.Item.Cells[2].Text = string.Format("{0:C}", TotalSub);
                e.Item.Cells[3].Text = string.Format("{0:C}", TotalDiscounts);
                e.Item.Cells[4].Text = string.Format("{0:C}", TotalShip);
                e.Item.Cells[5].Text = string.Format("{0:C}", TotalShipDiscounts);
                e.Item.Cells[6].Text = string.Format("{0:C}", TotalTax);
                e.Item.Cells[7].Text = string.Format("{0:C}", TotalGrand);
            }
        }
Exemple #11
0
        public static async Task <bool> CancelOrder(OrderSnapshot order)

        {
            if (order != null)
            {
                bool isPending = order.State != null && order.State == "unconfirmed";  /// does this say pending or is there a better way
                                                                                       /// if the order is pending or the order is partial
                if (isPending)
                {
                    var rh = new RobinhoodClient(_token);

                    ///     cancel the order
                    await rh.CancelOrder(order.CancelUrl).ConfigureAwait(false);

                    return(true);
                }
            }

            return(false);
        }
Exemple #12
0
        public static async Task PlaceOrder(string[] args)
        {
            Debug.Print(System.Reflection.MethodBase.GetCurrentMethod().Name);
            var rh = new RobinhoodClient(_token);

            //Account account = rh.DownloadAllAccounts().Result.First();

            //JToken instrumentData = null;
            //while (instrumentData == null)
            //{
            //    try
            //    {
            //        Console.Write("Symbol: ");
            //        rh.DownloadOptionStrikeInstrument(args).Wait();

            //        instrumentData = rh.results;

            //        MessageBox.Show(instrument.Name);
            //    }
            //    catch (Exception ex)
            //    {
            //        Utils.MessageBoxModal("Problem with initial order.\n\nWill try again 1 second after you hit OK.\n\nIf expiry date is today or wrong, no order will be places, /n/nsince no option instrument can be found ");
            //        System.Threading.Thread.Sleep(1000);

            //    }
            //}

            int qty = Convert.ToInt32(args[4]);

            decimal price = Convert.ToDecimal(args[5]);

            TimeInForce tif = TimeInForce.GoodTillCancel;

            //OptionInstrument instrument = new OptionInstrument()
            //{
            //    InstrumentUrl = "https://api.robinhood.com/options/instruments/5ac9f2ac-6d01-4d2d-94de-e18ae7602a81/", //new Url<OptionInstrument>(instrumentData.SelectToken("url").ToString()),
            //    Symbol = "c277b118-58d9-4060-8dc5-a3b5898955cb"  //
            //    //instrumentData.SelectToken("chain_symbol").ToString()

            //};


            OptionInstrument instrument = new OptionInstrument()
            {
                InstrumentUrl = new Url <OptionInstrument>("https://api.robinhood.com/options/instruments/5ac9f2ac-6d01-4d2d-94de-e18ae7602a81/"), //new Url<OptionInstrument>(instrumentData.SelectToken("url").ToString()),
                Symbol        = "c277b118-58d9-4060-8dc5-a3b5898955cb"                                                                             //
                                                                                                                                                   //instrumentData.SelectToken("chain_symbol").ToString()
            };

            var newOptionOrderSingle = new NewOptionOrderSingle(instrument);

            newOptionOrderSingle.AccountUrl =  // account.AccountUrl;
                                              new Url <Account>("https://api.robinhood.com/accounts/475573473/");
            //
            newOptionOrderSingle.Quantity = Math.Abs(qty);
            newOptionOrderSingle.Side     = qty > 0 ? Side.Buy : Side.Sell;

            newOptionOrderSingle.TimeInForce = tif;
            if (price == 0)
            {
                newOptionOrderSingle.OrderType = OrderType.Market;
            }
            else
            {
                newOptionOrderSingle.OrderType = OrderType.Limit;
                newOptionOrderSingle.Price     = price;
            }

            _order = rh.PlaceOptionOrder(newOptionOrderSingle).Result;
            Debug.Print("2:" + DateTime.Now);

            _resultsLabel = RobinhoodClient._ErrorMessage;
            // _resultsLabel = rh._


            /// update lastMatch.buyAtPrice
            ///
            /// await the order response
            ///
            /// /// get reversals after
            ///
            //bool isPending = order.State != null && order.State == "unconfirmed";  /// does this say pending or is there a better way
            //                                                                       /// if the order is pending or the order is partial
            //if (isPending)
            //{
            //    ///     cancel the order
            //    rh.CancelOrder(order.CancelUrl).Wait();

            //    /// get the order status
            //    ///
            //    /// replace the order
            //}

            ///     if new reversal
            ///         if  not partial
            ///             remove order from lstMatch // so a resumption will create a new turn up (this means our reversal stats are not complete)
            ///             set lastMatch to null
            ///         exit stage left
            ///
            ///
            ///     else
            ///         if  partial
            ///             record the partial order
            ///             reset contracts
            ///         re-order
            /// else // order was filled

            ///     log the order


            //using (TradeLogTableAdapter ta = new TradeLogTableAdapter())
            //{
            //    ta.Insert(args[6], Convert.ToDateTime(args[7]), order.jsonText);
            //}

            ///
            /// Analyse the current status
            /// Is the ask > buyAtPrice
            /// Is it more than a penny?
            /// Is the ask now lower than buyAtPrice i.e. the price is falling
            /// Has there been a reversal?
            /// Is BuyPrice >= Bid and <= Ask?



            //if (!String.IsNullOrEmpty(order.ErrorMessage))
            //    MessageBox.Show(order.ErrorMessage);
            //else
            //{
            //    MessageBox.Show(string.Format("{0}\t{1}\t{2} x {3}\t{4}",
            //                        order.Side,
            //                        instrument.Symbol,
            //                        order.Quantity,
            //                        order.Price.HasValue ? order.Price.ToString() : "mkt",
            //                        order.State));

            //}
            //if (!String.IsNullOrEmpty(order.RejectReason))
            //{
            //    MessageBox.Show(order.RejectReason);
            //}


            //object state = SynchronizationContext.Current;
            //var context = (SynchronizationContext)state;
            //state = new object();
            //context.Post(RHCockpit.frmBot.WorkerDone, state);
        }
Exemple #13
0
        void FillList()
        {
            try
            {
                TotalSub           = 0;
                TotalShip          = 0;
                TotalHandling      = 0;
                TotalTax           = 0;
                TotalGrand         = 0;
                TotalCount         = 0;
                TotalDiscounts     = 0;
                TotalShipDiscounts = 0;

                OrderSearchCriteria c = new OrderSearchCriteria();

                // Get Local Times
                TimeZoneInfo timezone   = MTApp.CurrentStore.Settings.TimeZone;
                DateTime     zonedStart = this.DateRangeField.StartDateForZone(timezone);
                DateTime     zonedEnd   = this.DateRangeField.EndDateForZone(timezone);

                // Convert to UTC
                DateTime utcStart = TimeZoneInfo.ConvertTimeToUtc(zonedStart, timezone);
                DateTime utcEnd   = TimeZoneInfo.ConvertTimeToUtc(zonedEnd, timezone);

                c.StartDateUtc = utcStart;
                c.EndDateUtc   = utcEnd;

                List <OrderSnapshot> found = new List <OrderSnapshot>();
                found = MTApp.OrderServices.Orders.FindByCriteria(c);

                TotalCount = found.Count;

                foreach (OrderSnapshot o in found)
                {
                    TotalSub           += o.TotalOrderBeforeDiscounts;
                    TotalDiscounts     += o.TotalOrderDiscounts;
                    TotalShip          += o.TotalShippingBeforeDiscounts;
                    TotalShipDiscounts += o.TotalShippingDiscounts;
                    TotalHandling      += o.TotalHandling;
                    TotalTax           += o.TotalTax + o.TotalTax2;
                    TotalGrand         += o.TotalGrand;
                }

                int     i          = 0;
                string  month      = string.Empty;
                decimal monthTotal = 0m;
                decimal dayTotal   = 0m;
                string  day        = string.Empty;
                if (found.Count > 0)
                {
                    DateTime zonedTimeOfOrder = TimeZoneInfo.ConvertTimeFromUtc(found[0].TimeOfOrderUtc, timezone);
                    month = zonedTimeOfOrder.Month.ToString() + ":" + zonedTimeOfOrder.Year.ToString();
                    day   = zonedTimeOfOrder.DayOfYear.ToString() + ":" + zonedTimeOfOrder.Year.ToString();
                    while (i <= found.Count - 1)
                    {
                        DateTime zonedTime = TimeZoneInfo.ConvertTimeFromUtc(found[i].TimeOfOrderUtc, timezone);
                        monthTotal = monthTotal + found[i].TotalGrand;
                        dayTotal   = dayTotal + found[i].TotalGrand;
                        if (zonedTime.DayOfYear.ToString() + ":" + zonedTime.Year.ToString() != day)
                        {
                            day = zonedTime.DayOfYear.ToString() + ":" + zonedTime.Year.ToString();
                            // we need to insert a day total
                            OrderSnapshot order = new OrderSnapshot();
                            order.OrderNumber = "DayTotal";
                            order.TotalGrand  = (dayTotal - found[i].TotalGrand);
                            dayTotal          = found[i].TotalGrand;
                            found.Insert(i, order);
                            i += 1;
                        }

                        if (zonedTime.Month.ToString() + ":" + zonedTime.Year.ToString() != month)
                        {
                            month = zonedTime.Month.ToString() + ":" + zonedTime.Year.ToString();
                            // we need to insert a month total
                            OrderSnapshot order = new OrderSnapshot();
                            order.OrderNumber = "MonthTotal";
                            order.TotalGrand  = (monthTotal - found[i].TotalGrand);
                            monthTotal        = found[i].TotalGrand;
                            found.Insert(i, order);
                            i += 1;
                        }
                        i += 1;
                    }
                    if (dayTotal > 0)
                    {
                        // we need to insert a day total
                        OrderSnapshot order = new OrderSnapshot();
                        order.OrderNumber = "DayTotal";
                        order.TotalGrand  = dayTotal;
                        found.Add(order);
                    }
                    if (monthTotal > 0)
                    {
                        OrderSnapshot order = new OrderSnapshot();
                        order.OrderNumber = "MonthTotal";
                        order.TotalGrand  = monthTotal;
                        found.Add(order);
                    }
                }
                lblResponse.Text  = "<b>" + TotalCount + "</b>";
                lblResponse.Text += " Orders Totaling <b>";
                lblResponse.Text += string.Format("{0:c}", TotalGrand);
                lblResponse.Text += "</b>";

                dgList.DataSource = found;
                dgList.DataBind();
            }

            catch (Exception Ex)
            {
                msg.ShowException(Ex);
                EventLog.LogEvent(Ex);
            }
        }
Exemple #14
0
        public void RenderSingleOrder(OrderSnapshot o, StringBuilder sb, bool altRow, TimeZoneInfo timezone)
        {
            string url = ResolveUrl("~/bvadmin/orders/ViewOrder.aspx?id=" + o.bvin);

            if (altRow)
            {
                sb.Append("<tr class=\"alternaterow\">");
            }
            else
            {
                sb.Append("<tr class=\"row\">");
            }
            sb.Append("<td><input class=\"pickercheck\" type=\"checkbox\" id=\"check" + o.bvin + "\" /></td>");

            sb.Append("<td><a href=\"" + url + "\">" + o.OrderNumber + "</a></td>");

            DateTime timeOfOrder = TimeZoneInfo.ConvertTimeFromUtc(o.TimeOfOrderUtc, timezone);
            DateTime currentTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, timezone);

            sb.Append("<td><a href=\"" + url + "\">" + MerchantTribe.Web.Dates.FriendlyShortDate(timeOfOrder, currentTime.Year) + "</a></td>");
            sb.Append("<td><a href=\"" + url + "\">" + string.Format("{0:c}", o.TotalGrand) + "</a></td>");

            sb.Append("<td>");
            sb.Append(MerchantTribe.Commerce.Utilities.MailServices.MailToLink(o.UserEmail, "Order "
                                                                               + o.OrderNumber,
                                                                               o.BillingAddress.FirstName + ",",
                                                                               o.BillingAddress.FirstName + " " + o.BillingAddress.LastName));
            sb.Append("</td>");



            string payText  = MerchantTribe.Commerce.Utilities.EnumToString.OrderPaymentStatus(o.PaymentStatus);
            string payImage = "";
            string payLink  = ResolveUrl("~/bvadmin/orders/ReceivePayments.aspx?id=" + o.bvin);

            switch (o.PaymentStatus)
            {
            case OrderPaymentStatus.Overpaid:
                payImage = ResolveUrl("~/BVAdmin/Images/Lights/PaymentError.gif");
                break;

            case OrderPaymentStatus.PartiallyPaid:
                payImage = ResolveUrl("~/BVAdmin/Images/Lights/PaymentAuthorized.gif");
                break;

            case OrderPaymentStatus.Paid:
                payImage = ResolveUrl("~/BVAdmin/Images/Lights/PaymentComplete.gif");
                break;

            case OrderPaymentStatus.Unknown:
                payImage = ResolveUrl("~/BVAdmin/Images/Lights/PaymentNone.gif");
                break;

            case OrderPaymentStatus.Unpaid:
                payImage = ResolveUrl("~/BVAdmin/Images/Lights/PaymentNone.gif");
                break;
            }
            sb.Append("<td><a href=\"" + payLink + "\" title=\"" + payText + "\"><img src=\"" + payImage + "\" alt=\"" + payText + "\" /></a></td>");


            string shipText  = MerchantTribe.Commerce.Utilities.EnumToString.OrderShippingStatus(o.ShippingStatus);
            string shipImage = "";
            string shipLink  = ResolveUrl("~/bvadmin/orders/ShipOrder.aspx?id=" + o.bvin);

            switch (o.ShippingStatus)
            {
            case OrderShippingStatus.FullyShipped:
                shipImage = ResolveUrl("~/BVAdmin/Images/Lights/ShippingShipped.gif");
                break;

            case OrderShippingStatus.NonShipping:
                shipImage = ResolveUrl("~/BVAdmin/Images/Lights/ShippingNone.gif");
                break;

            case OrderShippingStatus.PartiallyShipped:
                shipImage = ResolveUrl("~/BVAdmin/Images/Lights/ShippingPartially.gif");
                break;

            case OrderShippingStatus.Unknown:
                shipImage = ResolveUrl("~/BVAdmin/Images/Lights/ShippingNone.gif");
                break;

            case OrderShippingStatus.Unshipped:
                shipImage = ResolveUrl("~/BVAdmin/Images/Lights/ShippingNone.gif");
                break;
            }
            sb.Append("<td><a href=\"" + shipLink + "\" title=\"" + shipText + "\"><img src=\"" + shipImage + "\" alt=\"" + shipText + "\" /></a></td>");

            ManagerPage pageType  = ManagerPage.Any;
            string      statImage = "";

            switch (o.StatusCode)
            {
            case OrderStatusCode.Completed:
                statImage = ResolveUrl("~/bvadmin/images/lights/OrderComplete.gif");
                break;

            case OrderStatusCode.Received:
                statImage = ResolveUrl("~/bvadmin/images/lights/OrderInProcess.gif");
                break;

            case OrderStatusCode.OnHold:
                statImage = ResolveUrl("~/bvadmin/images/lights/OrderOnHold.gif");
                break;

            case OrderStatusCode.ReadyForPayment:
                pageType  = ManagerPage.Payment;
                statImage = ResolveUrl("~/bvadmin/images/lights/OrderInProcess.gif");
                break;

            case OrderStatusCode.ReadyForShipping:
                pageType  = ManagerPage.Shipping;
                statImage = ResolveUrl("~/bvadmin/images/lights/OrderInProcess.gif");
                break;

            default:
                statImage = ResolveUrl("~/bvadmin/images/lights/OrderInProcess.gif");
                break;
            }
            sb.Append("<td><a href=\"" + url + "\"><img src=\"" + statImage + "\" alt=\"" + o.StatusName + "\" /> " + o.StatusName + "</a></td>");

            switch (pageType)
            {
            case ManagerPage.Payment:
                sb.Append("<td><a href=\"" + payLink + "\"><img src=\"" + ResolveUrl("~/BVAdmin/Images/Buttons/Payment.png") + "\"/></a></td>");
                break;

            case ManagerPage.Shipping:
                sb.Append("<td><a href=\"" + shipLink + "\"><img src=\"" + ResolveUrl("~/BVAdmin/Images/Buttons/Shipping.png") + "\"/></a></td>");
                break;

            default:
                sb.Append("<td><a href=\"" + url + "\"><img src=\"" + ResolveUrl("~/BVAdmin/Images/Buttons/Details.png") + "\"/></a></td>");
                break;
            }

            sb.Append("</tr>");
        }
Exemple #15
0
        private List <OrderSnapshot> BuildReportData()
        {
            var c = new OrderSearchCriteria();

            var utcStart = DateRangeField.GetStartDateUtc(HccApp);
            var utcEnd   = DateRangeField.GetEndDateUtc(HccApp);

            c.StartDateUtc = utcStart;
            c.EndDateUtc   = utcEnd;

            var orders = HccApp.OrderServices.Orders.FindByCriteria(c);

            TotalCount = orders.Count;

            foreach (var o in orders)
            {
                TotalSub           += o.TotalOrderBeforeDiscounts;
                TotalDiscounts     += o.TotalOrderDiscounts;
                TotalShip          += o.TotalShippingBeforeDiscounts;
                TotalShipDiscounts += o.TotalShippingDiscounts;
                TotalHandling      += o.TotalHandling;
                TotalTax           += o.TotalTax;
                TotalGrand         += o.TotalGrand;
            }

            var i          = 0;
            var month      = string.Empty;
            var monthTotal = 0m;
            var dayTotal   = 0m;
            var day        = string.Empty;

            if (orders.Count > 0)
            {
                var zonedTimeOfOrder = DateHelper.ConvertUtcToStoreTime(HccApp, orders[0].TimeOfOrderUtc);
                month = string.Concat(zonedTimeOfOrder.Month, ":", zonedTimeOfOrder.Year);
                day   = string.Concat(zonedTimeOfOrder.DayOfYear, ":", zonedTimeOfOrder.Year);

                while (i <= orders.Count - 1)
                {
                    var zonedTime = DateHelper.ConvertUtcToStoreTime(HccApp, orders[i].TimeOfOrderUtc);
                    monthTotal = monthTotal + orders[i].TotalGrand;
                    dayTotal   = dayTotal + orders[i].TotalGrand;

                    if (string.Concat(zonedTime.DayOfYear, ":", zonedTime.Year) != day)
                    {
                        day = string.Concat(zonedTime.DayOfYear, ":", zonedTime.Year);

                        // we need to insert a day total
                        var order = new OrderSnapshot();

                        order.OrderNumber = "DayTotal";
                        order.TotalGrand  = dayTotal - orders[i].TotalGrand;

                        dayTotal = orders[i].TotalGrand;
                        orders.Insert(i, order);
                        i += 1;
                    }

                    if (string.Concat(zonedTime.Month, ":", zonedTime.Year) != month)
                    {
                        month = string.Concat(zonedTime.Month, ":", zonedTime.Year);

                        // we need to insert a month total
                        var order = new OrderSnapshot();

                        order.OrderNumber = "MonthTotal";
                        order.TotalGrand  = monthTotal - orders[i].TotalGrand;

                        monthTotal = orders[i].TotalGrand;
                        orders.Insert(i, order);
                        i += 1;
                    }

                    i += 1;
                }

                if (dayTotal > 0)
                {
                    // we need to insert a day total
                    var order = new OrderSnapshot();

                    order.OrderNumber = "DayTotal";
                    order.TotalGrand  = dayTotal;
                    orders.Add(order);
                }

                if (monthTotal > 0)
                {
                    var order = new OrderSnapshot();

                    order.OrderNumber = "MonthTotal";
                    order.TotalGrand  = monthTotal;
                    orders.Add(order);
                }
            }

            return(orders);
        }
Exemple #16
0
        public async Task <bool> SaveOrder(EventUserInfo eventUserInfo, Order aggregate, OrderSnapshot snapshot = null)
        {
            if (aggregate.Changes.Any())
            {
                var streamId = aggregate.Id.ToString();

                // save all events
                bool savedEvents = await _eventStore.AppendToStreamAsync(eventUserInfo, streamId,
                                                                         aggregate.Version,
                                                                         aggregate.Changes);

                // save snapshot
                if (savedEvents && snapshot != null && _snapshotStore != null)
                {
                    await SaveOrderSnapshot(snapshot);
                }
                return(savedEvents);
            }
            return(true);
        }