コード例 #1
0
        /// <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.ValueObject> GetById(long id)
        {
            ENT.ValueObject valueObjects = await ValueObjectDomain.Get(id);

            DTO.ValueObject dtoValueObjects = null;
            if (valueObjects != null)
            {
                dtoValueObjects = Mapper.Map <ENT.ValueObject, DTO.ValueObject>(valueObjects);
            }

            return(dtoValueObjects);
        }
コード例 #2
0
 /// <summary>
 /// This function permits to put a value in the grid
 /// </summary>
 /// <param name="id"></param>
 /// <param name="initialValue"></param>
 /// <returns></returns>
 public async Task <DTO.ValueObject> Put(long id, DTO.ValueObject dto)
 {
     DTO.ValueObject element = Mapper.Map <ENT.ValueObject, DTO.ValueObject>(await ValueObjectDomain.Get(id));
     if (element.Id != 0)
     {
         return(Mapper.Map <ENT.ValueObject, DTO.ValueObject>(
                    await ValueObjectDomain.Update(Mapper.Map <DTO.ValueObject, ENT.ValueObject>(dto))));
     }
     else
     {
         return(new DTO.ValueObject());
     }
 }
コード例 #3
0
        /// <summary>
        /// GetByFilterWithClausesAndSQLScript
        /// </summary>
        /// <param name="datasetId"></param>
        /// <param name="select"></param>
        /// <param name="where"></param>
        /// <param name="sort_asc"></param>
        /// <param name="sort_desc"></param>
        /// <param name="grouping"></param>
        /// <param name="page"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public async Task <IEnumerable <DTO.ValueObject> > Filter(string[] select, string[] where, string[] sort_asc, string[] sort_desc, bool grouping, int?page, int?pageSize)
        {
            IEnumerable <ENT.ValueObject> valueObjects = await ValueObjectDomain.Filter(select, where, sort_asc, sort_desc, grouping, page, pageSize);

            if (valueObjects != null)
            {
                return(Mapper.Map <IEnumerable <ENT.ValueObject>, IEnumerable <DTO.ValueObject> >(valueObjects));
            }
            else
            {
                return(new List <DTO.ValueObject>());
            }
        }
コード例 #4
0
        /// <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.ValueObject> > GetAll()
        {
            IEnumerable <ENT.ValueObject> valueObjects = await ValueObjectDomain.Get();

            IEnumerable <DTO.ValueObject> dtoValueObjects = null;

            if (valueObjects != null)
            {
                dtoValueObjects = Mapper.Map <IEnumerable <ENT.ValueObject>, IEnumerable <DTO.ValueObject> >(valueObjects);
            }
            else
            {
                dtoValueObjects = new List <DTO.ValueObject>();
            }

            return(dtoValueObjects);
        }
コード例 #5
0
        /// <summary>
        /// This function permits to update values from the workflow.
        /// </summary>
        /// <param name="selectorInstance">SelectorInstance</param>
        public async Task UpdateFutureValues(SelectorInstance selectorInstance)
        {
            IEnumerable <ValueObject> valueObjects = await ValueObjectDomain.Get();

            foreach (ValueObject valueObject in valueObjects.Where(s => s.SelectionInstance == selectorInstance))
            {
                if (valueObject.Status == ValueObjectStatusEnum.Rest)
                {
                    valueObject.Status = ValueObjectStatusEnum.Modify;

                    valueObject.FutureValue  = valueObject.CurrentValue;
                    valueObject.CurrentValue = Convert.ToDouble(null);

                    await ValueObjectDomain.Update(valueObject);
                }
                else
                {
                    throw new SequenceException("Process.Selector.UpdateFutureValues: ValueObject (ID=" + valueObject.Id + ") is not in Rest state.");
                }
            }
        }
コード例 #6
0
        /// <summary>
        /// Permet d'importer une liste de ValueObject.
        /// </summary>
        /// <param name="valueObjects">Liste de ValueObject à enregistrer</param>
        /// <returns>Liste des ids enregistrés</returns>
        public async Task <IEnumerable <long> > Import(IEnumerable <DTO.ValueObject> valueObjects)
        {
            IEnumerable <ENT.ValueObject> entValueObjects = Mapper.Map <IEnumerable <DTO.ValueObject>, IEnumerable <ENT.ValueObject> >(valueObjects);

            return(await ValueObjectDomain.Import(entValueObjects));
        }
