Exemple #1
0
        private Task <List <MetalDto> > GetModelMetals(ParsedJewelryModel model)
        {
            var metalConfigs = model.Configurations
                               .Where(c => c.ConfigurationType == JewelryModelConfigType.Options)
                               .Select(c => c.ConfigOptions)
                               .Cast <SelectorOptions>()
                               .Where(s => s.OptionsSource == OptionsSource.Metal)
                               .ToList();

            if (metalConfigs.Count == 0)
            {
                return(Task.FromResult(new List <MetalDto>()));
            }
            var allIds = metalConfigs.SelectMany(m => m.ExternalSourceIds).Distinct().ToList();

            return(_metalDao.LoadMetaldByIds(allIds));
        }
Exemple #2
0
        private Task <List <GemstoneDto> > GetModelGemstones(ParsedJewelryModel model)
        {
            var gemConfigs = model.Configurations
                             .Where(c => c.ConfigurationType == JewelryModelConfigType.Options)
                             .Select(c => c.ConfigOptions)
                             .Cast <SelectorOptions>()
                             .Where(s => s.OptionsSource == OptionsSource.Gemstone)
                             .ToList();

            if (gemConfigs.Count == 0)
            {
                return(Task.FromResult(new List <GemstoneDto>()));
            }
            ;
            var allIds = gemConfigs.SelectMany(m => m.ExternalSourceIds).Distinct().ToList();

            return(_gemstoneDao.LoadGemstonesByIds(allIds));
        }
Exemple #3
0
 public ConfiguredModel(
     ParsedJewelryModel model,
     List <string> configIds,
     ExpressionTerms expressionTerms)
 {
     _model           = model;
     _expressionTerms = expressionTerms;
     if (configIds.Count != _model.Configurations.Count)
     {
         throw new ApplicationException(
                   $"Could not parse model configuration values of configIDs '{string.Join(_expressionTerms.SkuSeparator, configIds)}'. Actual model config number: {model.Configurations.Count}!");
     }
     model.Configurations = model.Configurations.OrderBy(c => c.Order).ToList();
     Configs = new List <SpecificModelConfig>();
     for (var i = 0; i < model.Configurations.Count; ++i)
     {
         Configs.Add(new SpecificModelConfig(model.Configurations[i], configIds[i]));
     }
 }
Exemple #4
0
        private async Task FillActualSelectorOptions(ParsedJewelryModel model)
        {
            var metals    = (await GetModelMetals(model)).ToDictionary(m => m.Id);
            var gemstones = (await GetModelGemstones(model)).ToDictionary(g => g.Id);

            foreach (var config in model.Configurations
                     .Where(c => c.ConfigurationType == JewelryModelConfigType.Options)
                     .Select(c => c.ConfigOptions).Cast <SelectorOptions>())
            {
                switch (config.OptionsSource)
                {
                case OptionsSource.Gemstone:
                    config.GemstoneSource = config.ExternalSourceIds.Select(id => gemstones[id]).ToList();
                    break;

                case OptionsSource.Metal:
                    config.MetalSource = config.ExternalSourceIds.Select(id => metals[id]).ToList();
                    break;
                }
            }
        }