public async Task <ActionResult <IList <PlantSpecies> > > GetAll([FromQuery] GetAllPlantSpeciesRequest request)
        {
            var query = new GetAllPlantSpeciesQuery {
                NameFilter = request.NameFilter
            };
            var response = await mediator.Send(query);

            if (!response.Success)
            {
                return(BadRequest(response.ErrorMessages));
            }

            var responseData = response.Data.Select(PlantSpecies.FromCore);

            return(Ok(responseData));
        }
        public async Task QueryAllPlantSpecies()
        {
            await using var context = DatabaseHelper.CreateInMemoryDatabaseContext(nameof(QueryAllPlantSpecies));

            var id1 = Guid.NewGuid();
            var id2 = Guid.NewGuid();
            var id3 = Guid.NewGuid();
            var id4 = Guid.NewGuid();
            var id5 = Guid.NewGuid();

            var name1 = "Hello";
            var name2 = "World";
            var name3 = "ab";
            var name4 = "world Hello abcdefgh";
            var name5 = "Töster";

            var plantSpecies1 = new PlantSpecies {
                Id = id1, Name = name1
            };
            var plantSpecies2 = new PlantSpecies {
                Id = id2, Name = name2
            };
            var plantSpecies3 = new PlantSpecies {
                Id = id3, Name = name3
            };
            var plantSpecies4 = new PlantSpecies {
                Id = id4, Name = name4
            };
            var plantSpecies5 = new PlantSpecies {
                Id = id5, Name = name5
            };

            await context.PlantSpecies.AddRangeAsync(plantSpecies1, plantSpecies2, plantSpecies3, plantSpecies4,
                                                     plantSpecies5);

            await context.SaveChangesAsync();

            var queryAll     = new GetAllPlantSpeciesQuery();
            var queryHandler = new GetAllPlantSpeciesQueryHandler(context);
            var result       = await queryHandler.Handle(queryAll, CancellationToken.None);

            Assert.True(result.Success);
            Assert.Equal(5, result.Data.Count());
            Assert.Contains(result.Data, dto => dto.Id.Equals(id1) && dto.Name.Equals(name1));
            Assert.Contains(result.Data, dto => dto.Id.Equals(id2) && dto.Name.Equals(name2));
            Assert.Contains(result.Data, dto => dto.Id.Equals(id3) && dto.Name.Equals(name3));
            Assert.Contains(result.Data, dto => dto.Id.Equals(id4) && dto.Name.Equals(name4));
            Assert.Contains(result.Data, dto => dto.Id.Equals(id5) && dto.Name.Equals(name5));

            var queryAllHello = new GetAllPlantSpeciesQuery {
                NameFilter = "Hello"
            };
            var resultAllHello = await queryHandler.Handle(queryAllHello, CancellationToken.None);

            Assert.True(resultAllHello.Success);
            Assert.Equal(2, resultAllHello.Data.Count());
            Assert.Contains(resultAllHello.Data, dto => dto.Id.Equals(id1) && dto.Name.Equals(name1));
            Assert.Contains(resultAllHello.Data, dto => dto.Id.Equals(id4) && dto.Name.Equals(name4));

            var queryAllWorld = new GetAllPlantSpeciesQuery {
                NameFilter = "World"
            };
            var resultAllWorld = await queryHandler.Handle(queryAllWorld, CancellationToken.None);

            Assert.True(resultAllWorld.Success);
            Assert.Single(resultAllWorld.Data);
            Assert.Contains(resultAllWorld.Data, dto => dto.Id.Equals(id2) && dto.Name.Equals(name2));

            var queryAllHelloLc = new GetAllPlantSpeciesQuery {
                NameFilter = "hello"
            };
            var resultAllHelloLc = await queryHandler.Handle(queryAllHelloLc, CancellationToken.None);

            Assert.True(resultAllHelloLc.Success);
            Assert.Empty(resultAllHelloLc.Data);

            var querySpecialChar = new GetAllPlantSpeciesQuery {
                NameFilter = "ö"
            };
            var resultSpecialChar = await queryHandler.Handle(querySpecialChar, CancellationToken.None);

            Assert.True(resultSpecialChar.Success);
            Assert.Single(resultSpecialChar.Data);
            Assert.Contains(resultSpecialChar.Data, dto => dto.Id.Equals(id5) && dto.Name.Equals(name5));
        }