Ejemplo n.º 1
0
 public static void MD_MetricsViewer(SqlInt32 account, SqlString deliveryTableName, out SqlChars metricsSelect)
 {
     using (var objectsConnection = new SqlConnection("context connection=true"))
     {
         objectsConnection.Open();
         int accountId = Convert.ToInt32(account.ToString());
         metricsSelect = new SqlChars(EdgeViewer.GetMetricsView(accountId, deliveryTableName.ToString(), objectsConnection));
     }
 }
Ejemplo n.º 2
0
    public static void MD_ObjectsViewer(SqlInt32 account, SqlString stagingTableName)
    {
        using (var objectsConnection = new SqlConnection("context connection=true"))
        {
            objectsConnection.Open();

            int accountId = Convert.ToInt32(account.ToString());
            EdgeViewer.GetObjectsView(accountId, stagingTableName.ToString(), objectsConnection, SqlContext.Pipe);
        }
    }
        protected override void OnStage(Delivery delivery, int pass)
        {
            CurrentDelivery = delivery;

            if (pass == STAGING_PASS_OBJECTS)
            {
                // IDENTITYMANAGER: insert new EdgeObjects and update existing from Delivery to EdgeObject DB by IdentityStatus
                Identify(2, delivery);
            }
            else if (pass == STAGING_PASS_METRICS)
            {
                // TABLEMANAGER: insert delivery metrics into staging
                if (CurrentDelivery.Parameters[Consts.DeliveryHistoryParameters.StagingMetricsTableName] != null &&
                    CurrentDelivery.Parameters[Consts.DeliveryHistoryParameters.DeliveryMetricsTableName] != null)
                {
                    var deliveryTable = CurrentDelivery.Parameters[Consts.DeliveryHistoryParameters.DeliveryMetricsTableName].ToString();
                    var stagingTable  = CurrentDelivery.Parameters[Consts.DeliveryHistoryParameters.StagingMetricsTableName].ToString();
                    if (!stagingTable.ToLower().StartsWith("[dbo]"))
                    {
                        stagingTable = String.Format("[dbo].[{0}]", stagingTable);
                    }

                    // for Debug only - execute Edge Viewer in .NET
                    if (Options.IdentityInDebug)
                    {
                        EdgeViewer.StageMetrics(delivery.Account.ID, deliveryTable, stagingTable, _deliverySqlConnection);
                    }
                    // to be executed in real scenario - execute SQL CLR (DB stored procedure that executes .NET code of Edge Viewer)
                    else
                    {
                        using (var cmd = SqlUtility.CreateCommand("EdgeObjects.dbo.MetricsStaging", CommandType.StoredProcedure))
                        {
                            cmd.Connection     = _objectsSqlConnection;
                            cmd.CommandTimeout = 300;
                            var stageSqlParam = new SqlParameter {
                                ParameterName = "@stagingSql", Size = 4000, Direction = ParameterDirection.Output
                            };
                            cmd.Parameters.Add(stageSqlParam);
                            cmd.Parameters.AddWithValue("@accoutId", delivery.Account.ID);
                            cmd.Parameters.AddWithValue("@deliveryTable", deliveryTable);
                            cmd.Parameters.AddWithValue("@stagingTable", stagingTable);

                            cmd.ExecuteNonQuery();
                        }
                    }
                }
            }
        }
    public static void MetricsStaging(SqlInt32 accoutId, SqlString deliveryTable, SqlString stagingTable, out SqlChars stagingSql)
    {
        using (var connection = new SqlConnection("context connection=true"))
        {
            connection.Open();

            // pass all delivery parameters as parameters to SP
            var account           = Convert.ToInt32(accoutId.ToString());
            var deliveryTableName = deliveryTable.ToString();
            var stagingTableName  = stagingTable.ToString();

            try
            {
                stagingSql = new SqlChars(EdgeViewer.StageMetrics(account, deliveryTableName, stagingTableName, connection));
            }
            catch (System.Exception ex)
            {
                // TODO: write to log in DB
                throw;
            }
        }
    }