/// <summary>
 /// Add common parameters before calling a procedure
 /// </summary>
 /// <param name="cmd">command object, where parameters will be added</param>
 /// <param name="chatUserObject"></param>
 private void AddCommonParams(SqlCommand cmd, ChatUserBase chatUserObject)
 {
     AddParameter(cmd, pGuid(ChatUserBase.Property_ChatUserId, chatUserObject.ChatUserId));
     AddParameter(cmd, pNVarChar(ChatUserBase.Property_Name, 50, chatUserObject.Name));
     AddParameter(cmd, pNVarChar(ChatUserBase.Property_Email, 50, chatUserObject.Email));
     AddParameter(cmd, pNVarChar(ChatUserBase.Property_Phone, 50, chatUserObject.Phone));
     AddParameter(cmd, pDateTime(ChatUserBase.Property_JoinDate, chatUserObject.JoinDate));
     AddParameter(cmd, pDateTime(ChatUserBase.Property_ChatEnd, chatUserObject.ChatEnd));
     AddParameter(cmd, pNVarChar(ChatUserBase.Property_Ip, 50, chatUserObject.Ip));
     AddParameter(cmd, pNVarChar(ChatUserBase.Property_UserAgent, chatUserObject.UserAgent));
     AddParameter(cmd, pGuid(ChatUserBase.Property_EmployeeId, chatUserObject.EmployeeId));
 }
        /// <summary>
        /// Updates ChatUser
        /// </summary>
        /// <param name="chatUserObject">Object to be updated</param>
        /// <returns>Number of rows affected</returns>
        public long Update(ChatUserBase chatUserObject)
        {
            try
            {
                SqlCommand cmd = GetSPCommand(UPDATECHATUSER);

                AddParameter(cmd, pInt32(ChatUserBase.Property_Id, chatUserObject.Id));
                AddCommonParams(cmd, chatUserObject);

                long result = UpdateRecord(cmd);
                if (result > 0)
                {
                    chatUserObject.RowState = BaseBusinessEntity.RowStateEnum.NormalRow;
                }
                return(result);
            }
            catch (SqlException x)
            {
                throw new ObjectUpdateException(chatUserObject, x);
            }
        }
        /// <summary>
        /// Inserts ChatUser
        /// </summary>
        /// <param name="chatUserObject">Object to be inserted</param>
        /// <returns>Number of rows affected</returns>
        public long Insert(ChatUserBase chatUserObject)
        {
            try
            {
                SqlCommand cmd = GetSPCommand(INSERTCHATUSER);

                AddParameter(cmd, pInt32Out(ChatUserBase.Property_Id));
                AddCommonParams(cmd, chatUserObject);

                long result = InsertRecord(cmd);
                if (result > 0)
                {
                    chatUserObject.RowState = BaseBusinessEntity.RowStateEnum.NormalRow;
                    chatUserObject.Id       = (Int32)GetOutParameter(cmd, ChatUserBase.Property_Id);
                }
                return(result);
            }
            catch (SqlException x)
            {
                throw new ObjectInsertException(chatUserObject, x);
            }
        }
        /// <summary>
        /// Fills ChatUser object
        /// </summary>
        /// <param name="chatUserObject">The object to be filled</param>
        /// <param name="reader">The reader to use to fill a single object</param>
        /// <param name="start">The ordinal position from which to start reading the reader</param>
        protected void FillObject(ChatUserBase chatUserObject, SqlDataReader reader, int start)
        {
            chatUserObject.Id         = reader.GetInt32(start + 0);
            chatUserObject.ChatUserId = reader.GetGuid(start + 1);
            chatUserObject.Name       = reader.GetString(start + 2);
            if (!reader.IsDBNull(3))
            {
                chatUserObject.Email = reader.GetString(start + 3);
            }
            chatUserObject.Phone    = reader.GetString(start + 4);
            chatUserObject.JoinDate = reader.GetDateTime(start + 5);
            if (!reader.IsDBNull(6))
            {
                chatUserObject.ChatEnd = reader.GetDateTime(start + 6);
            }
            chatUserObject.Ip         = reader.GetString(start + 7);
            chatUserObject.UserAgent  = reader.GetString(start + 8);
            chatUserObject.EmployeeId = reader.GetGuid(start + 9);
            FillBaseObject(chatUserObject, reader, (start + 10));


            chatUserObject.RowState = BaseBusinessEntity.RowStateEnum.NormalRow;
        }
 /// <summary>
 /// Fills ChatUser object
 /// </summary>
 /// <param name="chatUserObject">The object to be filled</param>
 /// <param name="reader">The reader to use to fill a single object</param>
 protected void FillObject(ChatUserBase chatUserObject, SqlDataReader reader)
 {
     FillObject(chatUserObject, reader, 0);
 }