/// <summary> /// Generates where condition for uniselector. /// </summary> protected override string GenerateWhereCondition() { CurrencyInfo main = CurrencyInfoProvider.GetMainCurrency(SiteID); int mainCurrencyId = (main != null) ? main.CurrencyID : 0; // Prepare where condition string where = ""; if (DisplayOnlyWithExchangeRate) { ExchangeTableInfo tableInfo = ExchangeTableInfoProvider.GetLastExchangeTableInfo(SiteID); if (tableInfo != null) { where = "(CurrencyID = " + mainCurrencyId + " OR CurrencyID IN (SELECT ExchangeRateToCurrencyID FROM COM_CurrencyExchangeRate WHERE COM_CurrencyExchangeRate.ExchangeTableID = " + tableInfo.ExchangeTableID + ") AND CurrencyEnabled = 1)"; } else { where = "(0=1)"; } } // Add site main currency when required if (AddSiteDefaultCurrency && (main != null)) { where = SqlHelper.AddWhereCondition(where, "CurrencyID = " + mainCurrencyId, "OR"); } // Exclude site main currency when required if (ExcludeSiteDefaultCurrency && (main != null)) { where = SqlHelper.AddWhereCondition(where, "(NOT CurrencyID = " + mainCurrencyId + ")"); } // Add base where condition return(SqlHelper.AddWhereCondition(where, base.GenerateWhereCondition())); }
/// <summary> /// Copies site-specific exchange rates from last valid global exchange table. /// </summary> protected void CopyFromGlobal() { CheckConfigurationModification(); ExchangeTableInfo globalTable = ExchangeTableInfoProvider.GetLastExchangeTableInfo(0); if (globalTable != null) { ExchangeRateInfoProvider.CopyExchangeRates(globalTable.ExchangeTableID, mExchangeTableId); } }
protected void Page_Load(object sender, EventArgs e) { if (!RequestHelper.IsPostBack()) { ExchangeTableInfo eti = (ExchangeTableInfo)InfoToClone; if (eti != null) { dtValidFrom.SelectedDateTime = eti.ExchangeTableValidFrom; dtValidTo.SelectedDateTime = eti.ExchangeTableValidTo; } } }
private void FindCurrentTableID() { mCurrentTableId = 0; // Get current table (it will be highlighted in the listing) ExchangeTableInfo eti = ExchangeTableInfoProvider.GetLastExchangeTableInfo(SiteID); if (eti != null) { mCurrentTableId = eti.ExchangeTableID; } }
/// <summary> /// Load data of editing exchangeTable. /// </summary> /// <param name="exchangeTableObj">ExchangeTable object</param> protected void LoadData(ExchangeTableInfo exchangeTableObj) { editGrid.Columns[0].HeaderText = GetString("ExchangeTable_Edit.ToCurrency"); editGrid.Columns[1].HeaderText = GetString("ExchangeTable_Edit.RateValue"); // Get exchange rates and fill the dictionary DataSet dsExRates = ExchangeRateInfoProvider.GetExchangeRates(mExchangeTableId); if (!DataHelper.DataSourceIsEmpty(dsExRates)) { foreach (DataRow dr in dsExRates.Tables[0].Rows) { int toCurrencyId = ValidationHelper.GetInteger(dr["ExchangeRateToCurrencyID"], -1); if (!mExchangeRates.ContainsKey(toCurrencyId)) { mExchangeRates.Add(toCurrencyId, dr); } } } DataSet dsAllCurrencies = CurrencyInfoProvider.GetCurrencies(ConfiguredSiteID); // Row index of main currency int mainCurrIndex = -1; int i = 0; if (!DataHelper.DataSourceIsEmpty(dsAllCurrencies)) { // Find main currency in all currencies dataset if (mMainCurrency != null) { // Prepare site main currency unit label string siteCode = mMainCurrency.CurrencyCode; lblSiteMainCurrency.Text = siteCode; lblMainToSite.Text = string.Format(GetString("ExchangeTable_Edit.FromMainToSite"), HTMLHelper.HTMLEncode(siteCode)); // Prepare global main currency unit label string globalCode = CurrencyInfoProvider.GetMainCurrencyCode(0); lblFromGlobalToMain.Text = string.Format(GetString("ExchangeTable_Edit.FromGlobalToMain"), HTMLHelper.HTMLEncode(globalCode)); foreach (DataRow dr in dsAllCurrencies.Tables[0].Rows) { if (ValidationHelper.GetInteger(dr["CurrencyID"], -1) == mMainCurrency.CurrencyID) { mainCurrIndex = i; } i++; } } // Remove found main currency if (mainCurrIndex != -1) { dsAllCurrencies.Tables[0].Rows[mainCurrIndex].Delete(); dsAllCurrencies.AcceptChanges(); } } if (DataHelper.DataSourceIsEmpty(dsAllCurrencies)) { // Site exchange rates section is visible only when more currencies exist plcSiteRates.Visible = true;//false; lblMainToSite.Visible = true;//false; plcNoCurrency.Visible = true; } // Hide rates part when no grid visible plcGrid.Visible = plcSiteRates.Visible || plcRateFromGlobal.Visible; // Use currencies in grid editGrid.DataSource = dsAllCurrencies; editGrid.DataBind(); // Fill editing form if (!RequestHelper.IsPostBack()) { dtPickerExchangeTableValidFrom.SelectedDateTime = exchangeTableObj.ExchangeTableValidFrom; txtExchangeTableDisplayName.Text = exchangeTableObj.ExchangeTableDisplayName; dtPickerExchangeTableValidTo.SelectedDateTime = exchangeTableObj.ExchangeTableValidTo; txtGlobalExchangeRate.Text = Convert.ToString(exchangeTableObj.ExchangeTableRateFromGlobalCurrency); } }
protected void Page_Load(object sender, EventArgs e) { editGrid.RowDataBound += editGrid_RowDataBound; btnOk.Click += (s, args) => { Save(); }; // Get main currency mMainCurrency = CurrencyInfoProvider.GetMainCurrency(ConfiguredSiteID); rfvDisplayName.ErrorMessage = GetString("general.requiresdisplayname"); // Help image imgHelp.ImageUrl = GetImageUrl("General/HelpSmall.png"); imgHelp.ToolTip = GetString("ExchangeTable_Edit.ExchangeRateHelp"); imgHelpFromGlobal.ImageUrl = GetImageUrl("General/HelpSmall.png"); imgHelpFromGlobal.ToolTip = GetString("ExchangeTable_Edit.ExchangeRateHelp"); dtPickerExchangeTableValidFrom.SupportFolder = "~/CMSAdminControls/Calendar"; dtPickerExchangeTableValidTo.SupportFolder = "~/CMSAdminControls/Calendar"; string currentTableTitle = GetString("ExchangeTable_Edit.NewItemCaption"); // Get exchangeTable id from querystring mExchangeTableId = QueryHelper.GetInteger("exchangeid", 0); if (mExchangeTableId > 0) { exchangeTableObj = EditedObject as ExchangeTableInfo; if (exchangeTableObj != null) { // Check tables site id CheckEditedObjectSiteID(exchangeTableObj.ExchangeTableSiteID); // Set title currentTableTitle = exchangeTableObj.ExchangeTableDisplayName; LoadData(exchangeTableObj); // Fill editing form if (!RequestHelper.IsPostBack()) { // Show that the exchangeTable was created or updated successfully if (QueryHelper.GetString("saved", "") == "1") { // Show message ShowChangesSaved(); } } } // Init Copy from global link InitCopyFromGlobalLink(); } // Creating a new exchange table else { if (!RequestHelper.IsPostBack()) { // Preset valid from date ExchangeTableInfo tableInfo = ExchangeTableInfoProvider.GetLastExchangeTableInfo(ConfiguredSiteID); if (tableInfo != null) { dtPickerExchangeTableValidFrom.SelectedDateTime = tableInfo.ExchangeTableValidTo; } } // Grids are visible only in edit mode plcGrid.Visible = false; } // Initializes page title breadcrumbs control string[,] breadcrumbs = new string[2, 3]; breadcrumbs[0, 0] = GetString("ExchangeTable_Edit.ItemListLink"); breadcrumbs[0, 1] = "~/CMSModules/Ecommerce/Pages/Tools/Configuration/ExchangeRates/ExchangeTable_List.aspx?siteId=" + SiteID; breadcrumbs[0, 2] = ""; breadcrumbs[1, 0] = currentTableTitle; breadcrumbs[1, 1] = ""; breadcrumbs[1, 2] = ""; CurrentMaster.Title.Breadcrumbs = breadcrumbs; plcRateFromGlobal.Visible = IsFromGlobalRateNeeded(); // Check presence of main currency string currencyWarning = CheckMainCurrency(ConfiguredSiteID); if (!string.IsNullOrEmpty(currencyWarning)) { ShowWarning(currencyWarning, null, null); plcGrid.Visible = false; } }
/// <summary> /// Saves exchange rates. /// </summary> private void Save() { // Check permissions CheckConfigurationModification(); string errorMessage = new Validator().NotEmpty(txtExchangeTableDisplayName.Text.Trim(), GetString("general.requiresdisplayname")).Result; if ((errorMessage == "") && (plcRateFromGlobal.Visible)) { errorMessage = new Validator().NotEmpty(txtGlobalExchangeRate.Text.Trim(), GetString("ExchangeTable_Edit.DoubleFormatRequired")).Result; } if ((errorMessage == "") && (plcRateFromGlobal.Visible)) { if (!ValidationHelper.IsPositiveNumber(txtGlobalExchangeRate.Text.Trim()) || (ValidationHelper.GetDouble(txtGlobalExchangeRate.Text.Trim(), 0) == 0)) { errorMessage = GetString("ExchangeTable_Edit.errorRate"); } } // From/to date validation if (errorMessage == "") { if ((!dtPickerExchangeTableValidFrom.IsValidRange()) || (!dtPickerExchangeTableValidTo.IsValidRange())) { errorMessage = GetString("general.errorinvaliddatetimerange"); } if ((dtPickerExchangeTableValidFrom.SelectedDateTime != DateTime.MinValue) && (dtPickerExchangeTableValidTo.SelectedDateTime != DateTime.MinValue) && (dtPickerExchangeTableValidFrom.SelectedDateTime >= dtPickerExchangeTableValidTo.SelectedDateTime)) { errorMessage = GetString("General.DateOverlaps"); } } // Exchange rates validation if (errorMessage == String.Empty) { foreach (TextBox txt in mTextBoxes.Values) { string tmp = txt.Text.Trim(); if (tmp != String.Empty) { // Exchange rate mus be double if (!ValidationHelper.IsDouble(tmp)) { errorMessage = GetString("ExchangeTable_Edit.DoubleFormatRequired"); break; } // Exchange rate must be positive double rate = ValidationHelper.GetDouble(tmp, 1); if (rate <= 0) { errorMessage = GetString("ExchangeTable_Edit.errorRate"); } } } } // Save changes if no validation error if (errorMessage == "") { ExchangeTableInfo exchangeTableObj = ExchangeTableInfoProvider.GetExchangeTableInfo(txtExchangeTableDisplayName.Text.Trim(), SiteInfoProvider.GetSiteName(ConfiguredSiteID)); // If exchangeTableName value is unique if ((exchangeTableObj == null) || (exchangeTableObj.ExchangeTableID == mExchangeTableId)) { // Get ExchangeTableInfo object by primary key exchangeTableObj = ExchangeTableInfoProvider.GetExchangeTableInfo(mExchangeTableId); if (exchangeTableObj == null) { // Create new item -> insert exchangeTableObj = new ExchangeTableInfo(); exchangeTableObj.ExchangeTableSiteID = ConfiguredSiteID; } exchangeTableObj.ExchangeTableValidFrom = dtPickerExchangeTableValidFrom.SelectedDateTime; exchangeTableObj.ExchangeTableDisplayName = txtExchangeTableDisplayName.Text.Trim(); exchangeTableObj.ExchangeTableValidTo = dtPickerExchangeTableValidTo.SelectedDateTime; exchangeTableObj.ExchangeTableRateFromGlobalCurrency = 0; if (plcRateFromGlobal.Visible) { exchangeTableObj.ExchangeTableRateFromGlobalCurrency = ValidationHelper.GetDouble(txtGlobalExchangeRate.Text.Trim(), 0); } // Save general exchange table information ExchangeTableInfoProvider.SetExchangeTableInfo(exchangeTableObj); // Save rates on edit if (mExchangeTableId > 0) { foreach (TextBox txt in mTextBoxes.Values) { if (mData[txt.ClientID] != null) { int rateCurrencyId = ValidationHelper.GetInteger(((DataRowView)mData[txt.ClientID])["CurrencyID"], 0); bool rateExists = mExchangeRates.ContainsKey(rateCurrencyId); if (rateExists) { ExchangeRateInfo rate = new ExchangeRateInfo(mExchangeRates[rateCurrencyId]); if (txt.Text.Trim() == String.Empty) { // Remove exchange rate ExchangeRateInfoProvider.DeleteExchangeRateInfo(rate); } else { rate.ExchangeRateValue = ValidationHelper.GetDouble(txt.Text.Trim(), 0); // Update rate ExchangeRateInfoProvider.SetExchangeRateInfo(rate); } } else { if (txt.Text.Trim() != String.Empty) { // Insert exchange rate ExchangeRateInfo rate = new ExchangeRateInfo(); rate.ExchangeRateToCurrencyID = rateCurrencyId; rate.ExchangeRateValue = ValidationHelper.GetDouble(txt.Text.Trim(), 0); rate.ExchangeTableID = mExchangeTableId; ExchangeRateInfoProvider.SetExchangeRateInfo(rate); } } } } } URLHelper.Redirect("ExchangeTable_Edit.aspx?exchangeid=" + exchangeTableObj.ExchangeTableID + "&saved=1&siteId=" + SiteID); } else { // Show error message ShowError(GetString("ExchangeTable_Edit.CurrencyNameExists")); } } else { // Show error message ShowError(errorMessage); } }
/// <summary> /// Load data of editing exchangeTable. /// </summary> /// <param name="exchangeTableObj">ExchangeTable object</param> protected void LoadData(ExchangeTableInfo exchangeTableObj) { editGrid.Columns[0].HeaderText = GetString("ExchangeTable_Edit.ToCurrency"); editGrid.Columns[1].HeaderText = GetString("ExchangeTable_Edit.RateValue"); // Get exchange rates and fill the dictionary DataSet dsExRates = ExchangeRateInfoProvider.GetExchangeRates(mExchangeTableId); if (!DataHelper.DataSourceIsEmpty(dsExRates)) { foreach (DataRow dr in dsExRates.Tables[0].Rows) { int toCurrencyId = ValidationHelper.GetInteger(dr["ExchangeRateToCurrencyID"], -1); if (!mExchangeRates.ContainsKey(toCurrencyId)) { mExchangeRates.Add(toCurrencyId, dr); } } } DataSet dsAllCurrencies = CurrencyInfoProvider.GetCurrencies(ConfiguredSiteID, false); // Row index of main currency int mainCurrIndex = -1; int i = 0; if (!DataHelper.DataSourceIsEmpty(dsAllCurrencies)) { // Find main currency in all currencies dataset if (mMainCurrency != null) { // Prepare site main currency unit label string siteCode = mMainCurrency.CurrencyCode; lblSiteMainCurrency.Text = siteCode; lblMainToSite.Text = string.Format(GetString("ExchangeTable_Edit.FromMainToSite"), HTMLHelper.HTMLEncode(siteCode)); // Prepare global main currency unit label string globalCode = CurrencyInfoProvider.GetMainCurrencyCode(0); lblFromGlobalToMain.Text = string.Format(GetString("ExchangeTable_Edit.FromGlobalToMain"), HTMLHelper.HTMLEncode(globalCode)); foreach (DataRow dr in dsAllCurrencies.Tables[0].Rows) { if (ValidationHelper.GetInteger(dr["CurrencyID"], -1) == mMainCurrency.CurrencyID) { mainCurrIndex = i; } i++; } } // Remove found main currency if (mainCurrIndex != -1) { dsAllCurrencies.Tables[0].Rows[mainCurrIndex].Delete(); dsAllCurrencies.AcceptChanges(); } } if (DataHelper.DataSourceIsEmpty(dsAllCurrencies)) { // Site exchange rates section is visible only when more currencies exist plcSiteRates.Visible = false; lblMainToSite.Visible = false; plcNoCurrency.Visible = true; } // Hide rates part when no grid visible plcGrid.Visible = plcSiteRates.Visible || plcRateFromGlobal.Visible; // Use currencies in grid editGrid.DataSource = dsAllCurrencies; editGrid.DataBind(); // Fill editing form if (!RequestHelper.IsPostBack()) { dtPickerExchangeTableValidFrom.SelectedDateTime = exchangeTableObj.ExchangeTableValidFrom; txtExchangeTableDisplayName.Text = exchangeTableObj.ExchangeTableDisplayName; dtPickerExchangeTableValidTo.SelectedDateTime = exchangeTableObj.ExchangeTableValidTo; txtGlobalExchangeRate.Text = Convert.ToString(exchangeTableObj.ExchangeTableRateFromGlobalCurrency); } }
protected void Page_Load(object sender, EventArgs e) { editGrid.RowDataBound += new GridViewRowEventHandler(editGrid_RowDataBound); // Get main currency mMainCurrency = CurrencyInfoProvider.GetMainCurrency(this.ConfiguredSiteID); rfvDisplayName.ErrorMessage = GetString("general.requiresdisplayname"); // Control initializations lblExchangeTableValidFrom.Text = GetString("ExchangeTable_Edit.ExchangeTableValidFromLabel"); lblExchangeTableDisplayName.Text = GetString("ExchangeTable_Edit.ExchangeTableDisplayNameLabel"); lblExchangeTableValidTo.Text = GetString("ExchangeTable_Edit.ExchangeTableValidToLabel"); // Help image this.imgHelp.ImageUrl = GetImageUrl("General/HelpSmall.png"); this.imgHelp.ToolTip = GetString("ExchangeTable_Edit.ExchangeRateHelp"); this.imgHelpFromGlobal.ImageUrl = GetImageUrl("General/HelpSmall.png"); this.imgHelpFromGlobal.ToolTip = GetString("ExchangeTable_Edit.ExchangeRateHelp"); lblRates.Text = GetString("ExchangeTable_Edit.ExchangeRates"); btnOk.Text = GetString("General.OK"); dtPickerExchangeTableValidFrom.SupportFolder = "~/CMSAdminControls/Calendar"; dtPickerExchangeTableValidTo.SupportFolder = "~/CMSAdminControls/Calendar"; string currentTableTitle = GetString("ExchangeTable_Edit.NewItemCaption"); // Get exchangeTable id from querystring mExchangeTableId = QueryHelper.GetInteger("exchangeid", 0); if (mExchangeTableId > 0) { exchangeTableObj = ExchangeTableInfoProvider.GetExchangeTableInfo(mExchangeTableId); EditedObject = exchangeTableObj; if (exchangeTableObj != null) { // Check tables site id CheckEditedObjectSiteID(exchangeTableObj.ExchangeTableSiteID); // Set title currentTableTitle = exchangeTableObj.ExchangeTableDisplayName; LoadData(exchangeTableObj); // Fill editing form if (!RequestHelper.IsPostBack()) { // Show that the exchangeTable was created or updated successfully if (QueryHelper.GetString("saved", "") == "1") { lblInfo.Visible = true; lblInfo.Text = GetString("General.ChangesSaved"); } } } this.CurrentMaster.Title.TitleText = GetString("ExchangeTable_Edit.HeaderCaption"); this.CurrentMaster.Title.TitleImage = GetImageUrl("Objects/Ecommerce_ExchangeTable/object.png"); // Init Copy from global link InitCopyFromGlobalLink(); } // Creating a new exchange table else { if (!RequestHelper.IsPostBack()) { // Preset valid from date ExchangeTableInfo tableInfo = ExchangeTableInfoProvider.GetLastExchangeTableInfo(this.ConfiguredSiteID); if (tableInfo != null) { dtPickerExchangeTableValidFrom.SelectedDateTime = tableInfo.ExchangeTableValidTo; } } // Grids are visible only in edit mode plcGrid.Visible = false; this.CurrentMaster.Title.TitleText = GetString("ExchangeTable_New.HeaderCaption"); this.CurrentMaster.Title.TitleImage = GetImageUrl("Objects/Ecommerce_ExchangeTable/new.png"); } // Initializes page title breadcrumbs control string[,] breadcrumbs = new string[2, 3]; breadcrumbs[0, 0] = GetString("ExchangeTable_Edit.ItemListLink"); breadcrumbs[0, 1] = "~/CMSModules/Ecommerce/Pages/Tools/Configuration/ExchangeRates/ExchangeTable_List.aspx?siteId=" + SiteID; breadcrumbs[0, 2] = ""; breadcrumbs[1, 0] = currentTableTitle; breadcrumbs[1, 1] = ""; breadcrumbs[1, 2] = ""; this.CurrentMaster.Title.Breadcrumbs = breadcrumbs; this.CurrentMaster.Title.HelpTopicName = "new_rateexchange_rate_edit"; this.CurrentMaster.Title.HelpName = "helpTopic"; plcRateFromGlobal.Visible = IsFromGlobalRateNeeded(); // Check presence of main currency string currencyErr = CheckMainCurrency(ConfiguredSiteID); if (!string.IsNullOrEmpty(currencyErr)) { // Show message lblNoMainCurrency.Text = currencyErr; plcNoMainCurrency.Visible = true; plcRates.Visible = false; } }
/// <summary> /// Gets and bulk updates exchange tables. Called when the "Get and bulk update tables" button is pressed. /// Expects the CreateExchangeTable method to be run first. /// </summary> private bool GetAndBulkUpdateExchangeTables() { // Prepare the parameters string where = "ExchangeTableDisplayName LIKE N'My new table%'"; where = SqlHelperClass.AddWhereCondition(where, "ExchangeTableSiteID = " + CMSContext.CurrentSiteID, "AND"); // Get the data DataSet tables = ExchangeTableInfoProvider.GetExchangeTables(where, null); if (!DataHelper.DataSourceIsEmpty(tables)) { // Set the time TimeSpan time = TimeSpan.FromDays(14); // Loop through the individual items foreach (DataRow tableDr in tables.Tables[0].Rows) { // Create object from DataRow ExchangeTableInfo modifyTable = new ExchangeTableInfo(tableDr); // Update the properties modifyTable.ExchangeTableValidFrom = modifyTable.ExchangeTableValidFrom.Add(time); modifyTable.ExchangeTableValidTo = modifyTable.ExchangeTableValidTo.Add(time); // Update the exchange table ExchangeTableInfoProvider.SetExchangeTableInfo(modifyTable); } return true; } return false; }
/// <summary> /// Creates exchange table. Called when the "Create table" button is pressed. /// </summary> private bool CreateExchangeTable() { // Create new exchange table object ExchangeTableInfo newTable = new ExchangeTableInfo(); // Set the properties newTable.ExchangeTableDisplayName = "My new table"; newTable.ExchangeTableSiteID = CMSContext.CurrentSiteID; newTable.ExchangeTableValidFrom = DateTime.Now; newTable.ExchangeTableValidTo = DateTime.Now; // Create the exchange table ExchangeTableInfoProvider.SetExchangeTableInfo(newTable); return true; }
/// <summary> /// Inits the selector. /// </summary> protected void InitSelector() { if (this.RenderInline) { this.pnlUpdate.RenderMode = UpdatePanelRenderMode.Inline; } if (this.ShowAllItems) { this.uniSelector.MaxDisplayedItems = 1000; } this.uniSelector.EnabledColumnName = "CurrencyEnabled"; this.uniSelector.IsLiveSite = this.IsLiveSite; this.uniSelector.AllowEmpty = this.AddNoneRecord; if (DoFullPostback) { ControlsHelper.RegisterPostbackControl(this.uniSelector.DropDownSingleSelect); } if (AddSelectRecord) { string[,] fields = new string[1, 2]; fields[0, 0] = GetString("currencyselector.select"); fields[0, 1] = "-1"; this.uniSelector.SpecialFields = fields; } CurrencyInfo main = CurrencyInfoProvider.GetMainCurrency(this.SiteID); int mainCurrencyId = (main != null) ? main.CurrencyID : 0; string where = ""; if (DisplayOnlyWithExchangeRate) { ExchangeTableInfo tableInfo = ExchangeTableInfoProvider.GetLastExchangeTableInfo(this.SiteID); if (tableInfo != null) { where = "(CurrencyID = " + mainCurrencyId + " OR CurrencyID IN (SELECT ExchangeRateToCurrencyID FROM COM_CurrencyExchangeRate WHERE COM_CurrencyExchangeRate.ExchangeTableID = " + tableInfo.ExchangeTableID + ") AND CurrencyEnabled = 1)"; } else { where = "(0=1)"; } } if (this.AddSiteDefaultCurrency && (main != null)) { where = SqlHelperClass.AddWhereCondition(where, "CurrencyID = " + mainCurrencyId, "OR"); } if (this.ExcludeSiteDefaultCurrency && (main != null)) { where = SqlHelperClass.AddWhereCondition(where, "(NOT CurrencyID = " + mainCurrencyId + ")"); } // Select only records by speciffied site if (SiteID >= 0) { // Show global records by default int filteredSiteId = 0; // Check configuration when site specified if (SiteID > 0) { // Show site specific records when not using global statuses filteredSiteId = UsingGlobalObjects ? 0 : SiteID; } where = SqlHelperClass.AddWhereCondition(where, "(ISNULL(CurrencySiteID, 0) = " + filteredSiteId + ")"); } // Filter out only enabled items if (this.DisplayOnlyEnabled) { where = SqlHelperClass.AddWhereCondition(where, "CurrencyEnabled = 1"); } // Add items which have to be on the list (if any) string additionalList = SqlHelperClass.GetSafeQueryString(this.AdditionalItems, false); if ((!string.IsNullOrEmpty(where)) && (!string.IsNullOrEmpty(additionalList))) { where = SqlHelperClass.AddWhereCondition(where, "(CurrencyID IN (" + additionalList + "))", "OR"); } // Selected value (if any) must be on the list if ((!string.IsNullOrEmpty(where)) && (CurrencyID > 0) && (IncludeSelected)) { where = SqlHelperClass.AddWhereCondition(where, "(CurrencyID = " + CurrencyID + ")", "OR"); } // Set where condition this.uniSelector.WhereCondition = where; }
/// <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; } } } } } } }
protected void Page_Load(object sender, EventArgs e) { editGrid.RowDataBound += editGrid_RowDataBound; btnOk.Click += (s, args) => Save(); // Get main currency mMainCurrency = CurrencyInfoProvider.GetMainCurrency(ConfiguredSiteID); rfvDisplayName.ErrorMessage = GetString("general.requiresdisplayname"); // Help image iconHelpGlobalExchangeRate.ToolTip = GetString("ExchangeTable_Edit.ExchangeRateHelp"); iconHelpMainExchangeRate.ToolTip = GetString("ExchangeTable_Edit.ExchangeRateHelp"); dtPickerExchangeTableValidFrom.SupportFolder = "~/CMSAdminControls/Calendar"; dtPickerExchangeTableValidTo.SupportFolder = "~/CMSAdminControls/Calendar"; // Use timezones for DateTimePickers CMS.Globalization.TimeZoneInfo tzi = TimeZoneHelper.GetTimeZoneInfo(MembershipContext.AuthenticatedUser, SiteContext.CurrentSite); dtPickerExchangeTableValidFrom.TimeZone = TimeZoneTypeEnum.Custom; dtPickerExchangeTableValidFrom.CustomTimeZone = tzi; dtPickerExchangeTableValidTo.TimeZone = TimeZoneTypeEnum.Custom; dtPickerExchangeTableValidTo.CustomTimeZone = tzi; // Get exchangeTable id from querystring mExchangeTableId = QueryHelper.GetInteger("exchangeid", 0); if (mExchangeTableId > 0) { exchangeTableObj = EditedObject as ExchangeTableInfo; if (exchangeTableObj != null) { // Check tables site id CheckEditedObjectSiteID(exchangeTableObj.ExchangeTableSiteID); LoadData(exchangeTableObj); // Fill editing form if (!RequestHelper.IsPostBack()) { // Show that the exchangeTable was created or updated successfully if (QueryHelper.GetString("saved", "") == "1") { // Show message ShowChangesSaved(); } } } // Init Copy from global link InitCopyFromGlobalLink(); // Check presence of main currency plcGrid.Visible = CheckMainCurrency(ConfiguredSiteID); plcRateFromGlobal.Visible = IsFromGlobalRateNeeded(); } // Creating a new exchange table else { if (!RequestHelper.IsPostBack()) { // Preset valid from date ExchangeTableInfo tableInfo = ExchangeTableInfoProvider.GetLastExchangeTableInfo(ConfiguredSiteID); if (tableInfo != null) { dtPickerExchangeTableValidFrom.SelectedDateTime = tableInfo.ExchangeTableValidTo; } } // Grids are visible only in edit mode plcGrid.Visible = false; } // Register bootstrap tooltip over help icons ScriptHelper.RegisterBootstrapTooltip(Page, ".info-icon > i"); }
/// <summary> /// Saves exchange rates. /// </summary> private void Save() { // Check permissions CheckConfigurationModification(); string errorMessage = new Validator().NotEmpty(txtExchangeTableDisplayName.Text.Trim(), GetString("general.requiresdisplayname")).Result; if ((errorMessage == "") && (plcRateFromGlobal.Visible)) { errorMessage = new Validator().NotEmpty(txtGlobalExchangeRate.Text.Trim(), GetString("ExchangeTable_Edit.DoubleFormatRequired")).Result; } if ((errorMessage == "") && (plcRateFromGlobal.Visible)) { if (!ValidationHelper.IsPositiveNumber(txtGlobalExchangeRate.Text.Trim()) || (ValidationHelper.GetDouble(txtGlobalExchangeRate.Text.Trim(), 0) == 0)) { errorMessage = GetString("ExchangeTable_Edit.errorRate"); } } // From/to date validation if (errorMessage == "") { if ((!dtPickerExchangeTableValidFrom.IsValidRange()) || (!dtPickerExchangeTableValidTo.IsValidRange())) { errorMessage = GetString("general.errorinvaliddatetimerange"); } if ((dtPickerExchangeTableValidFrom.SelectedDateTime != DateTime.MinValue) && (dtPickerExchangeTableValidTo.SelectedDateTime != DateTime.MinValue) && (dtPickerExchangeTableValidFrom.SelectedDateTime >= dtPickerExchangeTableValidTo.SelectedDateTime)) { errorMessage = GetString("General.DateOverlaps"); } } // Exchange rates validation if (errorMessage == String.Empty) { foreach (TextBox txt in mTextBoxes.Values) { string tmp = txt.Text.Trim(); if (tmp != String.Empty) { // Exchange rate mus be double if (!ValidationHelper.IsDouble(tmp)) { errorMessage = GetString("ExchangeTable_Edit.DoubleFormatRequired"); break; } // Exchange rate must be positive double rate = ValidationHelper.GetDouble(tmp, 1); if (rate <= 0) { errorMessage = GetString("ExchangeTable_Edit.errorRate"); } } } } // Save changes if no validation error if (errorMessage == "") { // Truncate display name string displayName = txtExchangeTableDisplayName.Text.Trim().Truncate(txtExchangeTableDisplayName.MaxLength); ExchangeTableInfo exchangeTableObj = ExchangeTableInfoProvider.GetExchangeTableInfo(displayName, SiteInfoProvider.GetSiteName(ConfiguredSiteID)); // If exchangeTableName value is unique if ((exchangeTableObj == null) || (exchangeTableObj.ExchangeTableID == mExchangeTableId)) { // Get ExchangeTableInfo object by primary key exchangeTableObj = ExchangeTableInfoProvider.GetExchangeTableInfo(mExchangeTableId); if (exchangeTableObj == null) { // Create new item -> insert exchangeTableObj = new ExchangeTableInfo(); exchangeTableObj.ExchangeTableSiteID = ConfiguredSiteID; } exchangeTableObj.ExchangeTableValidFrom = dtPickerExchangeTableValidFrom.SelectedDateTime; exchangeTableObj.ExchangeTableDisplayName = displayName; exchangeTableObj.ExchangeTableValidTo = dtPickerExchangeTableValidTo.SelectedDateTime; exchangeTableObj.ExchangeTableRateFromGlobalCurrency = 0; if (plcRateFromGlobal.Visible) { exchangeTableObj.ExchangeTableRateFromGlobalCurrency = ValidationHelper.GetDouble(txtGlobalExchangeRate.Text.Trim(), 0); } // Save general exchange table information ExchangeTableInfoProvider.SetExchangeTableInfo(exchangeTableObj); // Save rates on edit if (mExchangeTableId > 0) { foreach (TextBox txt in mTextBoxes.Values) { if (mData[txt.ClientID] != null) { int rateCurrencyId = ValidationHelper.GetInteger(((DataRowView)mData[txt.ClientID])["CurrencyID"], 0); bool rateExists = mExchangeRates.ContainsKey(rateCurrencyId); if (rateExists) { ExchangeRateInfo rate = new ExchangeRateInfo(mExchangeRates[rateCurrencyId]); if (txt.Text.Trim() == String.Empty) { // Remove exchange rate ExchangeRateInfoProvider.DeleteExchangeRateInfo(rate); } else { rate.ExchangeRateValue = ValidationHelper.GetDouble(txt.Text.Trim(), 0); // Update rate ExchangeRateInfoProvider.SetExchangeRateInfo(rate); } } else { if (txt.Text.Trim() != String.Empty) { // Insert exchange rate ExchangeRateInfo rate = new ExchangeRateInfo(); rate.ExchangeRateToCurrencyID = rateCurrencyId; rate.ExchangeRateValue = ValidationHelper.GetDouble(txt.Text.Trim(), 0); rate.ExchangeTableID = mExchangeTableId; ExchangeRateInfoProvider.SetExchangeRateInfo(rate); } } } } } URLHelper.Redirect("ExchangeTable_Edit.aspx?exchangeid=" + exchangeTableObj.ExchangeTableID + "&saved=1&siteId=" + SiteID); } else { // Show error message ShowError(GetString("ExchangeTable_Edit.CurrencyNameExists")); } } else { // Show error message ShowError(errorMessage); } }
/// <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; } } } } } } }
protected void Page_Load(object sender, EventArgs e) { editGrid.RowDataBound += editGrid_RowDataBound; btnOk.Click += (s, args) => Save(); // Get main currency mMainCurrency = CurrencyInfoProvider.GetMainCurrency(ConfiguredSiteID); rfvDisplayName.ErrorMessage = GetString("general.requiresdisplayname"); // Help image iconHelpGlobalExchangeRate.ToolTip = GetString("ExchangeTable_Edit.ExchangeRateHelp"); iconHelpMainExchangeRate.ToolTip = GetString("ExchangeTable_Edit.ExchangeRateHelp"); // Use time zones for DateTimePickers CMS.Globalization.TimeZoneInfo tzi = TimeZoneHelper.GetTimeZoneInfo(MembershipContext.AuthenticatedUser, SiteContext.CurrentSite); dtPickerExchangeTableValidFrom.TimeZone = TimeZoneTypeEnum.Custom; dtPickerExchangeTableValidFrom.CustomTimeZone = tzi; dtPickerExchangeTableValidTo.TimeZone = TimeZoneTypeEnum.Custom; dtPickerExchangeTableValidTo.CustomTimeZone = tzi; // Get exchangeTable id from query string mExchangeTableId = QueryHelper.GetInteger("exchangeid", 0); if (mExchangeTableId > 0) { exchangeTableObj = EditedObject as ExchangeTableInfo; if (exchangeTableObj != null) { // Check tables site id CheckEditedObjectSiteID(exchangeTableObj.ExchangeTableSiteID); LoadData(exchangeTableObj); // Fill editing form if (!RequestHelper.IsPostBack()) { // Show that the exchangeTable was created or updated successfully if (QueryHelper.GetString("saved", "") == "1") { // Show message ShowChangesSaved(); } } } // Init Copy from global link InitCopyFromGlobalLink(); // Check presence of main currency plcGrid.Visible = CheckMainCurrency(ConfiguredSiteID); plcRateFromGlobal.Visible = IsFromGlobalRateNeeded(); } // Creating a new exchange table else { if (!RequestHelper.IsPostBack()) { // Preset valid from date ExchangeTableInfo tableInfo = ExchangeTableInfoProvider.GetLastExchangeTableInfo(ConfiguredSiteID); if (tableInfo != null) { dtPickerExchangeTableValidFrom.SelectedDateTime = tableInfo.ExchangeTableValidTo; } } // Grids are visible only in edit mode plcGrid.Visible = false; } // Register bootstrap tooltip over help icons ScriptHelper.RegisterBootstrapTooltip(Page, ".info-icon > i"); }