/// <summary>
        /// Populate business object from data reader
        /// </summary>
        /// <param name="businessObject">business object</param>
        /// <param name="dataReader">data reader</param>
        internal void PopulateBusinessTasksObjectFromReader(clsWeeklyReport businessObject, IDataReader dataReader)
        {
            businessObject.WR_PROJ_ID = dataReader.GetInt32(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_PROJ_ID.ToString()));
            businessObject.WR_SUBJECT = dataReader.GetString(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_SUBJECT.ToString()));

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_REWORK.ToString())))
            {
                businessObject.WR_REWORK = dataReader.GetInt16(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_REWORK.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_REF_ID.ToString())))
            {
                businessObject.WR_REF_ID = dataReader.GetString(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_REF_ID.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_SEVERITY.ToString())))
            {
                businessObject.WR_SEVERITY = dataReader.GetInt16(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_SEVERITY.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_INC_TYPE.ToString())))
            {
                businessObject.WR_INC_TYPE = dataReader.GetInt16(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_INC_TYPE.ToString()));
            }

            businessObject.WR_EMP_ID = dataReader.GetInt32(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_EMP_ID.ToString()));

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_PHASE.ToString())))
            {
                businessObject.WR_PHASE = dataReader.GetInt16(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_PHASE.ToString()));
            }

            businessObject.WR_STATUS = dataReader.GetInt16(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_STATUS.ToString()));

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_DATE_STARTED.ToString())))
            {
                businessObject.WR_DATE_STARTED = dataReader.GetDateTime(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_DATE_STARTED.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_DATE_TARGET.ToString())))
            {
                businessObject.WR_DATE_TARGET = dataReader.GetDateTime(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_DATE_TARGET.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_DATE_FINISHED.ToString())))
            {
                businessObject.WR_DATE_FINISHED = dataReader.GetDateTime(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_DATE_FINISHED.ToString()));
            }

            businessObject.WR_EFFORT_EST    = dataReader.GetDouble(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_EFFORT_EST.ToString()));
            businessObject.WR_ACT_EFFORT    = dataReader.GetDouble(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_ACT_EFFORT.ToString()));
            businessObject.WR_ACT_EFFORT_WK = dataReader.GetDouble(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_ACT_EFFORT_WK.ToString()));

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_COMMENTS.ToString())))
            {
                businessObject.WR_COMMENTS = dataReader.GetString(dataReader.GetOrdinal(clsWeeklyReport.clsWeeklyReportFields.WR_COMMENTS.ToString()));
            }
        }
        internal List <clsWeeklyReport> PopulateTasksObjectsFromReader(IDataReader dataReader)
        {
            List <clsWeeklyReport> list = new List <clsWeeklyReport>();

            while (dataReader.Read())
            {
                clsWeeklyReport businessObject = new clsWeeklyReport();
                PopulateBusinessTasksObjectFromReader(businessObject, dataReader);
                list.Add(businessObject);
            }
            return(list);
        }
        /// <summary>
        /// insert new row in the table
        /// </summary>
        /// <param name="businessObject">business object</param>
        /// <returns>true of successfully insert</returns>
        public bool Insert(clsWeeklyReport businessObject)
        {
            SqlCommand sqlCommand = new SqlCommand();

            sqlCommand.CommandText = "dbo.[sp_InsertWeeklyReport]";
            sqlCommand.CommandType = CommandType.StoredProcedure;

            // Use connection object of base class
            sqlCommand.Connection = MainConnection;

            try
            {
                sqlCommand.Parameters.Add(new SqlParameter("@WR_RANGE_ID", SqlDbType.Int, 11, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.WR_WEEK_RANGE_ID));
                sqlCommand.Parameters.Add(new SqlParameter("@PROJ_ID", SqlDbType.Int, 11, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.WR_PROJ_ID));
                sqlCommand.Parameters.Add(new SqlParameter("@REWORK", SqlDbType.SmallInt, 2, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.WR_REWORK));
                sqlCommand.Parameters.Add(new SqlParameter("@SUBJECT", SqlDbType.VarChar, int.MaxValue, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.WR_SUBJECT));
                sqlCommand.Parameters.Add(new SqlParameter("@SEVERITY", SqlDbType.SmallInt, 2, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.WR_SEVERITY));
                sqlCommand.Parameters.Add(new SqlParameter("@INC_TYPE", SqlDbType.SmallInt, 2, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.WR_INC_TYPE));
                sqlCommand.Parameters.Add(new SqlParameter("@EMP_ID", SqlDbType.Int, 11, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.WR_EMP_ID));
                sqlCommand.Parameters.Add(new SqlParameter("@PHASE", SqlDbType.SmallInt, 2, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.WR_PHASE));
                sqlCommand.Parameters.Add(new SqlParameter("@STATUS", SqlDbType.SmallInt, 2, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.WR_STATUS));
                sqlCommand.Parameters.Add(new SqlParameter("@EFFORT_EST", SqlDbType.Float, 8, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.WR_EFFORT_EST));
                sqlCommand.Parameters.Add(new SqlParameter("@ACT_EFFORT_WK", SqlDbType.Float, 8, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.WR_ACT_EFFORT_WK));
                sqlCommand.Parameters.Add(new SqlParameter("@ACT_EFFORT", SqlDbType.Float, 8, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.WR_ACT_EFFORT));

                if (businessObject.WR_REF_ID == null)
                {
                    sqlCommand.Parameters.Add(new SqlParameter("@REF_ID", SqlDbType.VarChar, 8, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, DBNull.Value));
                }
                else
                {
                    sqlCommand.Parameters.Add(new SqlParameter("@REF_ID", SqlDbType.VarChar, 10, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.WR_REF_ID));
                }

                if (businessObject.WR_DATE_STARTED == default(DateTime).Date)
                {
                    sqlCommand.Parameters.Add(new SqlParameter("@DATE_STARTED", SqlDbType.Date, 8, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, DBNull.Value));
                }
                else
                {
                    sqlCommand.Parameters.Add(new SqlParameter("@DATE_STARTED", SqlDbType.Date, 8, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.WR_DATE_STARTED));
                }

                if (businessObject.WR_DATE_TARGET == default(DateTime).Date)
                {
                    sqlCommand.Parameters.Add(new SqlParameter("@DATE_TARGET", SqlDbType.Date, 8, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, DBNull.Value));
                }
                else
                {
                    sqlCommand.Parameters.Add(new SqlParameter("@DATE_TARGET", SqlDbType.Date, 8, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.WR_DATE_TARGET));
                }

                if (businessObject.WR_DATE_FINISHED == default(DateTime).Date)
                {
                    sqlCommand.Parameters.Add(new SqlParameter("@DATE_FINISHED", SqlDbType.Date, 8, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, DBNull.Value));
                }
                else
                {
                    sqlCommand.Parameters.Add(new SqlParameter("@DATE_FINISHED", SqlDbType.Date, 8, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.WR_DATE_FINISHED));
                }

                if (businessObject.WR_COMMENTS == null)
                {
                    sqlCommand.Parameters.Add(new SqlParameter("@COMMENTS", SqlDbType.VarChar, 8, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, DBNull.Value));
                }
                else
                {
                    sqlCommand.Parameters.Add(new SqlParameter("@COMMENTS", SqlDbType.Text, 255, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.WR_COMMENTS));
                }

                if (businessObject.WR_INBOUND_CONTACTS == 0)
                {
                    sqlCommand.Parameters.Add(new SqlParameter("@INBOUND_CONTACTS", SqlDbType.SmallInt, 2, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, DBNull.Value));
                }
                else
                {
                    sqlCommand.Parameters.Add(new SqlParameter("@INBOUND_CONTACTS", SqlDbType.SmallInt, 2, ParameterDirection.Input, false, 0, 0, "", DataRowVersion.Proposed, businessObject.WR_INBOUND_CONTACTS));
                }

                MainConnection.Open();

                sqlCommand.ExecuteNonQuery();

                return(true);
            }
            catch (Exception ex)
            {
                throw new Exception("clsWeeklyReport::Insert::Error occured.", ex);
            }
            finally
            {
                MainConnection.Close();
                sqlCommand.Dispose();
            }
        }