/// <summary> /// Charge les données. /// </summary> /// <param name="projectId">L'identifiant du projet.</param> protected override async Task LoadData(int projectId) { ShowSpinner(); try { AcquireData data = await ServiceBus.Get <IValidateService>().GetAcquireData(projectId); await LoadDataInternal(data); } catch (Exception e) { base.OnError(e); } }
/// <summary> /// Obtient les données pour l'écran Acquérir. /// </summary> /// <param name="context">Le contexte EF.</param> /// <param name="projectId">L'identifiant du projet.</param> /// <param name="natureFilter">Le filtre sur les codes de nature de scénario.</param> /// <returns> /// Les données /// </returns> public static async Task <AcquireData> GetAcquireData(KsmedEntities context, int projectId, GetDataScenarioNatures natureFilter) { IDictionary <ProcessReferentialIdentifier, bool> referentialsUsed = await GetReferentialsUse(context, projectId); int processId = (await context.Projects.SingleAsync(p => p.ProjectId == projectId)).ProcessId; AcquireData data = new AcquireData { Categories = await Queries.FilterReferentials(context.ActionCategories, processId, ProcessReferentialIdentifier.Category).ToArrayAsync(), Skills = await Queries.FilterReferentials(context.Skills, processId, ProcessReferentialIdentifier.Skill).ToArrayAsync(), Resources = await Queries.FilterResources(context, processId).ToArrayAsync(), Videos = await context.Projects .Include(nameof(Project.Process)) .Include($"{nameof(Project.Process)}.{nameof(Procedure.Videos)}") .Where(p => p.ProjectId == projectId) .SelectMany(p => p.Process.Videos) .OrderBy(v => v.CameraName).OrderBy(v => v.DefaultResourceId).OrderBy(v => v.ResourceView).OrderBy(v => v.ShootingDate) .ToArrayAsync() }; if (referentialsUsed[ProcessReferentialIdentifier.Ref1]) { data.Ref1s = await Queries.FilterReferentials(context.Refs1, processId, ProcessReferentialIdentifier.Ref1).ToArrayAsync(); } if (referentialsUsed[ProcessReferentialIdentifier.Ref2]) { data.Ref2s = await Queries.FilterReferentials(context.Refs2, processId, ProcessReferentialIdentifier.Ref2).ToArrayAsync(); } if (referentialsUsed[ProcessReferentialIdentifier.Ref3]) { data.Ref3s = await Queries.FilterReferentials(context.Refs3, processId, ProcessReferentialIdentifier.Ref3).ToArrayAsync(); } if (referentialsUsed[ProcessReferentialIdentifier.Ref4]) { data.Ref4s = await Queries.FilterReferentials(context.Refs4, processId, ProcessReferentialIdentifier.Ref4).ToArrayAsync(); } if (referentialsUsed[ProcessReferentialIdentifier.Ref5]) { data.Ref5s = await Queries.FilterReferentials(context.Refs5, processId, ProcessReferentialIdentifier.Ref5).ToArrayAsync(); } if (referentialsUsed[ProcessReferentialIdentifier.Ref6]) { data.Ref6s = await Queries.FilterReferentials(context.Refs6, processId, ProcessReferentialIdentifier.Ref6).ToArrayAsync(); } if (referentialsUsed[ProcessReferentialIdentifier.Ref7]) { data.Ref7s = await Queries.FilterReferentials(context.Refs7, processId, ProcessReferentialIdentifier.Ref7).ToArrayAsync(); } Project project = await context.Projects.Include(nameof(Project.Process)).SingleAsync(p => p.ProjectId == projectId); data.CustomFieldsLabels = GetCustomFieldsLabels(project); Scenario[] scenarios = null; Scenario[] scenariosUsedForMapping = null; if (natureFilter == GetDataScenarioNatures.InitialAndTarget) { // Il y a tout ce qu'il faut pour faire le mapping dans les scenarii chargés scenariosUsedForMapping = await LoadScenarios(context, projectId, referentialsUsed, GetDataScenarioNatures.InitialAndTarget); scenarios = scenariosUsedForMapping; } else if (natureFilter == GetDataScenarioNatures.Realized) { // Il faut charger au moins les scenarii cibles également scenariosUsedForMapping = await LoadScenarios(context, projectId, referentialsUsed, GetDataScenarioNatures.All); scenarios = scenariosUsedForMapping.Where(scenario => scenario.NatureCode == KnownScenarioNatures.Realized).ToArray(); } else { // Le cas all à priori, on considère de toute façon qu'il s'agit du cas par défaut scenariosUsedForMapping = await LoadScenarios(context, projectId, referentialsUsed, natureFilter); scenarios = scenariosUsedForMapping; } ScenarioActionHierarchyHelper.MapScenariosActionsOriginals(scenariosUsedForMapping); data.Scenarios = scenarios; return(data); }