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) });
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); } } }