/// <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); }
/// <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()); } }
/// <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>()); } }
/// <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); }
/// <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."); } } }
/// <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)); }
/// <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)); }
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)); }
/// <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); }