// consider creating a slimmed down TrackForCreationDto object public ActionResult <TrackDto> Create(TrackDto trackDto, [FromRoute] long albumId) { // note: param null check is unnecessary in modern ASP.NET // as [ApiController] handles it, returning 400 Bad Request by itself TrackModel trackModel = _mapper.Map <TrackModel>(trackDto); trackModel.AlbumId = albumId; _service.CreateTrack(trackModel); _service.Save(); var trackReturned = _mapper.Map <TrackDto>(trackModel); return(CreatedAtAction("Create", trackReturned)); // 201 //// note: Kevin Dockx uses a void method for creation, repo.AddAuthor //// followed by a repo.Save() right in the controller, and uses CreatedAtRoute //return CreatedAtRoute("GetTrack", // new { trackId = trackReturned.TrackId }, // trackReturned); //// finally, add (Name = "GetTrack") in [HttpGet] }
public IActionResult Create(TrackCreateInputModel model) { if (!ModelState.IsValid) { return(Redirect("/Tracks/Create?albumId=" + model.AlbumId)); } Album album = albumService.GetById(model.AlbumId); if (album == null) { return(Redirect("/Tracks/Create?albumId=" + model.AlbumId)); } Track track = model.MapTo <Track>(); album.Price += model.Price * GlobalConstants.PriceDiscountConeficient; trackService.CreateTrack(track); albumService.UpdateAlbum(album); return(Redirect("/Albums/Details?id=" + model.AlbumId)); }
public int Execute() { return(_service.CreateTrack(_command.Track)); }