Exemple #1
0
        protected void InitalizeAdgroupKeywordGK(SqlCommand insertCommand, int accountID, int channelID, bool hasBackOffice)
        {
            int  gkManagerCallsCounter = 0;
            bool callSuccess           = false;

            // try 3 time to get campaignGK from GKManager, if failed the trow Exception
            while (!callSuccess)
            {
                try
                {
                    if (insertCommand.Parameters["@Keyword_GK"].Value.ToString() == string.Empty ||
                        insertCommand.Parameters["@Keyword_gk"].Value == DBNull.Value)
                    {
                        return;
                    }

                    // Convert DBNull to null
                    if (insertCommand.Parameters["@MatchType"].Value == DBNull.Value)
                    {
                        insertCommand.Parameters["@MatchType"].Value = MatchType.Unidentified;
                    }

                    insertCommand.Parameters["@PPC_Keyword_GK"].Value =
                        GkManager.GetAdgroupKeywordGK(accountID,
                                                      channelID,
                                                      (long)Convert.ToInt32(insertCommand.Parameters["@Campaign_GK"].Value),
                                                      (long)Convert.ToInt32(insertCommand.Parameters["@AdGroup_GK"].Value),
                                                      (long)Convert.ToInt32(insertCommand.Parameters["@Keyword_GK"].Value),
                                                      (MatchType)(insertCommand.Parameters["@MatchType"].Value),
                                                      insertCommand.Parameters["@destUrl"].Value.ToString(),
                                                      hasBackOffice ? (long?)Convert.ToInt32(insertCommand.Parameters["@Gateway_gk"].Value): null);

                    //insertCommand.Parameters["@PPC_Keyword_GK"].Value =
                    //    GkManager.GetAdgroupKeywordGK(accountID,
                    //        channelID,
                    //        (long)Convert.ToInt32(insertCommand.Parameters["@Campaign_GK"].Value),
                    //        (long)Convert.ToInt32(insertCommand.Parameters["@AdGroup_GK"].Value),
                    //        (long)Convert.ToInt32(insertCommand.Parameters["@Keyword_GK"].Value),
                    //        (MatchType)(insertCommand.Parameters["@MatchType"].Value),
                    //        insertCommand.Parameters["@kwDestUrl"].Value.ToString() == "defult url" ?
                    //        null : insertCommand.Parameters["@kwDestUrl"].Value.ToString(),
                    //        null);

                    callSuccess = true;
                }
                catch (TimeoutException ex)
                {
                    ++gkManagerCallsCounter;

                    if (gkManagerCallsCounter > MaxNumOFGkManagerCallsTries)
                    {
                        throw ex;
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
Exemple #2
0
        protected void InitalizeGatewayGK(SqlCommand insertCommand, int accountID, GatewayReferenceType gatewayReferenceType, int channelID)
        {
            int  gkManagerCallsCounter = 0;
            bool callSuccess           = false;

            // try 3 time to get campaignGK from GKManager, if failed the trow Exception
            while (!callSuccess)
            {
                try
                {
                    if (insertCommand.Parameters["@Gateway_id"].Value == DBNull.Value)
                    {
                        return;
                    }

                    // Convert DBNull to null
                    if (insertCommand.Parameters["@destUrl"].Value == DBNull.Value)
                    {
                        insertCommand.Parameters["@destUrl"].Value = string.Empty;
                    }

                    if (insertCommand.Parameters["@headline"].Value == DBNull.Value)
                    {
                        insertCommand.Parameters["@headline"].Value = string.Empty;
                    }

                    insertCommand.Parameters["@Gateway_gk"].Value =
                        GkManager.GetGatewayGK(accountID,
                                               (long)Convert.ToInt32(insertCommand.Parameters["@Gateway_id"].Value),
                                               channelID,
                                               (long)Convert.ToInt32(insertCommand.Parameters["@Campaign_GK"].Value),
                                               (long)Convert.ToInt32(insertCommand.Parameters["@AdGroup_GK"].Value),
                                               gatewayReferenceType == GatewayReferenceType.Keyword ?
                                               "KW: " + insertCommand.Parameters["@kwSite"].Value.ToString() :
                                               insertCommand.Parameters["@headline"].Value.ToString(),
                                               insertCommand.Parameters["@destUrl"].Value.ToString(),
                                               gatewayReferenceType,
                                               gatewayReferenceType == GatewayReferenceType.Keyword ?
                                               (long)Convert.ToInt32(insertCommand.Parameters["@Keyword_GK"].Value) :
                                               (long)Convert.ToInt32(insertCommand.Parameters["@Creative_gk"].Value));

                    callSuccess = true;
                }
                catch (TimeoutException ex)
                {
                    ++gkManagerCallsCounter;

                    if (gkManagerCallsCounter > MaxNumOFGkManagerCallsTries)
                    {
                        throw ex;
                    }
                }
                catch (Exception ex)
                {
                    //Log.Write(String.Format("GkManager.GetGatewayGK failed."), ex, LogMessageType.Error);
                    throw ex;
                }
            }
        }
Exemple #3
0
 protected override void InitalizeGatewayGK(SqlCommand insertCommand, SourceDataRowReader <RetrieverDataRow> reader, FieldElement fe)
 {
     if (fe.DBFieldName.ToLower() == "gateway_id")
     {
         insertCommand.Parameters["@Gateway_GK"].Value =
             GkManager.GetGatewayGK(_accountID, Convert.ToInt64(reader.CurrentRow.Fields[fe.Value]));
     }
 }
Exemple #4
0
 /// <summary>
 /// Initalize GatewayGK by the gateway_id fields for data from backoffice.
 /// </summary>
 /// <param name="insertCommand">The field GatewayGK in the insert command will be initalized.</param>
 /// <param name="xmlReader">The xml reader that contain the gateway_id value.</param>
 /// <param name="fe">The current field we fetach from xml reader.</param>
 protected override void InitalizeGatewayGK(SqlCommand insertCommand, XmlTextReader xmlReader, FieldElement fe)
 {
     if (fe.DBFieldName.ToLower() == "gateway_id")
     {
         insertCommand.Parameters["@Gateway_GK"].Value =
             GkManager.GetGatewayGK(_accountID, Convert.ToInt64(xmlReader.GetAttribute(fe.Value)));
     }
 }
Exemple #5
0
        protected void InitalizeSiteGK(SqlCommand insertCommand, int accountID)
        {
            int  gkManagerCallsCounter = 0;
            bool callSuccess           = false;

            if (insertCommand.Parameters["@site"].Value == DBNull.Value)
            {
                // Yaniv: add gatway to the log message
                Log.Write(String.Format("site have no name.", insertCommand.Parameters["@Campaign_GK"].Value)
                          , LogMessageType.Warning);

                insertCommand.Parameters["@site"].Value = StringFieldNullValue;
            }
            else
            {
                string siteUrl = insertCommand.Parameters["@site"].Value.ToString();
                string url     = string.Empty;

                siteUrl = GetCleanDomainName(siteUrl);

                try
                {
                    Uri uri = new Uri(siteUrl);
                    url = uri.Host;
                }
                catch (Exception ex)
                {
                    url = insertCommand.Parameters["@site"].Value.ToString();
                }

                // try 3 time to get campaignGK from GKManager, if failed the trow Exception
                while (!callSuccess)
                {
                    try
                    {
                        insertCommand.Parameters["@site_GK"].Value = GkManager.GetSiteGK(accountID,
                                                                                         insertCommand.Parameters["@site"].Value.ToString());
                        callSuccess = true;
                    }
                    catch (TimeoutException ex)
                    {
                        ++gkManagerCallsCounter;

                        if (gkManagerCallsCounter > MaxNumOFGkManagerCallsTries)
                        {
                            throw ex;
                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }
            }
        }
Exemple #6
0
        protected void InitalizeCampaignGK(SqlCommand insertCommand, int channelID, int accountID)
        {
            int  gkManagerCallsCounter = 0;
            bool callSuccess           = false;

            if (insertCommand.Parameters["@campaign"].Value == DBNull.Value)
            {
                // Yaniv: add gatway to the log message
                //Log.Write(String.Format("campaign have no name.", insertCommand.Parameters["@campaignGK"].Value)
                //	, LogMessageType.Warning);

                insertCommand.Parameters["@campaign"].Value = StringFieldNullValue;
            }
            else
            {
                long lVal = FetchCampaignID(insertCommand);

                // try 3 time to get campaignGK from GKManager, if failed the trow Exception
                while (!callSuccess)
                {
                    try
                    {
                        // Have campaignid
                        if (lVal != 0)
                        {
                            insertCommand.Parameters["@Campaign_GK"].Value = GkManager.GetCampaignGK(accountID,
                                                                                                     channelID,
                                                                                                     insertCommand.Parameters["@campaign"].Value.ToString(),
                                                                                                     lVal);
                        }
                        else                         // Don't have campaignid
                        {
                            insertCommand.Parameters["@Campaign_GK"].Value = GkManager.GetCampaignGK(accountID,
                                                                                                     channelID,
                                                                                                     insertCommand.Parameters["@campaign"].Value.ToString(),
                                                                                                     null);
                        }
                        callSuccess = true;
                    }
                    catch (TimeoutException ex)
                    {
                        ++gkManagerCallsCounter;

                        if (gkManagerCallsCounter > MaxNumOFGkManagerCallsTries)
                        {
                            throw ex;
                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }
            }
        }
        protected virtual void HandleBackOfficeNode(string nodeName, string nodeValue, FieldElementSection rawDataFields, SqlCommand insertCommand)
        {
            try
            {
                if (nodeName == String.Empty ||
                    nodeName == null)
                {
                    throw new ArgumentException("Invalid node name. Cannot be null or empty.");
                }

                FieldElement fe = rawDataFields.Fields[nodeName];
                //if (fe != null)
                //    insertCommand.Parameters["@" + fe.DBFieldName].Value =
                //        Convert.ChangeType(nodeValue, Type.GetType(_tableTypeMappings[fe.DBFieldType.ToLower()]));


                if (fe == null || !fe.InsertToDB || !fe.Enabled)
                {
                    return;
                }

                if (!String.IsNullOrEmpty(nodeValue))
                {
                    insertCommand.Parameters["@" + fe.DBFieldName].Value =
                        Convert.ChangeType(nodeValue, Type.GetType(_tableTypeMappings[fe.DBFieldType.ToLower()]));

                    // Initalize Gateway_GK
                    if (rawDataFields.Fields[nodeName].DBFieldName.ToLower() == "gateway_id")
                    {
                        insertCommand.Parameters["@Gateway_GK"].Value =
                            GkManager.GetGatewayGK(_accountID, Convert.ToInt64(nodeValue));
                    }
                }
                else
                {
                    // Initalize field with null value.
                    if (fe.DBDefaultValue == null)
                    {
                        insertCommand.Parameters["@" + fe.DBFieldName].Value = DBNull.Value;
                    }
                    else
                    {
                        insertCommand.Parameters["@" + fe.DBFieldName].Value =
                            Convert.ChangeType(fe.DBDefaultValue, Type.GetType(_tableTypeMappings[fe.DBFieldType.ToLower()]));
                    }
                }
            }
            catch (Exception ex)
            {
                string str = ex.Message;
            }
        }
Exemple #8
0
        private void InitalizeParametersGK(Dictionary <string, int> headersCSV, SqlCommand insertCommand, int accountID, int channelID, string[] Fields)
        {
            //bool hasBackOffice = false;
            //int accountID;

            //if (Int32.TryParse( insertCommand.Parameters["@Account_ID"].ToString(), out accountID))
            //    hasBackOffice = HasBackOffice(accountID);
            bool hasBackOffice = HasBackOffice(accountID);

            if (_tableName == "Paid_API_AllColumns")
            {
                Dictionary <string, string> gatewayNameFields = new Dictionary <string, string>();
                // Initalize a Dictionary with report fields & gateway Name Fields.
                InitalizeGatewayNameMapping(gatewayNameFields, "GatewayName");

                InitalizeCreativeFields(headersCSV, insertCommand, Fields);
                // Initalize Gateway ID
                if (hasBackOffice)
                {
                    InitalizeGatewayID(insertCommand, channelID, gatewayNameFields);
                }

                InitalizeCreativeGKFields(insertCommand, channelID, hasBackOffice, accountID);
            }
            else if (_tableName == "Paid_API_Content")
            {
                InitalizeContentGKFields(insertCommand, channelID, hasBackOffice, accountID);
            }
            else if (_tableName == "BackOffice_Client_Gateway")
            {
                //Dictionary<string, string> babylonGatewayNameFields = new Dictionary<string, string>();
                //// Initalize a Dictionary with report fields & gateway Name Fields.
                //InitalizeGatewayNameMapping(babylonGatewayNameFields, "BabylonGatewayName");

                //string gatewayID = Fields[headersCSV["gateway_id"]].ToString();

                //foreach (string gatewayName in babylonGatewayNameFields.Keys)
                //{
                //    if (gatewayID.Contains(gatewayName))
                //    {
                //        insertCommand.Parameters["@gateway_ID"].Value = Convert.ToInt32(babylonGatewayNameFields[gatewayName]) + gatewayID.Substring(gatewayID.IndexOf(gatewayName) + gatewayName.Length);
                //        break;
                //    }
                //}

                // Initalize gateway_GK
                insertCommand.Parameters["@gateway_GK"].Value = GkManager.GetGatewayGK(
                    Convert.ToInt32(insertCommand.Parameters["@Account_ID"].Value),
                    Convert.ToInt64(insertCommand.Parameters["@gateway_ID"].Value));
            }
        }
Exemple #9
0
        protected void InitalizePPCSiteGK(SqlCommand insertCommand, int channelID, int accountID, bool hasBackOffice)
        {
            int  gkManagerCallsCounter = 0;
            bool callSuccess           = false;

            if (insertCommand.Parameters["@site_GK"].Value.ToString() == string.Empty ||
                insertCommand.Parameters["@site_GK"].Value == DBNull.Value)
            {
                return;
            }
            else
            {
                // try 3 time to get GetAdgroupSiteGK from GKManager, if failed the trow Exception
                while (!callSuccess)
                {
                    try
                    {
                        // Initalize MatchType with unknwon value if it's empty.
                        if (insertCommand.Parameters["@MatchType"].Value.ToString() == string.Empty)
                        {
                            insertCommand.Parameters["@MatchType"].Value = MatchType.Unidentified;
                        }

                        insertCommand.Parameters["@PPC_Site_gk"].Value = GkManager.GetAdgroupSiteGK(accountID,
                                                                                                    channelID,
                                                                                                    (long)insertCommand.Parameters["@Campaign_GK"].Value,
                                                                                                    (long)insertCommand.Parameters["@AdGroup_GK"].Value,
                                                                                                    (long)insertCommand.Parameters["@site_GK"].Value,
                                                                                                    insertCommand.Parameters["@site"].Value.ToString(),
                                                                                                    (MatchType)insertCommand.Parameters["@MatchType"].Value,
                                                                                                    hasBackOffice ? (long?)insertCommand.Parameters["@Gateway_gk"].Value : null);

                        callSuccess = true;
                    }
                    catch (TimeoutException ex)
                    {
                        ++gkManagerCallsCounter;

                        if (gkManagerCallsCounter > MaxNumOFGkManagerCallsTries)
                        {
                            throw ex;
                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }
            }
        }
Exemple #10
0
        protected void InitalizeAdgroupCreativeGK(SqlCommand insertCommand, int accountID, int channelID, bool hasBackOffice)
        {
            int  gkManagerCallsCounter = 0;
            bool callSuccess           = false;

            // try 3 time to get campaignGK from GKManager, if failed the trow Exception
            while (!callSuccess)
            {
                try
                {
                    if (insertCommand.Parameters["@Creative_gk"].Value.ToString() == string.Empty ||
                        insertCommand.Parameters["@Creative_gk"].Value == DBNull.Value)
                    {
                        return;
                    }

                    // Convert DBNull to null
                    if (insertCommand.Parameters["@creativeVisUrl"].Value == DBNull.Value)
                    {
                        insertCommand.Parameters["@creativeVisUrl"].Value = string.Empty;
                    }

                    insertCommand.Parameters["@PPC_Creative_GK"].Value =
                        GkManager.GetAdgroupCreativeGK(accountID,
                                                       channelID,
                                                       (long)Convert.ToInt32(insertCommand.Parameters["@Campaign_GK"].Value),
                                                       (long)Convert.ToInt32(insertCommand.Parameters["@AdGroup_GK"].Value),
                                                       (long)Convert.ToInt32(insertCommand.Parameters["@Creative_gk"].Value),
                                                       insertCommand.Parameters["@destUrl"].Value.ToString(),
                                                       insertCommand.Parameters["@creativeVisUrl"].Value.ToString(),
                                                       hasBackOffice ? (long?)Convert.ToInt32(insertCommand.Parameters["@Gateway_gk"].Value) : null);

                    callSuccess = true;
                }
                catch (TimeoutException ex)
                {
                    ++gkManagerCallsCounter;

                    if (gkManagerCallsCounter > MaxNumOFGkManagerCallsTries)
                    {
                        throw ex;
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
Exemple #11
0
        protected void InitalizeAdGroupGK(SqlCommand insertCommand, int channelID, int accountID, long campaignGK)
        {
            int  gkManagerCallsCounter = 0;
            bool callSuccess           = false;

            if (String.IsNullOrEmpty(insertCommand.Parameters["@adgroup"].Value.ToString()) ||
                insertCommand.Parameters["@adgroup"].Value == DBNull.Value)
            {
                // If adgroup don't exist we initalize it with campaign name.
                insertCommand.Parameters["@adgroup"].Value = insertCommand.Parameters["@campaign"].Value;
            }

            if (insertCommand.Parameters["@adgroup"].Value.ToString() == StringFieldNullValue)
            {
                insertCommand.Parameters["@AdGroup_GK"].Value = 0;
                return;
            }

            // try 3 time to get campaignGK from GKManager, if failed the trow Exception
            while (!callSuccess)
            {
                try
                {
                    long?originalID = GetAdGroupID(insertCommand);

                    insertCommand.Parameters["@AdGroup_GK"].Value = GkManager.GetAdgroupGK(accountID,
                                                                                           channelID,
                                                                                           campaignGK,
                                                                                           insertCommand.Parameters["@adgroup"].Value.ToString(),
                                                                                           originalID);

                    callSuccess = true;
                }
                catch (TimeoutException ex)
                {
                    ++gkManagerCallsCounter;

                    if (gkManagerCallsCounter > MaxNumOFGkManagerCallsTries)
                    {
                        throw ex;
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
Exemple #12
0
        protected override PpcDataUnit NextRow()
        {
            while (_innerReader.Read())
            {
                if (_innerReader.Name == "Row")
                {
                    string      row = _innerReader.ReadOuterXml();
                    XmlDocument xd  = new XmlDocument();
                    xd.LoadXml(row);

                    PpcDataUnit objPpcData = new PpcDataUnit();
                    objPpcData.AccountID      = GetAccountIDFromName(xd.DocumentElement["AccountName"].GetAttribute("value"));
                    objPpcData.AdDistribution = xd.DocumentElement["AdDistribution"].GetAttribute("value");
                    objPpcData.AdId           = Convert.ToInt32(xd.DocumentElement["AdId"].GetAttribute("value"));
                    objPpcData.AdGroupName    = xd.DocumentElement["AdGroupName"].GetAttribute("value");
                    objPpcData.AdType         = Convert.ToInt32(xd.DocumentElement["AdType"].GetAttribute("value"));
                    objPpcData.CampaignName   = xd.DocumentElement["CampaignName"].GetAttribute("value");
                    //p.DestinationUrl =xd.DocumentElement["DestinationUrl"].GetAttribute("value");
                    objPpcData.Impressions     = Convert.ToInt32(xd.DocumentElement["Impressions"].GetAttribute("value"));
                    objPpcData.Clicks          = Convert.ToInt32(xd.DocumentElement["Clicks"].GetAttribute("value"));
                    objPpcData.Ctr             = decimal.Parse(xd.DocumentElement["Ctr"].GetAttribute("value"));
                    objPpcData.AverageCpc      = decimal.Parse(xd.DocumentElement["AverageCpc"].GetAttribute("value"));
                    objPpcData.Spend           = decimal.Parse(xd.DocumentElement["Spend"].GetAttribute("value"));
                    objPpcData.AveragePosition = decimal.Parse(xd.DocumentElement["AveragePosition"].GetAttribute("value"));
                    objPpcData.Conversions     = decimal.Parse(xd.DocumentElement["Conversions"].GetAttribute("value"));
                    objPpcData.ConversionRate  = decimal.Parse(xd.DocumentElement["ConversionRate"].GetAttribute("value"));
                    //p.Keyword = xd.DocumentElement["Keyword"].GetAttribute("value");
                    string d = xd.DocumentElement["GregorianDate"].GetAttribute("value");  // +" 00:00:01";
                    objPpcData.GregorianDate = DateTime.ParseExact(d, "MM/dd/yyyy", null); //xd.DocumentElement["GregorianDate"].GetAttribute("value"));
                    //p.Matchtype = xd.DocumentElement["MatchType"].GetAttribute("value");
                    objPpcData.AdGroupId       = Convert.ToInt32(xd.DocumentElement["AdGroupId"].GetAttribute("value"));
                    objPpcData.Channel_id      = 14;
                    objPpcData.Downloaded_date = DateTime.Now;
                    objPpcData.Day_code        = Core.Utilities.DayCode.ToDayCode(DateTime.Now);
                    objPpcData.GatewayId       = Convert.ToInt32(BusinessObjects.Tracker.ExtractTracker(_innerReader.ReadElementString("Gateway"), BusinessObjects.Tracker.GetAccountTrackerPattern(objPpcData.AccountID)));//  GetGateway(_innerReader.ReadElementString("Gateway"));
                    objPpcData.CampaignGk      = GkManager.GetCampaignGK(objPpcData.AccountID, objPpcData.Channel_id, objPpcData.CampaignName, null);
                    objPpcData.AdgroupGk       = GkManager.GetAdgroupGK(objPpcData.AccountID, objPpcData.Channel_id, objPpcData.CampaignGk, objPpcData.AdGroupName, objPpcData.AdGroupId);
                    //p.CreativeGk = GkManager.GetCreativeGK (p.AccountID,);
                    //objPpcData.GatewayGk = GkManager.GetGatewayGK(objPpcData.AccountID,objPpcData.GatewayId,objPpcData.Channel_id,objPpcData.CampaignGK,objPpcData.Adgroup_Gk,null,);
                    //p.PPC_CreativeGk = GkManager.GetAdgroupCreativeGK(p.AccountID,p.Channel_id,p.CampaignGk,p.AdgroupGk,p.CreativeGk,p.DestinationUrl,p.GatewayGk);
                    objPpcData.KeywordGk = GkManager.GetKeywordGK(objPpcData.AccountID, objPpcData.Keyword);
                    //objPpcData.PPC_KeywordGk = GkManager.GetAdgroupKeywordGK(objPpcData.AccountID,objPpcData.Channel_id,objPpcData.CampaignGk,objPpcData.AdgroupGk,objPpcData.Keywordid ,objPpcData.Matchtype,objPpcData.DestinationUrl,objPpcData.GatewayGk);
                    return(objPpcData);
                }
            }
            return(new PpcDataUnit());
        }
Exemple #13
0
        /*=========================*/
        #endregion

        #region Initalize GK methods
        /*=========================*/

        protected void InitalizeKeywordGK(SqlCommand insertCommand, int accountID)
        {
            int  gkManagerCallsCounter = 0;
            bool callSuccess           = false;

            if (insertCommand.Parameters["@kwSite"].Value == DBNull.Value)
            {
                insertCommand.Parameters["@kwSite"].Value     = StringFieldNullValue;
                insertCommand.Parameters["@Keyword_GK"].Value = 0;
                return;
            }

            // try 3 time to get KeywordGK from GKManager, if failed the trow Exception
            while (!callSuccess)
            {
                try
                {
                    insertCommand.Parameters["@Keyword_GK"].Value = GkManager.GetKeywordGK(accountID,
                                                                                           insertCommand.Parameters["@kwSite"].Value.ToString());

                    callSuccess = true;
                }
                catch (TimeoutException ex)
                {
                    ++gkManagerCallsCounter;

                    if (gkManagerCallsCounter > MaxNumOFGkManagerCallsTries)
                    {
                        throw ex;
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
        protected override PpcDataUnit NextRow()
        {
            try
            {
                if (_xd.ChildNodes[0].ChildNodes.Count > _RowNumber)
                {
                    PpcDataUnit         objPpcData = new PpcDataUnit();
                    AdPerformanceValues ad         = new AdPerformanceValues();
                    for (int i = 0; i < _Columns; i++)
                    {
                        string nameNode  = _xd.ChildNodes[0].ChildNodes[_RowNumber].ChildNodes[i].Name;
                        string valueNode = _xd.ChildNodes[0].ChildNodes[_RowNumber].ChildNodes[i].Attributes[0].Value;
                        switch (nameNode)
                        {
                        case "AccountName":
                            objPpcData.AccountID = GetAccountIDByName(valueNode);
                            break;

                        case "AdDistribution":
                            objPpcData.AdDistribution = valueNode;
                            break;

                        case "AdId":
                            objPpcData.AdId = valueNode != string.Empty ? Convert.ToInt32(valueNode) : 0;
                            break;

                        case "AdGroupName":
                            objPpcData.AdGroupName = valueNode;
                            break;

                        case "AdType":
                            objPpcData.AdType = (int)Enum.Parse(typeof(AdVariation), valueNode.Substring(0, valueNode.IndexOf(" ad")), true);
                            break;

                        case "CampaignName":
                            objPpcData.CampaignName = valueNode;
                            break;

                        case "DestinationUrl":
                            objPpcData.DestinationUrl = valueNode;
                            break;

                        case "Impressions":
                            objPpcData.Impressions = valueNode != string.Empty ? Convert.ToInt32(valueNode) : 0;
                            break;

                        case "Clicks":
                            objPpcData.Clicks = valueNode != string.Empty ? Convert.ToInt32(valueNode) : 0;
                            break;

                        case "Ctr":
                            objPpcData.Ctr = valueNode != string.Empty ? decimal.Parse(valueNode) : 0;
                            break;

                        case "AverageCpc":
                            objPpcData.AverageCpc = valueNode != string.Empty ? decimal.Parse(valueNode) : 0;
                            break;

                        case "Spend":
                            objPpcData.Spend = valueNode != string.Empty ? decimal.Parse(valueNode) : 0;
                            break;

                        case "AveragePosition":
                            objPpcData.AveragePosition = valueNode != string.Empty ? decimal.Parse(valueNode) : 0;
                            break;

                        case "Conversions":
                            objPpcData.Conversions = valueNode != string.Empty ? decimal.Parse(valueNode) : 0;
                            break;

                        case "ConversionRate":
                            objPpcData.ConversionRate = valueNode != string.Empty ?  decimal.Parse(valueNode):0;
                            break;

                        case "Keyword":
                            objPpcData.Keyword = valueNode;
                            break;

                        case "GregorianDate":
                            string d = valueNode;
                            objPpcData.GregorianDate = DateTime.ParseExact(d, "M/d/yyyy", null);
                            break;

                        case "MatchType":
                            objPpcData.Matchtype = (MatchType)Enum.Parse(typeof(MatchType), valueNode, true);
                            break;

                        default:
                            break;
                        }
                    }
                    objPpcData.AdDistribution  = Ads[objPpcData.AdId].AdDescription;
                    objPpcData.AdTitle         = Ads[objPpcData.AdId].AdTitle;
                    objPpcData.Channel_id      = 14;
                    objPpcData.Downloaded_date = DateTime.Now;
                    objPpcData.Day_code        = Core.Utilities.DayCode.ToDayCode(DateTime.Now);
                    objPpcData.CampaignGk      = GkManager.GetCampaignGK(objPpcData.AccountID, objPpcData.Channel_id, objPpcData.CampaignName, null);
                    objPpcData.GatewayGk       = GkManager.GetGatewayGK(objPpcData.AccountID, objPpcData.GatewayId, objPpcData.Channel_id, objPpcData.CampaignGk, objPpcData.AdgroupGk, null, objPpcData.DestinationUrl, GatewayReferenceType.Keyword, objPpcData.KeywordGk);
                    objPpcData.AdgroupGk       = GkManager.GetAdgroupGK(objPpcData.AccountID, objPpcData.Channel_id, objPpcData.CampaignGk, objPpcData.AdGroupName, objPpcData.AdGroupId);
                    objPpcData.CreativeGk      = GkManager.GetCreativeGK(objPpcData.AccountID, objPpcData.AdTitle, objPpcData.AdDistribution, string.Empty);
                    objPpcData.PPC_CreativeGk  = GkManager.GetAdgroupCreativeGK(objPpcData.AccountID, objPpcData.Channel_id, objPpcData.CampaignGk, objPpcData.AdgroupGk, objPpcData.CreativeGk, objPpcData.DestinationUrl, string.Empty, objPpcData.GatewayGk);
                    objPpcData.KeywordGk       = GkManager.GetKeywordGK(objPpcData.AccountID, objPpcData.Keyword);
                    objPpcData.PPC_KeywordGk   = GkManager.GetAdgroupKeywordGK(objPpcData.AccountID, objPpcData.Channel_id, objPpcData.CampaignGk, objPpcData.AdgroupGk, objPpcData.KeywordId, objPpcData.Matchtype, objPpcData.DestinationUrl, objPpcData.GatewayGk);
                    _RowNumber += 1;
                    return(objPpcData);
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemple #15
0
        protected void InitalizeCreativeGK(SqlCommand insertCommand, int accountID)
        {
            int  gkManagerCallsCounter = 0;
            bool callSuccess           = false;

            // Creative_gk
            if ((insertCommand.Parameters["@headline"].Value == DBNull.Value) &&
                (insertCommand.Parameters["@desc1"].Value == DBNull.Value) &&
                (insertCommand.Parameters["@desc2"].Value == DBNull.Value))
            {
                // Yaniv: report to log.
                insertCommand.Parameters["@headline"].Value    = StringFieldNullValue;
                insertCommand.Parameters["@desc1"].Value       = StringFieldNullValue;
                insertCommand.Parameters["@desc2"].Value       = StringFieldNullValue;
                insertCommand.Parameters["@Creative_gk"].Value = 0;
                return;
            }

            // Convert DBNull to null
            if (insertCommand.Parameters["@headline"].Value == DBNull.Value)
            {
                insertCommand.Parameters["@headline"].Value = string.Empty;
            }

            if (insertCommand.Parameters["@desc1"].Value == DBNull.Value)
            {
                insertCommand.Parameters["@desc1"].Value = string.Empty;
            }

            if (insertCommand.Parameters["@desc2"].Value == DBNull.Value)
            {
                insertCommand.Parameters["@desc2"].Value = string.Empty;
            }

            // try 3 time to get campaignGK from GKManager, if failed the trow Exception
            while (!callSuccess)
            {
                try
                {
                    insertCommand.Parameters["@Creative_gk"].Value =
                        GkManager.GetCreativeGK(accountID,
                                                insertCommand.Parameters["@headline"].Value.ToString(),
                                                insertCommand.Parameters["@desc1"].Value.ToString(),
                                                insertCommand.Parameters["@desc2"].Value.ToString());

                    callSuccess = true;
                }
                catch (TimeoutException ex)
                {
                    ++gkManagerCallsCounter;

                    if (gkManagerCallsCounter > MaxNumOFGkManagerCallsTries)
                    {
                        throw ex;
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
        /*=========================*/
        #endregion

        #region Private Methods
        /*=========================*/

        /// <summary>
        /// Fills DB with data that retrieved by EasyForex BackOffice
        /// </summary>
        /// <param name="dataFromBO">Data from BackOffice to write to DB.</param>
        private void ProcessData(string xmlPath, DateTime _requiredDay)
        {
            SqlCommand insertCommand = InitalizeInsertCommand();

            using (ConnectionKey key = DataManager.Current.OpenConnection())
            {
                // Init insertCommand with the data manger connection
                DataManager.ApplyConnection(insertCommand);

                // Yaniv: add Exception
                /////////////////////
                Type t = Type.GetType(Instance.Configuration.Options["BackOfficeXmlReader"]);
                System.Reflection.ConstructorInfo constructor = t.GetConstructor(new Type[] { typeof(string) });
                //if (constructor == null)
                //	throw new blahl
                //BackOfficeXmlReader reader = (BackOfficeXmlReader) constructor.Invoke(new object[] { xmlPath });

                ////////////////////

                //EasyForexReader reader = new EasyForexReader(xmlPath);

                // Initalize const parmaters.
                insertCommand.Parameters["@Downloaded_Date"].Value = DateTime.Now;
                insertCommand.Parameters["@day_Code"].Value        = DayCode(_requiredDay);
                insertCommand.Parameters["@hour_Code"].Value       = DayCode(_requiredDay) == DayCode(DateTime.Today) ? DateTime.Now.Hour : 0;
                insertCommand.Parameters["@account_ID"].Value      = Instance.AccountID;
                //insertCommand.Parameters["@channel_ID"].Value = ChannelID;

                using (EasyForexReader reader = (EasyForexReader)constructor.Invoke(new object[] { xmlPath }))
                {
                    // Read all rows in the BackOffice XML and insert them to the DB.
                    while (reader.Read())
                    {
                        if (reader.CurrentRow.GatewayID == 0)
                        {
                            Log.Write("Error parsing BackOffice row, Can't insert row to DB.", LogMessageType.Error);
                            continue;
                        }

                        InitalizeParametersWithNull(insertCommand);

                        // Initalize command parmaters.
                        insertCommand.Parameters["@gateway_id"].Value                    = reader.CurrentRow.GatewayID;
                        insertCommand.Parameters["@total_Hits"].Value                    = reader.CurrentRow.TotalHits;
                        insertCommand.Parameters["@new_Leads"].Value                     = reader.CurrentRow.NewLeads;
                        insertCommand.Parameters["@new_Users"].Value                     = reader.CurrentRow.NewUsers;
                        insertCommand.Parameters["@new_Active_Users"].Value              = reader.CurrentRow.NewActiveUsers;
                        insertCommand.Parameters["@new_Net_Deposits_in_dollars"].Value   = reader.CurrentRow.NewNetDepostit;
                        insertCommand.Parameters["@active_Users"].Value                  = reader.CurrentRow.ActiveUsers;
                        insertCommand.Parameters["@total_Net_Deposits_in_dollars"].Value = reader.CurrentRow.TotalNetDeposit;
                        insertCommand.Parameters["@Gateway_GK"].Value                    = GkManager.GetGatewayGK(Instance.AccountID, reader.CurrentRow.GatewayID);

                        try
                        {
                            // Execute command.
                            insertCommand.ExecuteNonQuery();
                        }
                        catch (Exception ex)
                        {
                            Log.Write(string.Format("Error in Inserting data to BackOffice_Client_Gateway table in easynet_Oltp DB."), ex);
                        }
                    }
                }
            }
        }