/// <summary>
/// Handles the RowCommand event of the grdPersonSearchResults control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="GridViewCommandEventArgs"/> instance containing the event data.</param>
protected void rGridPersonResults_AddExistingPerson( object sender, GridViewCommandEventArgs e )
{
if ( e.CommandName == "Add" )
{
var rockContext = new RockContext();
GroupMemberService groupMemberService = new GroupMemberService( rockContext );
int index = int.Parse( e.CommandArgument.ToString() );
int personId = int.Parse( rGridPersonResults.DataKeys[index].Value.ToString() );
var family = CurrentCheckInState.CheckIn.Families.Where( f => f.Selected ).FirstOrDefault();
if ( family != null )
{
var checkInPerson = new CheckInPerson();
checkInPerson.Person = new PersonService( rockContext ).Get( personId ).Clone( false );
var isPersonInFamily = family.People.Any( p => p.Person.Id == checkInPerson.Person.Id );
if ( !isPersonInFamily )
{
if ( personVisitorType.Value != "Visitor" )
{
// TODO: DT: Is this right? Not sure this is the best way to set family id
var groupMember = groupMemberService.GetByPersonId( personId ).FirstOrDefault();
groupMember.GroupId = family.Group.Id;
rockContext.SaveChanges();
checkInPerson.FamilyMember = true;
hfSelectedPerson.Value += personId + ",";
}
else
{
AddVisitorGroupMemberRoles( family, personId );
checkInPerson.FamilyMember = false;
hfSelectedVisitor.Value += personId + ",";
}
checkInPerson.Selected = true;
family.People.Add( checkInPerson );
ProcessFamily();
}
mpeAddPerson.Hide();
}
else
{
string errorMsg = "<ul><li>You have to pick a family to add this person to.</li></ul>";
maWarning.Show( errorMsg, Rock.Web.UI.Controls.ModalAlertType.Warning );
}
}
else
{
mpeAddPerson.Show();
BindPersonGrid();
}
}