Ejemplo n.º 1
0
 /// <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);
     }
 }
Ejemplo n.º 2
0
        /// <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);
        }