// Note: IsRequestSupported is not called from the server,
        // it is internal only as of this time
        public bool IsRequestSupported(NumberProviderRequest request)
        {
            // We can restrict what kind of requests are supported by our number provider here:
            bool HasRestrictedField = request.Fields.Any(field => field.Type == FieldType.PredefinedList);

            return(!HasRestrictedField);
        }
        public IList <NumberProviderResponse> GenerateNumbers(NumberProviderRequest request, int num = 1)
        {
            // We can generate our number responses here:
            List <NumberProviderResponse> responses = new List <NumberProviderResponse>();

            //ADSK Technical Sales EMEA Sample Numbering; requires SQL DB "MyNumberingDB" and table, to be created via SQL script:
            //use[MyNumberingDB]
            //Create table autonumber(id int identity, number as (right('000000' + convert([varchar], [id], 0), (6))), value varchar(10))

            SQL.SqlConnection mSqlConn = new SQL.SqlConnection();
            mSqlConn.ConnectionString =
                "Data Source=localhost\\AUTODESKVAULT;" +
                "Initial Catalog=MyNumberingDB;" +
                "User ID=sa;" +
                "Password=AutodeskVault@26200";
            mSqlConn.Open();

            int newID;
            var cmd = "INSERT MyNumberingDB.dbo.autonumber (value) values (@var);SELECT CAST(scope_identity() AS int)";

            SQL.SqlCommand insertCommand = new SQL.SqlCommand(cmd, mSqlConn);
            insertCommand.Parameters.AddWithValue("@var", "temp");
            //con.Open();
            newID = (int)insertCommand.ExecuteScalar();
            //update the value according the new Number + Prefix

            cmd = "SELECT number from[MyNumberingDB].[dbo].[autonumber] WHERE id = " + newID;
            SQL.SqlCommand mSelectCmd = new SQL.SqlCommand(cmd, mSqlConn);
            string         newNumber  = (string)mSelectCmd.ExecuteScalar();

            mSqlConn.Close();

            // If we can't generate a number, we can return a general failure code:
            if (num <= 0 || newNumber.Length < 6) // original: || !this.IsRequestSupported(request)
            {
                responses.Add(new NumberProviderResponse(ErrorCodes.Failure, ""));
                return(responses);
            }

            while (num-- > 0)
            {
                // This is where we create the response with our newly generated number
                //                                                           ---------Below is the newly generated number----------
                //responses.Add(new NumberProviderResponse(ErrorCodes.Success, m_initializationParmPrefix + Guid.NewGuid().ToString()));
                responses.Add(new NumberProviderResponse(ErrorCodes.Success, request.Fields[0].Value + request.Fields[1].Value + newNumber));
            }

            return(responses);
        }