示例#1
0
        public static bool HandleReportingMessage(System.Messaging.Message msg)
        {
            string ReportGuid      = string.Empty;
            string parameterXML    = string.Empty;
            string filterXML       = string.Empty;
            string outputFilterXML = string.Empty;
            string UserDSN         = string.Empty;

            Constants.ReportOutputType ReportFormat = Constants.ReportOutputType.NotSet;
            int groupFilterID = 0;

            Constants.GroupFilterType groupFilterType = Constants.GroupFilterType.NotSet;
            DateTime startDate = DateTime.MinValue;
            DateTime endDate   = DateTime.MaxValue;
            int      startDay  = 0;
            int      endDay    = 0;

            Constants.ScopeType scopeFilterID = Constants.ScopeType.NotSet;

            ReportingMessage    x       = new ReportingMessage();
            XmlMessageFormatter xformat = new XmlMessageFormatter(new Type[] { x.GetType() });

            msg.Formatter = xformat;

            try
            {
                // Cast the incoming message to get its data
                ReportingMessage mmm = (ReportingMessage)msg.Body;
                // Extract the Guid
                ReportGuid = mmm.ReportGuid;
                // And the filter and Params used
                filterXML       = mmm.filterXML;
                outputFilterXML = mmm.OutputFilterXML;
                parameterXML    = mmm.parameterXML;
                // and the DSN to use
                UserDSN = mmm.DSN;
                //and the output format
                ReportFormat = mmm.Format;
                //and the group filter
                groupFilterID = mmm.GroupFilterID;
                //and the group filter type
                groupFilterType = mmm.GroupFilterType;
                //and the start date
                startDate = mmm.StartDate;
                //and the end date
                endDate = mmm.EndDate;
                //and the scope filter ID
                scopeFilterID = mmm.ScopeFilterID;
                //and the start day
                startDay = mmm.StartDay;
                //and the end day
                endDay = mmm.EndDay;

                SqlParameter[] parms = new SqlParameter[2];
                parms[0] = new SqlParameter("@report_guid", ReportGuid);
                parms[1] = new SqlParameter("@file_extension", SqlDbType.NVarChar, 3);
                switch (ReportFormat)
                {
                case Constants.ReportOutputType.CSV:
                    parms[1].Value = "csv";
                    break;

                case Constants.ReportOutputType.Excel:
                    parms[1].Value = "xls";
                    break;

                case Constants.ReportOutputType.Html:
                    parms[1].Value = "mht";
                    break;

                case Constants.ReportOutputType.Pdf:
                    parms[1].Value = "pdf";
                    break;

                case Constants.ReportOutputType.RTF:
                    parms[1].Value = "rtf";
                    break;
                }

                string ReportFilePath = DbManager.ExecuteScalar(UserDSN, "sc_report_started", parms).ToString();

                System.IO.MemoryStream rptOutput = Report.RunReport(UserDSN, parameterXML, filterXML, outputFilterXML, ReportFormat, groupFilterID, groupFilterType, startDate, endDate, startDay, endDay, scopeFilterID);

                if (rptOutput != null)
                {
                    System.IO.FileStream file = new System.IO.FileStream(ReportFilePath, System.IO.FileMode.CreateNew);
                    WriteStreamToStream(rptOutput, file);

                    rptOutput.Close();
                    file.Close();
                    DbManager.ExecuteNonQuery(UserDSN, "sc_report_finished", new SqlParameter[] { new SqlParameter("@report_guid", ReportGuid) });
                }
                else
                {
                    DbManager.ExecuteNonQuery(UserDSN, "sc_report_no_data", new SqlParameter[] { new SqlParameter("@report_guid", ReportGuid) });
                }
                return(true);
            }
            catch (SqlException sqlex)
            {
                ExceptionManager.Publish(sqlex);
                DbManager.ExecuteNonQuery(UserDSN, "sc_report_error", new SqlParameter[] { new SqlParameter("@report_guid", ReportGuid) });
                return(false);
            }
            catch (Exception nonsqlex)
            {
                ExceptionManager.Publish(nonsqlex);
                DbManager.ExecuteNonQuery(UserDSN, "sc_report_error", new SqlParameter[] { new SqlParameter("@report_guid", ReportGuid) });
                return(false);
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="XmlMessageConverter"/> class.
 /// </summary>
 public XmlMessageConverter()
 {
     messageFormatter = new XmlMessageFormatter();
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="XmlMessageConverter"/> class.
 /// </summary>
 /// <param name="messageFormatter">The message formatter.</param>
 public XmlMessageConverter(XmlMessageFormatter messageFormatter)
 {
     this.messageFormatter = messageFormatter;
 }
        public void StartRecievingMsgs()
        {
            // MessageQueue m_msgSenderQueue = new MessageQueue(string.Format(@"{0}\private$\{1}", SystemConfigurations.GetAppSetting("ResponseQueueIP"), SystemConfigurations.GetAppSetting("ResponseQueueName")));
            MessageQueue m_msgSenderQueue = new MessageQueue(string.Format(@"Formatname:DIRECT=TCP:{0}\private$\{1}", SystemConfigurations.GetAppSetting("ResponseQueueIP"), SystemConfigurations.GetAppSetting("ResponseQueueName")));
            //List<Type> types = System.Reflection.Assembly.Load("Beltone.Services.Fix.Contract").GetTypes().Where(x=>x.IsClass).ToList();
            //types.Add(typeof(Dictionary<string, object>));
            //XmlMessageFormatter formatter = new XmlMessageFormatter(types.ToArray());

            XmlMessageFormatter formatter = new XmlMessageFormatter
                                                (new Type[] { typeof(Fix_OrderReplaceRefusedByService), typeof(FixAdminMsg), typeof(FixAdmin_TestRequest),
                                                              typeof(Fix_OrderAcceptedResponse), typeof(Fix_OrderRejectionResponse), typeof(Fix_ExecutionReport),
                                                              typeof(LogOutResponse), typeof(LogOutResponse), typeof(Fix_BusinessMessageReject), typeof(Fix_OrderReplaceCancelReject),
                                                              typeof(Fix_OrderReplacedResponse),
                                                              typeof(Fix_PendingReplaceResponse), typeof(Fix_OrderRefusedByService), typeof(Fix_PendingNewResponse), typeof(Fix_PendingCancelResponse),
                                                              typeof(Fix_OrderCanceledResponse) });

            //if (!m_msgSenderQueue.CanRead)
            //{
            //    // warning
            //}
            while (true)
            {
                try
                {
                    //MessageQueueTransaction mqt = new MessageQueueTransaction();
                    //mqt.Begin();
                    System.Messaging.Message msg = (System.Messaging.Message)m_msgSenderQueue.Receive();
                    if (msg == null)
                    {
                        continue;
                    }

                    object recievedMsg = formatter.Read(msg);

                    this.BeginInvoke(new Action(() => SetReport(string.Format("Recieved {0}", recievedMsg.GetType().ToString()), Color.DarkGray)));

                    if (recievedMsg.GetType() == typeof(FixAdmin_TestRequest))
                    {
                        try
                        {
                            IToAdminMsg msgTo = new FixAdmin_TestResponse()
                            {
                                TestKey = ((FixAdmin_TestRequest)recievedMsg).TestKey
                            };
                            _client.HandleMsg(msgTo);
                            //_client.HandleRequest(new FixAdmin_TestResponse() { TestKey = "" });
                        }
                        catch (Exception ex)
                        {
                            this.BeginInvoke(new Action(() => MessageBox.Show(ex.Message)));
                        }
                        this.BeginInvoke(new Action(() => SetReport("sent FixAdmin_TestResponse", Color.DarkGray)));
                    }
                    if (recievedMsg.GetType() == typeof(Fix_OrderAcceptedResponse))
                    {
                        Fix_OrderAcceptedResponse resp = (Fix_OrderAcceptedResponse)recievedMsg;
                        this.BeginInvoke(new Action(() => SetReport(string.Format("order : {0} accepted", resp.ReqOrdID), Color.Green)));
                    }
                    else if (recievedMsg.GetType() == typeof(Fix_ExecutionReport))
                    {
                        Fix_ExecutionReport resp = (Fix_ExecutionReport)recievedMsg;
                        this.BeginInvoke(new Action(() => SetReport(string.Format("order : {0} TotalExecuted: {1}, TradeExecuted: {2}, Remaining {3}, Status : {4}", resp.RequesterOrderID, resp.TotalExecutedQuantity, resp.TradeExecutedQuantity, resp.RemainingQuantity, resp.OrderStatus), Color.Blue)));
                    }
                    else if (recievedMsg.GetType() == typeof(Fix_OrderSuspensionResponse))
                    {
                        Fix_OrderSuspensionResponse resp = (Fix_OrderSuspensionResponse)recievedMsg;
                        this.BeginInvoke(new Action(() => SetReport(string.Format("order : {0} suspended : {1}", resp.RequesterOrderID, resp.Message), Color.Red)));
                    }
                    else if (recievedMsg.GetType() == typeof(Fix_OrderRejectionResponse))
                    {
                        Fix_OrderRejectionResponse resp = (Fix_OrderRejectionResponse)recievedMsg;
                        this.BeginInvoke(new Action(() => SetReport(string.Format("order : {0} rejected : {1}", resp.RequesterOrderID, resp.RejectionReason), Color.Red)));
                    }
                    else if (recievedMsg.GetType() == typeof(Fix_OrderReplacedResponse))
                    {
                        Fix_OrderReplacedResponse replace = (Fix_OrderReplacedResponse)recievedMsg;
                        this.BeginInvoke(new Action(() => SetReport(string.Format("order : {0} replaced : Quantity {1} price {2}", replace.ReqOrdID, replace.Qty, replace.Prc), Color.DarkGreen)));
                    }

                    else if (recievedMsg.GetType() == typeof(Fix_OrderRefusedByService))
                    {
                        Fix_OrderRefusedByService refuseMsg = (Fix_OrderRefusedByService)recievedMsg;
                        this.BeginInvoke(new Action(() => SetReport(string.Format("order : {0} refused by service : msessage : {1} ", refuseMsg.RequesterOrderID, refuseMsg.RefuseMessage), Color.DarkOrange)));
                    }

                    else if (recievedMsg.GetType() == typeof(Fix_OrderCanceledResponse))
                    {
                        Fix_OrderCanceledResponse msgCanceled = (Fix_OrderCanceledResponse)recievedMsg;
                        this.BeginInvoke(new Action(() => SetReport(string.Format("order : {0} canceld successfully ! ", msgCanceled.RequesterOrderID), Color.DarkOrange)));
                    }


                    else if (recievedMsg.GetType() == typeof(Fix_PendingNewResponse) || recievedMsg.GetType() == typeof(Fix_PendingReplaceResponse) || recievedMsg.GetType() == typeof(Fix_PendingCancelResponse))
                    {
                        this.BeginInvoke(new Action(() => SetReport(string.Format("order pending"), Color.DarkOrange)));
                    }
                }
                catch (Exception ex)
                {
                    this.BeginInvoke(new Action(() => SetReport(string.Format("Error : {0}", ex.Message), Color.Red)));
                    Thread.Sleep(2000);
                }
            }
        }