Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
                }
            });
        }
Beispiel #3
0
        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);
            });
        }
Beispiel #4
0
            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);
            }
Beispiel #5
0
 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);
         }
     });
 }
Beispiel #6
0
        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);
                }
            });
        }
Beispiel #7
0
        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);
            }
        }
Beispiel #8
0
 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 );
                                } );
                        } );
                }
            }
        }
Beispiel #10
0
 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( );
        }
Beispiel #12
0
        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 ) );
                        } );
                }
            }
        }
Beispiel #13
0
                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 );
                            }
                        });
                }
Beispiel #14
0
                /// <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 = "";
                }
Beispiel #15
0
                public void SetPhoneNumberDigits( string digits )
                {
                    if ( _CellPhoneNumber == null )
                    {
                        _CellPhoneNumber = new Rock.Client.PhoneNumber();
                    }

                    _CellPhoneNumber.Number = digits;
                    _CellPhoneNumber.NumberFormatted = digits.AsPhoneNumber( );
                }
Beispiel #16
0
 public static void DeleteCellPhoneNumber(Rock.Client.PhoneNumber phoneNumber, HttpRequest.RequestResult resultHandler)
 {
     RockApi.Delete_PhoneNumbers(phoneNumber.Id, resultHandler);
 }