예제 #1
0
        private LinkAssignmentData CreateLinkAssignmentData(LinkModel link)
        {
            if (Operation == null)
            {
                throw new Exception("Operation is null");
            }

            return(new LinkAssignmentData(Operation !.Id, link.ThrowOrderPos)
            {
                Link = link,
                AssignedAgent = link.AssignedTo.IsNullOrEmpty() ? null : _teamAgentsDatabase.GetTeamAgent(link.AssignedTo).Result,
                ShowAssignee = !link.AssignedTo.IsNullOrEmpty(),
                FromPortal = Operation.Portals?.FirstOrDefault(p => p.Id.Equals(link.FromPortalId)),
                ToPortal = Operation.Portals?.FirstOrDefault(p => p.Id.Equals(link.ToPortalId)),
                Color = WasabeeColorsHelper.GetColorFromWasabeeName(link.Color, Operation.Color)
            });
예제 #2
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);
                }
            }
        }