/// <summary>
    /// Checks exchange rates.
    /// </summary>
    private void CheckExchangeRates()
    {
        if (ExchangeRatesCheck)
        {
            int currentSiteID = 0;

            // Check if the site is using global exchage rates
            if (!ECommerceSettings.UseGlobalExchangeRates(CMSContext.CurrentSiteName))
            {
                currentSiteID = CMSContext.CurrentSiteID;
            }

            // Retrieve last valid exchange table
            ExchangeTableInfo et = ExchangeTableInfoProvider.GetLastValidExchangeTableInfo(CMSContext.CurrentSiteID);
            if (et == null)
            {
                DisplayMessage("com.settingschecker.emptyexchangerate");
            }
            else
            {
                DataSet ds = CurrencyInfoProvider.GetCurrencies(currentSiteID, true);

                if (!DataHelper.DataSourceIsEmpty(ds))
                {
                    // Prepare where condition
                    StringBuilder sb = new StringBuilder();
                    foreach (DataRow item in ds.Tables[0].Rows)
                    {
                        sb.Append(item["CurrencyID"] + ",");
                    }
                    sb.Remove(sb.Length - 1, 1);

                    // Get exchange rate from global currency, if some global checkboxes are checked
                    if (mGlobalUsage)
                    {
                        double exchangerateFromGlobalCurrency = ExchangeTableInfoProvider.GetLastExchangeRateFromGlobalMainCurrency(CMSContext.CurrentSiteID);
                        if (exchangerateFromGlobalCurrency <= 0)
                        {
                            DisplayMessage("com.settingschecker.emptyexchangerate");
                            return;
                        }
                    }

                    // Get all exchange rates for selected table
                    DataSet exchangeDs = ExchangeRateInfoProvider.GetExchangeRates("(ExchangeTableID = " + et.ExchangeTableID + ") AND (ExchangeRateToCurrencyID IN  (" + sb.ToString() + "))", null);
                    if (DataHelper.DataSourceIsEmpty(exchangeDs))
                    {
                        // If there is only one currency in dataset, do not show error message
                        if (ds.Tables[0].Rows.Count > 1)
                        {
                            DisplayMessage("com.settingschecker.emptyexchangerate");
                            return;
                        }
                    }
                    // Check if count of currencies is same in exchangetable
                    else if ((ds.Tables[0].Rows.Count != exchangeDs.Tables[0].Rows.Count))
                    {
                        // If we are using global objects, there will be one more currency
                        if (mGlobalUsage)
                        {
                            if (ds.Tables[0].Rows.Count != exchangeDs.Tables[0].Rows.Count + 1)
                            {
                                DisplayMessage("com.settingschecker.emptyexchangerate");
                                return;
                            }
                        }
                        else
                        {
                            DisplayMessage("com.settingschecker.emptyexchangerate");
                            return;
                        }
                    }
                    else
                    {
                        foreach (DataRow item in exchangeDs.Tables[0].Rows)
                        {
                            if (item["ExchangeRateValue"] == null)
                            {
                                DisplayMessage("com.settingschecker.emptyexchangerate");
                                break;
                            }
                        }
                    }
                }
            }
        }
    }
Example #2
0
    /// <summary>
    /// Checks exchange rates.
    /// </summary>
    private void CheckExchangeRates()
    {
        if (ExchangeRatesCheck)
        {
            int currentSiteID = 0;

            // Check if the site is using global exchange rates
            if (!ECommerceSettings.UseGlobalExchangeRates(SiteContext.CurrentSiteName))
            {
                currentSiteID = SiteContext.CurrentSiteID;
            }

            // Retrieve last valid exchange table
            ExchangeTableInfo et = ExchangeTableInfoProvider.GetLastValidExchangeTableInfo(SiteContext.CurrentSiteID);
            if (et == null)
            {
                DisplayMessage("com.settingschecker.emptyexchangerate");
            }
            else
            {
                DataSet ds = CurrencyInfoProvider.GetCurrencies(currentSiteID, true);

                if (!DataHelper.DataSourceIsEmpty(ds))
                {
                    // Get exchange rate from global currency, if some global checkboxes are checked
                    if (mGlobalUsage)
                    {
                        double exchangeRateFromGlobalCurrency = ExchangeTableInfoProvider.GetLastExchangeRateFromGlobalMainCurrency(SiteContext.CurrentSiteID);
                        if (exchangeRateFromGlobalCurrency <= 0)
                        {
                            DisplayMessage("com.settingschecker.emptyexchangerate");
                            return;
                        }
                    }

                    // Prepare where condition
                    var currencyIds = DataHelper.GetIntegerValues(ds.Tables[0], "CurrencyID");

                    // Get all exchange rates for selected table
                    DataSet exchangeDs = ExchangeRateInfoProvider.GetExchangeRates(et.ExchangeTableID)
                                         .WhereIn("ExchangeRateToCurrencyID", currencyIds);

                    if (DataHelper.DataSourceIsEmpty(exchangeDs))
                    {
                        // If there is only one currency in dataset, do not show error message
                        if (ds.Tables[0].Rows.Count > 1)
                        {
                            DisplayMessage("com.settingschecker.emptyexchangerate");
                            return;
                        }
                    }
                    // Check if count of currencies is same in exchange table
                    else if ((ds.Tables[0].Rows.Count != exchangeDs.Tables[0].Rows.Count))
                    {
                        // If we are using global objects, there will be one more currency
                        if (mGlobalUsage)
                        {
                            if (ds.Tables[0].Rows.Count != exchangeDs.Tables[0].Rows.Count + 1)
                            {
                                DisplayMessage("com.settingschecker.emptyexchangerate");
                                return;
                            }
                        }
                        else
                        {
                            DisplayMessage("com.settingschecker.emptyexchangerate");
                            return;
                        }
                    }
                    else
                    {
                        foreach (DataRow item in exchangeDs.Tables[0].Rows)
                        {
                            if (item["ExchangeRateValue"] == null)
                            {
                                DisplayMessage("com.settingschecker.emptyexchangerate");
                                break;
                            }
                        }
                    }
                }
            }
        }
    }