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]); }
private IShift CreateShiftFromShift(DataSetServices.Data.Modeling.Core.IShift shift) { return(_shiftConverter.Convert(shift)); }