/// <summary>
        /// Binds the grid.
        /// </summary>
        private void BindGrid()
        {
            var          service      = new ReferralAgencyService(new SampleProjectContext());
            SortProperty sortProperty = gAgencies.SortProperty;

            var qry = service.Queryable("Campus,AgencyTypeValue");

            int?campusId = gfSettings.GetUserPreference("Campus").AsInteger(false);

            if (campusId.HasValue)
            {
                qry = qry.Where(a => a.CampusId == campusId.Value);
            }

            int?definedValueId = gfSettings.GetUserPreference("Agency Type").AsInteger(false);

            if (definedValueId.HasValue)
            {
                qry = qry.Where(a => a.AgencyTypeValueId == definedValueId.Value);
            }

            // Sort results
            if (sortProperty != null)
            {
                gAgencies.DataSource = qry.Sort(sortProperty).ToList();
            }
            else
            {
                gAgencies.DataSource = qry.OrderBy(a => a.Name).ToList();
            }

            gAgencies.DataBind();
        }
        /// <summary>
        /// Handles the Delete event of the gAgencies control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="RowEventArgs"/> instance containing the event data.</param>
        protected void gAgencies_Delete( object sender, RowEventArgs e )
        {
            var dataContext = new SampleProjectContext();
            var service = new ReferralAgencyService( dataContext );
            var referralAgency = service.Get( (int)e.RowKeyValue );
            if ( referralAgency != null )
            {
                string errorMessage;
                if ( !service.CanDelete( referralAgency, out errorMessage ) )
                {
                    mdGridWarning.Show( errorMessage, ModalAlertType.Information );
                    return;
                }

                service.Delete( referralAgency );
                dataContext.SaveChanges();
            }

            BindGrid();
        }
        /// <summary>
        /// Handles the Delete event of the gAgencies control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="RowEventArgs"/> instance containing the event data.</param>
        protected void gAgencies_Delete(object sender, RowEventArgs e)
        {
            var dataContext    = new SampleProjectContext();
            var service        = new ReferralAgencyService(dataContext);
            var referralAgency = service.Get((int)e.RowKeyValue);

            if (referralAgency != null)
            {
                string errorMessage;
                if (!service.CanDelete(referralAgency, out errorMessage))
                {
                    mdGridWarning.Show(errorMessage, ModalAlertType.Information);
                    return;
                }

                service.Delete(referralAgency);
                dataContext.SaveChanges();
            }

            BindGrid();
        }
        /// <summary>
        /// Handles the Click event of the btnSave control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void btnSave_Click(object sender, EventArgs e)
        {
            ReferralAgency referralAgency;
            var            dataContext = new SampleProjectContext();
            var            service     = new ReferralAgencyService(dataContext);

            int campusId = int.Parse(hfReferralAgencyId.Value);

            if (campusId == 0)
            {
                referralAgency = new ReferralAgency();
                service.Add(referralAgency);
            }
            else
            {
                referralAgency = service.Get(campusId);
            }

            referralAgency.Name              = tbName.Text;
            referralAgency.Description       = tbDescription.Text;
            referralAgency.CampusId          = cpCampus.SelectedCampusId;
            referralAgency.AgencyTypeValueId = ddlAgencyType.SelectedValueAsId();
            referralAgency.ContactName       = tbContactName.Text;
            referralAgency.PhoneNumber       = tbPhoneNumber.Text;
            referralAgency.Website           = tbWebsite.Text;

            if (!referralAgency.IsValid || !Page.IsValid)
            {
                // Controls will render the error messages
                return;
            }

            dataContext.SaveChanges();

            NavigateToParentPage();
        }
        /// <summary>
        /// Binds the grid.
        /// </summary>
        private void BindGrid()
        {
            var service = new ReferralAgencyService( new SampleProjectContext() );
            SortProperty sortProperty = gAgencies.SortProperty;

            var qry = service.Queryable( "Campus,AgencyTypeValue" );

            int? campusId = gfSettings.GetUserPreference( "Campus" ).AsInteger( false );
            if ( campusId.HasValue )
            {
                qry = qry.Where( a => a.CampusId == campusId.Value );
            }

            int? definedValueId = gfSettings.GetUserPreference( "Agency Type" ).AsInteger( false );
            if ( definedValueId.HasValue )
            {
                qry = qry.Where( a => a.AgencyTypeValueId == definedValueId.Value );
            }

            // Sort results
            if ( sortProperty != null )
            {
                gAgencies.DataSource = qry.Sort( sortProperty ).ToList();
            }
            else
            {
                gAgencies.DataSource = qry.OrderBy( a => a.Name ).ToList();
            }

            gAgencies.DataBind();
        }
        /// <summary>
        /// Handles the Click event of the btnSave control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void btnSave_Click( object sender, EventArgs e )
        {
            ReferralAgency referralAgency;
            var dataContext = new SampleProjectContext();
            var service = new ReferralAgencyService( dataContext );

            int referralAgencyId = int.Parse( hfReferralAgencyId.Value );

            if ( referralAgencyId == 0 )
            {
                referralAgency = new ReferralAgency();
                service.Add( referralAgency );
            }
            else
            {
                referralAgency = service.Get( referralAgencyId );
            }

            referralAgency.Name = tbName.Text;
            referralAgency.Description = tbDescription.Text;
            referralAgency.CampusId = cpCampus.SelectedCampusId;
            referralAgency.AgencyTypeValueId = ddlAgencyType.SelectedValueAsId();
            referralAgency.ContactName = tbContactName.Text;
            referralAgency.PhoneNumber = tbPhoneNumber.Text;
            referralAgency.Website = tbWebsite.Text;

            if ( !referralAgency.IsValid || !Page.IsValid )
            {
                // Controls will render the error messages
                return;
            }

            dataContext.SaveChanges();

            NavigateToParentPage();
        }