Esempio n. 1
0
        /// <summary>
        /// Handles a change to the WorkingOrder row.
        /// </summary>
        /// <param name="sender">The object that originated the event.</param>
        /// <param name="workingOrderRowChangeEventArgs">The event arguments.</param>
        protected override void OnWorkingOrderRowChanged(Object sender, DataModel.WorkingOrderRowChangeEventArgs workingOrderRowChangeEventArgs)
        {
            // Validate the parameters.
            if (sender == null)
            {
                throw new ArgumentNullException("sender");
            }
            if (workingOrderRowChangeEventArgs == null)
            {
                throw new ArgumentNullException("workingOrderRowChangeEventArgs");
            }

            // If the new working order belongs to this blotter or one of its descendants, then add it in the proper place.
            if (workingOrderRowChangeEventArgs.Action == DataRowAction.Add)
            {
                DataModel.WorkingOrderRow workingOrderRow = workingOrderRowChangeEventArgs.Row;
                if (this.BlotterIdSet.Contains(workingOrderRow.BlotterId))
                {
                    Int32 index = this.BinarySearch(order => order.WorkingOrderId, workingOrderRow.WorkingOrderId);
                    this.Insert(~index, this.CreateInstanceCore(workingOrderRowChangeEventArgs.Row));
                }
            }

            // This will copy the modified elements from the data model into the collection and commit the changes.
            if (workingOrderRowChangeEventArgs.Action == DataRowAction.Change)
            {
                DataModel.WorkingOrderRow workingOrderRow = workingOrderRowChangeEventArgs.Row;
                if (this.BlotterIdSet.Contains(workingOrderRow.BlotterId))
                {
                    Int32 index = this.BinarySearch(order => order.WorkingOrderId, workingOrderRow.WorkingOrderId);
                    TType equityWorkingOrder = this[index];
                    this.View.EditItem(equityWorkingOrder);
                    equityWorkingOrder.IsActive           = workingOrderRow.StatusRow.StatusCode != StatusCode.Filled;
                    equityWorkingOrder.BlotterName        = workingOrderRow.BlotterRow.EntityRow.Name;
                    equityWorkingOrder.CreatedBy          = workingOrderRow.UserRowByFK_User_WorkingOrder_CreatedUserId.EntityRow.Name;
                    equityWorkingOrder.CreatedTime        = workingOrderRow.CreatedTime;
                    equityWorkingOrder.IsCrossing         = workingOrderRow.CrossingRow.CrossingCode == CrossingCode.AlwaysMatch;
                    equityWorkingOrder.IsBrokerMatch      = workingOrderRow.IsBrokerMatch;
                    equityWorkingOrder.IsHedgeMatch       = workingOrderRow.IsHedgeMatch;
                    equityWorkingOrder.IsInstitutionMatch = workingOrderRow.IsInstitutionMatch;
                    equityWorkingOrder.LimitPrice         = workingOrderRow.IsLimitPriceNull() ? 0.0M : workingOrderRow.LimitPrice;
                    equityWorkingOrder.ModifiedBy         = workingOrderRow.UserRowByFK_User_WorkingOrder_ModifiedUserId.EntityRow.Name;
                    equityWorkingOrder.ModifiedTime       = workingOrderRow.ModifiedTime;
                    equityWorkingOrder.RowVersion         = workingOrderRow.RowVersion;
                    equityWorkingOrder.OrderTypeMnemonic  = workingOrderRow.OrderTypeRow.Mnemonic;
                    equityWorkingOrder.OrderTypeCode      = workingOrderRow.OrderTypeRow.OrderTypeCode;
                    equityWorkingOrder.SecurityName       = workingOrderRow.SecurityRowByFK_Security_WorkingOrder_SecurityId.EntityRow.Name;
                    equityWorkingOrder.SettlementDate     = workingOrderRow.SettlementDate;
                    equityWorkingOrder.SideCode           = workingOrderRow.SideRow.SideCode;
                    equityWorkingOrder.SideMnemonic       = workingOrderRow.SideRow.Mnemonic;
                    equityWorkingOrder.StatusCode         = workingOrderRow.StatusRow.StatusCode;
                    equityWorkingOrder.StopPrice          = workingOrderRow.IsStopPriceNull() ? 0.0M : workingOrderRow.StopPrice;
                    equityWorkingOrder.Symbol             = workingOrderRow.SecurityRowByFK_Security_WorkingOrder_SecurityId.Symbol;
                    equityWorkingOrder.TimeInForceCode    = workingOrderRow.TimeInForceRow.TimeInForceCode;
                    equityWorkingOrder.TradeDate          = workingOrderRow.TradeDate;
                    equityWorkingOrder.WorkingOrderId     = workingOrderRow.WorkingOrderId;
                    this.View.CommitEdit();
                }
            }
        }
        /// <summary>
        /// Copy the values from the data model.
        /// </summary>
        /// <param name="workingOrderRow">The data model row that is the source of the data.</param>
        public override void Copy(DataModel.WorkingOrderRow workingOrderRow)
        {
            // Validate the parameters.
            if (workingOrderRow == null)
            {
                throw new ArgumentNullException("workingOrderRow");
            }

            // Allow the base class to copy the core of the working order.
            base.Copy(workingOrderRow);

            // Copy the scalar that are specific to the Equity instruments directly from the data model.
            this.IsCrossing         = workingOrderRow.CrossingRow.CrossingCode == CrossingCode.AlwaysMatch;
            this.IsBrokerMatch      = workingOrderRow.IsBrokerMatch;
            this.IsHedgeMatch       = workingOrderRow.IsHedgeMatch;
            this.IsInstitutionMatch = workingOrderRow.IsInstitutionMatch;
            this.LimitPrice         = workingOrderRow.IsLimitPriceNull() ? 0.0M : workingOrderRow.LimitPrice;
            this.OrderTypeMnemonic  = workingOrderRow.OrderTypeRow.Mnemonic;
            this.OrderTypeCode      = workingOrderRow.OrderTypeRow.OrderTypeCode;
            this.StopPrice          = workingOrderRow.IsStopPriceNull() ? 0.0M : workingOrderRow.StopPrice;
            this.TimeInForceCode    = workingOrderRow.TimeInForceRow.TimeInForceCode;
        }