public static CaseNotesDocument ToEntity(this CreateCaseNoteRequest request) { GenericCaseNote note = new GenericCaseNote() { Timestamp = DateTime.UtcNow.ToString("dd/MM/yyyy HH:mm:ss"), DateOfBirth = request.DateOfBirth?.ToString("dd/MM/yyy"), DateOfEvent = request.DateOfEvent?.ToString(), FirstName = request.FirstName, LastName = request.LastName, FormName = request.FormName, FormNameOverall = request.FormNameOverall, WorkerEmail = request.WorkerEmail, MosaicId = request.PersonId.ToString() }; //serialize core properties JObject coreProps = JObject.Parse(JsonConvert.SerializeObject(note)); //take the custom properties JObject caseFormData = JObject.Parse(request.CaseFormData); //merge both to one object coreProps.Merge(caseFormData); return(new CaseNotesDocument() { CaseFormData = coreProps.ToString() }); }
public void CanMapCreateCaseNoteRequestToCaseNotesDocument() { CreateCaseNoteRequest request = _fixture .Build <CreateCaseNoteRequest>() .With(x => x.ContextFlag, _faker.Random.String2(1)) .With(x => x.CaseFormData, "{\"prop_one\": \"value one\", \"prop_two\": \"value two\"}") .Create(); GenericCaseNote note = new GenericCaseNote() { DateOfBirth = request.DateOfBirth?.ToString("dd/MM/yyy"), DateOfEvent = request.DateOfEvent?.ToString(), FirstName = request.FirstName, LastName = request.LastName, FormName = request.FormName, FormNameOverall = request.FormNameOverall, WorkerEmail = request.WorkerEmail, MosaicId = request.PersonId.ToString() }; var result = request.ToEntity(); dynamic formData = JsonConvert.DeserializeObject(result.CaseFormData); //take the generated timestamp value and use it in the expected result note.Timestamp = formData["timestamp"]; JObject coreProperties = JObject.Parse(JsonConvert.SerializeObject(note)); coreProperties.Merge(JObject.Parse(request.CaseFormData)); var expectedResult = new CaseNotesDocument() { CaseFormData = coreProperties.ToString() }; result.Should().BeEquivalentTo(expectedResult); }