public async Task <SavePersonResponse> Save([FromBody] SavePersonRequest request) { SavePersonResponse response = new SavePersonResponse(); if (response.InitializeFromModelStateIfInvalid(ModelState)) { return(response); } if (request.Person.ID == Guid.Empty) { request.Person.ID = Guid.NewGuid(); await _personUpsert.ExecuteAsync(request.Person, true); } else { var existingSite = _personSearch.Execute(new PersonSearchCriteria { IncludedPersonIDs = new List <Guid> { request.Person.ID } }).FirstOrDefault(); await _personUpsert.ExecuteAsync(request.Person); } response.Person = request.Person; return(response); }
public async Task <SavePersonResponse> SavePerson(SavePersonRequest request) { const string userMessage = "Unable to save Person"; var response = new SavePersonResponse(); try { var p = await _dbContext.People.FindAsync(request.Person.Id); if (p == null) { p = new People { Id = Guid.NewGuid() }; _dbContext.People.Add(p); } else { _dbContext.Entry(p).State = EntityState.Modified; } p.FirstName = request.Person.FirstName; p.LastName = request.Person.LastName; p.Email = request.Person.Email; p.Photo = request.Person.Photo; await _dbContext.SaveChangesAsync(); response.Success = true; response.Id = p.Id; return(response); } catch (Exception ex) { //log the exception.. //In production we wouldn't return the exception detail return(new SavePersonResponse { Success = false, FailureInformation = userMessage + " | " + ex.Message }); } }
public async Task Returns_error_message_when_validation_errors() { var anyErrorMessage = "any error message"; _savePersonHandler.Save(Arg.Is <SavePersonRequest>(request => request.Name.Equals("any name"))).Returns(SavePersonResponse.Failed(anyErrorMessage)); var result = await _controller.Save(new SavePersonModel { Name = "any name", DateCreated = DateTime.UtcNow }); var response = result as BadRequestObjectResult; response.Value.ShouldBe(anyErrorMessage); }
public async Task Returns_bad_request_result_when_validation_errors() { _savePersonHandler.Save(Arg.Is <SavePersonRequest>(request => request.Name == "any name")).Returns(SavePersonResponse.Failed(string.Empty)); var result = await _controller.Save(new SavePersonModel { Name = "any name", DateCreated = DateTime.UtcNow }); (result is BadRequestObjectResult).ShouldBeTrue(); }
public async Task Returns_url_for_newly_created_resource_when_no_validation_errors() { var personId = Guid.NewGuid(); var anyName = "any name"; _savePersonHandler.Save(Arg.Is <SavePersonRequest>(request => request.Name.Equals(anyName))).Returns(SavePersonResponse.Success(personId)); var result = await _controller.Save(new SavePersonModel { Name = anyName, DateCreated = DateTime.UtcNow }); var response = result as CreatedResult; response.Location.ShouldBe($"/persons/{personId}"); }
public async Task Returns_created_result_when_no_validation_errors() { var personId = Guid.NewGuid(); var anyName = "any name"; _savePersonHandler.Save(Arg.Is <SavePersonRequest>(request => request.Name.Equals(anyName))).Returns(SavePersonResponse.Success(personId)); var result = await _controller.Save(new SavePersonModel { Name = anyName, DateCreated = DateTime.UtcNow }); (result is CreatedResult).ShouldBeTrue(); }