From 99095e3128b38fa53863e1e91be27e85c9de6126 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=86=D0=BB=D0=BB=D1=8F=20=D0=A6=D0=B0=D0=BF?= Date: Mon, 11 May 2026 13:22:57 +0300 Subject: [PATCH 01/13] fix/43: GetToponymsByStreetcodeIdHandler.Handle correctly returns fail result when no toponyms found --- .../GetToponymsByStreetcodeIdHandler.cs | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs index 01b3e97..2dafc61 100644 --- a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs +++ b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs @@ -2,11 +2,13 @@ using FluentResults; using MediatR; using Microsoft.EntityFrameworkCore; -using Streetcode.BLL.DTO.AdditionalContent.Subtitles; using Streetcode.BLL.DTO.Toponyms; using Streetcode.BLL.Interfaces.Logging; +using Streetcode.DAL.Entities.Toponyms; using Streetcode.DAL.Repositories.Interfaces.Base; +#pragma warning disable SA1111 //Closing parenthesis should be on line of last parameter + namespace Streetcode.BLL.MediatR.Toponyms.GetByStreetcodeId; public class GetToponymsByStreetcodeIdHandler : IRequestHandler>> @@ -24,21 +26,18 @@ public GetToponymsByStreetcodeIdHandler(IRepositoryWrapper repositoryWrapper, IM public async Task>> Handle(GetToponymsByStreetcodeIdQuery request, CancellationToken cancellationToken) { - var toponyms = await _repositoryWrapper - .ToponymRepository - .GetAllAsync( - predicate: sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId), - include: scl => scl - .Include(sc => sc.Coordinate)); - toponyms.DistinctBy(x => x.StreetName); - if (toponyms is null) + IEnumerable toponyms = await _repositoryWrapper.ToponymRepository.GetAllAsync( + predicate: sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId), + include: scl => scl.Include(sc => sc.Coordinate) + ); + if(toponyms.Any() is false) { string errorMsg = $"Cannot find any toponym by the streetcode id: {request.StreetcodeId}"; _logger.LogError(request, errorMsg); return Result.Fail(new Error(errorMsg)); } - var toponymDto = toponyms.GroupBy(x => x.StreetName).Select(group => group.First()).Select(x => _mapper.Map(x)); - return Result.Ok(toponymDto); + IEnumerable toponym_dto = toponyms.GroupBy(x => x.StreetName).Select(Enumerable.First).Select(_mapper.Map); + return Result.Ok(toponym_dto); } -} +} \ No newline at end of file From 88fc333bc81d84914f5b242a917ec1493e1d2e06 Mon Sep 17 00:00:00 2001 From: Illia Tsap <154013787+PenultimateBoss@users.noreply.github.com> Date: Mon, 11 May 2026 19:46:04 +0300 Subject: [PATCH 02/13] Update Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs Co-authored-by: snitochka <107924262+snitochka@users.noreply.github.com> --- .../GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs index 2dafc61..a80e180 100644 --- a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs +++ b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs @@ -37,7 +37,9 @@ public async Task>> Handle(GetToponymsByStreetcod return Result.Fail(new Error(errorMsg)); } - IEnumerable toponym_dto = toponyms.GroupBy(x => x.StreetName).Select(Enumerable.First).Select(_mapper.Map); + var toponymDtos = toponyms + .DistinctBy(x => x.StreetName) + .Select(_mapper.Map); return Result.Ok(toponym_dto); } } \ No newline at end of file From 9f1956a19737632a75df66fc622484a67b37ad16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=86=D0=BB=D0=BB=D1=8F=20=D0=A6=D0=B0=D0=BF?= Date: Mon, 11 May 2026 20:21:09 +0300 Subject: [PATCH 03/13] fix/45: move DistinctBy to the db side --- .../GetToponymsByStreetcodeIdHandler.cs | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs index a80e180..e384e11 100644 --- a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs +++ b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs @@ -1,13 +1,13 @@ using AutoMapper; using FluentResults; using MediatR; -using Microsoft.EntityFrameworkCore; using Streetcode.BLL.DTO.Toponyms; +using Microsoft.EntityFrameworkCore; using Streetcode.BLL.Interfaces.Logging; -using Streetcode.DAL.Entities.Toponyms; using Streetcode.DAL.Repositories.Interfaces.Base; #pragma warning disable SA1111 //Closing parenthesis should be on line of last parameter +#pragma warning disable SA1513 //Closing brace should be followed by blank line namespace Streetcode.BLL.MediatR.Toponyms.GetByStreetcodeId; @@ -26,20 +26,18 @@ public GetToponymsByStreetcodeIdHandler(IRepositoryWrapper repositoryWrapper, IM public async Task>> Handle(GetToponymsByStreetcodeIdQuery request, CancellationToken cancellationToken) { - IEnumerable toponyms = await _repositoryWrapper.ToponymRepository.GetAllAsync( - predicate: sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId), - include: scl => scl.Include(sc => sc.Coordinate) - ); + IEnumerable toponyms = _repositoryWrapper.ToponymRepository.FindAll( + sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId) + ).AsNoTracking().Include(sc => sc.Coordinate).DistinctBy( + x => x.StreetName + ).AsEnumerable().Select(_mapper.Map); + if(toponyms.Any() is false) { string errorMsg = $"Cannot find any toponym by the streetcode id: {request.StreetcodeId}"; _logger.LogError(request, errorMsg); return Result.Fail(new Error(errorMsg)); } - - var toponymDtos = toponyms - .DistinctBy(x => x.StreetName) - .Select(_mapper.Map); - return Result.Ok(toponym_dto); + return Result.Ok(toponyms); } } \ No newline at end of file From 9fbb5a77e862b6c95f123a203fc41d38923f6d04 Mon Sep 17 00:00:00 2001 From: Illia Tsap <154013787+PenultimateBoss@users.noreply.github.com> Date: Tue, 12 May 2026 00:10:41 +0300 Subject: [PATCH 04/13] Update Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs Co-authored-by: snitochka <107924262+snitochka@users.noreply.github.com> --- .../GetToponymsByStreetcodeIdHandler.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs index e384e11..6ad2232 100644 --- a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs +++ b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs @@ -26,11 +26,12 @@ public GetToponymsByStreetcodeIdHandler(IRepositoryWrapper repositoryWrapper, IM public async Task>> Handle(GetToponymsByStreetcodeIdQuery request, CancellationToken cancellationToken) { - IEnumerable toponyms = _repositoryWrapper.ToponymRepository.FindAll( - sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId) - ).AsNoTracking().Include(sc => sc.Coordinate).DistinctBy( - x => x.StreetName - ).AsEnumerable().Select(_mapper.Map); + var result = _repositoryWrapper.ToponymRepository.FindAll( + sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId) + ) + .GroupBy(x => x.StreetName) + .Select(g => g.OrderBy(x => x.Id).First()) + .ProjectTo(_mapper.ConfigurationProvider); if(toponyms.Any() is false) { From 02326447fcb326601a77f91339ca03cd4b27ce25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=86=D0=BB=D0=BB=D1=8F=20=D0=A6=D0=B0=D0=BF?= Date: Tue, 12 May 2026 16:54:29 +0300 Subject: [PATCH 05/13] fix/45: use ProjectTo to map query result to dto --- .../GetToponymsByStreetcodeIdHandler.cs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs index 6ad2232..8e4b283 100644 --- a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs +++ b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs @@ -5,6 +5,7 @@ using Microsoft.EntityFrameworkCore; using Streetcode.BLL.Interfaces.Logging; using Streetcode.DAL.Repositories.Interfaces.Base; +using AutoMapper.QueryableExtensions; #pragma warning disable SA1111 //Closing parenthesis should be on line of last parameter #pragma warning disable SA1513 //Closing brace should be followed by blank line @@ -26,19 +27,16 @@ public GetToponymsByStreetcodeIdHandler(IRepositoryWrapper repositoryWrapper, IM public async Task>> Handle(GetToponymsByStreetcodeIdQuery request, CancellationToken cancellationToken) { - var result = _repositoryWrapper.ToponymRepository.FindAll( - sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId) - ) - .GroupBy(x => x.StreetName) - .Select(g => g.OrderBy(x => x.Id).First()) - .ProjectTo(_mapper.ConfigurationProvider); + IQueryable toponyms = _repositoryWrapper.ToponymRepository.FindAll( + sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId) + ).DistinctBy(t => t.StreetName).ProjectTo(_mapper.ConfigurationProvider); - if(toponyms.Any() is false) + if(await toponyms.AnyAsync(cancellationToken) is false) { string errorMsg = $"Cannot find any toponym by the streetcode id: {request.StreetcodeId}"; _logger.LogError(request, errorMsg); return Result.Fail(new Error(errorMsg)); } - return Result.Ok(toponyms); + return Result.Ok(toponyms.AsEnumerable()); } } \ No newline at end of file From afcf4a775abc3b6a85ee3e4dbb9d694ac8cc4722 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=86=D0=BB=D0=BB=D1=8F=20=D0=A6=D0=B0=D0=BF?= Date: Mon, 11 May 2026 13:22:57 +0300 Subject: [PATCH 06/13] fix/43: GetToponymsByStreetcodeIdHandler.Handle correctly returns fail result when no toponyms found --- .../GetToponymsByStreetcodeIdHandler.cs | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs index 01b3e97..2dafc61 100644 --- a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs +++ b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs @@ -2,11 +2,13 @@ using FluentResults; using MediatR; using Microsoft.EntityFrameworkCore; -using Streetcode.BLL.DTO.AdditionalContent.Subtitles; using Streetcode.BLL.DTO.Toponyms; using Streetcode.BLL.Interfaces.Logging; +using Streetcode.DAL.Entities.Toponyms; using Streetcode.DAL.Repositories.Interfaces.Base; +#pragma warning disable SA1111 //Closing parenthesis should be on line of last parameter + namespace Streetcode.BLL.MediatR.Toponyms.GetByStreetcodeId; public class GetToponymsByStreetcodeIdHandler : IRequestHandler>> @@ -24,21 +26,18 @@ public GetToponymsByStreetcodeIdHandler(IRepositoryWrapper repositoryWrapper, IM public async Task>> Handle(GetToponymsByStreetcodeIdQuery request, CancellationToken cancellationToken) { - var toponyms = await _repositoryWrapper - .ToponymRepository - .GetAllAsync( - predicate: sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId), - include: scl => scl - .Include(sc => sc.Coordinate)); - toponyms.DistinctBy(x => x.StreetName); - if (toponyms is null) + IEnumerable toponyms = await _repositoryWrapper.ToponymRepository.GetAllAsync( + predicate: sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId), + include: scl => scl.Include(sc => sc.Coordinate) + ); + if(toponyms.Any() is false) { string errorMsg = $"Cannot find any toponym by the streetcode id: {request.StreetcodeId}"; _logger.LogError(request, errorMsg); return Result.Fail(new Error(errorMsg)); } - var toponymDto = toponyms.GroupBy(x => x.StreetName).Select(group => group.First()).Select(x => _mapper.Map(x)); - return Result.Ok(toponymDto); + IEnumerable toponym_dto = toponyms.GroupBy(x => x.StreetName).Select(Enumerable.First).Select(_mapper.Map); + return Result.Ok(toponym_dto); } -} +} \ No newline at end of file From 36b1494fbf7b4a78803add7c959de993aefd3e92 Mon Sep 17 00:00:00 2001 From: Illia Tsap <154013787+PenultimateBoss@users.noreply.github.com> Date: Mon, 11 May 2026 19:46:04 +0300 Subject: [PATCH 07/13] Update Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs Co-authored-by: snitochka <107924262+snitochka@users.noreply.github.com> --- .../GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs index 2dafc61..a80e180 100644 --- a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs +++ b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs @@ -37,7 +37,9 @@ public async Task>> Handle(GetToponymsByStreetcod return Result.Fail(new Error(errorMsg)); } - IEnumerable toponym_dto = toponyms.GroupBy(x => x.StreetName).Select(Enumerable.First).Select(_mapper.Map); + var toponymDtos = toponyms + .DistinctBy(x => x.StreetName) + .Select(_mapper.Map); return Result.Ok(toponym_dto); } } \ No newline at end of file From bd57fe7a23ac85969a6f8ad37275e5117e24f9db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=86=D0=BB=D0=BB=D1=8F=20=D0=A6=D0=B0=D0=BF?= Date: Mon, 11 May 2026 20:21:09 +0300 Subject: [PATCH 08/13] fix/45: move DistinctBy to the db side --- .../GetToponymsByStreetcodeIdHandler.cs | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs index a80e180..e384e11 100644 --- a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs +++ b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs @@ -1,13 +1,13 @@ using AutoMapper; using FluentResults; using MediatR; -using Microsoft.EntityFrameworkCore; using Streetcode.BLL.DTO.Toponyms; +using Microsoft.EntityFrameworkCore; using Streetcode.BLL.Interfaces.Logging; -using Streetcode.DAL.Entities.Toponyms; using Streetcode.DAL.Repositories.Interfaces.Base; #pragma warning disable SA1111 //Closing parenthesis should be on line of last parameter +#pragma warning disable SA1513 //Closing brace should be followed by blank line namespace Streetcode.BLL.MediatR.Toponyms.GetByStreetcodeId; @@ -26,20 +26,18 @@ public GetToponymsByStreetcodeIdHandler(IRepositoryWrapper repositoryWrapper, IM public async Task>> Handle(GetToponymsByStreetcodeIdQuery request, CancellationToken cancellationToken) { - IEnumerable toponyms = await _repositoryWrapper.ToponymRepository.GetAllAsync( - predicate: sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId), - include: scl => scl.Include(sc => sc.Coordinate) - ); + IEnumerable toponyms = _repositoryWrapper.ToponymRepository.FindAll( + sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId) + ).AsNoTracking().Include(sc => sc.Coordinate).DistinctBy( + x => x.StreetName + ).AsEnumerable().Select(_mapper.Map); + if(toponyms.Any() is false) { string errorMsg = $"Cannot find any toponym by the streetcode id: {request.StreetcodeId}"; _logger.LogError(request, errorMsg); return Result.Fail(new Error(errorMsg)); } - - var toponymDtos = toponyms - .DistinctBy(x => x.StreetName) - .Select(_mapper.Map); - return Result.Ok(toponym_dto); + return Result.Ok(toponyms); } } \ No newline at end of file From d5a98d23aea56b22d2e7291e44c8fa02847b081e Mon Sep 17 00:00:00 2001 From: Illia Tsap <154013787+PenultimateBoss@users.noreply.github.com> Date: Tue, 12 May 2026 00:10:41 +0300 Subject: [PATCH 09/13] Update Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs Co-authored-by: snitochka <107924262+snitochka@users.noreply.github.com> --- .../GetToponymsByStreetcodeIdHandler.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs index e384e11..6ad2232 100644 --- a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs +++ b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs @@ -26,11 +26,12 @@ public GetToponymsByStreetcodeIdHandler(IRepositoryWrapper repositoryWrapper, IM public async Task>> Handle(GetToponymsByStreetcodeIdQuery request, CancellationToken cancellationToken) { - IEnumerable toponyms = _repositoryWrapper.ToponymRepository.FindAll( - sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId) - ).AsNoTracking().Include(sc => sc.Coordinate).DistinctBy( - x => x.StreetName - ).AsEnumerable().Select(_mapper.Map); + var result = _repositoryWrapper.ToponymRepository.FindAll( + sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId) + ) + .GroupBy(x => x.StreetName) + .Select(g => g.OrderBy(x => x.Id).First()) + .ProjectTo(_mapper.ConfigurationProvider); if(toponyms.Any() is false) { From cb581200a2a9d787103a579297db57383db2b9c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=86=D0=BB=D0=BB=D1=8F=20=D0=A6=D0=B0=D0=BF?= Date: Tue, 12 May 2026 16:54:29 +0300 Subject: [PATCH 10/13] fix/45: use ProjectTo to map query result to dto --- .../GetToponymsByStreetcodeIdHandler.cs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs index 6ad2232..8e4b283 100644 --- a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs +++ b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs @@ -5,6 +5,7 @@ using Microsoft.EntityFrameworkCore; using Streetcode.BLL.Interfaces.Logging; using Streetcode.DAL.Repositories.Interfaces.Base; +using AutoMapper.QueryableExtensions; #pragma warning disable SA1111 //Closing parenthesis should be on line of last parameter #pragma warning disable SA1513 //Closing brace should be followed by blank line @@ -26,19 +27,16 @@ public GetToponymsByStreetcodeIdHandler(IRepositoryWrapper repositoryWrapper, IM public async Task>> Handle(GetToponymsByStreetcodeIdQuery request, CancellationToken cancellationToken) { - var result = _repositoryWrapper.ToponymRepository.FindAll( - sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId) - ) - .GroupBy(x => x.StreetName) - .Select(g => g.OrderBy(x => x.Id).First()) - .ProjectTo(_mapper.ConfigurationProvider); + IQueryable toponyms = _repositoryWrapper.ToponymRepository.FindAll( + sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId) + ).DistinctBy(t => t.StreetName).ProjectTo(_mapper.ConfigurationProvider); - if(toponyms.Any() is false) + if(await toponyms.AnyAsync(cancellationToken) is false) { string errorMsg = $"Cannot find any toponym by the streetcode id: {request.StreetcodeId}"; _logger.LogError(request, errorMsg); return Result.Fail(new Error(errorMsg)); } - return Result.Ok(toponyms); + return Result.Ok(toponyms.AsEnumerable()); } } \ No newline at end of file From 3bd3a7d70ad4ed0ca5d57d5d790a64f34e07fe53 Mon Sep 17 00:00:00 2001 From: Illia Tsap <154013787+PenultimateBoss@users.noreply.github.com> Date: Wed, 13 May 2026 08:07:19 +0300 Subject: [PATCH 11/13] Update Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs Co-authored-by: snitochka <107924262+snitochka@users.noreply.github.com> --- .../GetToponymsByStreetcodeIdHandler.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs index 8e4b283..dbe5a73 100644 --- a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs +++ b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs @@ -27,11 +27,14 @@ public GetToponymsByStreetcodeIdHandler(IRepositoryWrapper repositoryWrapper, IM public async Task>> Handle(GetToponymsByStreetcodeIdQuery request, CancellationToken cancellationToken) { - IQueryable toponyms = _repositoryWrapper.ToponymRepository.FindAll( - sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId) - ).DistinctBy(t => t.StreetName).ProjectTo(_mapper.ConfigurationProvider); +var toponyms = await _repositoryWrapper.ToponymRepository.FindAll( + sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId) +) +.DistinctBy(t => t.StreetName) +.ProjectTo(_mapper.ConfigurationProvider) +.ToListAsync(cancellationToken); - if(await toponyms.AnyAsync(cancellationToken) is false) +if(toponyms.Count == 0) { string errorMsg = $"Cannot find any toponym by the streetcode id: {request.StreetcodeId}"; _logger.LogError(request, errorMsg); From d870019305f311de962a8f5e4e0ee443ace07d68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=86=D0=BB=D0=BB=D1=8F=20=D0=A6=D0=B0=D0=BF?= Date: Wed, 13 May 2026 08:13:39 +0300 Subject: [PATCH 12/13] fix/43: save query result as list --- .../GetToponymsByStreetcodeIdHandler.cs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs index dbe5a73..2279e6c 100644 --- a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs +++ b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs @@ -27,19 +27,16 @@ public GetToponymsByStreetcodeIdHandler(IRepositoryWrapper repositoryWrapper, IM public async Task>> Handle(GetToponymsByStreetcodeIdQuery request, CancellationToken cancellationToken) { -var toponyms = await _repositoryWrapper.ToponymRepository.FindAll( - sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId) -) -.DistinctBy(t => t.StreetName) -.ProjectTo(_mapper.ConfigurationProvider) -.ToListAsync(cancellationToken); + List toponyms = await _repositoryWrapper.ToponymRepository.FindAll( + sc => sc.Streetcodes.Any(s => s.Id == request.StreetcodeId) + ).DistinctBy(t => t.StreetName).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(cancellationToken); -if(toponyms.Count == 0) + if(toponyms.Count == 0) { string errorMsg = $"Cannot find any toponym by the streetcode id: {request.StreetcodeId}"; _logger.LogError(request, errorMsg); return Result.Fail(new Error(errorMsg)); } - return Result.Ok(toponyms.AsEnumerable()); + return Result.Ok(toponyms); } } \ No newline at end of file From 005b7819772cdbab9ef9a96721769fab8762baf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=86=D0=BB=D0=BB=D1=8F=20=D0=A6=D0=B0=D0=BF?= Date: Wed, 13 May 2026 08:22:13 +0300 Subject: [PATCH 13/13] fix/43: return list as IEnumerable --- .../GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs index 2279e6c..cbbe319 100644 --- a/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs +++ b/Streetcode/Streetcode.BLL/MediatR/Toponyms/GetByStreetcodeId/GetToponymsByStreetcodeIdHandler.cs @@ -37,6 +37,6 @@ public async Task>> Handle(GetToponymsByStreetcod _logger.LogError(request, errorMsg); return Result.Fail(new Error(errorMsg)); } - return Result.Ok(toponyms); + return Result.Ok(toponyms.AsEnumerable()); } } \ No newline at end of file