public override IEnumerable <ITool> Convert(AvailableToolLink input)
        {
            if (!InstancesMap.ContainsKey(input))
            {
                var tool = input.Tool;

                if (!_shiftConverter.NamedInstances.ContainsKey(input.Shift.Name))
                {
                    _shiftConverter.Convert(input.Shift);
                }
                IShift shift = _shiftConverter.InstancesMap[input.Shift];

                var tools     = new HashSet <ITool>();
                var converted = Factory.Create(tool.Name, shift);
                tools.Add(converted);
                var instances = new Dictionary <int, IToolInstance>();
                ToolTypes.Add(converted, instances);
                for (int i = 0; i < input.AvailableQuantity; i++)
                {
                    var instance = _toolInstanceFactory.Create(converted);
                    instances.Add(instance.ID, instance);
                }

                InstancesMap.GetOrAdd(input, tools);
                // TODO: this should be a toolInstance converter and a toolDefinition converter
                // TODO: we have skillConverter which is the definition part, and laborConverter which is the instance part
                NamedInstances.GetOrAdd(tool.Name, tools.First());
            }

            return(InstancesMap[input]);
        }
        public override IEnumerable <IWorker> Convert(AvailableLaborLink input)
        {
            if (!InstancesMap.ContainsKey(input))
            {
                var labor = input.Labor;
                if (!_skillConverter.NamedInstances.ContainsKey(labor.Name))
                {
                    _skillConverter.Convert(labor);
                }
                ISkill skill = _skillConverter.InstancesMap[labor];

                if (!WorkerTypes.ContainsKey(skill))
                {
                    WorkerTypes.Add(skill, new Dictionary <int, IWorker>());
                }

                if (!_shiftConverter.NamedInstances.ContainsKey(input.Shift.Name))
                {
                    _shiftConverter.Convert(input.Shift);
                }
                IShift shift = _shiftConverter.InstancesMap[input.Shift];

                var workers = new HashSet <IWorker>();
                for (int i = 0; i < input.AvailableQuantity; i++)
                {
                    var worker = Factory.Create(skill, shift);
                    workers.Add(worker);
                    WorkerTypes[skill].Add(worker.ID, worker);
                }

                InstancesMap.GetOrAdd(input, workers);
            }
            else
            {
                string test = "do we really already have it?";
            }

            return(InstancesMap[input]);
        }
Example #3
0
 private IShift CreateShiftFromShift(DataSetServices.Data.Modeling.Core.IShift shift)
 {
     return(_shiftConverter.Convert(shift));
 }