public bool?IsKynHafPrefilled(long eventId, long customerId, DateTime appointmentTime, bool checkKynOnly = true)
        {
            var model = _healthAssessmentService.GetHealthAssessmentEditModel(customerId, eventId);

            if (model == null || !model.QuestionEditModels.Any())
            {
                return(false);
            }

            if (!model.IsKynPurchased && checkKynOnly)
            {
                return(null);
            }

            var customer = _customerRepository.GetCustomer(customerId);

            var isFilled = checkKynOnly ? CheckKynHaf(customer, model) : CheckHafPrefilled(customer, eventId);

            if (isFilled)
            {
                var answers = _healthAssessmentRepository.Get(customerId, eventId);

                if (answers.Any())
                {
                    var answer = answers.First();
                    if (answer.DataRecorderMetaData == null || answer.DataRecorderMetaData.DataRecorderCreator == null)
                    {
                        return(false);
                    }

                    var technicianIds = _organizationRoleUserRepository.GetOrganizationRoleUserIdsForRole((long)Roles.Technician);

                    technicianIds.AddRange(_organizationRoleUserRepository.GetOrganizationRoleUserIdsByParentRole((long)Roles.Technician));

                    var dataRecorderMetaData = answer.DataRecorderMetaData;
                    var updatedByCustomerOrOtherThanTechnician = dataRecorderMetaData.DataRecorderCreator.Id == customerId || !technicianIds.Contains(dataRecorderMetaData.DataRecorderCreator.Id);

                    if (updatedByCustomerOrOtherThanTechnician)
                    {
                        return(dataRecorderMetaData.DateCreated.AddHours(2) <= appointmentTime);
                    }

                    var latestVersion = _healthAssessmentRepository.GetLastVersionNumberUpdatedByCustomerOrOtherThanTechnician(answer.EventCustomerId, customerId);

                    if (latestVersion > 0)
                    {
                        var archiveAnswers = _healthAssessmentRepository.GetArchive(customerId, eventId, latestVersion);

                        model = _healthAssessmentService.GetHealthAssessmentEditModel(customerId, eventId, latestVersion);

                        isFilled = checkKynOnly ? CheckKynHaf(customer, model) : CheckHafPrefilled(customer, eventId, latestVersion);

                        if (isFilled)
                        {
                            if (archiveAnswers != null && archiveAnswers.Any())
                            {
                                answer = archiveAnswers.First().HealthAssessmentAnswer;
                                dataRecorderMetaData = answer.DataRecorderMetaData;
                                return(dataRecorderMetaData.DateCreated.AddHours(2) <= appointmentTime);
                            }
                        }
                    }
                }
            }

            return(false);
        }