コード例 #1
0
        public override async void Prepare()
        {
            base.Prepare();

            var appEnvironnement = _preferences.Get(ApplicationSettingsConstants.AppEnvironnement, "unknown_env");
            var appVersion       = _versionTracking.CurrentVersion;

            DisplayVersion = appEnvironnement != "unknown_env" ? $"{appEnvironnement} - v{appVersion}" : $"v{appVersion}";
            LoggedUser     = _userSettingsService.GetIngressName();

            var selectedOpId = _preferences.Get(UserSettingsKeys.SelectedOp, string.Empty);

            if (!string.IsNullOrWhiteSpace(selectedOpId))
            {
                var op = await _operationsDatabase.GetOperationModel(selectedOpId);

                SelectedOpName = op == null ? "ERROR loading OP" : op.Name;
            }

            if (_preferences.Get(UserSettingsKeys.LiveLocationSharingEnabled, false))
            {
                _isLiveLocationSharingEnabled = true;
                _messenger.Publish(new LiveGeolocationTrackingMessage(this, Action.Start));
                await RaisePropertyChanged(() => IsLiveLocationSharingEnabled);
            }
        }
コード例 #2
0
        private async Task RefreshOperationExecuted()
        {
            if (IsBusy)
            {
                return;
            }
            LoggingService.Trace("Executing OperationRootTabbedViewModel.RefreshOperationCommand");

            IsBusy = true;
            _userDialogs.ShowLoading();


            var selectedOpId = _preferences.Get(UserSettingsKeys.SelectedOp, string.Empty);

            if (string.IsNullOrWhiteSpace(selectedOpId))
            {
                return;
            }

            var hasUpdated = false;

            try
            {
                var localData = await _operationsDatabase.GetOperationModel(selectedOpId);

                var updatedData = await _wasabeeApiV1Service.Operations_GetOperation(selectedOpId);

                if (localData != null && updatedData != null && !localData.Modified.Equals(updatedData.Modified))
                {
                    await _operationsDatabase.SaveOperationModel(updatedData);

                    hasUpdated = true;
                }
            }
            catch (Exception e)
            {
                LoggingService.Error(e, "Error Executing OperationRootTabbedViewModel.RefreshOperationCommand");
            }
            finally
            {
                IsBusy = false;

                _userDialogs.HideLoading();
                _userDialogs.Toast(hasUpdated ? "Operation data updated" : "You already have latest OP version");

                if (hasUpdated)
                {
                    _messenger.Publish(new MessageFrom <OperationRootTabbedViewModel>(this));
                }

                _messenger.Publish(new RefreshAllAgentsLocationsMessage(this));
            }
        }
コード例 #3
0
        private async Task RefreshExecuted()
        {
            if (IsLoading)
            {
                _pendingRefreshCount++;
                return;
            }

            IsLoading            = true;
            _pendingRefreshCount = 0;

            LoggingService.Trace("Executing ChecklistViewModel.RefreshCommand");

            try
            {
                var selectedOpId = _preferences.Get(UserSettingsKeys.SelectedOp, string.Empty);
                if (string.IsNullOrWhiteSpace(selectedOpId))
                {
                    return;
                }

                Operation = await _operationsDatabase.GetOperationModel(selectedOpId);

                if (Operation == null)
                {
                    return;
                }

                var assignedLinks   = new List <LinkAssignmentData>();
                var assignedMarkers = new List <MarkerAssignmentData>();
                if (!Operation.Links.IsNullOrEmpty())
                {
                    assignedLinks = Operation.Links.Select(CreateLinkAssignmentData).ToList();
                }

                if (!Operation.Markers.IsNullOrEmpty())
                {
                    assignedMarkers = Operation.Markers.Select(CreateMarkerAssignmentData).ToList();
                }

                var orderedAssignments = new List <AssignmentData>();
                if (!assignedLinks.IsNullOrEmpty())
                {
                    orderedAssignments.AddRange(assignedLinks);
                }
                if (!assignedMarkers.IsNullOrEmpty())
                {
                    orderedAssignments.AddRange(assignedMarkers);
                }

                Elements.Clear();

                if (!orderedAssignments.IsNullOrEmpty())
                {
                    orderedAssignments = orderedAssignments.OrderBy(x => x.Order).ToList();
                    Elements.AddRange(orderedAssignments);
                }
            }
            catch (Exception e)
            {
                LoggingService.Error(e, "Error Executing ChecklistViewModel.RefreshCommand");
            }
            finally
            {
                await RaisePropertyChanged(() => Elements);

                IsLoading = false;

                if (_pendingRefreshCount > 0)
                {
                    await RefreshCommand.ExecuteAsync().ConfigureAwait(false);
                }
            }
        }
