public async Task <IActionResult> UpdateSpeaker([FromRoute] int id, [FromBody] ConferencePlanner.Models.Speaker input)
        {
            var speaker = await _db.FindAsync <Speaker>(id);

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

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            speaker.Name    = input.Name;
            speaker.WebSite = input.WebSite;
            speaker.Bio     = input.Bio;

            // TODO: Handle exceptions, e.g. concurrency
            await _db.SaveChangesAsync();

            var result = speaker.MapSpeakerResponse();

            return(Ok(result));
        }
        public async Task <IActionResult> CreateSpeaker([FromBody] ConferencePlanner.Models.Speaker input)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var speaker = new Speaker
            {
                Name    = input.Name,
                WebSite = input.WebSite,
                Bio     = input.Bio
            };

            _db.Speakers.Add(speaker);
            await _db.SaveChangesAsync();

            var result = speaker.MapSpeakerResponse();

            return(CreatedAtAction(nameof(GetSpeaker), new { id = speaker.ID }, result));
        }