コード例 #1
0
        public PersonModule(IRepository repo, IMapper mapper) : base("/api/v1")
        {
            _repo   = repo;
            _mapper = mapper;

            Get("/persons/{id}", parameters =>
            {
                var query   = new FindPersonQuery(parameters.id);
                var handler = PersonQueryHandlerFactory.Build(query, _repo, _mapper);
                return(handler.Get());
            });

            Post("/persons/", parameters =>
            {
                var per             = this.Bind <PersonNew>();
                PersonDetail person = new PersonDetail {
                    Name = per.Name, BirthDay = DateTime.Parse(per.BirthDay)
                };
                var command  = new SavePersonCommand(person);
                var handler  = PersonCommandHandlerFactory.Build(command);
                var responce = handler.Execute();

                if (responce.Success)
                {
                    return(responce);
                }
                return(HttpStatusCode.BadRequest);
            });
        }
コード例 #2
0
        public PersonModule(IRepository repo, IMapper mapper, ILogger logger) : base("/api/v1")
        {
            _repo   = repo;
            _mapper = mapper;
            _logger = logger;

            Get("/persons/{id}", parameters =>
            {
                var query   = new FindPersonQuery(parameters.id);
                var handler = PersonQueryHandlerFactory.Build(query, _repo, _mapper, _logger);
                _logger.Information("Get request");
                var result = handler.Get();
                if (result == null)
                {
                    return(new NotFoundResponse());
                }
                var res = Encoding.Default.GetBytes(JsonSerializer.Serialize(new PersonDetail
                {
                    BirthDate = result.BirthDate,
                    Name      = result.Name
                }));
                return(new Response
                {
                    ContentType = "application/json",
                    Contents = s => s.Write(res, 0, res.Length)
                });
            });

            Post("/persons/", parameters =>
            {
                var body    = this.Request.Body.AsString();
                var person  = JsonSerializer.Deserialize <Person>(body);
                var command = new SavePersonCommand(person);  //new FindPersonQuery(parameters.id);
                var handler = PersonCommandHandlerFactory.Build(command, _repo, _mapper, _logger);
                var result  = handler.Execute();

                if (result != null)
                {
                    return new Response
                    {
                        StatusCode   = HttpStatusCode.OK,
                        ReasonPhrase = $"Created localhost:1234/persons/{result.ID.ToString()}"
                    }
                }
                ;
                return(new Response
                {
                    StatusCode = HttpStatusCode.Forbidden,
                    ReasonPhrase = "unprocessable entity"
                });
            });
        }
コード例 #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="GetPersonModule" /> class.
        /// </summary>
        /// <param name="repo">Database repository</param>
        public GetPersonModule(IPersonRepository repo)
            : base("/api/v1")
        {
            _repo = repo;

            Get["/persons"] = parameters =>
            {
                try
                {
                    var query   = new GetPersonsQuery();
                    var handler = PersonQueryHandlerFactory.Build(_repo, query);
                    var persons = handler.Get();
                    if (persons == null || !persons.Any())
                    {
                        return(HttpStatusCode.NotFound);
                    }

                    return(Response.AsJson(persons));
                }
                catch (Exception ex)
                {
                    Log.Error(ex, "Error of {0} execution.", nameof(GetPersonModule));
                }

                return(HttpStatusCode.NotFound);
            };

            Get["/persons/{person_id}"] = parameters =>
            {
                try
                {
                    var query   = new GetPersonQuery(new Guid(parameters["person_id"]));
                    var handler = PersonQueryHandlerFactory.Build(_repo, query);
                    var person  = handler.Get();
                    if (person == null)
                    {
                        return(HttpStatusCode.NotFound);
                    }

                    return(Response.AsJson(person));
                }
                catch (Exception ex)
                {
                    Log.Error(ex, "Error of {0} execution.", nameof(GetPersonModule));
                }

                return(HttpStatusCode.NotFound);
            };
        }