/// <summary> /// Ajoute un DataSetDimension à un DataSet. /// </summary> /// <param name="dataSetDimension">DataSetDimension</param> /// <param name="dataSetId">Id du DataSet cible</param> /// <param name="dimensionId">Id de la dimension à associer</param> /// <returns>Message de retour</returns> public async Task <DataSetDimension> AddDataSetDimension(DataSetDimension dataSetDimension, long dataSetId, long dimensionId) { if (dataSetDimension == null) { throw new WrongParameterException($"DataSetDomain.AddDataSetDimension : DataSetDimension is null."); } DataSet dataSet = await UnitOfWork.DataSetRepository.GetById(dataSetId); if (dataSet == null) { throw new WrongParameterException($"DataSetDomain.AddDataSetDimension : DataSet (id = {dataSetId}) don't exist."); } Dimension dimension = await UnitOfWork.DimensionRepository.GetById(dimensionId); if (dimension == null) { throw new WrongParameterException($"DataSetDomain.AddDataSetDimension : Dimension (id = {dimensionId}) don't exist."); } UnitOfWork.DataSetDimensionRepository.PrepareAddForObject(dataSetDimension); dataSetDimension.DataSet = dataSet; dataSetDimension.Dimension = dimension; int nbr = await UnitOfWork.GetDbContext().SaveChangesAsync(); if (nbr <= 0) { throw new DatabaseException("DataSetDomain.AddDataSetDimension : impossible to save DataSetDimension."); } return(dataSetDimension); }
/// <summary> /// Remplie la liste where donnée en paramétre d'expression permettant de filtrer la table ValueObject selon les listes de CriteriaValues. /// </summary> /// <param name="where">Liste d'expression qui va recevoir les filtres (Sortie)</param> /// <param name="lstCriteriaValues">Listes des CriteriaValues utilisées pour les filtres</param> /// <param name="idsDimensionDS">Dictionnaire des DimensionDataSet par Id.</param> /// <param name="isLargeSearch">Créé une recherche stricte ou large (dans le cas d'arbre notamment)</param> /// <returns>Message de retour</returns> public HttpResponseMessageResult BuildFilterRequest(List <Expression <Func <ValueObject, bool> > > where, IEnumerable <IEnumerable <CriteriaValues> > lstCriteriaValues, Dictionary <long, DataSetDimension> idsDimensionDS, bool isLargeSearch) { HttpResponseMessageResult res = new HttpResponseMessageResult() { IsSuccess = true }; Dictionary <long, IEnumerable <CriteriaValues> > dico = CriteriaValuesDomain.GetCriteriaValuesByDimension(lstCriteriaValues); foreach (long dimensionId in dico.Keys) { DataSetDimension dsd = idsDimensionDS.Where(k => k.Value.Dimension.Id == dimensionId).Select(k => k.Value).FirstOrDefault(); if (dsd == null) { res.Message += $"ValueObjectDomain:BuildFilterRequest: Error, no Dimension column for this id ({dimensionId})!"; res.IsSuccess = false; continue; } string nomDimension = idsDimensionDS[dsd.Id].ColumnName; IEnumerable <string> values = dico[dimensionId].Select(cv => cv.Value); if (isLargeSearch && (idsDimensionDS[dsd.Id].Dimension.TypeDimension == DimensionTypeEnum.Tree)) { if (values.Count() > 1) { where.Add(HelperGetFilterByTreeDimension(nomDimension, values)); } else if (values.Count() == 1) { where.Add(HelperGetFilterByTreeDimension(nomDimension, values.ElementAt(0))); } } else { if (values.Count() > 1) { where.Add(HelperGetFilterByDimension(nomDimension, values)); } else if (values.Count() == 1) { where.Add(HelperGetFilterByDimension(nomDimension, values.ElementAt(0))); } } } return(res); }
private async Task <long> GetIdDimensionTree(string nomDimension, string parameterName, WorkflowInstance wfInstance) { DataSetDimension dsd = await UnitOfWork.GetDbContext().DataSetDimension .Include(d => d.DataSet) .Include(d => d.Dimension) .Where(d => d.DataSet.Id == wfInstance.DataSetId && d.ColumnName == nomDimension && d.Dimension.TypeDimension == DimensionTypeEnum.Tree) .AsNoTracking() .FirstOrDefaultAsync(); if (dsd == null) { throw new WrongParameterException($"Action.CheckIsDimensionTree : Parameter {parameterName} = [{nomDimension}] doen't exist or isn't a tree dimension!"); } return(dsd.Dimension.Id); }
public async Task <IActionResult> AddDataSetDimension([FromBody] DataSetDimension dataSetDimension, long dataSetId, long dimensionId) { try { HttpResponseMessageResult res = new HttpResponseMessageResult() { IsSuccess = true }; dataSetDimension = await Adapter.AddDataSetDimension(dataSetDimension, dataSetId, dimensionId); res.GetObjectForJson(dataSetDimension); return(Ok(res)); } catch (Exception ex) { Logger.LogError(LoggingEvents.CRITICAL_ERROR, ex, ex.Message); return(StatusCode(500, ex.Message)); } }