private void CreateDataFiles()
 {
     var groupIds = _groupDataReader.GetGroupingIds(ProfileIds.PracticeProfiles);
     foreach (var groupId in groupIds)
     {
         try
         {
             _logger.Info(GetPracticeProfileLogText(groupId));
             var watch = new ExcelFileTimer(_logger);
             WriteExcelFile(PracticeProfileKey, groupId);
             watch.Stop();
         }
         catch (Exception ex)
         {
             HandleException(ex, groupId);
         }
     }
 }
        public void Generate()
        {
            _logger.Info("About to start generating excel files for Core Profiles");
            var allProfiles = _profileReader.GetAllProfiles();
            foreach (var profile in allProfiles)
            {
                if (ShouldExcelFilesBeBuiltForProfile(profile))
                {
                    var childAreaTypeIds = GetChildAreaTypeIdsForProfile(profile.ProfileId);

                    foreach (var childAreaTypeId in childAreaTypeIds)
                    {
                        var parentAreaTypeIds = _areaTypeListProvider
                            .GetParentAreaTypeIdsUsedInProfile(profile.ProfileId, childAreaTypeId)
                            .ToList();

                        var categoryAreaTypeIds = _areaTypeListProvider.GetCategoryTypeIdsUsedInProfile(
                            profile.ProfileId, childAreaTypeId)
                            .Select(CategoryAreaType.GetAreaTypeIdFromCategoryTypeId);

                        // Combine parent area type IDs with category area type IDs
                        parentAreaTypeIds.AddRange(categoryAreaTypeIds);

                        foreach (var parentAreaTypeId in parentAreaTypeIds)
                        {
                            _logger.Info("Creating Excel file with " +
                                GetProfileDetailsText(profile.ProfileId,
                                parentAreaTypeId, childAreaTypeId));

                            var watch = new ExcelFileTimer(_logger);

                            CreateExcelFilesForCoreProfiles(profile.ProfileId, childAreaTypeId,
                                parentAreaTypeId);

                            watch.Stop();
                        }
                    }
                }
            }
            _logger.Info("Core profiles generation completed.");
        }