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); }); }
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" }); }); }
/// <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); }; }