public async Task <IActionResult> AddMedia([FromBody] PostMediaRequest mediaToAdd) { await Task.Delay(3000); // *1.make sure its valid if (!ModelState.IsValid) { return(BadRequest(ModelState)); } else { // *2.add to the db var media = new MediaItem { Title = mediaToAdd.Title, Kind = mediaToAdd.Kind, Consumed = false, DateConsumed = null, RecommendedBy = mediaToAdd.RecommendedBy, Removed = false }; Context.MediaItems.Add(media); await Context.SaveChangesAsync(); var response = new MediaResponseItem { Id = media.Id, Title = media.Title, Consumed = media.Consumed, DateConsumed = media.DateConsumed, Kind = media.Kind, RecommendedBy = media.RecommendedBy }; // *3. return a 201(Created) status code // *4. return a location header w url of new resource // *5.give them a copy of the new resource[because its nice] return(CreatedAtRoute("media#getbyid", new { id = response.Id }, response)); } return(Ok($"Adding {mediaToAdd.Title}")); }
public async Task <IActionResult> AddMedia([FromBody] PostMediaRequest mediaToAdd) { // ADD A FAKE DELAY to simulate more "real world" await Task.Delay(3000); //1. Make sure it is is valid. // -- If it isn't, return a 400 with some error information if you want. if (!ModelState.IsValid) { return(BadRequest(ModelState)); } else { // 2. Add it to the database. var media = new MediaItem { Title = mediaToAdd.Title, Kind = mediaToAdd.Kind, Consumed = false, DateConsumed = null, RecommendedBy = mediaToAdd.RecommendedBy, Removed = false }; Context.MediaItems.Add(media); await Context.SaveChangesAsync(); var response = new MediaResponseItem { Id = media.Id, Title = media.Title, Consumed = media.Consumed, DateConsumed = media.DateConsumed, Kind = media.Kind, RecommendedBy = media.RecommendedBy }; // 3. Return a 201 (Created) status code. // 4. Return a Location header with the URL of the new resource // 5. It's nice just to give them a copy of the new resource. // TEMP: return(CreatedAtRoute("media#getbyid", new { id = response.Id }, response)); } }