public async Task <IActionResult> Create(CreateFilmCommand command) { try { return(Ok(await Mediator.Send(command))); } catch (ValidationException e) { return(BadRequest(e.Message)); } }
public async Task <ActionResult <int> > Post([FromBody] CreateFilmCommand command) { var entity = new Film { Length = command.Length, Budget = command.Budget, ReleaseYear = command.ReleaseYear, Name = command.Name, Genre = command.Genre, Director = command.Director }; _context.Films.Add(entity); await _context.SaveChangesAsync(); return(Ok(entity.Id)); }
public IActionResult Post([FromBody] Film film) { if (!this.ModelState.IsValid) { return(this.BadRequest(this.ModelState)); } try { var command = new CreateFilmCommand(film); this.handler.Handle(command); } catch (InvalidOperationException) { return(this.StatusCode(403)); } return(this.StatusCode(201)); }
public FilmsModule(Handler handler) : base("/api/films") { this.handler = handler; this.Get("/", async(request, response, routeData) => { var command = new ListFilmsCommand(); var films = this.handler.Execute <ListFilmsCommand, IEnumerable <Film> >(command); await response.AsJson(films); }); this.Get("/{id:int}", async(request, response, routeData) => { var command = new ListFilmsByIdCommand(routeData.As <int>("id")); var film = this.handler.Execute <ListFilmsByIdCommand, Film>(command); if (film == null) { response.StatusCode = 404; return; } await response.AsJson(film); }); this.Post("/", async(req, res, routeData) => { var result = req.BindAndValidate <Film>(); if (!result.ValidationResult.IsValid) { res.StatusCode = 422; await res.Negotiate(result.ValidationResult.GetFormattedErrors()); return; } try { var command = new CreateFilmCommand(result.Data); this.handler.Handle(command); res.StatusCode = 201; } catch (Exception) { res.StatusCode = 403; } }); this.Put("/{id:int}", async(req, res, routeData) => { var result = req.BindAndValidate <Film>(); if (!result.ValidationResult.IsValid) { res.StatusCode = 422; await res.Negotiate(result.ValidationResult.GetFormattedErrors()); return; } try { var command = new UpdateFilmCommand(routeData.As <int>("id"), result.Data); this.handler.Handle(command); res.StatusCode = 204; } catch (Exception) { res.StatusCode = 403; } }); this.Delete("/{id:int}", (req, res, routeData) => { try { var command = new DeleteFilmCommand(routeData.As <int>("id")); this.handler.Handle(command); res.StatusCode = 204; } catch (Exception) { res.StatusCode = 403; } return(Task.CompletedTask); }); }
public async Task <int> InsertFilmAsync(CreateFilmCommand command) { var result = await client.PostAsync($"{baseUrl}/api/films/", RequestHelper.GetStringContentFromObject(command)); return(Convert.ToInt32(result.Content.ReadAsStringAsync().Result)); }
public async Task <IActionResult> CreateAsync([FromBody] CreateFilmCommand command, CancellationToken cancellationToken) { await _createFilm.HandleAsync(command, cancellationToken); return(NoContent()); }