public IActionResult Post(int observationId, [FromBody] ObsResourceDtoForCreationAndUpdate newObsResourceDto)
        {
            ObsResource newObsResource = _mapper.Map <ObsResource>(newObsResourceDto);

            // Verify the type
            if (newObsResourceDto.Type != "sketch" && newObsResourceDto.Type != "jot" && newObsResourceDto.Type != "image" && newObsResourceDto.Type != "link")
            {
                return(BadRequest("Invalid type"));
            }

            Observation observation = _observationsRepo.GetObservationById(observationId);

            if (observation == null)
            {
                return(NotFound("Could not find the observation"));
            }

            newObsResource.ObservationId = observation.Id;

            ObsResource addedObsResource = _obsResourceRepo.AddObsResource(newObsResource);

            if (addedObsResource == null)
            {
                return(StatusCode(500, "Something went wrong creating a resource"));
            }

            _logger.LogInformation("Created a resource:");
            _logger.LogInformation(PocoPrinter.ToString(addedObsResource));

            ObsResourceDto addedObsResourceDto = _mapper.Map <ObsResourceDto>(addedObsResource);

            return(CreatedAtRoute("GetOneObsResource", new { resourceId = addedObsResourceDto.Id }, addedObsResourceDto));
        }
        public IActionResult Put(int resourceId, [FromBody] ObsResourceDtoForCreationAndUpdate obsResourceDtoForUpdate)
        {
            if (obsResourceDtoForUpdate == null)
            {
                return(BadRequest());
            }

            ObsResource obsResourceEntity = _obsResourceRepo.GetOneResource(resourceId);

            if (obsResourceEntity == null)
            {
                return(NotFound());
            }

            // Verify the type
            if (obsResourceDtoForUpdate.Type != "sketch" &&
                obsResourceDtoForUpdate.Type != "jot" &&
                obsResourceDtoForUpdate.Type != "image" &&
                obsResourceDtoForUpdate.Type != "link" &&
                obsResourceDtoForUpdate.Type != "aladin")
            {
                return(BadRequest("Invalid type"));
            }

            _mapper.Map(obsResourceDtoForUpdate, obsResourceEntity);

            _obsResourceRepo.SaveChanges();

            _logger.LogInformation("Updated a resource:");
            _logger.LogInformation(PocoPrinter.ToString(obsResourceEntity));

            ObsResource freshObsResourceEntity = _obsResourceRepo.GetOneResource(resourceId);
            var         resultingDto           = _mapper.Map <ObsResourceDto>(freshObsResourceEntity);

            return(Ok(resultingDto));
        }