public void FetchEssentialAssets_FilterValueWithUnderscoreWildCardOperators_ValidQuery() { AssetSettingsListRequestDto request = new AssetSettingsListRequestDto { CustomerUid = Guid.NewGuid().ToString("N"), UserUid = Guid.NewGuid().ToString("N"), PageNumber = 1, PageSize = 10, SortColumn = "AssetId", SortDirection = "ASC", FilterName = "AssetId", FilterValue = "_" }; _stubTransactions .GetMultipleResultSetAsync <AssetSettingsListDto, long>(Arg.Any <string>(), Arg.Any <object>()) .ReturnsForAnyArgs(x => { return(new Tuple <IEnumerable <AssetSettingsListDto>, IEnumerable <long> >( new List <AssetSettingsListDto>(), new List <long> { 0 })); }); var values = _assetSettingsListRepository.FetchEssentialAssets(request).Result; var queryExpected = string.Format(Queries.FetchAssetsForCustomerAndUserUId + Queries.SelectFoundRows, (request.PageNumber > 0) ? string.Format(Queries.LimitClause, (request.PageNumber - 1) * request.PageSize, request.PageSize) : string.Empty, // Limit offset and limit page size string.Format(Queries.OrderByClause, Constants.AssetSettingsSortConfig[(AssetSettingsSortColumns)Enum.Parse(typeof(AssetSettingsSortColumns), request.SortColumn)], request.SortDirection), // order by clause string.Format("AND a.AssetName LIKE '%{0}%'", @"\_"), request.DeviceType); _stubTransactions.Received(1).GetMultipleResultSetAsync <AssetSettingsListDto, long>(Arg.Is <string>(queryExpected), Arg.Any <dynamic>()); }
public void FetchEssentialAssets_InvalidRequestWithAssetSerialNumberFilter_ThrowsException() { AssetSettingsListRequestDto request = new AssetSettingsListRequestDto { CustomerUid = Guid.NewGuid().ToString("N"), UserUid = Guid.NewGuid().ToString("N"), PageNumber = 1, PageSize = 10, SortColumn = "AssetId", SortDirection = "ASC", FilterName = "InvalidFilterName", FilterValue = "Fuel" }; try { var values = _assetSettingsListRepository.FetchEssentialAssets(request).Result; } catch (AggregateException ex) { Assert.NotNull(ex.InnerException); var exception = ex.InnerException; var queryExpected = string.Format(Queries.FetchAssetsForCustomerAndUserUId + Queries.SelectFoundRows, (request.PageNumber > 0) ? string.Format(Queries.LimitClause, (request.PageNumber - 1) * request.PageSize, request.PageSize) : string.Empty, // Limit offset and limit page size string.Format(Queries.OrderByClause, Constants.AssetSettingsSortConfig[(AssetSettingsSortColumns)Enum.Parse(typeof(AssetSettingsSortColumns), request.SortColumn)], request.SortDirection), // order by clause string.Format("AND a.InvalidFilterName LIKE '%{0}%'", request.FilterValue), request.DeviceType); _stubTransactions.DidNotReceive().GetMultipleResultSetAsync <AssetSettingsListDto, long>(Arg.Any <string>(), Arg.Any <dynamic>()); Assert.NotNull(exception.Message); Assert.Equal(exception.Message, "Requested value 'InvalidFilterName' was not found."); } }
private string BuildTargetsFilterCriteria(AssetSettingsListRequestDto request) { try { this._loggingService.Debug("Started Building filter criteria ", string.Format(LogMethodFormat, "BuildTargetsFilterCriteria")); StringBuilder criteria = new StringBuilder(string.Empty); var filterValue = this.GetFiltervalue(request.FilterValue); if (!string.IsNullOrEmpty(filterValue)) { AssetSettingsFilters filterType = (AssetSettingsFilters)Enum.Parse(typeof(AssetSettingsFilters), request.FilterName, true); criteria.Append("AND " + string.Format(Constants.AssetSettingsFilterConfig[filterType], filterValue)); } var deviceType = this.GetFiltervalue(request.DeviceType); if (!string.IsNullOrEmpty(deviceType)) { criteria.Append(" AND " + string.Format(Constants.AssetSettingsFilterConfig[AssetSettingsFilters.DeviceType], deviceType)); } if (!string.IsNullOrEmpty(request.SubAccountCustomerUid)) { criteria.Append(" AND " + string.Format(Constants.AssetSettingsFilterConfig[AssetSettingsFilters.SubAccountCustomerUid], Queries.FetchAssetUIDsForSubAccountCustomerUID)); } this._loggingService.Debug(" Filter Criteria : " + criteria.ToString(), MethodInfo.GetCurrentMethod().Name); this._loggingService.Debug("Ended Building Filter Criteria", MethodInfo.GetCurrentMethod().Name); return(criteria.ToString()); } catch (Exception ex) { throw; } }
public void FetchValidAssetUIds_ValidRequest_ValidQuery() { AssetSettingsListRequestDto request = new AssetSettingsListRequestDto { CustomerUid = Guid.NewGuid().ToString("N"), UserUid = Guid.NewGuid().ToString("N") }; _assetSettingsListRepository.FetchValidAssetUIds(_assetUIDs, request); _stubTransactions.Received(1).GetAsync <string>(Arg.Is <string>(string.Format(Queries.FetchAssetUIdsWithUserCustomerAndAssets, string.Join(",", _assetUIDs.Select(x => "UNHEX('" + x + "')")).Replace("-", string.Empty))), Arg.Is <dynamic>(request)); }
// [Fact] // public void FetchEssentialAssets_FilterValueAndDeviceTypeFilter_ValidQuery() // { // AssetSettingsListRequestDto request = new AssetSettingsListRequestDto // { // CustomerUid = Guid.NewGuid().ToString("N"), // UserUid = Guid.NewGuid().ToString("N"), // PageNumber = 1, // PageSize = 10, // SortColumn = "AssetId", // SortDirection = "ASC", // FilterName = "AssetId", // FilterValue = "Fuel", // DeviceType = "PL" // }; //_stubTransactions // .GetMultipleResultSetAsync<AssetSettingsListDto, long>(Arg.Any<string>(), Arg.Any<object>()) // .ReturnsForAnyArgs(x => // { // return new Tuple<IEnumerable<AssetSettingsListDto>, IEnumerable<long>>( // new List<AssetSettingsListDto>(), new List<long> { 0 }); // }); //var values = _assetSettingsListRepository.FetchEssentialAssets(request).Result; // var queryExpected = string.Format(string.Concat(Queries.FetchAssetsForCustomerAndUserUId, Queries.SelectFoundRows), // (request.PageNumber > 0) ? string.Format(Queries.LimitClause, (request.PageNumber - 1) * request.PageSize, request.PageSize) : string.Empty, // Limit offset and limit page size // !string.IsNullOrEmpty(request.SortColumn) ? string.Format(Queries.OrderByClause, "AssetName", request.SortDirection) : string.Empty, // order by clause // "AND a.AssetName LIKE '%Fuel%' AND d.DeviceType = 'PL'", // FilterCriteria // request.DeviceType); // _stubTransactions.Received(1).GetMultipleResultSetAsync<AssetSettingsListDto, long>(Arg.Is<string>(queryExpected), Arg.Any<dynamic>()); // } // [Fact] // public void FetchDeviceTypes_ValidRequest_ValidQuery() // { // AssetDeviceTypeRequest request = new AssetDeviceTypeRequest // { // CustomerUid = Guid.NewGuid(), // UserUid = Guid.NewGuid(), // StatusInd = 1, // AssetUIDs = new List<Guid> { Guid.NewGuid() } // }; //_stubTransactions // .GetMultipleResultSetAsync<DeviceTypeDto, long>(Arg.Any<string>(), Arg.Any<object>()) // .ReturnsForAnyArgs(x => // { // return new Tuple<IEnumerable<DeviceTypeDto>, IEnumerable<long>>( // new List<DeviceTypeDto> // { // new DeviceTypeDto // { // AssetCount = 12, // DeviceType = "PL121" // } // }, new List<long> { 20 }); // }); // var values = _assetSettingsListRepository.FetchDeviceTypesByAssetUID(request).Result; // var queryExpected = string.Format(Queries.FetchDeviceTypesForCustomerAndUser, string.Empty, string.Format(Queries.OrderByClause, "DeviceType", "ASC"), Queries.SelectFoundRows, "And ua.fk_AssetUID IN (UNHEX('" + request.AssetUIDs.First().ToString("N") +"'))"); // _stubTransactions.Received(1).GetMultipleResultSetAsync<DeviceTypeDto, long>(Arg.Is(queryExpected), Arg.Any<dynamic>()); // } //[Fact] public void FetchValidAssetUIDs_ValidRequest_ValidQuery() { AssetSettingsListRequestDto request = new AssetSettingsListRequestDto { CustomerUid = Guid.NewGuid().ToString("N"), UserUid = Guid.NewGuid().ToString("N"), StatusInd = 1 }; List <string> assetUIDs = new List <string> { Guid.NewGuid().ToString("N"), Guid.NewGuid().ToString("N"), Guid.NewGuid().ToString("N") }; var values = _assetSettingsListRepository.FetchValidAssetUIds(assetUIDs, request).Result; var queryExpected = string.Format(Queries.FetchAssetUIdsWithUserCustomerAndAssets, string.Join(",", assetUIDs.Select(x => "UNHEX('" + x + "')")).Replace("-", string.Empty)); _stubTransactions.Received(1).GetAsync <string>(Arg.Is <string>(queryExpected), Arg.Any <dynamic>()); }
private string BuildSortColumn(AssetSettingsListRequestDto request) { try { this._loggingService.Debug("Started Building sort column ", string.Format(LogMethodFormat, "BuildSortColumn")); StringBuilder criteria = new StringBuilder(string.Empty); if (!string.IsNullOrEmpty(request.SortColumn)) { AssetSettingsSortColumns sortColumn = (AssetSettingsSortColumns)Enum.Parse(typeof(AssetSettingsSortColumns), request.SortColumn, true); criteria.Append(Constants.AssetSettingsSortConfig[sortColumn]); } this._loggingService.Debug("sort column : " + criteria.ToString(), string.Format(LogMethodFormat, "BuildSortColumn")); this._loggingService.Debug("Ended Building sort column", string.Format(LogMethodFormat, "BuildSortColumn")); return(criteria.ToString()); } catch (Exception ex) { throw; } }
public void FetchEssentialAssets_ValidRequestWithAssetSerialNumberFilter_ValidQuery() { AssetSettingsListRequestDto request = new AssetSettingsListRequestDto { CustomerUid = Guid.NewGuid().ToString("N"), UserUid = Guid.NewGuid().ToString("N"), PageNumber = 1, PageSize = 10, SortColumn = "AssetId", SortDirection = "ASC", FilterName = "AssetSerialNumber", FilterValue = "Fuel" }; _assetSettingsListRepository.FetchEssentialAssets(request); var queryExpected = string.Format(Queries.FetchAssetsForCustomerAndUserUId + Queries.SelectFoundRows, (request.PageNumber > 0) ? string.Format(Queries.LimitClause, (request.PageNumber - 1) * request.PageSize, request.PageSize) : string.Empty, // Limit offset and limit page size string.Format(Queries.OrderByClause, Constants.AssetSettingsSortConfig[(AssetSettingsSortColumns)Enum.Parse(typeof(AssetSettingsSortColumns), request.SortColumn)], request.SortDirection), // order by clause string.Format("AND " + Constants.AssetSettingsFilterConfig[(AssetSettingsFilters)Enum.Parse(typeof(AssetSettingsFilters), request.FilterName)], request.FilterValue), request.DeviceType); // where clause _stubTransactions.Received(1).GetMultipleResultSetAsync <AssetSettingsListDto, long>(Arg.Is <string>(queryExpected), Arg.Any <dynamic>()); }
public async Task <AssetSettingsListResponse> FetchEssentialAssets(AssetSettingsListRequest request) { try { var deviceTypeParameterAttributes = await this._parameterAttributeCache.Get(request.DeviceType); var validationResponse = await this.Validate <AssetSettingsListRequest>(_assetSettingsListValidators, request); var invalidRecords = validationResponse.Where(x => x.IsInvalid); if (invalidRecords.Any()) { this._loggingService.Info("Ignoring request since following records are invalid : " + JsonConvert.SerializeObject(invalidRecords), MethodInfo.GetCurrentMethod().Name); throw new DomainException { Errors = validationResponse }; } else { this._loggingService.Debug("Building AssetTargetWorkDefinitionRequestDto", MethodInfo.GetCurrentMethod().Name); var assetSettingsListRequestDto = new AssetSettingsListRequestDto { PageSize = request.PageSize, PageNumber = request.PageNumber, FilterName = request.FilterName, FilterValue = request.FilterValue, DeviceType = request.DeviceType, SubAccountCustomerUid = request.SubAccountCustomerUid.HasValue ? request.SubAccountCustomerUid.Value.ToString("N") : null, CustomerUid = request.CustomerUid.HasValue ? request.CustomerUid.Value.ToString("N") : null, UserUid = request.UserUid.HasValue ? request.UserUid.Value.ToString("N") : null, StatusInd = 1 }; if (!string.IsNullOrEmpty(request.SortColumn)) { assetSettingsListRequestDto.SortDirection = request.SortColumn.StartsWith("-") ? "DESC" : "ASC"; request.SortColumn = request.SortColumn.Replace("-", string.Empty); assetSettingsListRequestDto.SortColumn = request.SortColumn; } await this.AssignDefaultValues(deviceTypeParameterAttributes, assetSettingsListRequestDto); this._loggingService.Debug("Started Querying", MethodInfo.GetCurrentMethod().Name); var essentialAssetsData = await this._assetSettingsListRepository.FetchEssentialAssets(assetSettingsListRequestDto); this._loggingService.Debug("Ended Querying", MethodInfo.GetCurrentMethod().Name); await this.AssignTotalSwitchesCount(deviceTypeParameterAttributes, request, essentialAssetsData.Item2); var essentialAssets = this._mapper.Map <List <AssetSettingsDetails> >(essentialAssetsData.Item2); var response = new AssetSettingsListResponse(essentialAssets, request.PageSize, request.PageNumber, essentialAssetsData.Item1); response.Errors = validationResponse.OfType <ErrorInfo>().ToList(); return(await Task.FromResult(response)); } } catch (DomainException ex) { this._loggingService.Error("Error occurred in validation", MethodInfo.GetCurrentMethod().Name, ex); throw ex; } }
private async Task AssignDefaultValues(IEnumerable <DeviceTypeParameterAttributeDto> deviceTypeParameterAttributes, AssetSettingsListRequestDto assetSettingsListRequestDto) { if (deviceTypeParameterAttributes != null && deviceTypeParameterAttributes.Any()) { #region Moving Threshold var movingOrStoppedThresholdParameterAttributes = deviceTypeParameterAttributes.FirstOrDefault(x => x.ParameterName == "MovingOrStoppedThreshold"); if (movingOrStoppedThresholdParameterAttributes != null) { var movingOrStoppedThreshold = JsonConvert.DeserializeObject <DeviceConfigurationDefaultsAndConfigurations>(movingOrStoppedThresholdParameterAttributes.DefaultValueJSON); assetSettingsListRequestDto.MovingOrStoppedThreshold = movingOrStoppedThreshold.Defaults.MovingThreshold.MovingOrStoppedThreshold; } var movingThresholdsRadiusParameterAttributes = deviceTypeParameterAttributes.FirstOrDefault(x => x.ParameterName == "MovingThresholdsRadius"); if (movingThresholdsRadiusParameterAttributes != null) { var movingThresholdsRadius = JsonConvert.DeserializeObject <DeviceConfigurationDefaultsAndConfigurations>(movingThresholdsRadiusParameterAttributes.DefaultValueJSON); assetSettingsListRequestDto.MovingThresholdsRadius = movingThresholdsRadius.Defaults.MovingThreshold.MovingThresholdsRadius; } var movingThresholdsDurationParameterAttributes = deviceTypeParameterAttributes.FirstOrDefault(x => x.ParameterName == "MovingThresholdsDuration"); if (movingThresholdsDurationParameterAttributes != null) { var movingThresholdsDuration = JsonConvert.DeserializeObject <DeviceConfigurationDefaultsAndConfigurations>(movingThresholdsDurationParameterAttributes.DefaultValueJSON); assetSettingsListRequestDto.MovingThresholdsDuration = movingThresholdsDuration.Defaults.MovingThreshold.MovingThresholdsDuration; } #endregion } await Task.Yield(); }
public async Task <Tuple <int, IList <AssetSettingsListDto> > > FetchEssentialAssets(AssetSettingsListRequestDto request) { try { int foundRows = 0; this._loggingService.Debug("Building query", string.Format(LogMethodFormat, "FetchEssentialAssets")); var query = string.Format(string.Concat(Queries.FetchAssetsForCustomerAndUserUId, Queries.SelectFoundRows), (request.PageNumber > 0) ? string.Format(Queries.LimitClause, (request.PageNumber - 1) * request.PageSize, request.PageSize) : string.Empty, // Limit offset and limit page size !string.IsNullOrEmpty(request.SortColumn) ? string.Format(Queries.OrderByClause, this.BuildSortColumn(request), request.SortDirection) : string.Empty, // order by clause this.BuildTargetsFilterCriteria(request), // FilterCriteria request.DeviceType); this._loggingService.Debug("Started executing query", string.Format(LogMethodFormat, "FetchEssentialAssets")); var resultSet = await this._transactions.GetMultipleResultSetAsync <AssetSettingsListDto, long>(query.ToString(), request); this._loggingService.Debug("Ended executing query", string.Format(LogMethodFormat, "FetchEssentialAssets")); var assetsLists = resultSet.Item1 as IList <AssetSettingsListDto>; var assetFoundRows = (resultSet.Item2 as IList <long>); if (assetFoundRows != null && assetFoundRows.Any()) { foundRows = Convert.ToInt32(assetFoundRows.FirstOrDefault()); } return(new Tuple <int, IList <AssetSettingsListDto> >(foundRows, assetsLists)); } catch (Exception ex) { throw ex; } }
public async Task <IEnumerable <string> > FetchValidAssetUIds(List <string> assetUids, AssetSettingsListRequestDto request) { try { this._loggingService.Debug("Started executing query", string.Format(LogMethodFormat, "FetchValidAssetUIds")); var result = await this._transactions.GetAsync <string>( string.Format(Queries.FetchAssetUIdsWithUserCustomerAndAssets, string.Join(",", assetUids.Select(x => "UNHEX('" + x + "')")).Replace("-", string.Empty)), request); this._loggingService.Debug("Ended executing query", string.Format(LogMethodFormat, "FetchValidAssetUIds")); return(result); } catch (Exception ex) { throw; } }