/// <summary>
        /// Récupére l'entité désignée par l'id en paramétre.
        /// </summary>
        /// <param name="id">Id de l'entité</param>
        /// <returns>Message de retour avec l'entité</returns>
        public async Task <DTO.WorkflowInstance> GetById(long id)
        {
            ENT.WorkflowInstance workflowInstance = await WorkflowInstanceDomain.Get(id);

            DTO.WorkflowInstance dtoWorkflowInstance = null;
            if (workflowInstance != null)
            {
                dtoWorkflowInstance = Mapper.Map <ENT.WorkflowInstance, DTO.WorkflowInstance>(workflowInstance);
            }

            return(dtoWorkflowInstance);
        }
 /// <summary>
 /// This function permits to update an instance
 /// </summary>
 /// <param name="workflowConfig"></param>
 /// <returns>WorkflowConfig</returns>
 public async Task <DTO.WorkflowInstance> Put(long id, DTO.WorkflowInstance dto)
 {
     DTO.WorkflowInstance element = Mapper.Map <ENT.WorkflowInstance, DTO.WorkflowInstance>(await WorkflowInstanceDomain.Get(id));
     if (element.Id != 0)
     {
         dto.Id = element.Id;
         return(Mapper.Map <ENT.WorkflowInstance, DTO.WorkflowInstance>(
                    await WorkflowInstanceDomain.Add(Mapper.Map <DTO.WorkflowInstance, ENT.WorkflowInstance>(dto))));
     }
     else
     {
         return(new DTO.WorkflowInstance());
     }
 }
        /// <summary>
        /// Récupére toutes les entités DTO existantes.
        /// </summary>
        /// <returns>Message de retour avec la liste en json</returns>
        public async Task <IEnumerable <DTO.WorkflowInstance> > GetAll()
        {
            IEnumerable <ENT.WorkflowInstance> workflowInstance = await WorkflowInstanceDomain.Get();

            IEnumerable <DTO.WorkflowInstance> dtoWorkflowInstance = null;

            if (workflowInstance != null)
            {
                dtoWorkflowInstance = Mapper.Map <IEnumerable <ENT.WorkflowInstance>, IEnumerable <DTO.WorkflowInstance> >(workflowInstance);
            }
            else
            {
                dtoWorkflowInstance = new List <DTO.WorkflowInstance>();
            }

            return(dtoWorkflowInstance);
        }
Esempio n. 4
0
        /// <summary>
        /// This method permits to open and start the workflow
        /// </summary>
        /// <param name="workflowConfig">WorkflowConfig Id</param>
        /// <param name="dataSet">DataSet Id</param>
        public async Task <HttpResponseMessageResult> Open(long workflowConfigId, long dataSetId, long idUserSet)
        {
            // Création de la transaction
            using (IDbContextTransaction transaction = UnitOfWork.GetDbContext().Database.BeginTransaction())
            {
                SessionStatsHelper.HttpHitSaveDBTransaction(transaction, _serviceProvider);

                // On récupére les entités
                WorkflowConfig wfConf = await UnitOfWork.GetDbContext().WorkflowConfig
                                        .Include(wf => wf.SelectorConfig)
                                        .ThenInclude(sc => sc.Criterias)
                                        .ThenInclude(c => c.Dimension)
                                        .Include(wf => wf.SelectorConfig)
                                        .ThenInclude(sc => sc.Modifiers)
                                        .ThenInclude(c => c.Dimension)
                                        .Include(wf => wf.SelectorConfig)
                                        .ThenInclude(sc => sc.Validators)
                                        .ThenInclude(c => c.Dimension)
                                        .Include(wf => wf.SelectorConfig)
                                        .ThenInclude(sc => sc.ModifyCriterias)
                                        .ThenInclude(c => c.Dimension)
                                        .Include(wf => wf.WorkflowDimension)
                                        .ThenInclude(wd => wd.Dimension)
                                        .Where(wf => wf.Id == workflowConfigId)
                                        .AsNoTracking()
                                        .ToAsyncEnumerable()
                                        .FirstOrDefault();

                DataSet dtSet = await UnitOfWork.GetDbContext().DataSet
                                .Include(d => d.DataSetDimensions)
                                .Where(d => d.Id == dataSetId)
                                .AsNoTracking()
                                .ToAsyncEnumerable()
                                .FirstOrDefault();

                UserSet usrSet = await UnitOfWork.GetDbContext().UserSet
                                 .Where(u => u.Id == idUserSet)
                                 .AsNoTracking()
                                 .ToAsyncEnumerable()
                                 .FirstOrDefault();

                if ((wfConf == null) || (dtSet == null) || (usrSet == null))
                {
                    return new HttpResponseMessageResult()
                           {
                               IsSuccess = false, Message = $"Can't get WorkflowConfig with id {workflowConfigId}, DataSet with id {dataSetId}, UserSet with id {idUserSet}"
                           }
                }
                ;

                if (!CheckDimensions(wfConf, dtSet, usrSet))
                {
                    throw new SequenceException("Process.Open: WorkflowDimensions are not equals to DataSetDimensions.");
                }

                // Create the workflow instance
                WorkflowInstance workflowInstance = await WorkflowInstanceDomain.CreateInstance(wfConf, dtSet, usrSet);

                // Générer les SelectorInstance.
                HttpResponseMessageResult res = await WorkflowInstanceDomain.StartSelectorsIntances(workflowInstance);

                transaction.Commit();
                return(res);
            }
        }
        /// <summary>
        /// This function permits to put an instance
        /// </summary>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public async Task <DTO.WorkflowInstance> Post(DTO.WorkflowInstance dto)
        {
            ENT.WorkflowInstance element = Mapper.Map <DTO.WorkflowInstance, ENT.WorkflowInstance>(dto);

            return(Mapper.Map <ENT.WorkflowInstance, DTO.WorkflowInstance>(await WorkflowInstanceDomain.Add(element)));
        }
 /// <summary>
 /// This function permits to delete by id
 /// </summary>
 /// <param name="id"></param>
 /// <returns>Task</returns>
 public async Task Delete(long id)
 {
     await WorkflowInstanceDomain.Delete(id);
 }