Example #1
0
        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>());
        }
Example #2
0
        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.");
            }
        }
Example #3
0
        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;
            }
        }
Example #4
0
        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));
        }
Example #5
0
        //     [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>());
        }
Example #6
0
        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;
            }
        }
Example #7
0
        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>());
        }
Example #8
0
        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;
            }
        }
Example #9
0
        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();
        }
Example #10
0
        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;
            }
        }
Example #11
0
        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;
            }
        }