Beispiel #1
0
        public IEnumerable <Category> GetCategories()
        {
            GetApprenticeshipFrameworksResponse response = null;

            var request = new GetApprenticeshipFrameworksRequest(_legacyServicesConfiguration.SystemId, Guid.NewGuid(), _legacyServicesConfiguration.PublicKey);

            try
            {
                _logger.Debug("Calling ReferenceData.GetApprenticeshipFrameworks");

                _service.Use("ReferenceData", client => response = client.GetApprenticeshipFrameworks(request));
                var categories = GetCategories(response);

                _logger.Debug("ReferenceData.GetApprenticeshipFrameworks succeeded");

                return(categories);
            }
            catch (BoundaryException ex)
            {
                _logger.Warn(ex);
            }
            catch (Exception ex)
            {
                _logger.Error(ex);
            }

            // Must return null or could be put in cache.
            return(null);
        }
Beispiel #2
0
        private IEnumerable <Category> GetCategories(GetApprenticeshipFrameworksResponse response)
        {
            if (response == null || response.ApprenticeshipFrameworks == null || response.ApprenticeshipFrameworks.Length == 0)
            {
                _logger.Warn("No ApprenticeshipFrameworks data returned from the legacy GetApprenticeshipFrameworks service");
                return(null);
            }

            var categories = new List <Category>();

            var topLevelCategories =
                response.ApprenticeshipFrameworks
                .Select(c =>
                        new Category
            {
                CodeName  = c.ApprenticeshipOccupationCodeName,
                ShortName = c.ApprenticeshipOccupationShortName,
                FullName  = c.ApprenticeshipOccupationFullName
            }).Distinct(new CategoryComparer()).OrderBy(c => c.FullName);

            foreach (var topLevelCategory in topLevelCategories)
            {
                topLevelCategory.SubCategories =
                    response.ApprenticeshipFrameworks.Where(c => c.ApprenticeshipOccupationCodeName == topLevelCategory.CodeName)
                    .Select(d =>
                            new Category
                {
                    ParentCategory = topLevelCategory,
                    CodeName       = d.ApprenticeshipFrameworkCodeName,
                    ShortName      = d.ApprenticeshipFrameworkShortName,
                    FullName       = d.ApprenticeshipFrameworkFullName
                }).OrderBy(c => c.FullName).ToList();

                categories.Add(topLevelCategory);
            }

            return(categories);
        }