using System.Collections.Generic;

using BS.Shared;

namespace BeWo.Data.Entities
{
    public class Query : BeWoEntityBase
    {
        public static string PropertyName_Parameter = "Parameter";

        public static string PropertyName_ReportTypeName = "ReportTypeName";

        public static string PropertyName_Sql = "Sql";

        public static string PropertyName_Title = "Title";

        public static string PropertyName_Type = "Type";

        public static string PropertyName_UserGroupOids = "UserGroupOids";

        private IList<Parameter> _Parameter;

        private string _ReportTypeName;

        private string _Sql;

        private string _Title;

        private QueryType _Type;

        private string _UserGroupOids;

        public Query()
        {
            this._Tid = TableID.Query;
        }

        public virtual IList<Parameter> Parameter
        {
            get
            {
                return this._Parameter ?? (this._Parameter = new List<Parameter>());
            }

            set
            {
                if (this.AreDifferent(this._Parameter, value))
                {
                    this._Parameter = value;
                }
            }
        }

        public virtual string ReportTypeName
        {
            get
            {
                return this._ReportTypeName;
            }

            set
            {
                if (this.AreDifferent(this._ReportTypeName, value))
                {
                    this._ReportTypeName = value;
                }
            }
        }

        public virtual string Sql
        {
            get
            {
                return this._Sql;
            }

            set
            {
                if (this.AreDifferent(this._Sql, value))
                {
                    this._Sql = value;
                }
            }
        }

        public virtual string Title
        {
            get
            {
                return this._Title;
            }

            set
            {
                if (this.AreDifferent(this._Title, value))
                {
                    this._Title = value;
                }
            }
        }

        public virtual QueryType Type
        {
            get
            {
                return this._Type;
            }

            set
            {
                if (this.AreDifferent(this._Type, value))
                {
                    this._Type = value;
                }
            }
        }

        public virtual string UserGroupOids
        {
            get
            {
                return this._UserGroupOids;
            }

            set
            {
                if (this.AreDifferent(this._UserGroupOids, value))
                {
                    this._UserGroupOids = value;
                }
            }
        }
    }
}