/// <summary>
        /// Creates a new ReviewChecklist record using async
        /// </summary>
        public static async Task<int> CreateAsync(ReviewChecklistDO DO)
        {
            SqlParameter _ChecklistTypeID = new SqlParameter("ChecklistTypeID", SqlDbType.VarChar);
            SqlParameter _PermitKey = new SqlParameter("PermitKey", SqlDbType.Int);
            SqlParameter _Section = new SqlParameter("Section", SqlDbType.VarChar);
            SqlParameter _SubSection = new SqlParameter("SubSection", SqlDbType.VarChar);
            SqlParameter _Description = new SqlParameter("Description", SqlDbType.VarChar);
            SqlParameter _UserToken = new SqlParameter("UserToken", SqlDbType.VarChar);
            
            _ChecklistTypeID.Value = DO.ChecklistTypeID;
            _PermitKey.Value = DO.PermitKey;
            _Section.Value = DO.Section;
            _SubSection.Value = DO.SubSection;
            _Description.Value = DO.Description;
            _UserToken.Value = DO.UserToken;
            
            SqlParameter[] _params = new SqlParameter[] {
                _ChecklistTypeID,
                _PermitKey,
                _Section,
                _SubSection,
                _Description,
                _UserToken
            };

            string pid = ConfigurationManager.AppSettings["ePermitDAL"];

            return await DataCommon.ExecuteScalarAsync("[dbo].[ReviewChecklist_Insert]", _params, pid);
            
        }
        /// <summary>
        /// Gets all ReviewChecklist records
        /// </summary>
        public static ReviewChecklistDO[] GetAll()
        {

            string pid = ConfigurationManager.AppSettings["ePermitDAL"];

            SafeReader sr = DataCommon.ExecuteSafeReader("[dbo].[ReviewChecklist_GetAll]", new SqlParameter[] { }, pid);
            
            List<ReviewChecklistDO> objs = new List<ReviewChecklistDO>();
            
            while(sr.Read()){

                ReviewChecklistDO obj = new ReviewChecklistDO();
                
                obj.ReviewChecklistID = sr.GetInt32(sr.GetOrdinal("ReviewChecklistID"));
                obj.ChecklistTypeID = sr.GetString(sr.GetOrdinal("ChecklistTypeID"));
                obj.PermitKey = sr.GetInt32(sr.GetOrdinal("PermitKey"));
                obj.Section = sr.GetString(sr.GetOrdinal("Section"));
                obj.SubSection = sr.GetString(sr.GetOrdinal("SubSection"));
                if (sr.IsDBNull(sr.GetOrdinal("Description"))) { obj.Description = null; } else { obj.Description = sr.GetString(sr.GetOrdinal("Description")); }
                if (sr.IsDBNull(sr.GetOrdinal("UserToken"))) { obj.UserToken = null; } else { obj.UserToken = sr.GetString(sr.GetOrdinal("UserToken")); }


                objs.Add(obj);
            }

            return objs.ToArray();
        }
        /// <summary>
        /// Selects ReviewChecklist records by PK
        /// </summary>
        public static async Task<ReviewChecklistDO[]> GetByPKAsync(Int32 ReviewChecklistID)
        {

            SqlParameter _ReviewChecklistID = new SqlParameter("ReviewChecklistID", SqlDbType.Int);
			
            _ReviewChecklistID.Value = ReviewChecklistID;
			
            SqlParameter[] _params = new SqlParameter[] {
                _ReviewChecklistID
            };

            string pid = ConfigurationManager.AppSettings["ePermitDAL"];

            SafeReader sr = await DataCommon.ExecuteSafeReaderAsync("[dbo].[ReviewChecklist_GetByPK]", _params, pid);


            List<ReviewChecklistDO> objs = new List<ReviewChecklistDO>();
			
            while(sr.Read())
            {
                ReviewChecklistDO obj = new ReviewChecklistDO();
				
                obj.ReviewChecklistID = sr.GetInt32(sr.GetOrdinal("ReviewChecklistID"));
                obj.ChecklistTypeID = sr.GetString(sr.GetOrdinal("ChecklistTypeID"));
                obj.PermitKey = sr.GetInt32(sr.GetOrdinal("PermitKey"));
                obj.Section = sr.GetString(sr.GetOrdinal("Section"));
                obj.SubSection = sr.GetString(sr.GetOrdinal("SubSection"));
                if (sr.IsDBNull(sr.GetOrdinal("Description"))) { obj.Description = null; } else { obj.Description = sr.GetString(sr.GetOrdinal("Description")); }
                if (sr.IsDBNull(sr.GetOrdinal("UserToken"))) { obj.UserToken = null; } else { obj.UserToken = sr.GetString(sr.GetOrdinal("UserToken")); }

                objs.Add(obj);
            }

            return objs.ToArray();
        }
        /// <summary>
        /// Deletes a ReviewChecklist record
        /// </summary>
        public static async Task<int> DeleteAsync(ReviewChecklistDO DO)
        {
            SqlParameter _ReviewChecklistID = new SqlParameter("ReviewChecklistID", SqlDbType.Int);
            
            _ReviewChecklistID.Value = DO.ReviewChecklistID;
            
            SqlParameter[] _params = new SqlParameter[] {
                _ReviewChecklistID
            };

            string pid = ConfigurationManager.AppSettings["ePermitDAL"];

            return await DataCommon.ExecuteScalarAsync("[dbo].[ReviewChecklist_Delete]", _params, pid);
        }