public async Task <HttpResponseMessage> SaveApplicableDeviceFilter(string filterId, bool isMatched, [FromBody] dynamic method) { return(await GetServiceResponseAsync(async() => { DeviceListFilter methodfilter = new DeviceListFilter(); DeviceListFilter rawfilter = await _filterRepository.GetFilterAsync(filterId); string queryColumnName = GenerateQueryColumnName(method); var conjunctionClause = await this.GetConjunctionClause(filterId); if (isMatched) { methodfilter.AdvancedClause = $"{conjunctionClause.CONDITION} {conjunctionClause.AND} is_defined({queryColumnName})"; } else { methodfilter.AdvancedClause = $"{conjunctionClause.CONDITION} {conjunctionClause.AND} NOT is_defined({queryColumnName})"; } methodfilter.Id = Guid.NewGuid().ToString(); methodfilter.Name = Infrastructure.Constants.UnnamedFilterName; methodfilter.IsAdvanced = true; methodfilter.IsTemporary = true; var savedfilter = await _filterRepository.SaveFilterAsync(methodfilter, false); return new { filterId = savedfilter.Id }; })); }
private async Task <DeviceListFilter> GetFilterById(string filterId) { if (filterId == "*" || filterId == DeviceListFilterRepository.DefaultDeviceListFilter.Id) { //[WORKAROUND] No condition available for "All Devices" return(DeviceListFilterRepository.DefaultDeviceListFilter); } else { return(await _filterRepository.GetFilterAsync(filterId)); } }
public async Task <Filter> GetFilterAsync(string filterId) { var filter = await _filterRepository.GetFilterAsync(filterId); if (filter == null) { throw new FilterNotFoundException(filterId); } var jobs = await _jobRepository.QueryByFilterIdAsync(filterId); return(new Filter(filter) { AssociatedJobsCount = jobs.Count() }); }