public static void UpdateFullPerson(bool isNewPerson, Rock.Client.Person person, bool isNewPhoneNumber, Rock.Client.PhoneNumber phoneNumber, List <KeyValuePair <string, string> > attributes, MemoryStream personImage, HttpRequest.RequestResult resultHandler) { // first, we need to resolve their graduation year (if they have a valid grade offset set) if (person.GradeOffset.HasValue && person.GradeOffset.Value >= 0) { RockApi.Get_People_GraduationYear(person.GradeOffset.Value, delegate(HttpStatusCode statusCode, string statusDescription, int graduationYear) { // now set that and update the person if (Rock.Mobile.Network.Util.StatusInSuccessRange(statusCode) == true) { person.GraduationYear = graduationYear; TryUpdatePerson(isNewPerson, person, isNewPhoneNumber, phoneNumber, attributes, personImage, resultHandler); } else { // error resultHandler(statusCode, statusDescription); } }); } else { TryUpdatePerson(isNewPerson, person, isNewPhoneNumber, phoneNumber, attributes, personImage, resultHandler); } }
static void TryUpdatePerson(bool isNewPerson, Rock.Client.Person person, bool isNewPhoneNumber, Rock.Client.PhoneNumber phoneNumber, List <KeyValuePair <string, string> > attributes, MemoryStream personImage, HttpRequest.RequestResult resultHandler) { // if they're a new person, flag them as a pending visitor. if (isNewPerson == true) { person.RecordStatusValueId = Settings.Rock_RecordStatusValueId_Pending; person.ConnectionStatusValueId = Settings.Rock_ConnectionStatusValueId_Visitor; } ApplicationApi.UpdateOrAddPerson(person, isNewPerson, Config.Instance.CurrentPersonAliasId, delegate(System.Net.HttpStatusCode statusCode, string statusDescription) { if (Rock.Mobile.Network.Util.StatusInSuccessRange(statusCode) == true) { // was this a new person? if (isNewPerson == true) { // then we need to get their profile so we know the ID to use for updating the rest of their stuff. TryGetNewlyCreatedProfile(person, isNewPhoneNumber, phoneNumber, attributes, personImage, resultHandler); } else { // now update pending attributes. foreach (KeyValuePair <string, string> attribValue in attributes) { // just fire and forget these values. FamilyManagerApi.UpdateOrAddPersonAttribute(person.Id, attribValue.Key, attribValue.Value, null); } // are we deleting an existing number? if (string.IsNullOrWhiteSpace(phoneNumber.Number) == true && isNewPhoneNumber == false) { TryDeleteCellPhone(person, phoneNumber, personImage, resultHandler); } // are we updating or adding an existing? else if (string.IsNullOrWhiteSpace(phoneNumber.Number) == false) { TryUpdateCellPhone(person, isNewPhoneNumber, phoneNumber, personImage, resultHandler); } else { TryUpdateProfilePic(person, personImage, resultHandler); } } } else { // error resultHandler(statusCode, statusDescription); } }); }
public static void GetPhoneNumberByGuid(Guid guid, HttpRequest.RequestResult <Rock.Client.PhoneNumber> resultHandler) { string oDataFilter = string.Format("?$filter=Guid eq guid'{0}'", guid.ToString( )); RockApi.Get_PhoneNumbers <List <Rock.Client.PhoneNumber> >(oDataFilter, delegate(HttpStatusCode statusCode, string statusDescription, List <Rock.Client.PhoneNumber> model) { Rock.Client.PhoneNumber returnPhoneNumber = null; if (Rock.Mobile.Network.Util.StatusInSuccessRange(statusCode) == true && model != null && model.Count > 0) { returnPhoneNumber = model[0]; } resultHandler(statusCode, statusDescription, returnPhoneNumber); }); }
public static void Post_PhoneNumbers(Rock.Client.PhoneNumber phoneNumber, int modifiedById, HttpRequest.RequestResult resultHandler) { Rock.Client.PhoneNumberEntity phoneNumberEntity = new Rock.Client.PhoneNumberEntity(); phoneNumberEntity.CopyPropertiesFrom(phoneNumber); if (modifiedById > 0) { phoneNumberEntity.ModifiedAuditValuesAlreadyUpdated = true; phoneNumberEntity.CreatedByPersonAliasId = modifiedById; phoneNumberEntity.ModifiedByPersonAliasId = modifiedById; } RestRequest request = GetRockRestRequest(Method.POST); request.AddBody(phoneNumberEntity); // fire off the request Request.ExecuteAsync(BaseUrl + EndPoint_PhoneNumbers, request, resultHandler); }
static void TryDeleteCellPhone(Rock.Client.Person person, Rock.Client.PhoneNumber phoneNumber, MemoryStream personImage, HttpRequest.RequestResult resultHandler) { // remove the current number ApplicationApi.DeleteCellPhoneNumber(phoneNumber, delegate(System.Net.HttpStatusCode statusCode, string statusDescription) { if (Rock.Mobile.Network.Util.StatusInSuccessRange(statusCode) == true) { TryUpdateProfilePic(person, personImage, resultHandler); } else { resultHandler(statusCode, statusDescription); } }); }
static void TryGetNewlyCreatedProfile(Rock.Client.Person person, bool isNewPhoneNumber, Rock.Client.PhoneNumber phoneNumber, List <KeyValuePair <string, string> > attributes, MemoryStream personImage, HttpRequest.RequestResult resultHandler) { ApplicationApi.GetPersonByGuid(person.Guid, delegate(System.Net.HttpStatusCode statusCode, string statusDescription, Rock.Client.Person model) { if (Rock.Mobile.Network.Util.StatusInSuccessRange(statusCode) == true) { person = model; // see if we should set their first time visit status if (Config.Instance.RecordFirstVisit == true) { FamilyManagerApi.UpdateOrAddPersonAttribute(person.Id, Config.Instance.FirstTimeVisitAttrib.Key, DateTime.Now.ToString( ), null); } // now update pending attributes. foreach (KeyValuePair <string, string> attribValue in attributes) { // just fire and forget these values. FamilyManagerApi.UpdateOrAddPersonAttribute(person.Id, attribValue.Key, attribValue.Value, null); } // if there's a phone number to send, send it. if (string.IsNullOrWhiteSpace(phoneNumber.Number) == false) { TryUpdateCellPhone(person, isNewPhoneNumber, phoneNumber, personImage, resultHandler); } else { TryUpdateProfilePic(person, personImage, resultHandler); } } else { resultHandler(statusCode, statusDescription); } }); }
public static void AddOrUpdateCellPhoneNumber(Rock.Client.Person person, Rock.Client.PhoneNumber phoneNumber, bool isNew, int modifiedById, HttpRequest.RequestResult resultHandler) { // update the phone number phoneNumber.PersonId = person.Id; phoneNumber.NumberTypeValueId = CellPhoneValueId; // now we can upload it. if (isNew) { // set the required values for a new phone number phoneNumber.Guid = Guid.NewGuid( ); RockApi.Post_PhoneNumbers(phoneNumber, modifiedById, resultHandler); } else { // or just update the existing number RockApi.Put_PhoneNumbers(phoneNumber, modifiedById, resultHandler); } }
static void TryUpdateCellPhone(Rock.Client.Person person, bool isNewPhoneNumber, Rock.Client.PhoneNumber phoneNumber, MemoryStream personImage, HttpRequest.RequestResult resultHandler) { // is their phone number new or existing? ApplicationApi.AddOrUpdateCellPhoneNumber(person, phoneNumber, isNewPhoneNumber, Config.Instance.CurrentPersonAliasId, delegate(System.Net.HttpStatusCode statusCode, string statusDescription) { if (Rock.Mobile.Network.Util.StatusInSuccessRange(statusCode) == true) { TryUpdateProfilePic(person, personImage, resultHandler); } else { resultHandler(statusCode, statusDescription); } }); }
void RegisterUser() { if ( State == RegisterState.None ) { // make sure they entered all required fields if ( ValidateInput( ) ) { BlockerView.Show( delegate { // force the UI to scroll back up ScrollView.ContentOffset = CGPoint.Empty; ScrollView.ScrollEnabled = false; State = RegisterState.Trying; // create a new user and submit them Rock.Client.Person newPerson = new Rock.Client.Person(); Rock.Client.PhoneNumber newPhoneNumber = null; // copy all the edited fields into the person object newPerson.Email = EmailText.Field.Text; // set both the nick name and first name to NickName newPerson.NickName = NickNameText.Field.Text; newPerson.FirstName = NickNameText.Field.Text; newPerson.LastName = LastNameText.Field.Text; //newPerson.ConnectionStatusValueId = PrivateGeneralConfig.PersonConnectionStatusValueId; //newPerson.RecordStatusValueId = PrivateGeneralConfig.PersonRecordStatusValueId; // Update their cell phone. if ( string.IsNullOrEmpty( CellPhoneText.Field.Text ) == false ) { // update the phone number string digits = CellPhoneText.Field.Text.AsNumeric( ); newPhoneNumber = new Rock.Client.PhoneNumber(); newPhoneNumber.Number = digits; newPhoneNumber.NumberFormatted = digits.AsPhoneNumber( ); } MobileAppApi.RegisterNewUser( newPerson, newPhoneNumber, UserNameText.Field.Text, PasswordText.Field.Text, delegate(System.Net.HttpStatusCode statusCode, string statusDescription ) { if ( Rock.Mobile.Network.Util.StatusInSuccessRange( statusCode ) == true ) { ProfileAnalytic.Instance.Trigger( ProfileAnalytic.Register ); State = RegisterState.Success; ResultView.Show( RegisterStrings.RegisterStatus_Success, PrivateControlStylingConfig.Result_Symbol_Success, RegisterStrings.RegisterResult_Success, GeneralStrings.Done ); } else { State = RegisterState.Fail; ResultView.Show( RegisterStrings.RegisterStatus_Failed, PrivateControlStylingConfig.Result_Symbol_Failed, statusDescription == RegisterStrings.RegisterResult_BadLogin ? RegisterStrings.RegisterResult_LoginUsed : RegisterStrings.RegisterResult_Failed, GeneralStrings.Done ); } BlockerView.Hide( null ); } ); } ); } } }
public Family( ) { FamilyMembers = new List <Rock.Client.GroupMember>( ); HomeLocation = new Rock.Client.Location(); MainPhoneNumber = new Rock.Client.PhoneNumber(); }
public void PresentAnimated( int workingFamilyId, string workingFamilyLastName, Rock.Client.Person workingPerson, bool isChild, Dictionary<string, Rock.Client.AttributeValue> attributeValues, NSData profilePicBuffer, List<Rock.Client.Family> allowedCheckinList, FamilyInfoViewController.OnPersonInfoCompleteDelegate onComplete ) { OnCompleteDelegate = onComplete; WorkingFamilyId = workingFamilyId; KeyboardAdjustManager.Activate( ); // take the provided person as our working person if ( workingPerson == null ) { IsNewPerson = true; WorkingPerson = new Rock.Client.Person( ); // since it's a new person, put the last name of the family in there. WorkingPerson.LastName = workingFamilyLastName; } else { IsNewPerson = false; WorkingPerson = workingPerson; } // we need to know now what values AREN'T set, so we don't inadvertantly set them to defaults. WorkingPhoneNumber = RockActions.TryGetPhoneNumber( WorkingPerson, RockActions.CellPhoneValueId ); if ( WorkingPhoneNumber == null ) { IsNewPhoneNumber = true; WorkingPhoneNumber = new Rock.Client.PhoneNumber(); } else { IsNewPhoneNumber = false; } PersonInfoToUI( WorkingPerson, WorkingPhoneNumber, isChild, attributeValues, allowedCheckinList ); // set their profile picture UpdateProfilePic( profilePicBuffer ); View.Hidden = false; // animate the background to dark BackgroundPanel.Layer.Opacity = 0; SimpleAnimator_Float alphaAnim = new SimpleAnimator_Float( BackgroundPanel.Layer.Opacity, Settings.DarkenOpacity, .33f, delegate(float percent, object value ) { BackgroundPanel.Layer.Opacity = (float)value; }, null ); alphaAnim.Start( SimpleAnimator.Style.CurveEaseOut ); // update the main panel MainPanel.Layer.Position = new CoreGraphics.CGPoint( ( View.Bounds.Width - MainPanel.Bounds.Width ) / 2, View.Bounds.Height ); // animate UP the main panel nfloat visibleHeight = Parent.GetVisibleHeight( ); PointF endPos = new PointF( (float)( View.Bounds.Width - MainPanel.Bounds.Width ) / 2, (float)( visibleHeight - MainPanel.Bounds.Height ) / 2 ); SimpleAnimator_PointF posAnim = new SimpleAnimator_PointF( MainPanel.Layer.Position.ToPointF( ), endPos, .33f, delegate(float percent, object value ) { MainPanel.Layer.Position = (PointF)value; }, null); posAnim.Start( SimpleAnimator.Style.CurveEaseOut ); ViewDidLayoutSubviews( ); }
void RegisterUser() { if ( State == RegisterState.None ) { // make sure they entered all required fields if ( ValidateInput( ) ) { ToggleControls( false ); ProgressBarBlocker.Visibility = ViewStates.Visible; State = RegisterState.Trying; // create a new user and submit them Rock.Client.Person newPerson = new Rock.Client.Person(); Rock.Client.PhoneNumber newPhoneNumber = null; // copy all the edited fields into the person object newPerson.Email = EmailText.Text; newPerson.NickName = NickNameText.Text; newPerson.LastName = LastNameText.Text; newPerson.ConnectionStatusValueId = PrivateGeneralConfig.PersonConnectionStatusValueId; newPerson.RecordStatusValueId = PrivateGeneralConfig.PersonRecordStatusValueId; // Update their cell phone. if ( string.IsNullOrEmpty( CellPhoneText.Text ) == false ) { // update the phone number string digits = CellPhoneText.Text.AsNumeric( ); newPhoneNumber = new Rock.Client.PhoneNumber(); newPhoneNumber.Number = digits; newPhoneNumber.NumberFormatted = digits.AsPhoneNumber( ); newPhoneNumber.NumberTypeValueId = PrivateGeneralConfig.CellPhoneValueId; } RockApi.Instance.RegisterNewUser( newPerson, newPhoneNumber, UserNameText.Text, PasswordText.Text, delegate(System.Net.HttpStatusCode statusCode, string statusDescription ) { ProgressBarBlocker.Visibility = ViewStates.Gone; ToggleControls( true ); if ( Rock.Mobile.Network.Util.StatusInSuccessRange( statusCode ) == true ) { ProfileAnalytic.Instance.Trigger( ProfileAnalytic.Register ); State = RegisterState.Success; ResultView.Show( RegisterStrings.RegisterStatus_Success, PrivateControlStylingConfig.Result_Symbol_Success, RegisterStrings.RegisterResult_Success, GeneralStrings.Done ); } else { State = RegisterState.Fail; ResultView.Show( RegisterStrings.RegisterStatus_Failed, PrivateControlStylingConfig.Result_Symbol_Failed, statusDescription == RegisterStrings.RegisterResult_BadLogin ? RegisterStrings.RegisterResult_LoginUsed : RegisterStrings.RegisterResult_Failed, GeneralStrings.Done ); } ResultView.SetBounds( new System.Drawing.RectangleF( 0, 0, NavbarFragment.GetFullDisplayWidth( ), this.Resources.DisplayMetrics.HeightPixels ) ); } ); } } }
public void GetProfileAndCellPhone( HttpRequest.RequestResult<Rock.Client.Person> profileResult ) { RockApi.Instance.GetProfile( UserID, delegate(System.Net.HttpStatusCode statusCode, string statusDescription, Rock.Client.Person model) { if( Rock.Mobile.Network.Util.StatusInSuccessRange( statusCode ) == true ) { // on retrieval, convert this version for dirty compares later Person = model; // store their contact phone number seperately so we don't // get conflicts with syncing. _CellPhoneNumber = TryGetPhoneNumber( PrivateGeneralConfig.CellPhoneValueId ); Person.PhoneNumbers = null; LastSyncdCellPhoneNumberJson = _CellPhoneNumber != null ? JsonConvert.SerializeObject( _CellPhoneNumber ) : ""; LastSyncdPersonJson = JsonConvert.SerializeObject( Person ); // save! SaveToDevice( ); } // notify the caller if( profileResult != null ) { profileResult( statusCode, statusDescription, model ); } }); }
/// <summary> /// Resets all the values related to the Person, but won't reset things like /// IsFirstRun /// </summary> void SetDefaultPersonValues( ) { Person = new Person(); PrimaryFamily = new Group(); PrimaryAddress = new GroupLocation(); PrimaryAddress.GroupLocationTypeValueId = PrivateGeneralConfig.GroupLocationTypeHomeValueId; _CellPhoneNumber = null; ViewingCampus = RockGeneralData.Instance.Data.Campuses[ 0 ].Id; // for the address location, default the country to the built in country code. PrimaryAddress.Location = new Location(); PrimaryAddress.Location.Country = App.Shared.Config.GeneralConfig.CountryCode; LastSyncdPersonJson = JsonConvert.SerializeObject( Person ); LastSyncdFamilyJson = JsonConvert.SerializeObject( PrimaryFamily ); LastSyncdAddressJson = JsonConvert.SerializeObject( PrimaryAddress ); LastSyncdCellPhoneNumberJson = ""; }
public void SetPhoneNumberDigits( string digits ) { if ( _CellPhoneNumber == null ) { _CellPhoneNumber = new Rock.Client.PhoneNumber(); } _CellPhoneNumber.Number = digits; _CellPhoneNumber.NumberFormatted = digits.AsPhoneNumber( ); }
public static void DeleteCellPhoneNumber(Rock.Client.PhoneNumber phoneNumber, HttpRequest.RequestResult resultHandler) { RockApi.Delete_PhoneNumbers(phoneNumber.Id, resultHandler); }