コード例 #7
0
 /// <summary>
 /// Permet de lire les données selon un format configuré par l'opérateur, avec des filtres, des tris, la pagination, etc...
 /// </summary>
 /// <param name="selectorInstanceId">Id du SelectorInstance concerné</param>
 /// <param name="filter">Chaines à filtrer, l'indexe représente le numéro de colonne sur lequel appliquer le filtre.</param>
 /// <param name="start">Numéro de ligne à partir duquel il faut commencer la selection</param>
 /// <param name="length">Nombre de ligne à sélectionner</param>
 /// <param name="sortCol">Numéro de colonne à trier</param>
 /// <param name="sortDir">Ordre du tri : ASC ou DESC</param>
 /// <returns>Message de retour + données</returns>
 public async Task <HttpResponseMessageResult> ReadData(long selectorInstanceId, string[] filter, int start, int length, int sortCol, string sortDir)
 {
     return(await ValueObjectDomain.ReadData(selectorInstanceId, filter, start, length, sortCol, sortDir));
 }
コード例 #8
0
        private async Task <IEnumerable <IEnumerable <CriteriaValues> > > GetValueObjectsFromCriteria(IEnumerable <IEnumerable <CriteriaValues> > criteriaValues, long dataSetId)
        {
            List <Expression <Func <ValueObject, bool> > > where = new List <Expression <Func <ValueObject, bool> > >();
            Dictionary <long, DataSetDimension> dimIds = await DataSetDimensionDomain.GetDimensionColumns(dataSetId);

            HttpResponseMessageResult res = ValueObjectDomain.BuildFilterRequest(where, criteriaValues, dimIds, false);

            Dictionary <long, IEnumerable <CriteriaValues> > dico = CriteriaValuesDomain.GetCriteriaValuesByDimension(criteriaValues);

            IQueryable <ValueObject>  dbQuery        = UnitOfWork.GetDbContext().Set <ValueObject>();
            IEnumerable <ValueObject> lstValueObject = await where
                                                       .Aggregate(dbQuery, (current, predicate) => current.Where(predicate))
                                                       .AsNoTracking()
                                                       .ToAsyncEnumerable()
                                                       .ToList();

            Dictionary <string, List <CriteriaValues> > dicoProduitCartesien = new Dictionary <string, List <CriteriaValues> >();

            foreach (ValueObject vo in lstValueObject)
            {
                List <CriteriaValues> lstCV = new List <CriteriaValues>();

                if (vo.Dimension1 != null)
                {
                    lstCV.Add(GetCriteriaValuesFromDimension(Constant.DATA_DIMENSION_1, cv => cv.Value == vo.Dimension1, dimIds, dico));
                }
                if (vo.Dimension2 != null)
                {
                    lstCV.Add(GetCriteriaValuesFromDimension(Constant.DATA_DIMENSION_2, cv => cv.Value == vo.Dimension2, dimIds, dico));
                }
                if (vo.Dimension3 != null)
                {
                    lstCV.Add(GetCriteriaValuesFromDimension(Constant.DATA_DIMENSION_3, cv => cv.Value == vo.Dimension3, dimIds, dico));
                }
                if (vo.Dimension4 != null)
                {
                    lstCV.Add(GetCriteriaValuesFromDimension(Constant.DATA_DIMENSION_4, cv => cv.Value == vo.Dimension4, dimIds, dico));
                }
                if (vo.Dimension5 != null)
                {
                    lstCV.Add(GetCriteriaValuesFromDimension(Constant.DATA_DIMENSION_5, cv => cv.Value == vo.Dimension5, dimIds, dico));
                }
                if (vo.Dimension6 != null)
                {
                    lstCV.Add(GetCriteriaValuesFromDimension(Constant.DATA_DIMENSION_6, cv => cv.Value == vo.Dimension6, dimIds, dico));
                }
                if (vo.Dimension7 != null)
                {
                    lstCV.Add(GetCriteriaValuesFromDimension(Constant.DATA_DIMENSION_7, cv => cv.Value == vo.Dimension7, dimIds, dico));
                }
                if (vo.Dimension8 != null)
                {
                    lstCV.Add(GetCriteriaValuesFromDimension(Constant.DATA_DIMENSION_8, cv => cv.Value == vo.Dimension8, dimIds, dico));
                }
                if (vo.Dimension9 != null)
                {
                    lstCV.Add(GetCriteriaValuesFromDimension(Constant.DATA_DIMENSION_9, cv => cv.Value == vo.Dimension9, dimIds, dico));
                }
                if (vo.Dimension10 != null)
                {
                    lstCV.Add(GetCriteriaValuesFromDimension(Constant.DATA_DIMENSION_10, cv => cv.Value == vo.Dimension10, dimIds, dico));
                }

                lstCV = lstCV.Where(cv => cv != null).ToList();
                string keyLstCv = GetUniqueKeyFromCriteriaValues(lstCV);
                if (!dicoProduitCartesien.ContainsKey(keyLstCv))
                {
                    dicoProduitCartesien.Add(keyLstCv, lstCV);
                }
            }

            return(dicoProduitCartesien.Select(kv => kv.Value));
        }
