public async Task <IActionResult> Create(CreateFilmCommand command)
 {
     try
     {
         return(Ok(await Mediator.Send(command)));
     }
     catch (ValidationException e)
     {
         return(BadRequest(e.Message));
     }
 }
Exemple #2
0
        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));
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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);
            });
        }
Exemple #5
0
        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));
        }
Exemple #6
0
        public async Task <IActionResult> CreateAsync([FromBody] CreateFilmCommand command, CancellationToken cancellationToken)
        {
            await _createFilm.HandleAsync(command, cancellationToken);

            return(NoContent());
        }