private TaskRecord CreateTask(TaskRecord taskRecord) {
            _taskRepository.Create(taskRecord);

            if (taskRecord.Steps == null)
                return null;

            foreach (var stepRecord in taskRecord.Steps) {
                stepRecord.TaskRecord = taskRecord;
                _stepRepository.Create(stepRecord);
            }
            return taskRecord;
        }
        // http://officedeploycenter/api/Provoke.Highlights/Highlights/AddTestData
        public string AddTestData()
        {
            var highlightsScenario = new ScenarioRecord
            {
                Title = "Highlights",
                Description = "Setting up your own domain",
            };
            _scenarioRepository.Create(highlightsScenario);
            _scenarioRepository.Flush();

            var addYourDomainTask = new TaskRecord
            {
                ScenarioRecord = highlightsScenario,
                SortOrder = 1,
                Description = "Add your domain",
            };
            _taskRepository.Create(addYourDomainTask);

            var verifyYourDomainTask = new TaskRecord
            {
                ScenarioRecord = highlightsScenario,
                SortOrder = 2,
                Description = "Verify your domain",
            };
            _taskRepository.Create(verifyYourDomainTask);

            var defineDomainUseTask = new TaskRecord
            {
                ScenarioRecord = highlightsScenario,
                SortOrder = 3,
                Description = "Define domain use",
            };
            _taskRepository.Create(defineDomainUseTask);

            var updateDnsTask = new TaskRecord
            {
                ScenarioRecord = highlightsScenario,
                SortOrder = 4,
                Description = "Update DNS records",
            };
            _taskRepository.Create(updateDnsTask);
            _taskRepository.Flush();

            var addDomainStep1 = new StepRecord
            {
                TaskRecord = addYourDomainTask,
                SortOrder = 1,
                TopPosition = 200,
                LeftPosition =300,
                Title = "White",
                Description = "In the Office 365 admin center, click 'Domains'.",
                Image = "/Media/Default/images/gettingStarted.png",
            };
            _stepRepository.Create(addDomainStep1);

            var addDomainStep2 = new StepRecord
            {
                TaskRecord = addYourDomainTask,
                SortOrder = 2,
                TopPosition = 300,
                LeftPosition = 300,
                Title = "Yellow",
                Description = "Now click 'Add domain'.",
                Image = "/Media/Default/images/onboarding.png",
            };
            _stepRepository.Create(addDomainStep2);

            var verifyYourDomainStep = new StepRecord
            {
                TaskRecord = verifyYourDomainTask,
                SortOrder = 1,
                TopPosition = 300,
                LeftPosition = 200,
                Title = "Red",
                Description = "Define how you'll use your domain (this is, stat the purpose for the domain) by selecting the Office 365 services you're planning to use: Exchange Online, Lync Online, SharePoint Online, or a combination.",
                Image = "/Media/Default/images/email.png",
            };
            _stepRepository.Create(verifyYourDomainStep);

            var defineDomainUseStep1 = new StepRecord
            {
                TaskRecord = defineDomainUseTask,
                SortOrder = 1,
                TopPosition = 400,
                LeftPosition = 300,
                Title = "Blue",
                Description = "Define how you'll use your domain (this is, stat the purpose for the domain) by selecting the Office 365 services you're planning to use: Exchange Online, Lync Online, SharePoint Online, or a combination.",
                Image = "/Media/Default/images/assistance-1.png",
                Anchor = "http://anchor.com",
            };
            _stepRepository.Create(defineDomainUseStep1);

            var updateDnsRecordsStep = new StepRecord
            {
                TaskRecord = updateDnsTask,
                SortOrder = 1,
                TopPosition = 300,
                LeftPosition = 400,
                Title = "Green",
                Description = "Update your DNS records at your hosting provider or domain registrar to point to these services in Office 365.",
                Image = "/Media/Default/images/management.png",
            };
            _stepRepository.Create(updateDnsRecordsStep);

            return "Success";
        }
        private TaskRecord UpdateTask(TaskRecord updatedTaskRecord) {
            if (updatedTaskRecord.Id <= 0)
                throw new InvalidOperationException("Task must have an Id to be updated.");

            var updatedSteps = updatedTaskRecord.Steps ?? new Collection<StepRecord>();

            foreach (var stepRecord in updatedSteps) {
                stepRecord.TaskRecord = updatedTaskRecord;

                if (stepRecord.Id == 0)
                    _stepRepository.Create(stepRecord);
                else
                    _stepRepository.Update(stepRecord);
            }

            var deletedSteps = updatedTaskRecord.Steps.Where(deletedTaskRecord => !updatedSteps.Select(sr => sr.Id).Contains(deletedTaskRecord.Id));
            foreach (var stepRecord in deletedSteps)
            {
                _stepRepository.Delete(stepRecord);
            }

            _taskRepository.Update(updatedTaskRecord);

            return _taskRepository.Get(updatedTaskRecord.Id);
        }