public void ReloadSessionExchangesForExchange(VirtualCommitteeExchange exchange) { using var scope = scopeFactroy.CreateScope(); using var context = scope.ServiceProvider.GetRequiredService <MunityContext>(); var session = context.CommitteeSessions.AsNoTracking().Where(n => n.Committee.CommitteeId == exchange.CommitteeId) .Select(n => new CommitteeSessionExchange(this.scopeFactroy) { SessionId = n.CommitteeSessionId, CurrentAgendaItemName = n.CurrentAgendaItem.Name, CurrentAgendaItemId = n.CurrentAgendaItem.AgendaItemId, SessionName = n.Name, Petitions = n.CurrentAgendaItem.Petitions .Where(n => n.Status != Base.EPetitionStates.Resolved && n.Status != Base.EPetitionStates.Done && n.Status != Base.EPetitionStates.Removed) .Select(p => new PetitionDto() { PetitionDate = p.PetitionDate, PetitionTypeName = p.PetitionType.Name, PetitionCategoryName = p.PetitionType.Category, PetitionUserIso = p.User.DelegateCountry.Iso, PetitionUserName = p.User.RoleName, PetitionId = p.PetitionId, PetitionTypeId = p.PetitionType.PetitionTypeId, PetitionTypeSortOrder = p.PetitionType.SortOrder, PetitionUserId = p.User.RoleId, Status = p.Status, TargetAgendaItemId = p.AgendaItem.AgendaItemId, Text = p.Text } ).OrderBy(n => n.PetitionTypeSortOrder).ThenBy(n => n.PetitionDate).ToObservableCollection() }).FirstOrDefault(); exchange.CurrentSessionExchange = session; }
public VirtualCommitteeExchange GetExchange(string committeeId) { var exchange = _exchanges.FirstOrDefault(n => n.CommitteeId == committeeId); if (exchange == null) { exchange = new VirtualCommitteeExchange(committeeId); ReloadSessionExchangesForExchange(exchange); this._exchanges.Add(exchange); _logger.LogInformation($"New exchange for committee: {committeeId} created."); } return(exchange); }