コード例 #9
0
        /// <summary>
        /// This function permits to do a INIT action.
        /// </summary>
        /// <param name="selectorInstance">SelectorInstance</param>
        /// <param name="wfInstance">Workflow instance</param>
        /// <returns>Message</returns>
        public async Task <HttpResponseMessageResult> Init(SelectorInstance selectorInstance, WorkflowInstance wfInstance)
        {
            if ((selectorInstance == null) || (wfInstance == null))
            {
                throw new WrongParameterException("Process.SelectorInstance.Init: SelectorInstance or WorkflowInstance are null!");
            }

            HttpResponseMessageResult res = new HttpResponseMessageResult()
            {
                IsSuccess = true
            };

            // Sélection des données et enregistrement des liaisons (subset)
            ICollection <CriteriaValues>        lstCv  = selectorInstance.CriteriaValues;
            Dictionary <long, DataSetDimension> dimIds = await DataSetDimensionDomain.GetDimensionColumns(wfInstance.DataSetId);

            List <Expression <Func <ValueObject, bool> > > where = new List <Expression <Func <ValueObject, bool> > >();

            res.Append(ValueObjectDomain.BuildFilterRequest(where, new List <IEnumerable <CriteriaValues> >()
            {
                lstCv
            }, dimIds, true));

            IQueryable <ValueObject> dbQuery = UnitOfWork.GetDbContext().Set <ValueObject>();
            // Vérification que le SelectorInstance n'utilise pas les données d'un autre SelectorInstance.
            int nbrLinkVoSi = await where
                              .Aggregate(dbQuery, (current, predicate) => current.Where(predicate))
                              .Include(vo => vo.SelectorInstanceValueObject)
                              .Where(vo => vo.SelectorInstanceValueObject.Count > 0)
                              .AsNoTracking()
                              .CountAsync();

            if (nbrLinkVoSi > 0)
            {
                throw new SequenceException($"SelecotrEngine.Init: Can't allocate data for SelectorInstance (from {selectorInstance?.SelectorConfig?.Name}) because there are already SelectorInstance for data.");
            }

            IEnumerable <ValueObject> lstValueObject = await where
                                                       .Aggregate(dbQuery, (current, predicate) => current.Where(predicate))
                                                       .Include(vo => vo.DataSet)
                                                       .Where(vo => vo.DataSet.Id == wfInstance.DataSetId)
                                                       //.AsNoTracking()
                                                       .ToAsyncEnumerable()
                                                       .ToList();

            selectorInstance.SelectorInstanceValueObject = new List <SelectorInstanceValueObject>();
            foreach (ValueObject vo in lstValueObject)
            {
                vo.FutureValue = null;
                SelectorInstanceValueObject sivo = new SelectorInstanceValueObject()
                {
                    SelectorInstance = selectorInstance,
                    ValueObject      = vo
                };
                sivo.InitDatesAndUser("");

                selectorInstance.SelectorInstanceValueObject.Add(sivo);
                vo.SelectorInstanceValueObject.Add(sivo);
                vo.Status = ValueObjectStatusEnum.Modify;
            }
            int nbr = await UnitOfWork.GetDbContext().SaveChangesAsync();

            // Création de la table temporaire de données...
            res.Append(await GridConfigurationDomain.CreateDataTableDB(selectorInstance, wfInstance));

            // Recherche des modificateurs
            res.Append(await SelectorInstanceDomain.FindModificator(selectorInstance, wfInstance));

            // Recherche des validateurs
            res.Append(await SelectorInstanceDomain.FindValidators(selectorInstance, wfInstance));

            // On régle les données modifiables
            res.Append(await SelectorInstanceDomain.SetModifyData(selectorInstance, wfInstance, dimIds));

            return(res);
        }