{"id":3974,"date":"2025-02-20T15:58:26","date_gmt":"2025-02-20T15:58:26","guid":{"rendered":"https:\/\/mrctrading.com\/?page_id=3974"},"modified":"2026-04-13T17:48:42","modified_gmt":"2026-04-13T17:48:42","slug":"register","status":"publish","type":"page","link":"https:\/\/mrctrading.com\/en\/register\/","title":{"rendered":"Register"},"content":{"rendered":"    <script type=\"text\/javascript\" src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/select2\/4.0.2\/js\/select2.min.js\" id=\"select2js-js\"><\/script>\r\n    <div id=\"roleSelectionOverlay\" >\r\n        <div id=\"roleSelectionModal\">\r\n            <h3>Register As<\/h3>\r\n            <button class=\"role-btn student\" data-role=\"student\">Student<\/button>\r\n            <button class=\"role-btn teacher\" data-role=\"teacher\">Teacher<\/button>\r\n            <button class=\"role-btn admission\" data-role=\"admission\" style=\"background: #957f7f;\">Admission Test<\/button>\r\n            <button class=\"role-btn other\" data-role=\"other\">Other<\/button>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"warning\"><\/div>\r\n    <form id=\"custom_registration_form\" enctype=\"multipart\/form-data\" class=\"register-form\">\r\n        <div class=\"form-container\">\r\n                            <input type=\"hidden\" name=\"role\" value=\"\">\r\n                <div class=\"form-column\">\r\n                    <p><label for=\"email\">Name<\/label><input type=\"text\" name=\"name\" required placeholder=\"Fullname\"><\/p>\r\n                    <p><label for=\"phone\">Phone<\/label><input type=\"text\" name=\"phone\" required placeholder=\"Ex:01700000000\"><\/p>\r\n\r\n\r\n                    <p><label for=\"password\">Password<\/label><input type=\"password\" name=\"password\" id=\"password\" required><\/p>\r\n\r\n\r\n\r\n                <\/div>\r\n                <div class=\"form-column\">\r\n                    <p><label for=\"phone\">Disctict Name<\/label>\r\n                        <select name=\"district\" class=\"select2\" required id=\"district\">\r\n                            <option value=\"\">Select a District<\/option>\r\n                                                    <\/select>\r\n                    <\/p>\r\n                    <p>\r\n                        <label for=\"gender\">Upazila<\/label>\r\n                        <select id=\"upazila\" class=\"select2\" name=\"upazila\">\r\n                            <option value=\"\">Select Upazila<\/option>\r\n                        <\/select>\r\n                    <\/p>\r\n\r\n                    <p><label for=\"confirm_password\">Confirm Password<\/label><input type=\"password\" name=\"confirm_password\" id=\"confirm_password\" required><\/p>\r\n                <\/div>\r\n                <div class=\"form-column\">\r\n                    <p>\r\n                        <label for=\"gender\">Gender<\/label>\r\n                        <select name=\"gender\" required>\r\n                            <option value=\"male\">Male<\/option>\r\n                            <option value=\"female\">Female<\/option>\r\n                        <\/select>\r\n                    <\/p>\r\n                <\/div>\r\n            \r\n        <\/div>\r\n        <p><button type=\"submit\" class=\"btn btnPrimary w-100\" id=\"register_button\">Register<\/button><\/p>\r\n        <div id=\"loading_animation\" style=\"display:none;\">\r\n            <img decoding=\"async\" src=\"https:\/\/i.gifer.com\/7efs.gif\" style=\"width:100px;\">\r\n        <\/div>\r\n        <p class=\"success_message\"><\/p>\r\n    <\/form>\r\n    <div id=\"otp-modal-overlay\" class=\"otp-overlay\">\r\n        <div id=\"otp-modal\" class=\"otp-container\">\r\n            <p class=\"otp-title\">Enter the 4-digit OTP sent to your phone<\/p>\r\n            <div class=\"otp-inputs\">\r\n                <input type=\"text\" maxlength=\"1\" class=\"otp-digit\" \/>\r\n                <input type=\"text\" maxlength=\"1\" class=\"otp-digit\" \/>\r\n                <input type=\"text\" maxlength=\"1\" class=\"otp-digit\" \/>\r\n                <input type=\"text\" maxlength=\"1\" class=\"otp-digit\" \/>\r\n            <\/div>\r\n            <button id=\"verify-otp-btn\" class=\"otp-submit-btn btn btnPrimary w-100\">Verify OTP<\/button>\r\n            <p class=\"otp_warning\"><\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <style>\r\n        .radio_field input {\r\n            width: 20px;\r\n            margin-left: 10px;\r\n        }\r\n    <\/style>\r\n\r\n    <script>\r\n        function showError(message) {\r\n            jQuery('.warning').html('');\r\n            jQuery('html, body').animate({\r\n                scrollTop: parseInt(jQuery(\".warning\").offset().top - 20)\r\n            }, 1000);\r\n            jQuery('.warning').html('<div class=\"alert alert-danger\">' + message + '<\/div>');\r\n        }\r\n\r\n        function showSuccess(message) {\r\n            jQuery('.success_message').html('');\r\n            jQuery('html, body').animate({\r\n                scrollTop: parseInt(jQuery(\".warning\").offset().top - 20)\r\n            }, 1000);\r\n            jQuery('.success_message').html('<div class=\"alert alert-success\">' + message + '<\/div>');\r\n        }\r\n        jQuery(document).ready(function($) {\r\n            \/\/ alert('yes');\r\n\r\n            const upazilaMap = [];\r\n            $('#district').on('select2:select', function(e) {\r\n\r\n                \/\/  console.log(upazilaMap);\r\n                var selected = $(this).val();\r\n                \/\/alert(selected);console.log(upazilaMap[selected]);\r\n                const upazilas = upazilaMap[selected] || [];\r\n\r\n                $('#upazila').empty().append('<option value=\"\">Select Upazila<\/option>');\r\n                upazilas.forEach(upazila => {\r\n                    $('#upazila').append(`<option value=\"${upazila}\">${upazila}<\/option>`);\r\n                });\r\n\r\n                $('#upazila').trigger('change');\r\n            });\r\n            let tempFormData = null;\r\n            \/\/ Profile Image Preview\r\n            $(\"#profile_image\").change(function() {\r\n                var reader = new FileReader();\r\n                reader.onload = function(e) {\r\n                    $(\"#profile_preview\").attr(\"src\", e.target.result).show();\r\n                };\r\n                reader.readAsDataURL(this.files[0]);\r\n            });\r\n            $('#verify-otp-btn').on('click', function() {\r\n\r\n                let otp = '';\r\n                $('.otp-digit').each(function() {\r\n                    otp += $(this).val();\r\n                });\r\n                tempFormData.append(\"action\", \"custom_user_register\");\r\n                tempFormData.append(\"otp\", otp);\r\n                $(\"#loading_animation\").show();\r\n                $(\"#loading\").addClass('active');\r\n                $.ajax({\r\n                    url: \"https:\/\/mrctrading.com\/wp-admin\/admin-ajax.php\",\r\n                    type: \"POST\",\r\n                    data: tempFormData,\r\n                    processData: false,\r\n                    contentType: false,\r\n                    success: function(response) {\r\n                        $(\"#loading\").removeClass('active');\r\n                        \/\/  $(\"#registration_message\").html(response);\r\n                        \/\/showSuccess(response);\r\n                        $(\"#loading_animation\").hide();\r\n                        if (response.includes(\"Error\")) {\r\n                            \/\/                           jQuery('html, body').animate({\r\n                            \/\/                           scrollTop: parseInt(jQuery(\".warning\").offset().top-20)\r\n                            \/\/                         }, 1000);\r\n                            jQuery('.otp_warning').html('<div class=\"alert alert-danger\">' + response + '<\/div>');\r\n                        } else {\r\n                            $('#otp-modal').hide();\r\n                            $(\"#otp-modal-overlay\").fadeOut(200);\r\n                            setTimeout(() => window.location.href = response, 2000);\r\n                        }\r\n                    }\r\n                });\r\n            });\r\n\r\n            function registration_process() {\r\n\r\n            }\r\n            \/\/ Registration AJAX\r\n            $(\"#custom_registration_form\").submit(function(e) {\r\n                e.preventDefault();\r\n\r\n\r\n                var phone = $(\"input[name='phone']\").val();\r\n                var password = $(\"#password\").val();\r\n                var confirmPassword = $(\"#confirm_password\").val();\r\n                var phoneRegex = \/^[0-9]{10,15}$\/; \/\/ Allow only 10-15 digits\r\n                var passwordRegex = \/^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,}$\/;\r\n\r\n                \/\/ Check phone number format\r\n                if (!phoneRegex.test(phone)) {\r\n                    showError(\"Phone number must be 10-15 digits.\");\r\n                    return;\r\n                }\r\n\r\n                \/\/ Check password strength\r\n                \/*    if (!passwordRegex.test(password)) {\r\n                        showError(\"Password must be at least 8 characters, include 1 uppercase, 1 lowercase, 1 number, and 1 special character.\");\r\n                         \r\n                        return;\r\n                    }*\/\r\n\r\n                if ($(\"#password\").val() !== $(\"#confirm_password\").val()) {\r\n                    \/\/  alert(\"Passwords do not match!\");\r\n                    showError('Passwords do not match!');\r\n                    \/\/    jQuery('.warning').html('<div class=\"alert alert-danger\">Passwords do not match!<\/div>');\r\n                    return;\r\n                }\r\n                tempFormData = new FormData(this);\r\n                tempFormData.append(\"action\", \"send_otp\");\r\n                var formData = new FormData(this);\r\n                \/\/ formData.append(\"action\", \"custom_user_register\");\r\n                var site_url = 'https:\/\/mrctrading.com';\r\n                $(\"#register_button\").attr(\"disabled\", true);\r\n                var role = jQuery('#role').val();\r\n                $(\"#loading_animation\").show();\r\n                $(\"#loading\").addClass('active');\r\n                $.ajax({\r\n                    url: \"https:\/\/mrctrading.com\/wp-admin\/admin-ajax.php\",\r\n                    type: \"POST\",\r\n                    data: tempFormData,\r\n                    processData: false,\r\n                    contentType: false,\r\n                    success: function(response) {\r\n                        \/\/  $(\"#registration_message\").html(response);\r\n                        \/\/showSuccess(response);\r\n                        $(\"#loading\").removeClass('active');\r\n                        $(\"#loading_animation\").hide();\r\n                        if (response.includes(\"Error\")) {\r\n                            jQuery('html, body').animate({\r\n                                scrollTop: parseInt(jQuery(\".warning\").offset().top - 20)\r\n                            }, 1000);\r\n                            jQuery('.warning').html('<div class=\"alert alert-danger\">' + response + '<\/div>');\r\n                            $(\"#register_button\").attr(\"disabled\", false);\r\n                        } else {\r\n                            $(\"#otp-modal-overlay\").fadeIn(200);\r\n                            $(\".otp-digit\").first().focus();\r\n                            \/\/setTimeout(() =>   window.location.href = response, 2000);\r\n                        }\r\n                    }\r\n                });\r\n\r\n            });\r\n        });\r\n        jQuery(document).ready(function($) {\r\n            $(\".role-btn\").click(function() {\r\n                var userRole = $(this).data(\"role\");\r\n                $(\"#loading\").addClass('active');\r\n                \/\/ Store in session via AJAX\r\n                $.ajax({\r\n                    type: \"POST\",\r\n                    url: \"https:\/\/mrctrading.com\/wp-admin\/admin-ajax.php\",\r\n                    data: {\r\n                        action: \"save_user_role\",\r\n                        role: userRole\r\n                    },\r\n                    success: function(response) {\r\n                        $(\"#loading\").removeClass('active');\r\n                        $(\"#roleSelectionOverlay\").fadeOut();\r\n                        location.reload(); \/\/ Reload form based on selection\r\n                    }\r\n                });\r\n            });\r\n        });\r\n    <\/script>\r\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"class_list":["post-3974","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/mrctrading.com\/en\/wp-json\/wp\/v2\/pages\/3974","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mrctrading.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mrctrading.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mrctrading.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mrctrading.com\/en\/wp-json\/wp\/v2\/comments?post=3974"}],"version-history":[{"count":2,"href":"https:\/\/mrctrading.com\/en\/wp-json\/wp\/v2\/pages\/3974\/revisions"}],"predecessor-version":[{"id":3980,"href":"https:\/\/mrctrading.com\/en\/wp-json\/wp\/v2\/pages\/3974\/revisions\/3980"}],"wp:attachment":[{"href":"https:\/\/mrctrading.com\/en\/wp-json\/wp\/v2\/media?parent=3974"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}