internal BundleProjectCustomField ToApiEntity()

in src/YouTrackSharp/Projects/CustomField.cs [45:96]


        internal BundleProjectCustomField ToApiEntity(ICollection<Generated.CustomField> allFields)
        {
            var field = allFields.FirstOrDefault(f => f.Name.Equals(Name, StringComparison.InvariantCultureIgnoreCase));

            if (field == null)
            {
                throw new YouTrackErrorException(Strings.Exception_BadRequest, (int)HttpStatusCode.BadRequest,
                    $"Custom field prototype [ {Name} ] not found", null, null);
            }
            
            var fieldTypeId = field.FieldType.Id;
            var pos = fieldTypeId.IndexOf('[');
            if (pos >= 0)
            {
                fieldTypeId = fieldTypeId.Substring(0, pos);
            }

            BundleProjectCustomField bundleField;
            switch (fieldTypeId)
            {
                case "enum":
                    bundleField = new EnumProjectCustomField();
                    break;
                case "build":
                    bundleField = new BuildProjectCustomField();
                    break;
                case "ownedField":
                    bundleField = new OwnedProjectCustomField();
                    break;
                case "version":
                    bundleField = new VersionProjectCustomField();
                    break;
                case "state":
                    bundleField = new StateProjectCustomField();
                    break;
                case "user":
                    bundleField = new UserProjectCustomField();
                    break;
                case "group":
                    bundleField = new GroupProjectCustomField();
                    break;
                default:
                    bundleField = new SimpleProjectCustomField();
                    break;
            }
            
            bundleField.Field = field;
            bundleField.CanBeEmpty = CanBeEmpty;
            bundleField.EmptyFieldText = EmptyText;

            return bundleField;
        }