/// <summary>
        /// Fetch System Parameters
        /// </summary>
        /// <returns>IEnumerable{SystemParametersDto}.</returns>
        /// <exception cref="DataAccessException"></exception>
        public IEnumerable<SystemParametersDto> FetchSystemParameters()
        {
            const string Sql = @"
  SELECT [Id]
      ,[Name]
      ,[Documentation]
	  ,[Type]
	  ,[ProcessSystemName]  
	  ,[Expression]  
      ,[GuidId]
      ,[LastModifiedOn]
  FROM [dbo].[SystemParameters] sp
  WHERE  sp.IsRemoved = 0
";

            var result = new List<SystemParametersDto>();
            Database.GetDataReader(
                Sql,
                reader =>
                {
                    if (reader == null)
                    {
                        throw new DataAccessException(Resources.FailedToRetrieveSystemOptions);
                    }

                    using (var sr = new SafeDataReader(reader))
                    {
                        while (reader.Read())
                        {
                            var parameter = new SystemParametersDto
                                                {
                                                    ParameterId = sr.GetInt32(0),
                                                    Name = sr.GetString(1),
                                                    Documentation = sr.GetString(2),
                                                    ParameterType = !string.IsNullOrEmpty(reader.GetString(3))
                                                        ? (SystemParameterType)Enum.Parse(typeof(SystemParameterType), reader.GetString(3))
                                                        : SystemParameterType.Int,
                                                    PersonProcessSystemName = sr.GetString(4),
                                                    Expression = sr.GetString(5),
                                                    Guid = sr.GetGuid(6),
                                                    LastModifiedOn = sr.GetDateTime(7)
                                                };

                            result.Add(parameter);
                        }
                    }
                });

            return result;
        }
        /// <summary>
        /// Update System Parameters
        /// </summary>
        /// <param name="parameters">The parameters.</param>
        public void UpdateSystemParameters(SystemParametersDto parameters)
        {
            const string Sql = @"
UPDATE SystemParameters
SET
    [Name] = @Name,
    [Documentation] = @Documentation,
    [Type] = @Type,
	[ProcessSystemName] = @ProcessSystemName,
    [Expression] = @Expression,
    [GuidId] = @Guid,
    [LastModifiedOn] = GETDATE()
WHERE  [Id] = @p_Id

";
            using (var cmd = new SqlCommand(Sql))
            {
                if (parameters != null)
                {
                    cmd.Parameters.AddWithValue("@p_Id", parameters.ParameterId);
                    cmd.Parameters.AddWithValue("@Name", parameters.Name);
                    cmd.Parameters.AddWithValue("@Documentation", parameters.Documentation);
                    cmd.Parameters.AddWithValue("@Type", parameters.ParameterType.ToString());
                    cmd.Parameters.AddWithValue("@ProcessSystemName", parameters.PersonProcessSystemName);
                    cmd.Parameters.AddWithValue("@Expression", parameters.Expression);
                    cmd.Parameters.AddWithValue("@Guid", parameters.Guid);
                }

                Database.Execute(cmd);
            }
        }
        /// <summary>
        /// Insert System Parameters
        /// </summary>
        /// <param name="parameters">The parameters.</param>
        public void InsertSystemParameters(SystemParametersDto parameters)
        {
            const string Sql = @"
INSERT  INTO [dbo].[SystemParameters]
        ( 
          [Name],
          [Documentation],
          [Type],    
          [ProcessSystemName],
          [Expression] ,
          [GuidId],
          [LastModifiedOn]
     
        )
VALUES  ( 
          @Name,
          @Documentation,
          @Type,
          @ProcessSystemName,
          @Expression ,
          @Guid,
          GETDATE()       
        );
        
        SELECT [Id] FROM [dbo].[SystemParameters] WHERE Id = SCOPE_IDENTITY()";


            using (var ctx = ConnectionManager<SqlConnection>.GetManager(Database.VeyronMeta, false))
            {
                var cn = ctx.Connection;

                using (var cmd = new SqlCommand(Sql, cn))
                {
                    if (parameters != null)
                    {
                        cmd.Parameters.AddWithValue("@Name", parameters.Name);
                        cmd.Parameters.AddWithValue("@Documentation", parameters.Documentation);
                        cmd.Parameters.AddWithValue("@Type", parameters.ParameterType.ToString());
                        cmd.Parameters.AddWithValue("@ProcessSystemName", parameters.PersonProcessSystemName);
                        cmd.Parameters.AddWithValue("@Expression", parameters.Expression);
                        cmd.Parameters.AddWithValue("@Guid", parameters.Guid);

                        parameters.ParameterId = (int)cmd.ExecuteScalar();
                    }
                }
            }
        }