public async Task <ActionResult <ColorResource> > UpdateColor(int id, [FromBody] SaveColorResource saveColorResource)
        {
            var validator        = new SaveColorResourceValidator();
            var validationResult = await validator.ValidateAsync(saveColorResource);

            if (!validationResult.IsValid)
            {
                return(BadRequest(validationResult.Errors)); // this needs refining, but for demo it is ok
            }
            var colorToBeUpdated = await _colorService.GetColorById(id);

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

            var color = _mapper.Map <SaveColorResource, Color>(saveColorResource);

            await _colorService.UpdateColor(colorToBeUpdated, color);

            var updatedColor = await _colorService.GetColorById(id);

            var updatedColorResource = _mapper.Map <Color, ColorResource>(updatedColor);

            return(Ok(updatedColorResource));
        }
        public async Task <ActionResult <ColorResource> > CreateColor([FromBody] SaveColorResource saveColorResource)
        {
            var validator        = new SaveColorResourceValidator();
            var validationResult = await validator.ValidateAsync(saveColorResource);

            if (!validationResult.IsValid)
            {
                return(BadRequest(validationResult.Errors)); // this needs refining, but for demo it is ok
            }
            var colorToCreate = _mapper.Map <SaveColorResource, Color>(saveColorResource);

            var newColor = await _colorService.CreateColor(colorToCreate);

            var color = await _colorService.GetColorById(newColor.Id);

            var colorResource = _mapper.Map <Color, ColorResource>(color);

            return(Ok(colorResource));
        }