コード例 #4
0
        private async Task RefreshExecuted()
        {
            if (IsLoading)
            {
                _pendingRefreshCount++;
                return;
            }

            IsLoading            = true;
            _pendingRefreshCount = 0;

            LoggingService.Trace("Executing AssignmentsListViewModel.RefreshCommand");

            try
            {
                var selectedOpId = _preferences.Get(UserSettingsKeys.SelectedOp, string.Empty);
                if (string.IsNullOrWhiteSpace(selectedOpId))
                {
                    return;
                }

                Operation = await _operationsDatabase.GetOperationModel(selectedOpId);

                if (Operation == null)
                {
                    return;
                }

                var userGid = _userSettingsService.GetLoggedUserGoogleId();
                if (string.IsNullOrWhiteSpace(userGid))
                {
                    return;
                }

                var assignedLinks   = new List <LinkAssignmentData>();
                var assignedMarkers = new List <MarkerAssignmentData>();
                if (!Operation.Links.IsNullOrEmpty())
                {
                    assignedLinks = Operation.Links.Where(l => l.AssignedTo.Equals(userGid))
                                    .Select(l => new LinkAssignmentData(Operation.Id, l.ThrowOrderPos)
                    {
                        Link       = l,
                        FromPortal = Operation.Portals?.FirstOrDefault(p => p.Id.Equals(l.FromPortalId)),
                        ToPortal   = Operation.Portals?.FirstOrDefault(p => p.Id.Equals(l.ToPortalId)),
                        Color      = WasabeeColorsHelper.GetColorFromWasabeeName(l.Color, Operation.Color)
                    }).OrderBy(x => x.Link !.ThrowOrderPos).ToList();
                }

                if (!Operation.Markers.IsNullOrEmpty())
                {
                    assignedMarkers = Operation.Markers.Where(m => m.AssignedTo.Equals(userGid))
                                      .Select(m => new MarkerAssignmentData(Operation.Id, m.Order)
                    {
                        Marker = m,
                        Portal = Operation.Portals?.FirstOrDefault(p => p.Id.Equals(m.PortalId))
                    }).OrderBy(x => x.Marker !.Order).ToList();
                }

                var orderedAssignments = new List <AssignmentData>();
                if (!assignedLinks.IsNullOrEmpty())
                {
                    orderedAssignments.AddRange(assignedLinks);
                }
                if (!assignedMarkers.IsNullOrEmpty())
                {
                    orderedAssignments.AddRange(assignedMarkers);
                }

                Assignments.Clear();

                if (!orderedAssignments.IsNullOrEmpty())
                {
                    orderedAssignments = orderedAssignments.OrderBy(x => x.Order).ToList();
                    Assignments.AddRange(orderedAssignments);
                }
            }
            catch (Exception e)
            {
                LoggingService.Error(e, "Error Executing AssignmentsListViewModel.RefreshCommand");
            }
            finally
            {
                await RaisePropertyChanged(() => Assignments);

                IsLoading = false;

                if (_pendingRefreshCount > 0)
                {
                    await RefreshCommand.ExecuteAsync().ConfigureAwait(false);
                }
            }
        }