public void Save()
 {
     using (B2BProductCatalog database = new B2BProductCatalog())
     {
         database.B2CProductDataCollection.Update(this);
     }
 }
 public void Insert()
 {
     using (B2BProductCatalog database = new B2BProductCatalog())
     {
         database.B2CProductDataCollection.Insert(this);
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// Filters the current marketing and flag data in the database against the ITE file supplied.
        /// Note: All of the exception tables' UpdatedOn fields contain current time for ease of search.
        /// </summary>
        /// <param name="filepath">Path to ITE file.</param>
        /// <returns>Numbers of exceptions.</returns>
        public static string FilterByITE(string filepath, string locale, bool checkForAllBrands)
        {
            var iteTable = new DataTable("ITETable");
            var dataColumn = iteTable.Columns.Add("StyleNumber", typeof(string));
            dataColumn.MaxLength = 18;
            dataColumn = iteTable.Columns.Add("SalesOrg", typeof(string));
            dataColumn.MaxLength = 4;
            dataColumn = iteTable.Columns.Add("DistributionChannel", typeof(string));
            dataColumn.MaxLength = 2;

            try
            {
                using (var streamReader = new StreamReader(filepath, Encoding.UTF8))
                {
                    iteTable.BeginLoadData();
                    var values = new object[3];

                    while (streamReader.Peek() != -1)
                    {
                        string line = streamReader.ReadLine();

                        if (!string.IsNullOrEmpty(line))
                        {
                            var sections = line.Split('|');

                            values[0] = sections[1]; // StyleNumber
                            values[1] = sections[29]; // SalesOrg
                            values[2] = sections[27]; // DistChan

                            iteTable.LoadDataRow(values, true);
                        }
                    }
                    iteTable.EndLoadData();
                }
            }
            catch (Exception ex)
            {
                Log.ErrorFormat("Error when reading ITE. Exception: {0}", ex.Message);
                throw;
            }

            if (checkForAllBrands)
            {
                try
                {
                    if (!ITEContainsAllBrands(iteTable, locale))
                    {
                        // ITE is missing a brand. Wipe data and move on to next locale.
                        ClearData(locale, false);
                        return "break";
                    }
                }
                catch (Exception ex)
                {
                    Log.ErrorFormat("Error when checking ITE for all brands. Exception: {0}", ex.Message);
                    return "break";
                }
            }

            var db = new B2BProductCatalog();
            DataTable marketingDataTable = db.MarketingInfoCollection.GetAllByLocale(locale);

            // Remove marketing info that is not in ITE file and move to exceptions table
            var exceptionsRows = (from DataRow marketingRow in marketingDataTable.Rows
                                  where !iteTable.Rows.Cast<DataRow>()
                                    .Any(iteRow => iteRow["StyleNumber"].ToString() == marketingRow["StyleNumber"].ToString() &&
                                        iteRow["SalesOrg"].ToString() == marketingRow["SalesOrg"].ToString() &&
                                        iteRow["DistributionChannel"].ToString() == marketingRow["DistributionChannel"].ToString())
                                  select new MarketingInfo_ExceptionsRow
                                  {
                                      StyleNumber = marketingRow["StyleNumber"].ToString(),
                                      SalesOrg = !string.IsNullOrEmpty(marketingRow["SalesOrg"].ToString()) ? marketingRow["SalesOrg"].ToString() : null,
                                      DistributionChannel = !string.IsNullOrEmpty(marketingRow["DistributionChannel"].ToString()) ? marketingRow["DistributionChannel"].ToString() : null,
                                      MarketingDescEn = !string.IsNullOrEmpty(marketingRow["MarketingDescEn"].ToString()) ? marketingRow["MarketingDescEn"].ToString() : null,
                                      MarketingDescFr = !string.IsNullOrEmpty(marketingRow["MarketingDescFr"].ToString()) ? marketingRow["MarketingDescFr"].ToString() : null,
                                      StyleKeywords = !string.IsNullOrEmpty(marketingRow["StyleKeywords"].ToString()) ? marketingRow["StyleKeywords"].ToString() : null,
                                      StyleSizeRun = !string.IsNullOrEmpty(marketingRow["StyleSizeRun"].ToString()) ? marketingRow["StyleSizeRun"].ToString() : null,
                                      NavCategory1 = !string.IsNullOrEmpty(marketingRow["NavCategory1"].ToString()) ? marketingRow["NavCategory1"].ToString() : null,
                                      NavCategory2 = !string.IsNullOrEmpty(marketingRow["NavCategory2"].ToString()) ? marketingRow["NavCategory2"].ToString() : null,
                                      NavCategory3 = !string.IsNullOrEmpty(marketingRow["NavCategory3"].ToString()) ? marketingRow["NavCategory3"].ToString() : null,
                                      NavCategory4 = !string.IsNullOrEmpty(marketingRow["NavCategory4"].ToString()) ? marketingRow["NavCategory4"].ToString() : null,
                                      NavCategoryFr1 = !string.IsNullOrEmpty(marketingRow["NavCategoryFr1"].ToString()) ? marketingRow["NavCategoryFr1"].ToString() : null,
                                      NavCategoryFr2 = !string.IsNullOrEmpty(marketingRow["NavCategoryFr2"].ToString()) ? marketingRow["NavCategoryFr2"].ToString() : null,
                                      NavCategoryFr3 = !string.IsNullOrEmpty(marketingRow["NavCategoryFr3"].ToString()) ? marketingRow["NavCategoryFr3"].ToString() : null,
                                      NavCategoryFr4 = !string.IsNullOrEmpty(marketingRow["NavCategoryFr4"].ToString()) ? marketingRow["NavCategoryFr4"].ToString() : null,
                                      Flag1 = !string.IsNullOrEmpty(marketingRow["Flag1"].ToString()) ? marketingRow["Flag1"].ToString() : null,
                                      Flag2 = !string.IsNullOrEmpty(marketingRow["Flag2"].ToString()) ? marketingRow["Flag2"].ToString() : null,
                                      Flag3 = !string.IsNullOrEmpty(marketingRow["Flag3"].ToString()) ? marketingRow["Flag3"].ToString() : null,
                                      Flag4 = !string.IsNullOrEmpty(marketingRow["Flag4"].ToString()) ? marketingRow["Flag4"].ToString() : null,
                                      Flag5 = !string.IsNullOrEmpty(marketingRow["Flag5"].ToString()) ? marketingRow["Flag5"].ToString() : null,
                                      Flag6 = !string.IsNullOrEmpty(marketingRow["Flag6"].ToString()) ? marketingRow["Flag6"].ToString() : null,
                                      Flag7 = !string.IsNullOrEmpty(marketingRow["Flag7"].ToString()) ? marketingRow["Flag7"].ToString() : null,
                                      Flag8 = !string.IsNullOrEmpty(marketingRow["Flag8"].ToString()) ? marketingRow["Flag8"].ToString() : null,
                                      Flag9 = !string.IsNullOrEmpty(marketingRow["Flag9"].ToString()) ? marketingRow["Flag9"].ToString() : null,
                                      Flag10 = !string.IsNullOrEmpty(marketingRow["Flag10"].ToString()) ? marketingRow["Flag10"].ToString() : null,
                                      Flag11 = !string.IsNullOrEmpty(marketingRow["Flag11"].ToString()) ? marketingRow["Flag11"].ToString() : null,
                                      Flag12 = !string.IsNullOrEmpty(marketingRow["Flag12"].ToString()) ? marketingRow["Flag12"].ToString() : null,
                                      CreatedOn = marketingRow["CreatedOn"] != DBNull.Value ? DateTime.Parse(marketingRow["CreatedOn"].ToString()) : DateTime.Now,
                                      UpdatedOn = DateTime.Now,
                                      IsCreatedOnNull = marketingRow["CreatedOn"] == DBNull.Value,
                                      Locale = locale
                                  }).ToList();

            int marketingInfoExceptions = 0;
            foreach (var row in exceptionsRows)
            {
                db.MarketingInfoCollection.Delete(string.Format("StyleNumber = '{0}' AND SalesOrg = '{1}' AND DistributionChannel = '{2}'",
                    row.StyleNumber, row.SalesOrg, row.DistributionChannel));
                db.MarketingInfo_ExceptionsCollection.Insert(row);

                marketingInfoExceptions++;
            }

            var flagsDataTable = db.FlagInfoCollection.GetAllAsDataTable();

            // Remove any orphaned flags and move to exceptions
            var flagInfoRows = (from DataRow flagsRow in flagsDataTable.Rows
                                where !marketingDataTable.Rows.Cast<DataRow>()
                                    .Any(marketingRow => flagsRow["FlagId"].ToString() == marketingRow["Flag1"].ToString() ||
                                        flagsRow["FlagId"].ToString() == marketingRow["Flag2"].ToString() ||
                                        flagsRow["FlagId"].ToString() == marketingRow["Flag3"].ToString() ||
                                        flagsRow["FlagId"].ToString() == marketingRow["Flag4"].ToString() ||
                                        flagsRow["FlagId"].ToString() == marketingRow["Flag5"].ToString() ||
                                        flagsRow["FlagId"].ToString() == marketingRow["Flag6"].ToString() ||
                                        flagsRow["FlagId"].ToString() == marketingRow["Flag7"].ToString() ||
                                        flagsRow["FlagId"].ToString() == marketingRow["Flag8"].ToString() ||
                                        flagsRow["FlagId"].ToString() == marketingRow["Flag9"].ToString() ||
                                        flagsRow["FlagId"].ToString() == marketingRow["Flag10"].ToString() ||
                                        flagsRow["FlagId"].ToString() == marketingRow["Flag11"].ToString() ||
                                        flagsRow["FlagId"].ToString() == marketingRow["Flag12"].ToString())
                                select new FlagInfo_ExceptionsRow
                                {
                                    FlagId = !string.IsNullOrEmpty(flagsRow["FlagId"].ToString()) ? flagsRow["FlagId"].ToString() : null,
                                    FlagName = flagsRow["FlagName"].ToString(),
                                    FlagNameFr = !string.IsNullOrEmpty(flagsRow["FlagNameFr"].ToString()) ? flagsRow["FlagNameFr"].ToString() : null,
                                    FlagDescription = !string.IsNullOrEmpty(flagsRow["FlagDescription"].ToString()) ? flagsRow["FlagDescription"].ToString() : null,
                                    FlagDescriptionFr = !string.IsNullOrEmpty(flagsRow["FlagDescriptionFr"].ToString()) ? flagsRow["FlagDescriptionFr"].ToString() : null,
                                    Category = flagsRow["Category"].ToString(),
                                    FileName = !string.IsNullOrEmpty(flagsRow["FileName"].ToString()) ? flagsRow["FileName"].ToString() : null,
                                    SalesOrg = flagsRow["SalesOrg"].ToString(),
                                    DistributionChannel = flagsRow["DistributionChannel"].ToString(),
                                    Sequence = flagsRow["Sequence"] != DBNull.Value ? (int)flagsRow["Sequence"] : 0,
                                    IsSequenceNull = flagsRow["Sequence"] == DBNull.Value,
                                    CreatedOn = flagsRow["CreatedOn"] != DBNull.Value ? DateTime.Parse(flagsRow["CreatedOn"].ToString()) : DateTime.Now,
                                    UpdatedOn = DateTime.Now,
                                    IsCreatedOnNull = flagsRow["CreatedOn"] == DBNull.Value,
                                    Locale = locale
                                }).ToList();

            int flagInfoExceptions = 0;
            foreach (var row in flagInfoRows)
            {
                db.FlagInfoCollection.Delete(string.Format("FlagId = '{0}'", row.FlagId));
                db.FlagInfo_ExceptionsCollection.Insert(row);

                flagInfoExceptions++;
            }

            var flagCategoriesDataTable = db.FlagCategoryCollection.GetAllAsDataTable();

            // Remove any orphaned flag categories and move to exceptions
            var flagCategoryRows = (from DataRow categoryRow in flagCategoriesDataTable.Rows
                                    where !flagsDataTable.Rows.Cast<DataRow>()
                                        .Any(flagsRow => categoryRow["Category"].ToString() == flagsRow["Category"].ToString() &&
                                            (categoryRow["SalesOrg"].ToString() == flagsRow["SalesOrg"].ToString() &&
                                            categoryRow["DistributionChannel"].ToString() == flagsRow["DistributionChannel"].ToString()))
                                    select new FlagCategory_ExceptionsRow
                                    {
                                        Category = categoryRow["Category"].ToString(),
                                        CategoryId = categoryRow["CategoryId"].ToString(),
                                        Sequence = categoryRow["Sequence"] != DBNull.Value ? (int)categoryRow["Sequence"] : 0,
                                        SalesOrg = categoryRow["SalesOrg"].ToString(),
                                        DistributionChannel = categoryRow["DistributionChannel"].ToString(),
                                        CreatedOn = categoryRow["CreatedOn"] != DBNull.Value ? DateTime.Parse(categoryRow["CreatedOn"].ToString()) : DateTime.Now,
                                        UpdatedOn = DateTime.Now,
                                        IsCreatedOnNull = categoryRow["CreatedOn"] == DBNull.Value,
                                        Locale = locale
                                    }).ToList();

            int categoryExceptions = 0;
            foreach (var row in flagCategoryRows)
            {
                db.FlagCategoryCollection.Delete(string.Format("CategoryId = '{0}'", row.CategoryId));
                db.FlagCategory_ExceptionsCollection.Insert(row);

                categoryExceptions++;
            }

            return string.Format("{0}_{1}_{2}_{3}_{4}_{5}_{6}", marketingInfoExceptions, iteTable.Rows.Count, marketingDataTable.Rows.Count,
                flagInfoExceptions, flagsDataTable.Rows.Count, categoryExceptions, flagCategoriesDataTable.Rows.Count);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="FlagInfoCollection_Base"/> 
 /// class with the specified <see cref="B2BProductCatalog"/>.
 /// </summary>
 /// <param name="db">The <see cref="B2BProductCatalog"/> object.</param>
 public FlagInfoCollection_Base(B2BProductCatalog db)
 {
     _db = db;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="FlagCategory_ExceptionsCollection"/> class.
 /// </summary>
 /// <param name="db">The database object.</param>
 internal FlagCategory_ExceptionsCollection(B2BProductCatalog db)
     : base(db)
 {
     // EMPTY
 }
Exemplo n.º 6
0
        protected void btnRunB2CMarketingUpdate_Click(object sender, EventArgs e)
        {
            string salesOrg = ddlBrand.SelectedItem.Value.Split('~')[0];
            string dc = ddlBrand.SelectedItem.Value.Split('~')[1];
            DataTable marketingDataTable = new DataTable();
            //if cbForceB2C is checked then overwrite what's in the database with Marketing Info from B2C
            bool forceB2C = cbForceB2C.Checked;

            int countOfUpdatedEn = 0;
            int countOfUpdatedFr = 0;

            var db = new B2BProductCatalog();

            if (salesOrg == "0000" && dc == "00")
                //get all entries for selected SalesOrg, DistributtionChannel
                marketingDataTable = db.MarketingInfoCollection.GetAllAsDataTable();
            else
                marketingDataTable = db.MarketingInfoCollection.GetAsDataTable(
                    string.Format("SalesOrg='{0}' AND DistributionChannel='{1}'", salesOrg, dc), "");

            for (int i = 0; i < marketingDataTable.Rows.Count; i++)
            {
                if (string.IsNullOrEmpty(marketingDataTable.Rows[i]["MarketingDescEn"].ToString()) || forceB2C)
                {
                    var row = db.B2CProductDataCollection.GetByStyleNumber(marketingDataTable.Rows[i]["StyleNumber"].ToString());

                    if (row != null)
                        if (!string.IsNullOrEmpty(row.ProductDescEn))
                        {
                            marketingDataTable.Rows[i].BeginEdit();
                            marketingDataTable.Rows[i]["MarketingDescEn"] = row.ProductDescEn;
                            marketingDataTable.Rows[i].EndEdit();

                            countOfUpdatedEn++;
                        }
                }
                if (string.IsNullOrEmpty(marketingDataTable.Rows[i]["MarketingDescFr"].ToString()) || forceB2C)
                {
                    var row = db.B2CProductDataCollection.GetByStyleNumber(marketingDataTable.Rows[i]["StyleNumber"].ToString());

                    if (row != null)
                        if (!string.IsNullOrEmpty(row.ProductDescFr))
                        {
                            marketingDataTable.Rows[i].BeginEdit();
                            marketingDataTable.Rows[i]["MarketingDescFr"] = row.ProductDescFr;
                            marketingDataTable.Rows[i].EndEdit();

                            countOfUpdatedFr++;
                        }
                }
            }

            //try to run the update
            db.MarketingInfoCollection.Update(marketingDataTable);

            lblSuccess.Visible = true;
            lblSuccess.Text = string.Format("{0} styles updated with English and {1} styles updated with French marketing B2C description.",
                countOfUpdatedEn, countOfUpdatedFr);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="BrandCollection"/> class.
 /// </summary>
 /// <param name="db">The database object.</param>
 internal BrandCollection(B2BProductCatalog db)
     : base(db)
 {
     // EMPTY
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="SAPFileCheckCollection_Base"/> 
 /// class with the specified <see cref="B2BProductCatalog"/>.
 /// </summary>
 /// <param name="db">The <see cref="B2BProductCatalog"/> object.</param>
 public SAPFileCheckCollection_Base(B2BProductCatalog db)
 {
     _db = db;
 }
Exemplo n.º 9
0
        public static void CreateFlgFile(string filePath, string locale)
        {
            var db = new B2BProductCatalog();
            var flagInfoTable = db.FlagInfoCollection.GetFlagInfoWithCategoryId();

            try
            {
                using (var streamWriter = new StreamWriter(filePath, false, Encoding.GetEncoding(1252)))
                {
                    foreach (DataRow dataRow in flagInfoTable.Rows)
                    {
                        streamWriter.Write(GetLocationAbbreviation(locale) + "|");

                        // FlagId
                        streamWriter.Write(!Convert.IsDBNull(dataRow[0])
                                               ? string.Format("{0}|", StripBadCharacters(dataRow[0].ToString()))
                                               : "|");

                        // FlagName (use N/A if missing)
                        string flagNameEn = (!Convert.IsDBNull(dataRow[1]) ? StripBadCharacters(dataRow[1].ToString()) : "N/A");
                        streamWriter.Write(string.Format("{0}|", flagNameEn));

                        // FlagNameFr (iCongo requires English if French is missing)
                        string flagNameFr = (!Convert.IsDBNull(dataRow[2]) ? StripBadCharacters(dataRow[2].ToString()) : "N/A");
                        streamWriter.Write(flagNameFr!="N/A"
                                               ? string.Format("{0}|", flagNameFr)
                                               : string.Format("{0}|", flagNameEn));

                        // FlagDescription (use N/A if missing)

                        streamWriter.Write(!Convert.IsDBNull(dataRow[3])
                                               ? string.Format("{0}|", StripBadCharacters(dataRow[3].ToString()))
                                               : "N/A|");

                        // FlagDescriptionFr
                        if (!Convert.IsDBNull(dataRow[4]))
                            //French Flag Description Exists
                            streamWriter.Write(string.Format("{0}|", StripBadCharacters(dataRow[4].ToString())));
                        else
                        {
                            //French Flag Description is missing
                            streamWriter.Write(!Convert.IsDBNull(dataRow[3])
                                                   ? string.Format("{0}|", StripBadCharacters(dataRow[3].ToString()))
                                                   : "N/A|");
                        }

                        // SalesOrg
                        streamWriter.Write(!Convert.IsDBNull(dataRow[5])
                                               ? string.Format("{0}|", StripBadCharacters(dataRow[5].ToString()))
                                               : "|");

                        // DistributionChannel
                        streamWriter.Write(!Convert.IsDBNull(dataRow[6])
                                               ? string.Format("{0}|", StripBadCharacters(dataRow[6].ToString()))
                                               : "|");

                        // CategoryId
                        streamWriter.Write(!Convert.IsDBNull(dataRow[7])
                                               ? string.Format("{0}|", StripBadCharacters(dataRow[7].ToString()))
                                               : "|");

                        // Sequence
                        streamWriter.Write(!Convert.IsDBNull(dataRow[8])
                                               ? string.Format("{0}|", StripBadCharacters(dataRow[8].ToString()))
                                               : "|");

                        // Send 'C' for 'Create'
                        streamWriter.Write("C" + streamWriter.NewLine);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.ErrorFormat("Error creating FLG file. Exception: {0}", ex.Message);
            }
        }
Exemplo n.º 10
0
        public static void CreateFlcFile(string filePath, string locale)
        {
            var db = new B2BProductCatalog();
            var flagInfoTable = db.FlagCategoryCollection.GetAllAsDataTable();

            try
            {
                using (var streamWriter = new StreamWriter(filePath, false, Encoding.GetEncoding(1252)))
                {
                    foreach (DataRow dataRow in flagInfoTable.Rows)
                    {
                        streamWriter.Write(GetLocationAbbreviation(locale) + "|");

                        // SalesOrg
                        streamWriter.Write(!Convert.IsDBNull(dataRow[5])
                                               ? string.Format("{0}|", StripBadCharacters(dataRow[5].ToString()))
                                               : "|");

                        // DistributionChannel
                        streamWriter.Write(!Convert.IsDBNull(dataRow[6])
                                               ? string.Format("{0}|", StripBadCharacters(dataRow[6].ToString()))
                                               : "|");

                        // CategoryId
                        streamWriter.Write(!Convert.IsDBNull(dataRow[3])
                                               ? string.Format("{0}|", StripBadCharacters(dataRow[3].ToString()))
                                               : "|");

                        // FlagCategoryName, pipe in N/A if empty
                        streamWriter.Write(!Convert.IsDBNull(dataRow[1])
                                               ? string.Format("{0}|", HTMLEncodeSpecialChars(StripBadCharacters(dataRow[1].ToString())))
                                               : "N/A|");

                        // FlagCategoryNameFr
                        if (!Convert.IsDBNull(dataRow[2]))
                            //French Flag Category Name Exists
                            streamWriter.Write(string.Format("{0}|", HTMLEncodeSpecialChars(StripBadCharacters(dataRow[2].ToString()))));
                        else
                        {
                            //French Flag Category Name is missing
                            streamWriter.Write(!Convert.IsDBNull(dataRow[1])
                                                   ? string.Format("{0}|", StripBadCharacters(dataRow[1].ToString()))
                                                   : "N/A|");
                        }

                        // Sequence, if blank send 9999
                        streamWriter.Write(!Convert.IsDBNull(dataRow[4])
                                               ? string.Format("{0}|", StripBadCharacters(dataRow[4].ToString()))
                                               : "9999|");

                        // Send 'C' for 'Create'
                        streamWriter.Write("C" + streamWriter.NewLine);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.ErrorFormat("Error creating FLC file. Exception: {0}", ex.Message);
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// Removes all existing marketing and flag info from the database.
        /// </summary>
        /// <param name="locale">Location to match</param>
        /// <param name="backupFirst">Insert existing data into backup tables before clearing.</param>
        public static void ClearData(string locale, bool backupFirst)
        {
            var db = new B2BProductCatalog();

            // Backup data in marketing/flags tables
            if (backupFirst)
            {
                foreach (var row in db.MarketingInfoCollection.GetAsArray("Locale='" + locale + "'", ""))
                {
                    var backup = new MarketingInfo_BackupRow
                    {
                        StyleNumber = row.StyleNumber,
                        SalesOrg = row.SalesOrg,
                        DistributionChannel = row.DistributionChannel,
                        StyleSizeRun = row.StyleSizeRun,
                        StyleKeywords = row.StyleKeywords,
                        MarketingDescEn = row.MarketingDescEn,
                        MarketingDescFr = row.MarketingDescFr,
                        NavCategory1 = row.NavCategory1,
                        NavCategory2 = row.NavCategory2,
                        NavCategory3 = row.NavCategory3,
                        NavCategory4 = row.NavCategory4,
                        NavCategoryFr1 = row.NavCategoryFr1,
                        NavCategoryFr2 = row.NavCategoryFr2,
                        NavCategoryFr3 = row.NavCategoryFr3,
                        NavCategoryFr4 = row.NavCategoryFr4,
                        Flag1 = row.Flag1,
                        Flag2 = row.Flag2,
                        Flag3 = row.Flag3,
                        Flag4 = row.Flag4,
                        Flag5 = row.Flag5,
                        Flag6 = row.Flag6,
                        Flag7 = row.Flag7,
                        Flag8 = row.Flag8,
                        Flag9 = row.Flag9,
                        Flag10 = row.Flag10,
                        Flag11 = row.Flag11,
                        Flag12 = row.Flag12,
                        CreatedOn = !row.IsCreatedOnNull ? row.CreatedOn : DateTime.MinValue,
                        UpdatedOn = !row.IsUpdatedOnNull ? row.UpdatedOn : DateTime.MinValue,
                        IsCreatedOnNull = row.IsCreatedOnNull,
                        IsUpdatedOnNull = row.IsUpdatedOnNull,
                        Locale = row.Locale
                    };

                    db.MarketingInfo_BackupCollection.Insert(backup);
                }

                foreach (var row in db.FlagInfoCollection.GetAsArray("Locale='" + locale + "'", ""))
                {
                    var backup = new FlagInfo_BackupRow
                    {
                        FlagId = row.FlagId,
                        FlagName = row.FlagName,
                        FlagNameFr = row.FlagNameFr,
                        FlagDescription = row.FlagDescription,
                        FlagDescriptionFr = row.FlagDescriptionFr,
                        SalesOrg = row.SalesOrg,
                        DistributionChannel = row.DistributionChannel,
                        Category = row.Category,
                        Sequence = row.Sequence,
                        FileName = row.FileName,
                        CreatedOn = !row.IsCreatedOnNull ? row.CreatedOn : DateTime.MinValue,
                        UpdatedOn = !row.IsUpdatedOnNull ? row.UpdatedOn : DateTime.MinValue,
                        IsCreatedOnNull = row.IsCreatedOnNull,
                        IsUpdatedOnNull = row.IsUpdatedOnNull,
                        Locale = row.Locale
                    };

                    db.FlagInfo_BackupCollection.Insert(backup);
                }

                foreach (var row in db.FlagCategoryCollection.GetAsArray("Locale='" + locale + "'", ""))
                {
                    var backup = new FlagCategory_BackupRow
                    {
                        CategoryId = row.CategoryId,
                        Category = row.Category,
                        SalesOrg = row.SalesOrg,
                        DistributionChannel = row.DistributionChannel,
                        Sequence = row.Sequence,
                        CreatedOn = !row.IsCreatedOnNull ? row.CreatedOn : DateTime.MinValue,
                        UpdatedOn = !row.IsUpdatedOnNull ? row.UpdatedOn : DateTime.MinValue,
                        IsCreatedOnNull = row.IsCreatedOnNull,
                        IsUpdatedOnNull = row.IsUpdatedOnNull,
                        Locale = row.Locale
                    };

                    db.FlagCategory_BackupCollection.Insert(backup);
                }
            }

            // Delete the records by locale
            db.MarketingInfoCollection.Delete("Locale='" + locale + "'");
            db.FlagInfoCollection.Delete("Locale='" + locale + "'");
            db.FlagCategoryCollection.Delete("Locale='" + locale + "'");
        }
Exemplo n.º 12
0
        /// <summary>
        /// Checks a SAP file's line count against the previous line count to make sure it's legit.
        /// </summary>
        /// <param name="filePath">SAP file to check.</param>
        /// <returns>True if file contains a number of lines within the threshold.</returns>
        public static bool CheckSAPFileIsGood(string filePath, string locale)
        {
            var db = new B2BProductCatalog();
            var sapFileCheckRow = db.SAPFileCheckCollection.GetByFileType(filePath.Substring(filePath.IndexOf('.')+1), locale);

            int lineCount = 0;
            using (var streamReader = new StreamReader(filePath, Encoding.GetEncoding(1252)))
            {
                while(streamReader.ReadLine() != null)
                {
                    lineCount++;
                }
            }

            Log.InfoFormat("Svc ({0}): Current Line Count: {1}, Previous Line Count: {2}, Threshold: {3}",
                locale, lineCount, sapFileCheckRow.PreviousLineCount, sapFileCheckRow.Threshold);
            sapFileCheckRow.CurrentLineCount = lineCount;

            if ((sapFileCheckRow.PreviousLineCount - sapFileCheckRow.CurrentLineCount) > sapFileCheckRow.Threshold)
            {
                // Send error message through email
                Log.ErrorFormat("Svc ({0}): Threshold of {1} exceeded in file {2}. Previous line count: {3}, current line count: {4}.",
                    locale, sapFileCheckRow.Threshold, filePath, sapFileCheckRow.PreviousLineCount, sapFileCheckRow.CurrentLineCount);

                db.SAPFileCheckCollection.Update(sapFileCheckRow);

                return false;
            }

            sapFileCheckRow.PreviousLineCount = lineCount;
            db.SAPFileCheckCollection.Update(sapFileCheckRow);

            return true;
        }
Exemplo n.º 13
0
        public static string AddMarketingInfoToDb(DataTable marketingInfo, string locale)
        {
            int rowCountInserted = 0;
            int rowCountUpdated = 0;

            try
            {
                using (var db = new B2BProductCatalog())
                {
                    for (int i = 0; i < marketingInfo.Rows.Count; i++)
                    {
                        if (!string.IsNullOrEmpty(marketingInfo.Rows[i]["Style"].ToString()) && marketingInfo.Rows[i]["Style"].ToString() != "0")
                        {
                            var row = new MarketingInfoRow
                            {
                                StyleNumber = marketingInfo.Rows[i]["Style"].ToString().TrimEnd(),
                                SalesOrg = SalesOrg,
                                DistributionChannel = DistChan,
                                Locale = locale
                            };

                            // Optional fields
                            if (marketingInfo.Rows[i]["Marketing Description"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Marketing Description"].ToString()))
                                row.MarketingDescEn = TruncateString(marketingInfo.Rows[i]["Marketing Description"].ToString(), 4000);
                            if (marketingInfo.Rows[i]["Marketing Description (FR)"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Marketing Description (FR)"].ToString()))
                                row.MarketingDescFr = TruncateString(marketingInfo.Rows[i]["Marketing Description (FR)"].ToString(), 4000);
                            if (marketingInfo.Rows[i]["Keywords"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Keywords"].ToString()))
                                row.StyleKeywords = TruncateString(marketingInfo.Rows[i]["Keywords"].ToString(), 1000);
                            if (marketingInfo.Rows[i]["Size Run"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Size Run"].ToString()))
                                row.StyleSizeRun = TruncateString(marketingInfo.Rows[i]["Size Run"].ToString(), 75);
                            if (marketingInfo.Rows[i]["Cat1"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Cat1"].ToString()))
                                row.NavCategory1 = TruncateString(marketingInfo.Rows[i]["Cat1"].ToString(), 100);
                            if (marketingInfo.Rows[i]["Cat2"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Cat2"].ToString()))
                                row.NavCategory2 = TruncateString(marketingInfo.Rows[i]["Cat2"].ToString(), 100);
                            if (marketingInfo.Rows[i]["Cat3"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Cat3"].ToString()))
                                row.NavCategory3 = TruncateString(marketingInfo.Rows[i]["Cat3"].ToString(), 100);
                            if (marketingInfo.Rows[i]["Cat4"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Cat4"].ToString()))
                                row.NavCategory4 = TruncateString(marketingInfo.Rows[i]["Cat4"].ToString(), 100);
                            if (marketingInfo.Columns.Contains("Cat1 (FR)") && marketingInfo.Rows[i]["Cat1 (FR)"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Cat1 (FR)"].ToString()))
                                row.NavCategoryFr1 = TruncateString(marketingInfo.Rows[i]["Cat1 (FR)"].ToString(), 100);
                            if (marketingInfo.Columns.Contains("Cat2 (FR)") && marketingInfo.Rows[i]["Cat2 (FR)"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Cat2 (FR)"].ToString()))
                                row.NavCategoryFr2 = TruncateString(marketingInfo.Rows[i]["Cat2 (FR)"].ToString(), 100);
                            if (marketingInfo.Columns.Contains("Cat3 (FR)") && marketingInfo.Rows[i]["Cat3 (FR)"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Cat3 (FR)"].ToString()))
                                row.NavCategoryFr3 = TruncateString(marketingInfo.Rows[i]["Cat3 (FR)"].ToString(), 100);
                            if (marketingInfo.Columns.Contains("Cat4 (FR)") && marketingInfo.Rows[i]["Cat4 (FR)"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Cat4 (FR)"].ToString()))
                                row.NavCategoryFr4 = TruncateString(marketingInfo.Rows[i]["Cat4 (FR)"].ToString(), 100);

                            // Flags written first, set MarketingInfo Flag fields to corresponding FlagId
                            if (marketingInfo.Rows[i]["Flag 1"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Flag 1"].ToString()))
                            {
                                var flagInfoRow = db.FlagInfoCollection.GetByFlagName(marketingInfo.Rows[i]["Flag 1"].ToString(), SalesOrg, DistChan, locale);
                                if (flagInfoRow != null)
                                    row.Flag1 = flagInfoRow.FlagId;
                            }
                            if (marketingInfo.Rows[i]["Flag 2"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Flag 2"].ToString()))
                            {
                                var flagInfoRow = db.FlagInfoCollection.GetByFlagName(marketingInfo.Rows[i]["Flag 2"].ToString(), SalesOrg, DistChan, locale);
                                if (flagInfoRow != null)
                                    row.Flag2 = flagInfoRow.FlagId;
                            }
                            if (marketingInfo.Rows[i]["Flag 3"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Flag 3"].ToString()))
                            {
                                var flagInfoRow = db.FlagInfoCollection.GetByFlagName(marketingInfo.Rows[i]["Flag 3"].ToString(), SalesOrg, DistChan, locale);
                                if (flagInfoRow != null)
                                    row.Flag3 = flagInfoRow.FlagId;
                            }
                            if (marketingInfo.Rows[i]["Flag 4"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Flag 4"].ToString()))
                            {
                                var flagInfoRow = db.FlagInfoCollection.GetByFlagName(marketingInfo.Rows[i]["Flag 4"].ToString(), SalesOrg, DistChan, locale);
                                if (flagInfoRow != null)
                                    row.Flag4 = flagInfoRow.FlagId;
                            }
                            if (marketingInfo.Rows[i]["Flag 5"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Flag 5"].ToString()))
                            {
                                var flagInfoRow = db.FlagInfoCollection.GetByFlagName(marketingInfo.Rows[i]["Flag 5"].ToString(), SalesOrg, DistChan, locale);
                                if (flagInfoRow != null)
                                    row.Flag5 = flagInfoRow.FlagId;
                            }
                            if (marketingInfo.Rows[i]["Flag 6"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Flag 6"].ToString()))
                            {
                                var flagInfoRow = db.FlagInfoCollection.GetByFlagName(marketingInfo.Rows[i]["Flag 6"].ToString(), SalesOrg, DistChan, locale);
                                if (flagInfoRow != null)
                                    row.Flag6 = flagInfoRow.FlagId;
                            }
                            if (marketingInfo.Rows[i]["Flag 7"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Flag 7"].ToString()))
                            {
                                var flagInfoRow = db.FlagInfoCollection.GetByFlagName(marketingInfo.Rows[i]["Flag 7"].ToString(), SalesOrg, DistChan, locale);
                                if (flagInfoRow != null)
                                    row.Flag7 = flagInfoRow.FlagId;
                            }
                            if (marketingInfo.Rows[i]["Flag 8"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Flag 8"].ToString()))
                            {
                                var flagInfoRow = db.FlagInfoCollection.GetByFlagName(marketingInfo.Rows[i]["Flag 8"].ToString(), SalesOrg, DistChan, locale);
                                if (flagInfoRow != null)
                                    row.Flag8 = flagInfoRow.FlagId;
                            }
                            if (marketingInfo.Rows[i]["Flag 9"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Flag 9"].ToString()))
                            {
                                var flagInfoRow = db.FlagInfoCollection.GetByFlagName(marketingInfo.Rows[i]["Flag 9"].ToString(), SalesOrg, DistChan, locale);
                                if (flagInfoRow != null)
                                    row.Flag9 = flagInfoRow.FlagId;
                            }
                            if (marketingInfo.Rows[i]["Flag 10"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Flag 10"].ToString()))
                            {
                                var flagInfoRow = db.FlagInfoCollection.GetByFlagName(marketingInfo.Rows[i]["Flag 10"].ToString(), SalesOrg, DistChan, locale);
                                if (flagInfoRow != null)
                                    row.Flag10 = flagInfoRow.FlagId;
                            }
                            if (marketingInfo.Rows[i]["Flag 11"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Flag 11"].ToString()))
                            {
                                var flagInfoRow = db.FlagInfoCollection.GetByFlagName(marketingInfo.Rows[i]["Flag 11"].ToString(), SalesOrg, DistChan, locale);
                                if (flagInfoRow != null)
                                    row.Flag11 = flagInfoRow.FlagId;
                            }
                            if (marketingInfo.Rows[i]["Flag 12"] != null
                                && !string.IsNullOrEmpty(marketingInfo.Rows[i]["Flag 12"].ToString()))
                            {
                                var flagInfoRow = db.FlagInfoCollection.GetByFlagName(marketingInfo.Rows[i]["Flag 12"].ToString(), SalesOrg, DistChan, locale);
                                if (flagInfoRow != null)
                                    row.Flag12 = flagInfoRow.FlagId;
                            }

                            var marketingInfoRow = db.MarketingInfoCollection.GetByStyleNumberSOandDC(row.StyleNumber, row.SalesOrg, row.DistributionChannel, locale);

                            if (marketingInfoRow == null)
                            {
                                row.CreatedOn = DateTime.Now;
                                db.MarketingInfoCollection.Insert(row);
                                rowCountInserted++;
                            }
                            else
                            {
                                row.PkId = marketingInfoRow.PkId;
                                row.UpdatedOn = DateTime.Now;
                                db.MarketingInfoCollection.Update(row);
                                rowCountUpdated++;
                            }

                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Log.ErrorFormat("Error inserting values into MarketingInfo table. Exception: {0}", ex.Message);
            }

            return string.Format("{0}_{1}", rowCountInserted, rowCountUpdated);
        }
Exemplo n.º 14
0
        public static string AddFlagInfoToDb(DataTable flagInfo, DataTable categoryInfo, string locale)
        {
            int flagInfoInserted = 0;
            int flagInfoUpdated = 0;
            int categoryInserted = 0;
            int categoryUpdated = 0;

            try
            {
                using (var db = new B2BProductCatalog())
                {
                    // Flag Info
                    for (int i = 0; i < flagInfo.Rows.Count; i++)
                    {
                        if (!string.IsNullOrEmpty(flagInfo.Rows[i]["Flag Name"].ToString()))
                        {
                            var row = new FlagInfoRow
                            {
                                FlagId = flagInfo.Rows[i]["Flag ID"].ToString().Replace('_', '-'),
                                FlagName = TruncateString(flagInfo.Rows[i]["Flag Name"].ToString(), 50),
                                Category = !string.IsNullOrEmpty(flagInfo.Rows[i]["Flag Category"].ToString()) ? TruncateString(flagInfo.Rows[i]["Flag Category"].ToString(), 50) : "N/A",
                                SalesOrg = SalesOrg,
                                DistributionChannel = DistChan,
                                Locale = locale
                            };

                            // Optional fields
                            if (flagInfo.Rows[i]["Flag Description"] != null
                                && !string.IsNullOrEmpty(flagInfo.Rows[i]["Flag Description"].ToString()))
                                row.FlagDescription = TruncateString(flagInfo.Rows[i]["Flag Description"].ToString(), 4000);
                            if (flagInfo.Rows[i]["Flag File Name"] != null
                                && !string.IsNullOrEmpty(flagInfo.Rows[i]["Flag File Name"].ToString()))
                                row.FileName = flagInfo.Rows[i]["Flag File Name"].ToString();
                            if (flagInfo.Columns.Contains("Flag Name (FR)") && flagInfo.Rows[i]["Flag Name (FR)"] != null
                                && !string.IsNullOrEmpty(flagInfo.Rows[i]["Flag Name (FR)"].ToString()))
                                row.FlagNameFr = TruncateString(flagInfo.Rows[i]["Flag Name (FR)"].ToString(), 75);
                            if (flagInfo.Columns.Contains("Flag Description (FR)") && flagInfo.Rows[i]["Flag Description (FR)"] != null
                                && !string.IsNullOrEmpty(flagInfo.Rows[i]["Flag Description (FR)"].ToString()))
                                row.FlagDescriptionFr = TruncateString(flagInfo.Rows[i]["Flag Description (FR)"].ToString(), 4000);
                            if (flagInfo.Rows[i]["Sequence"] != null
                                && !string.IsNullOrEmpty(flagInfo.Rows[i]["Sequence"].ToString()))
                                row.Sequence = int.Parse(flagInfo.Rows[i]["Sequence"].ToString());
                            else
                                row.Sequence = 9999; //per iCongo, default to 9999 if not supplied

                            var flagInfoRow = db.FlagInfoCollection.GetByFlagID(row.FlagId);

                            if (flagInfoRow == null)
                            {
                                row.CreatedOn = DateTime.Now;
                                db.FlagInfoCollection.Insert(row);
                                flagInfoInserted++;
                            }
                            else
                            {
                                row.PkId = flagInfoRow.PkId;
                                row.UpdatedOn = DateTime.Now;
                                db.FlagInfoCollection.Update(row);
                                flagInfoUpdated++;
                            }
                        }
                    }

                    // Flag Categories
                    for (int j = 0; j < categoryInfo.Rows.Count; j++)
                    {
                        if (!string.IsNullOrEmpty(categoryInfo.Rows[j]["Flag Category"].ToString()))
                        {
                            var row = new FlagCategoryRow
                                      {
                                          Category = TruncateString(categoryInfo.Rows[j]["Flag Category"].ToString(), 50),
                                          CategoryId = categoryInfo.Rows[j]["Flag Category ID"].ToString().Replace('_', '-'),
                                          SalesOrg = SalesOrg,
                                          DistributionChannel = DistChan,
                                          Locale = locale
                                      };

                            if (categoryInfo.Columns.Contains("Flag Category (FR)") && categoryInfo.Rows[j]["Flag Category (FR)"] != null
                              && !string.IsNullOrEmpty(categoryInfo.Rows[j]["Flag Category (FR)"].ToString()))
                                row.CategoryFr = TruncateString(categoryInfo.Rows[j]["Flag Category (FR)"].ToString(), 50);
                            if (categoryInfo.Rows[j]["Sequence"] != null && !string.IsNullOrEmpty(categoryInfo.Rows[j]["Sequence"].ToString()))
                                row.Sequence = int.Parse(categoryInfo.Rows[j]["Sequence"].ToString());
                            else
                                row.Sequence = 9999; //per iCongo, default to 9999 if not supplied

                            var flagCategoryRow = db.FlagCategoryCollection.GetByFlagCategory(row.Category, SalesOrg, DistChan, locale);

                            if (flagCategoryRow == null)
                            {
                                row.CreatedOn = DateTime.Now;
                                db.FlagCategoryCollection.Insert(row);
                                categoryInserted++;
                            }
                            else
                            {
                                row.PkId = flagCategoryRow.PkId;
                                row.UpdatedOn = DateTime.Now;
                                db.FlagCategoryCollection.Update(row);
                                categoryUpdated++;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Log.ErrorFormat("Error inserting values into Flags table. Exception: {0}", ex.Message);
            }

            return string.Format("{0}_{1}_{2}_{3}", flagInfoInserted, flagInfoUpdated, categoryInserted, categoryUpdated);
        }
Exemplo n.º 15
0
        public static bool MarketingInfoTableHasData()
        {
            var db = new B2BProductCatalog();

            int total = 5;
            if (db.MarketingInfoCollection.GetAsDataTable("", "", 0, 5, ref total).Rows.Count > 0)
                return true;
            return false;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="FlagCategory_BackupCollection_Base"/> 
 /// class with the specified <see cref="B2BProductCatalog"/>.
 /// </summary>
 /// <param name="db">The <see cref="B2BProductCatalog"/> object.</param>
 public FlagCategory_BackupCollection_Base(B2BProductCatalog db)
 {
     _db = db;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="MarketingInfo_ExceptionsCollection"/> class.
 /// </summary>
 /// <param name="db">The database object.</param>
 internal MarketingInfo_ExceptionsCollection(B2BProductCatalog db)
     : base(db)
 {
     // EMPTY
 }
Exemplo n.º 18
0
        public static void CreateFsaFile(string filePath, string locale)
        {
            var db = new B2BProductCatalog();
            var marketingInfoTable = db.MarketingInfoCollection.GetAllByLocale(locale);

            try
            {
                using (var streamWriter = new StreamWriter(filePath, false, Encoding.GetEncoding(1252)))
                {
                    foreach (DataRow dataRow in marketingInfoTable.Rows)
                    {
                        // ItemId = StyleNumber
                        var styleNumber = Convert.IsDBNull(dataRow[1]) ? "" : StripBadCharacters(dataRow[1].ToString());

                        if (styleNumber.Length != 0)
                        {
                            // FlagIds related to that StyleNumber
                            // Flags 1-12
                            if (!Convert.IsDBNull(dataRow[16]))
                                streamWriter.WriteLine(HelpAssembleFsaEntry(GetLocationAbbreviation(locale), styleNumber, dataRow[16].ToString()));
                            if (!Convert.IsDBNull(dataRow[17])) // Flag 2
                                streamWriter.WriteLine(HelpAssembleFsaEntry(GetLocationAbbreviation(locale), styleNumber, dataRow[17].ToString()));
                            if (!Convert.IsDBNull(dataRow[18]))
                                streamWriter.WriteLine(HelpAssembleFsaEntry(GetLocationAbbreviation(locale), styleNumber, dataRow[18].ToString()));
                            if (!Convert.IsDBNull(dataRow[19]))
                                streamWriter.WriteLine(HelpAssembleFsaEntry(GetLocationAbbreviation(locale), styleNumber, dataRow[19].ToString()));
                            if (!Convert.IsDBNull(dataRow[20]))
                                streamWriter.WriteLine(HelpAssembleFsaEntry(GetLocationAbbreviation(locale), styleNumber, dataRow[20].ToString()));
                            if (!Convert.IsDBNull(dataRow[21]))
                                streamWriter.WriteLine(HelpAssembleFsaEntry(GetLocationAbbreviation(locale), styleNumber, dataRow[21].ToString()));
                            if (!Convert.IsDBNull(dataRow[22]))
                                streamWriter.WriteLine(HelpAssembleFsaEntry(GetLocationAbbreviation(locale), styleNumber, dataRow[22].ToString()));
                            if (!Convert.IsDBNull(dataRow[23]))
                                streamWriter.WriteLine(HelpAssembleFsaEntry(GetLocationAbbreviation(locale), styleNumber, dataRow[23].ToString()));
                            if (!Convert.IsDBNull(dataRow[24]))
                                streamWriter.WriteLine(HelpAssembleFsaEntry(GetLocationAbbreviation(locale), styleNumber, dataRow[24].ToString()));
                            if (!Convert.IsDBNull(dataRow[25]))
                                streamWriter.WriteLine(HelpAssembleFsaEntry(GetLocationAbbreviation(locale), styleNumber, dataRow[25].ToString()));
                            if (!Convert.IsDBNull(dataRow[26]))
                                streamWriter.WriteLine(HelpAssembleFsaEntry(GetLocationAbbreviation(locale), styleNumber, dataRow[26].ToString()));
                            if (!Convert.IsDBNull(dataRow[27]))
                                streamWriter.WriteLine(HelpAssembleFsaEntry(GetLocationAbbreviation(locale), styleNumber, dataRow[27].ToString()));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Log.ErrorFormat("Error creating FSA file. Exception: {0}", ex.Message);
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ImageDataCollection"/> class.
 /// </summary>
 /// <param name="db">The database object.</param>
 internal ImageDataCollection(B2BProductCatalog db)
     : base(db)
 {
     // EMPTY
 }
Exemplo n.º 20
0
        /// <summary>
        /// Creates images for all the styles currently in the MarketingInfo table.
        /// NOTE: Setup for service only at this point.
        /// </summary>
        /// <param name="pathToSave">Path where to save the images.</param>
        /// <param name="quality">Quality of image.</param>
        /// <param name="type">Image type: png or jpg.</param>
        public static string CreateImages(string pathToSave, string quality, string type, string salesOrg, string distChan, string locale)
        {
            var db = new B2BProductCatalog();
            DataTable marketingDataTable;

            if (salesOrg == "0000" && distChan == "00")
                // Generate images for all brands
                marketingDataTable = db.MarketingInfoCollection.GetAllByLocale(locale);
            else
                marketingDataTable = db.MarketingInfoCollection.GetAsDataTable(
                    string.Format("SalesOrg='{0}' AND DistributionChannel='{1}'", salesOrg, distChan), "");

            Log.InfoFormat("Begin image creation from {0} stock numbers.", marketingDataTable.Rows.Count);

            string rootUrl = ConfigurationManager.AppSettings["ImageRootUrl"];

            int imagesCount = 0;

            try
            {
                for (int i = 0; i < marketingDataTable.Rows.Count; i++)
                {
                    var stockNumber = marketingDataTable.Rows[i]["StyleNumber"].ToString();
                    var imageInfo = ExecuteOracle(stockNumber);

                    // Want to send a blank image if the image was incorrect and deleted from Image Bank
                    if (imageInfo.Rows.Count == 0) // If there is no image on Image Bank
                    {
                        var oldImage = db.ImageDataCollection.GetByStockNumber(stockNumber, locale);

                        if (oldImage != null) // And there is an image uploaded previously
                        {
                            // Copy NoImage image to Images folder with stock number name and delete old entry
                            Log.InfoFormat("Stock number \"{0}\" was removed from IB. Sending NoImage image and removing entry from db.", stockNumber);
                            File.Copy(pathToSave + "NoImage\\NoImage.png", String.Format("{0}{1}.png", pathToSave, stockNumber));
                            db.ImageDataCollection.Delete(oldImage);
                            continue;
                        }
                    }

                    if (imageInfo.Rows.Count > 0)
                    {
                        string path = string.Empty;
                        string fileName = string.Empty;
                        int mediaType = 0;

                        // Grab image marked as primary from web product or web apparel
                        foreach (DataRow row in from DataRow row in imageInfo.Rows
                                                where
                                                    row["mediatypeid"].ToString() == "1" ||
                                                    row["mediatypeid"].ToString() == "9"
                                                where
                                                    row["originalfilename"].ToString().Contains("-F-") ||
                                                    row["originalfilename"].ToString().Contains("-P.")
                                                select row)
                        {
                            path = row["imageloc"].ToString();
                            fileName = path;
                            mediaType = int.Parse(row["mediatypeid"].ToString());
                            break;
                        }

                        // Grab line drawing for apparel if we don't have an image yet
                        if (string.IsNullOrEmpty(path))
                        {
                            foreach (DataRow row in imageInfo.Rows.Cast<DataRow>()
                                .Where(row => row["mediatypeid"].ToString() == "11" &&
                                              (row["originalfilename"].ToString().Contains("-F-") ||
                                               row["originalfilename"].ToString().Contains("-P."))))
                            {
                                path = row["imageloc"].ToString();
                                fileName = path;
                                mediaType = int.Parse(row["mediatypeid"].ToString());
                                break;
                            }
                        }

                        // If we haven't found an image yet, just grab the first one
                        if (string.IsNullOrEmpty(path))
                        {
                            path = imageInfo.Rows[0]["imageloc"].ToString();
                            fileName = path;
                            mediaType = int.Parse(imageInfo.Rows[0]["mediatypeid"].ToString());
                        }

                        if (!string.IsNullOrEmpty(path))
                        {
                            // Before we save, check it against previous entry -- do we need to update an old image?
                            var oldImage = db.ImageDataCollection.GetByStockNumber(stockNumber, locale);
                            var imageBytes = new byte[] {};

                            // Only want to download image if it's new or updated
                            if (oldImage == null || oldImage.FileName != fileName)
                                imageBytes = GetBytesFromUrl(String.Format("{0}{1}?cell=1000,1000&qlt={2}&cvt={3}", rootUrl, path, quality, type), stockNumber);

                            if (imageBytes.Length > 0)
                            {
                                if (oldImage == null)
                                {
                                    if (!Directory.Exists(pathToSave))
                                        Directory.CreateDirectory(pathToSave);

                                    WriteBytesToFile(String.Format("{0}{1}.{2}", pathToSave, stockNumber, type), imageBytes);
                                    imagesCount++;

                                    db.ImageDataCollection.Insert(new ImageDataRow
                                                                      {
                                                                          StockNumber = stockNumber,
                                                                          CreatedOn = DateTime.Now,
                                                                          Url = rootUrl + path,
                                                                          FileName = fileName,
                                                                          MediaType = mediaType,
                                                                          Size = imageBytes.Length,
                                                                          Locale = locale
                                                                      });
                                }
                                else if (oldImage.FileName != fileName)
                                {
                                    if (!Directory.Exists(pathToSave))
                                        Directory.CreateDirectory(pathToSave);

                                    WriteBytesToFile(String.Format("{0}{1}.{2}", pathToSave, stockNumber, type), imageBytes);
                                    imagesCount++;

                                    oldImage.CreatedOn = DateTime.Now;
                                    oldImage.Url = rootUrl + path;
                                    oldImage.FileName = fileName;
                                    oldImage.MediaType = mediaType;
                                    oldImage.Size = imageBytes.Length;

                                    db.ImageDataCollection.Update(oldImage);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Log.ErrorFormat("Error creating images. Exception: {0}.", ex.Message);
            }

            Log.InfoFormat("{0} images created successfully.", imagesCount);

            return string.Format("{0}_{1}", imagesCount, marketingDataTable.Rows.Count);
        }
Exemplo n.º 21
0
        protected void btnUpdateMarketingWithLoremIpsum_Click(object sender, EventArgs e)
        {
            int countOfUpdatedEn = 0;
            int countOfUpdatedFr = 0;
            var marketingDataTable = new DataTable();

            var db = new B2BProductCatalog();

            string salesOrg = ddlBrand.SelectedItem.Value.Split('~')[0];
            string dc = ddlBrand.SelectedItem.Value.Split('~')[1];

            if (salesOrg == "0000" && dc == "00")
                //get all entries for selected SalesOrg, DistributtionChannel
                marketingDataTable = db.MarketingInfoCollection.GetAllAsDataTable();
            else
                marketingDataTable = db.MarketingInfoCollection.GetAsDataTable(
                    string.Format("SalesOrg='{0}' AND DistributionChannel='{1}'", salesOrg, dc), "");

            for (int i = 0; i < marketingDataTable.Rows.Count; i++)
            {
                if (string.IsNullOrEmpty(marketingDataTable.Rows[i]["MarketingDescEn"].ToString()))
                {
                    marketingDataTable.Rows[i].BeginEdit();
                    marketingDataTable.Rows[i]["MarketingDescEn"] = LOREMIPSUM_EN;
                    marketingDataTable.Rows[i].EndEdit();

                    countOfUpdatedEn++;
                }
                if (string.IsNullOrEmpty(marketingDataTable.Rows[i]["MarketingDescFr"].ToString()))
                {
                    marketingDataTable.Rows[i].BeginEdit();
                    marketingDataTable.Rows[i]["MarketingDescFr"] = LOREMIPSUM_FR;
                    marketingDataTable.Rows[i].EndEdit();

                    countOfUpdatedFr++;
                }
            }

            //try to run the update
            db.MarketingInfoCollection.Update(marketingDataTable);

            lblSuccess.Visible = true;
            lblSuccess.Text = string.Format("{0} styles updated with English and {1} styles updated with French marketing Lorem Ipsum description.",
                countOfUpdatedEn, countOfUpdatedFr);
        }
Exemplo n.º 22
0
        public static void CreateMarketingInfoFile(string filePath, string fileType, bool useB2CData, string locale)
        {
            var db = new B2BProductCatalog();
            var marketingDataTable = db.MarketingInfoCollection.GetAllByLocale(locale);

            if (useB2CData)
            {
                for (int i = 0; i < marketingDataTable.Rows.Count; i++)
                {
                    if (string.IsNullOrEmpty(marketingDataTable.Rows[i]["MarketingDescEn"].ToString()))
                    {
                        var row = db.B2CProductDataCollection.GetByStyleNumber(marketingDataTable.Rows[i]["StyleNumber"].ToString());

                        if (row != null)
                            if (!string.IsNullOrEmpty(row.ProductDescEn))
                            {
                                marketingDataTable.Rows[i].BeginEdit();
                                marketingDataTable.Rows[i]["MarketingDescEn"] = row.ProductDescEn;
                                marketingDataTable.Rows[i].EndEdit();
                            }
                    }
                    if (string.IsNullOrEmpty(marketingDataTable.Rows[i]["MarketingDescFr"].ToString()))
                    {
                        var row = db.B2CProductDataCollection.GetByStyleNumber(marketingDataTable.Rows[i]["StyleNumber"].ToString());

                        if (row != null)
                            if (!string.IsNullOrEmpty(row.ProductDescFr))
                            {
                                marketingDataTable.Rows[i].BeginEdit();
                                marketingDataTable.Rows[i]["MarketingDescFr"] = row.ProductDescFr;
                                marketingDataTable.Rows[i].EndEdit();
                            }
                    }
                }
            }

            try
            {
                using (var streamWriter = new StreamWriter(filePath, false, Encoding.GetEncoding(1252)))
                {
                    int iColCount = marketingDataTable.Columns.Count;

                    if (fileType.ToLower() == "mcsv")
                    {
                        //only write-out headers if not using the MKT format (required by iCongo)
                        for (int i = 0; i < iColCount; i++)
                        {
                            streamWriter.Write(marketingDataTable.Columns[i]);

                            if (i < iColCount - 1)
                            {
                                streamWriter.Write(",");
                            }
                        }

                        streamWriter.Write(streamWriter.NewLine);
                    }

                    foreach (DataRow dataRow in marketingDataTable.Rows)
                    {
                        if (fileType.ToLower() == "mmkt")
                        {
                            //when using the MKT format (required by iCongo) only write-out specific columns
                            //StyleNumber, MarketingDescEn, MarketingDescFr, Keywords, SizeRun

                            streamWriter.Write(GetLocationAbbreviation(locale) + "|");

                            //StyleNumber
                            streamWriter.Write(!Convert.IsDBNull(dataRow[1])
                                                   ? string.Format("{0}|", StripBadCharacters(dataRow[1].ToString()))
                                                   : "|");
                            //MarketingDescEn, pipe in N/A if empty
                            streamWriter.Write(!Convert.IsDBNull(dataRow[4])
                                                   ? string.Format("{0}|", HTMLEncodeSpecialChars(StripBadCharacters(dataRow[4].ToString())))
                                                   : "Description not available|");

                            //MarketingDescFr
                            if (!Convert.IsDBNull(dataRow[5]))
                                //French Marketing Description Exists
                                streamWriter.Write(string.Format("{0}|", HTMLEncodeSpecialChars(StripBadCharacters(dataRow[5].ToString()))));
                            else
                            {
                                //French Marketing Description is missing
                                if (!Convert.IsDBNull(dataRow[4]))
                                {
                                    //if English is available, use English for French
                                    streamWriter.Write(string.Format("{0}|", HTMLEncodeSpecialChars(StripBadCharacters(dataRow[4].ToString()))));
                                }
                                else
                                    //otherwise pipe in N/A if empty
                                    streamWriter.Write("Description not available|");
                            }

                            //Keywords
                            streamWriter.Write(!Convert.IsDBNull(dataRow[6])
                                                   ? string.Format("{0}|", StripBadCharacters(dataRow[6].ToString()))
                                                   : "|");
                            //SizeRun
                            if (!Convert.IsDBNull(dataRow[7]))
                            {
                                streamWriter.Write(string.Format("{0}", StripBadCharacters(dataRow[7].ToString())));
                            }

                        }
                        else
                        {
                            for (int i = 0; i < iColCount; i++)
                            {
                                if (!Convert.IsDBNull(dataRow[i]))
                                {
                                    string formattedData = dataRow[i].ToString()
                                        .Replace("\r\n", "<br />").Replace("\n", "<br />").Replace(",", "&#44;");
                                    streamWriter.Write(formattedData);
                                }

                                if (i < iColCount - 1)
                                {
                                    streamWriter.Write(",");
                                }
                            }
                        }

                        streamWriter.Write(streamWriter.NewLine);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.ErrorFormat("Error creating marketing info file. Exception: {0}", ex.Message);
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="B2CProductDataCollection_Base"/> 
 /// class with the specified <see cref="B2BProductCatalog"/>.
 /// </summary>
 /// <param name="db">The <see cref="B2BProductCatalog"/> object.</param>
 public B2CProductDataCollection_Base(B2BProductCatalog db)
 {
     _db = db;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="MarketingInfoCollection_Base"/> 
 /// class with the specified <see cref="B2BProductCatalog"/>.
 /// </summary>
 /// <param name="db">The <see cref="B2BProductCatalog"/> object.</param>
 public MarketingInfoCollection_Base(B2BProductCatalog db)
 {
     _db = db;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="MarketingInfoCollection"/> class.
 /// </summary>
 /// <param name="db">The database object.</param>
 internal MarketingInfoCollection(B2BProductCatalog db)
     : base(db)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="BrandCollection_Base"/> 
 /// class with the specified <see cref="B2BProductCatalog"/>.
 /// </summary>
 /// <param name="db">The <see cref="B2BProductCatalog"/> object.</param>
 public BrandCollection_Base(B2BProductCatalog db)
 {
     _db = db;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="FlagInfoCollection"/> class.
 /// </summary>
 /// <param name="db">The database object.</param>
 internal FlagInfoCollection(B2BProductCatalog db)
     : base(db)
 {
     // EMPTY
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="MarketingInfo_BackupCollection"/> class.
 /// </summary>
 /// <param name="db">The database object.</param>
 internal MarketingInfo_BackupCollection(B2BProductCatalog db)
     : base(db)
 {
     // EMPTY
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="FlagCategory_BackupCollection"/> class.
 /// </summary>
 /// <param name="db">The database object.</param>
 internal FlagCategory_BackupCollection(B2BProductCatalog db)
     : base(db)
 {
     // EMPTY
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="FlagCategory_ExceptionsCollection_Base"/> 
 /// class with the specified <see cref="B2BProductCatalog"/>.
 /// </summary>
 /// <param name="db">The <see cref="B2BProductCatalog"/> object.</param>
 public FlagCategory_ExceptionsCollection_Base(B2BProductCatalog db)
 {
     _db = db;
 }