Exemple #1
0
        public Task <InviteExternalMemberToTeamResponse> InviteExternalMemberToTeamAsync(ExternalMemberTeamIntive externalInvite, CancellationTokenSource cancellationTokenSource) =>
        Task <InviteExternalMemberToTeamResponse> .Run(async() => {
            if (!CrossConnectivity.Current.IsConnected)
            {
                throw new InvalidOperationException(AppConsts.ERROR_INTERNET_CONNECTION);
            }

            InviteExternalMemberToTeamRequest inviteExternalMemberToTeamRequest = new InviteExternalMemberToTeamRequest {
                AccessToken = GlobalSettings.Instance.UserProfile.AccesToken,
                Url         = GlobalSettings.Instance.Endpoints.TeamEndPoints.InviteExternalMemberToTheTeam,
                Data        = externalInvite
            };

            InviteExternalMemberToTeamResponse inviteExternalResponse = null;

            try {
                inviteExternalResponse = await _requestProvider.PostAsync <InviteExternalMemberToTeamRequest, InviteExternalMemberToTeamResponse>(inviteExternalMemberToTeamRequest);
            }
            catch (ServiceAuthenticationException exc) {
                _identityUtilService.RefreshToken();

                throw exc;
            }
            catch (HttpRequestExceptionEx exc) {
                try {
                    inviteExternalResponse = JsonConvert.DeserializeObject <InviteExternalMemberToTeamResponse>(exc.Message);
                }
                catch {
                    Debugger.Break();
                    throw new InvalidOperationException(INVITE_EXTERNAL_MEMBER_COMMON_ERROR_MESSAGE);
                }

                string output = string.Format("{0} {1} {2}",
                                              inviteExternalResponse.Errors?.FirstOrDefault(),
                                              inviteExternalResponse.Model?.FirstOrDefault(),
                                              inviteExternalResponse.Email?.FirstOrDefault());

                output = (string.IsNullOrWhiteSpace(output) || string.IsNullOrEmpty(output)) ? INVITE_EXTERNAL_MEMBER_COMMON_ERROR_MESSAGE : output;

                throw new InvalidOperationException(output.Trim());
            }
            catch (Exception exc) {
                Crashes.TrackError(exc);
                throw;
            }

            return(inviteExternalResponse);
        }, cancellationTokenSource.Token);
Exemple #2
0
        protected async override void OnExecuteCommand()
        {
            base.OnExecuteCommand();

            if (NavigationService.LastPageViewModel is IInputForm inputForm)
            {
                if (inputForm.ValidateForm())
                {
                    if (inputForm is IBuildFormModel buildFormModel)
                    {
                        Guid busyKey = Guid.NewGuid();
                        UpdateBusyVisualState(busyKey, true);

                        ResetCancellationTokenSource(ref _inviteExternalMemberToTeamAsyncCancellationTokenSource);
                        CancellationTokenSource cancellationTokenSource = _inviteExternalMemberToTeamAsyncCancellationTokenSource;

                        try {
                            object formModel = buildFormModel.BuildFormModel();
                            InviteExternalMemberToTeamResponse inviteExternalMemberToTeamResponse = await _teamService.InviteExternalMemberToTeamAsync(formModel as ExternalMemberTeamIntive, cancellationTokenSource);

                            if (inviteExternalMemberToTeamResponse != null)
                            {
                                await DialogService.ToastAsync(EXTERNAL_INVITE_WAS_SENT);

                                await NavigationService.GoBackAsync(new IntentViewModelArgs());
                            }
                            else
                            {
                                await DialogService.ToastAsync(TeamService.INVITE_EXTERNAL_MEMBER_COMMON_ERROR_MESSAGE);
                            }
                        }
                        catch (OperationCanceledException) { }
                        catch (ObjectDisposedException) { }
                        catch (ServiceAuthenticationException) { }
                        catch (Exception exc) {
                            Crashes.TrackError(exc);

                            await DialogService.ToastAsync(exc.Message);
                        }

                        UpdateBusyVisualState(busyKey, false);
                    }
                }
            }
        }