public static CaseSubmissionResponse ToResponse(this CaseSubmission caseSubmission)
 {
     return(new CaseSubmissionResponse
     {
         SubmissionId = caseSubmission.SubmissionId,
         FormId = caseSubmission.FormId,
         Residents = caseSubmission.Residents,
         Workers = caseSubmission.Workers.Select(w => w.ToResponse()).ToList(),
         CreatedAt = caseSubmission.CreatedAt.ToString("O"),
         DateOfEvent = caseSubmission.DateOfEvent?.ToString("O"),
         CreatedBy = caseSubmission.CreatedBy.ToResponse(),
         SubmittedAt = caseSubmission.SubmittedAt?.ToString("O"),
         SubmittedBy = caseSubmission.SubmittedBy?.ToResponse(),
         ApprovedAt = caseSubmission.ApprovedAt?.ToString("O"),
         PanelApprovedAt = caseSubmission.PanelApprovedAt?.ToString("O"),
         PanelApprovedBy = caseSubmission.PanelApprovedBy?.ToResponse(),
         ApprovedBy = caseSubmission.ApprovedBy?.ToResponse(),
         RejectionReason = caseSubmission.RejectionReason,
         EditHistory = caseSubmission.EditHistory?.Select(e => new EditHistory <WorkerResponse>
         {
             EditTime = e.EditTime,
             Worker = e.Worker.ToResponse()
         }).ToList(),
         SubmissionState = caseSubmission.SubmissionState,
         FormAnswers = caseSubmission.FormAnswers,
         Title = caseSubmission.Title,
         LastEdited = caseSubmission.LastEdited?.ToString("O"),
         CompletedSteps = caseSubmission.CompletedSteps,
         Deleted = caseSubmission.Deleted,
         DeletionDetails = caseSubmission.DeletionDetails
     });
 }
        public void CanMapCaseSubmissionFromDatabaseObjectToDomainObject()
        {
            var databaseCaseSubmission1 = TestHelpers.CreateCaseSubmission(SubmissionState.InProgress, title: null, deleted: true);
            var domainCaseSubmission1   = new DomainCaseSubmission()
            {
                SubmissionId = databaseCaseSubmission1.SubmissionId.ToString(),
                FormId       = databaseCaseSubmission1.FormId,
                Residents    = databaseCaseSubmission1.Residents,
                Workers      = databaseCaseSubmission1.Workers.Select(w => w.ToDomain(false)).ToList(),
                CreatedAt    = databaseCaseSubmission1.CreatedAt,
                CreatedBy    = databaseCaseSubmission1.CreatedBy.ToDomain(false),
                EditHistory  = databaseCaseSubmission1.EditHistory.Select(e => new EditHistory <Worker>
                {
                    EditTime = e.EditTime,
                    Worker   = e.Worker.ToDomain(false)
                }).ToList(),
                SubmissionState = "In progress",
                FormAnswers     = databaseCaseSubmission1.FormAnswers,
                Title           = null,
                LastEdited      = databaseCaseSubmission1.EditHistory.Last().EditTime,
                CompletedSteps  = 1,
                Deleted         = true,
                DeletionDetails = databaseCaseSubmission1.DeletionDetails
            };

            var databaseCaseSubmission2 = TestHelpers.CreateCaseSubmission(SubmissionState.Submitted, title: "test-title", deleted: false);
            var domainCaseSubmission2   = new DomainCaseSubmission()
            {
                SubmissionId = databaseCaseSubmission2.SubmissionId.ToString(),
                FormId       = databaseCaseSubmission2.FormId,
                Residents    = databaseCaseSubmission2.Residents,
                Workers      = databaseCaseSubmission2.Workers.Select(w => w.ToDomain(false)).ToList(),
                CreatedAt    = databaseCaseSubmission2.CreatedAt,
                CreatedBy    = databaseCaseSubmission2.CreatedBy.ToDomain(false),
                EditHistory  = databaseCaseSubmission2.EditHistory.Select(e => new EditHistory <Worker>
                {
                    EditTime = e.EditTime,
                    Worker   = e.Worker.ToDomain(false)
                }).ToList(),
                SubmissionState = "Submitted",
                FormAnswers     = databaseCaseSubmission2.FormAnswers,
                Title           = "test-title",
                LastEdited      = databaseCaseSubmission2.EditHistory.Last().EditTime,
                CompletedSteps  = 1,
                Deleted         = false,
                DeletionDetails = null
            };

            databaseCaseSubmission1.ToDomain().Should().BeEquivalentTo(domainCaseSubmission1);
            databaseCaseSubmission2.ToDomain().Should().BeEquivalentTo(domainCaseSubmission2);
        }