public static Person AddNewPerson(AddNewResidentRequest request) { return(new Person { Title = request.Title, FirstName = request.FirstName, LastName = request.LastName, //othernames Gender = request.Gender, DateOfBirth = request.DateOfBirth, DateOfDeath = request.DateOfDeath, Ethnicity = request.Ethnicity, FirstLanguage = request.FirstLanguage, Religion = request.Religion, SexualOrientation = request.SexualOrientation, NhsNumber = request.NhsNumber, //address //phonenumbers EmailAddress = request.EmailAddress, PreferredMethodOfContact = request.PreferredMethodOfContact, AgeContext = request.ContextFlag, //calculated and additional values FullName = $"{request.FirstName} {request.LastName}", DataIsFromDmPersonsBackup = "N", CreatedBy = request.CreatedBy, Restricted = request.Restricted }); }
public void AddNewResidentReturns201WhenSuccessful() { var addNewResidentResponse = _fixture.Create <AddNewResidentResponse>(); var addNewResidentRequest = new AddNewResidentRequest(); _mockResidentUseCase .Setup(x => x.AddNewResident(addNewResidentRequest)) .Returns(addNewResidentResponse); var response = _residentController.AddNewResident(addNewResidentRequest) as CreatedAtActionResult; response?.StatusCode.Should().Be(201); response?.Value.Should().BeEquivalentTo(addNewResidentResponse); }
public IActionResult AddNewResident([FromBody] AddNewResidentRequest residentRequest) { try { var response = _residentUseCase.AddNewResident(residentRequest); return(CreatedAtAction(nameof(AddNewResident), new { id = response.Id }, response)); } catch (Exception e) when( e is ResidentCouldNotBeinsertedException || e is AddressCouldNotBeInsertedException ) { return(StatusCode(500, e.Message)); } }
//Handle case note creation exception like below for now public AddNewResidentResponse AddNewResident(AddNewResidentRequest request) { Address address = null; List <PersonOtherName> names = null; Person resident; List <dbPhoneNumber> phoneNumbers = null; try { resident = AddNewPerson(request); if (request.Address != null) { address = AddResidentAddress(request.Address, resident.Id, request.CreatedBy); resident.Addresses = new List <Address> { address }; } if (request.OtherNames?.Count > 0) { names = AddOtherNames(request.OtherNames, resident.Id, request.CreatedBy); resident.OtherNames = new List <PersonOtherName>(); resident.OtherNames.AddRange(names); } if (request.PhoneNumbers?.Count > 0) { phoneNumbers = AddPhoneNumbers(request.PhoneNumbers, resident.Id, request.CreatedBy); resident.PhoneNumbers = new List <dbPhoneNumber>(); resident.PhoneNumbers.AddRange(phoneNumbers); } _databaseContext.Persons.Add(resident); _databaseContext.SaveChanges(); } catch (DbUpdateException ex) { throw new ResidentCouldNotBeinsertedException( $"Error with inserting resident record has occurred - {ex.Message}"); } string caseNoteId = null; string caseNoteErrorMessage = null; //Add note try { DateTime dt = DateTime.Now; CreatePersonCaseNote note = new CreatePersonCaseNote() { FirstName = resident.FirstName, LastName = resident.LastName, MosaicId = resident.Id.ToString(), Timestamp = dt.ToString("dd/MM/yyyy H:mm:ss"), //in line with imported form data WorkerEmail = request.CreatedBy, Note = $"{dt.ToShortDateString()} Person added - by {request.CreatedBy}.", FormNameOverall = "API_Create_Person", FormName = "Person added", CreatedBy = request.CreatedBy }; CaseNotesDocument caseNotesDocument = new CaseNotesDocument() { CaseFormData = JsonConvert.SerializeObject(note) }; //TODO: refactor to appropriate pattern when using base API caseNoteId = _processDataGateway.InsertCaseNoteDocument(caseNotesDocument).Result; } catch (Exception ex) { caseNoteErrorMessage = $"Unable to create a case note for creating a person {resident.Id}: {ex.Message}"; } return(resident.ToResponse(address, names, phoneNumbers, caseNoteId, caseNoteErrorMessage)); }
public AddNewResidentResponse AddNewResident(AddNewResidentRequest request) { return(_databaseGateway.AddNewResident(request)); }