public static FtpClientConfiguration GetFtpConfigurationFromSettings(Setting[] settings)
        {
            var settingsList = settings.ToList();
            var settingNames = settingsList.ToList().Select(s => s.Name);
            if (!settingNames.Contains("Password"))
            {
                throw new Exception("Password is a required setting.");
            }

            if (!settingNames.Contains("UserName"))
            {
                throw new Exception("UserName is a required setting.");
            }

            if (!settingNames.Contains("Uri"))
            {
                throw new Exception("Uri is a required setting.");
            }

            if (!settingNames.Contains("TargetFileName"))
            {
                throw new Exception("Target File Name is a required setting.");
            }

            if (!settingNames.Contains("FileFormat"))
            {
                throw new Exception("File Format is a required setting.");
            }

            var config = new FtpClientConfiguration();
            config.EnableSsl = settingNames.Contains("EnableSsl")
                                ? Convert.ToBoolean(settingsList.ToList().First(x => x.Name == "EnableSsl").Value)
                                : false;
            config.KeepAlive = settingNames.Contains("KeepAlive")
                                ? Convert.ToBoolean(settingsList.ToList().First(x => x.Name == "KeepAlive").Value)
                                : false;
            config.UseBinary = settingNames.Contains("UseBinary")
                                ? Convert.ToBoolean(settingsList.ToList().First(x => x.Name == "UseBinary").Value)
                                : true;
            config.UsePassive = settingNames.Contains("UsePassive")
                                ? Convert.ToBoolean(settingsList.ToList().First(x => x.Name == "UsePassive").Value)
                                : false;
            config.AppendExecutionDateToFileName = settingNames.Contains("AppendExecutionDateToFileName")
                                ? Convert.ToBoolean(settingsList.ToList().First(x => x.Name == "AppendExecutionDateToFileName").Value)
                                : false;
            config.FtpPort = settingNames.Contains("FtpPort")
                                ? Convert.ToInt32(settingsList.ToList().First(x => x.Name == "FtpPort").Value)
                                : 21;
            config.FtpFolder = settingNames.Contains("FtpFolder")
                                ? settingsList.ToList().First(x => x.Name == "FtpFolder").Value
                                : String.Empty;
            config.DateTimeFormatToAppend = settingNames.Contains("DateTimeFormatToAppend")
                                ? settingsList.ToList().First(x => x.Name == "DateTimeFormatToAppend").Value
                                : String.Empty;
            
            config.Password = settingsList.ToList().First(x => x.Name == "Password").Value;
            config.TargetFileName = settingsList.ToList().First(x => x.Name == "TargetFileName").Value;
            config.Uri = settingsList.ToList().First(x => x.Name == "Uri").Value;
            config.UserName = settingsList.ToList().First(x => x.Name == "UserName").Value;
            config.FileFormat = settingsList.ToList().First(x => x.Name == "FileFormat").Value;
            return config;
        }