public TechObject DuplicateIfNotExisting(string nameOfTechToDuplicate, NewTechDetails newTech)
        {
            if (_techManager.CheckIfTechExists(newTech.name) == true)
            {
                return(_techManager.GetTechByName(newTech.name));
            }

            var theOriginalTech = _techManager.GetTechByName(nameOfTechToDuplicate);
            var theNewTech      = DuplicateAndAdjustTech(theOriginalTech, newTech);

            return(theNewTech);
        }
        private TechObject DuplicateAndAdjustTech(TechObject theOriginalTech, NewTechDetails newTech)
        {
            var theNewTech = theOriginalTech.Duplicate(newTech.name);

            theNewTech.DevelopCost = _techManager.GetStandardTechCostForLevel(newTech.tier);

            if (string.IsNullOrEmpty(newTech.description) == false)
            {
                theNewTech.TechDescription = newTech.description;
            }

            if (string.IsNullOrEmpty(newTech.preRequisite1) == false)
            {
                var prereqTech = _techManager.GetTechByName(newTech.preRequisite1);
                theNewTech.Prerequisite1 = prereqTech.TechSystemID.Value;
            }
            if (string.IsNullOrEmpty(newTech.preRequisite2) == false)
            {
                var prereqTech = _techManager.GetTechByName(newTech.preRequisite2);
                theNewTech.Prerequisite2 = prereqTech.TechSystemID.Value;
            }

            if (string.IsNullOrEmpty(newTech.component) == false)
            {
                theNewTech.ComponentName = newTech.component;
            }
            if (newTech.newValue1.HasValue)
            {
                theNewTech.AdditionalInfo = newTech.newValue1.Value;
            }
            if (newTech.newValue2.HasValue)
            {
                theNewTech.AdditionalInfo = newTech.newValue2.Value;
            }
            if (newTech.newValue3.HasValue)
            {
                theNewTech.AdditionalInfo = newTech.newValue3.Value;
            }
            if (newTech.newValue4.HasValue)
            {
                theNewTech.AdditionalInfo = newTech.newValue4.Value;
            }

            return(theNewTech);
        }