public async Task <DetailedSampleViewModel> GetSampleById(string id)
        {
            var sample = this.Context
                         .Samples
                         .AsNoTracking()
                         .Select(samp => new Sample {
                Id          = samp.Id,
                Name        = samp.Name,
                Description = samp.Description,
                CreatedOn   = samp.CreatedOn,
                CreatedBy   = samp.CreatedBy,
            })
                         .First(samp => samp.Id == new Guid(id));

            var tags = this.Context
                       .SampleTags
                       .AsNoTracking()
                       .Where(t => t.SampleId == new Guid(id))
                       .Select(t => t.Tag)
                       .ToList();

            var groups = this.Context
                         .SampleGroups
                         .AsNoTracking()
                         .Where(t => t.SampleId == new Guid(id))
                         .Select(t => t.Group)
                         .ToList();

            var nutrients = this.Context
                            .SampleNutrientAgarPlates
                            .AsNoTracking()
                            .Where(t => t.SampleId == new Guid(id))
                            .Select(t => t.NutrientAgarPlate)
                            .ToList();

            var images = this.Context
                         .Images
                         .AsNoTracking()
                         .Where(img => img.SampleId == new Guid(id))
                         .Select(img => new SampleImage()
            {
                Id  = img.Id,
                Url = img.Url,
            })
                         .ToList();

            var sampleViewModel = new DetailedSampleViewModel();

            sampleViewModel.Id                 = sample.Id;
            sampleViewModel.Name               = sample.Name;
            sampleViewModel.Description        = sample.Description;
            sampleViewModel.CreatedOn          = sample.CreatedOn;
            sampleViewModel.CreatedBy          = sample.CreatedBy;
            sampleViewModel.Tags               = tags;
            sampleViewModel.Groups             = groups;
            sampleViewModel.NutrientAgarPlates = nutrients;
            sampleViewModel.Images             = images;

            return(sampleViewModel);
        }
        public async Task Get_SampleById_ShouldReturnSample()
        {
            // Arrange
            var sampleId = "12354321-3123-1122-4332-123456789231";

            var sample = new DetailedSampleViewModel()
            {
                Id   = new Guid(sampleId),
                Name = "Test 1"
            };

            var serviceMock = new Mock <ISampleService>(); // Using Moq to mock the service

            serviceMock
            .Setup(s => s.GetSampleById(sampleId))
            .ReturnsAsync(sample);

            var loggerMock = new Mock <ILogger>();

            var controller = new SampleController(serviceMock.Object, null, null, loggerMock.Object);

            // Act
            var response = await controller.GetSampleById(sampleId);

            // Assert
            Assert.NotNull(response);
            var okObjectResult = response as OkObjectResult;

            Assert.NotNull(okObjectResult);
            var model = okObjectResult.Value as DetailedSampleViewModel;

            Assert.NotNull(model);
            var modelId = model.Id;

            Assert.Equal(new Guid(sampleId), modelId);
        }