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