private bool SetPaymentConfigSettings(AdminPeripheralSetting setting, ref string exceptionMessage) { try { logger.Info(PAYMENT_LOG, string.Format("Updating c3config setting : {0}", setting.ControlName)); switch (setting.ControlType) { case SettingDataType.String: if (setting.RealName.Equals("AXIS_COM") || setting.RealName.Equals("AXIS_COM2")) { return(IniFilesSimple.WriteValue(setting.RealName, string.Format("socket {0}", ((string)setting.CurrentValue).Trim()), Path.Combine(DriverLocation, C3NET_CONFIG), ref exceptionMessage)); } //This is a treatment for the previous case where the COM was a string type not a SerialPortSelection type setting else if (setting.RealName.Equals("L10_COM")) { //The user is only able to modify the com port, not the speed, parity and other properties of the COM return(IniFilesSimple.WriteValue(setting.RealName, string.Format("{0} 115200/8/1/0", ((string)setting.CurrentValue).Trim()), Path.Combine(DriverLocation, C3NET_CONFIG), ref exceptionMessage)); } //For any other setting else { return(IniFilesSimple.WriteValue(setting.RealName, (string)setting.CurrentValue, Path.Combine(DriverLocation, C3NET_CONFIG), ref exceptionMessage)); } case SettingDataType.SerialPortSelection: //The user is only able to modify the com port, not the speed, parity and other properties of the COM return(IniFilesSimple.WriteValue(setting.RealName, string.Format("{0} 115200/8/1/0", ((string)setting.CurrentValue).Trim()), Path.Combine(DriverLocation, C3NET_CONFIG), ref exceptionMessage)); case SettingDataType.Int: return(IniFilesSimple.WriteValue(setting.RealName, setting.CurrentValue.ToString(), Path.Combine(DriverLocation, C3NET_CONFIG), ref exceptionMessage)); case SettingDataType.Bool: return(IniFilesSimple.WriteValue(setting.RealName, setting.CurrentValue.ToString(), Path.Combine(DriverLocation, C3NET_CONFIG), ref exceptionMessage)); default: return(false); } } catch (Exception ex) { logger.Error(PAYMENT_LOG, string.Format("SetPaymentConfigSettings : Failed to write payment setting.\r\n{0}", ex.ToString())); return(false); } }
/// <summary> /// Update the settings in all the configuration files with the ones stored in the Account /// This method will be called when the a device is Set from Admin or when a device is loaded at Core startup /// </summary> /// <param name="configJson"></param> /// <param name="overwrite"></param> /// <returns></returns> public bool UpdateSettings(string configJson, bool overwrite = false) { string exceptionMessage = ""; try { //Deserialize the config object to get access to the driver settings Payment payment = JsonConvert.DeserializeObject <Payment>(configJson); //Check if the config object is empty if (currentPaymentInitConfig != payment) { //Save the settings foreach (AdminPeripheralSetting paymentSetting in payment.ConfigurationSettings) { switch (paymentSetting.RealName) { case "Currency": currency = paymentSetting; break; case "L10_COM": //Update the c3config filed if (!SetPaymentConfigSettings(paymentSetting, ref exceptionMessage)) { logger.Info(PAYMENT_LOG, $"Failed to update c3config setting : {paymentSetting.ControlName}. {exceptionMessage}"); return(false); } comPort = paymentSetting; break; case "QTPV": //Update the c3config filed if (!SetPaymentConfigSettings(paymentSetting, ref exceptionMessage)) { logger.Info(PAYMENT_LOG, $"Failed to update c3config setting : {paymentSetting.ControlName}. {exceptionMessage}"); return(false); } terminalID = paymentSetting; break; case "AXIS_COM": //Update the c3config filed if (!SetPaymentConfigSettings(paymentSetting, ref exceptionMessage)) { logger.Info(PAYMENT_LOG, $"Failed to update c3config setting : {paymentSetting.ControlName}. {exceptionMessage}"); return(false); } first_server = paymentSetting; break; case "AXIS_COM2": //Update the c3config filed if (!SetPaymentConfigSettings(paymentSetting, ref exceptionMessage)) { logger.Info(PAYMENT_LOG, $"Failed to update c3config setting : {paymentSetting.ControlName}. {exceptionMessage}"); return(false); } second_server = paymentSetting; break; case "REPOS_1": //Update the c3config filed if (!SetPaymentConfigSettings(paymentSetting, ref exceptionMessage)) { logger.Info(PAYMENT_LOG, $"Failed to update c3config setting : {paymentSetting.ControlName}. {exceptionMessage}"); return(false); } messageLineOne = paymentSetting; break; case "REPOS_2": //Update the c3config filed if (!SetPaymentConfigSettings(paymentSetting, ref exceptionMessage)) { logger.Info(PAYMENT_LOG, $"Failed to update c3config setting : {paymentSetting.ControlName}. {exceptionMessage}"); return(false); } messageLineTwo = paymentSetting; break; case "CARTES": //Update the c3config filed if (!SetPaymentConfigSettings(paymentSetting, ref exceptionMessage)) { logger.Info(PAYMENT_LOG, $"Failed to update c3config setting : {paymentSetting.ControlName}. {exceptionMessage}"); return(false); } cardApplications = paymentSetting; break; case "KIOSK": //Update the c3config filed if (!SetPaymentConfigSettings(paymentSetting, ref exceptionMessage)) { logger.Info(PAYMENT_LOG, $"Failed to update c3config setting : {paymentSetting.ControlName}. {exceptionMessage}"); return(false); } kioskID = paymentSetting; break; } } //Update the c3config "VISA_RRP_DATA" filed with this new Value. //This update it will not allow contact-less payments to be processed off-line(which we now can't do because of UK Law) logger.Info(PAYMENT_LOG, "Updating c3config setting : VISA_RRP_DATA"); if (!IniFilesSimple.WriteValue("VISA_RRP_DATA", VISA_RRP_DATA_VALUE, Path.Combine(DriverLocation, C3NET_CONFIG), ref exceptionMessage)) { logger.Info(PAYMENT_LOG, $"Failed to update c3config setting : VISA_RRP_DATA. \r\n {exceptionMessage}"); return(false); } } //Return with failure if the payment config is empty else { return(false); } return(true); } catch (Exception ex) { logger.Error(PAYMENT_LOG, string.Format("Failed to initialize payment settings.\r\n{0}", ex.ToString())); } return(false); }