public async Task <ActionResult <MediaTypeResponse> > Put(int id, [FromBody] MediaTypeResponse input,
                                                                  CancellationToken ct = default)
        {
            try
            {
                if (input == null)
                {
                    return(BadRequest());
                }
                if (await _chinookSupervisor.GetMediaTypeByIdAsync(id, ct) == null)
                {
                    return(NotFound());
                }

                var errors = JsonConvert.SerializeObject(ModelState.Values
                                                         .SelectMany(state => state.Errors)
                                                         .Select(error => error.ErrorMessage));
                Debug.WriteLine(errors);

                if (await _chinookSupervisor.UpdateMediaTypeAsync(input, ct))
                {
                    return(Ok(input));
                }

                return(StatusCode(500));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex));
            }
        }
        public async Task <MediaTypeResponse> AddMediaTypeAsync(MediaTypeResponse newMediaTypeViewModel,
                                                                CancellationToken ct = default)
        {
            var mediaType = new MediaType
            {
                Name = newMediaTypeViewModel.Name
            };

            mediaType = await _mediaTypeRepository.AddAsync(mediaType, ct);

            newMediaTypeViewModel.MediaTypeId = mediaType.MediaTypeId;
            return(newMediaTypeViewModel);
        }
        public async Task <bool> UpdateMediaTypeAsync(MediaTypeResponse mediaTypeViewModel,
                                                      CancellationToken ct = default)
        {
            var mediaType = await _mediaTypeRepository.GetByIdAsync(mediaTypeViewModel.MediaTypeId, ct);

            if (mediaType == null)
            {
                return(false);
            }
            mediaType.MediaTypeId = mediaTypeViewModel.MediaTypeId;
            mediaType.Name        = mediaTypeViewModel.Name;

            return(await _mediaTypeRepository.UpdateAsync(mediaType, ct));
        }
        public async Task <ActionResult <MediaTypeResponse> > Post([FromBody] MediaTypeResponse input,
                                                                   CancellationToken ct = default)
        {
            try
            {
                if (input == null)
                {
                    return(BadRequest());
                }

                return(StatusCode(201, await _chinookSupervisor.AddMediaTypeAsync(input, ct)));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex));
            }
        }