Site Builder

Sample UI for login and signup in site builder

HTML

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Fav and touch icons -->
    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="assets/ico/apple-touch-icon-144-precomposed.ico">
    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="assets/ico/apple-touch-icon-114-precomposed.ico">
    <link rel="apple-touch-icon-precomposed" sizes="72x72" href="assets/ico/apple-touch-icon-72-precomposed.ico">
    <link rel="apple-touch-icon-precomposed" href="ico/apple-touch-icon-57-precomposed.ico">
    <link rel="shortcut icon" href="assets/ico/favicon.ico">
    <title>AQUVERSE® | Login</title>
    <!-- Bootstrap core CSS -->
    <link href="assets/bootstrap/css/bootstrap.css" rel="stylesheet">
    <!-- Custom styles for this template -->
    <link href="assets/css/style.css" rel="stylesheet">
    <link href="assets/css/skin-6.css" rel="stylesheet">
    <link href="assets/css-custom/store-custom.css" rel="stylesheet">
    <!-- Just for debugging purposes. -->
    <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
    <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
    <![endif]-->
    <!-- include pace script for automatic web page progress bar  -->
    <style type="text/css">
    .btn btn-primary {
        background-color: #f4511e;
        border: none;
        color: white;
        padding: 7px 10px;
        text-align: center;
        font-size: 16px;
        margin: 4px 2px;
        opacity: 1;
        transition: 0.3s;
    }

    #btn {
        background-color: #3498db;
        border: none;
        color: white;
        padding: 7px 10px;
        text-align: center;
        font-size: 15px;
        margin: 4px 2px;
        opacity: 1;
        transition: 0.3s;
    }


    .btn btn-primary:hover {
        opacity: 0.6
    }

    #btn:hover {
        opacity: 0.6
    }

    a:link {
        color: #454545;
    }

    /* visited link */
    a:visited {
        color: #34495E;
    }

    /* mouse over link */
    a:hover {
        color: red;
    }
    </style>
    <script>
        paceOptions = {
        elements: true
    };
    </script>
    <script src="assets/js/pace.min.js"></script>
    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="assets/js/jquery/jquery-2.1.3.min.js"></script>
    <script src="assets/bootstrap/js/bootstrap.min.js"></script>
    <!-- include validate.js // jquery plugin   -->
    <script src="assets/js/jquery.validate.js"></script>
    <!-- include  global content load js -->
    <script src="assets/js-custom/load-global-functions.js"></script>
    <script src="assets/js-custom/addon-lib.js"></script>
    <script src="assets/js-custom/login-page.js"></script>
    <!--Custom CSS for login page-->
    <style>
    </style>
</head>

<body>
    <!-- Fixed navbar start -->
    <div class="navbar navbar-tshop navbar-fixed-top megamenu" role="navigation">
        <div class="navbar-top">
            <div class="container">
                <div class="row">
                    <div class="col-lg-6 col-sm-6 col-xs-6 col-md-6">
                        <div class="pull-left ">
                            <ul class="userMenu ">
                                <li class="phone-number">
                                    <a href="callto:+18558928231">
                                        <span> <i class="glyphicon glyphicon-phone-alt "></i></span>
                                        <span class="hidden-xs" style="margin-left:5px"> +1-855-892-8231 </span>
                                    </a>
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <!--/.navbar-top-->
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="sr-only"> Toggle navigation </span>
                    <span class="icon-bar"> </span>
                    <span class="icon-bar"> </span>
                    <span class="icon-bar"> </span>
                </button>
                <a class="navbar-brand " href="index.html"> <img src="images/logo.png" alt="AQUVERSE LOGO" style="height:35px;"> </a>
            </div>
            <div class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li class="active"><a href="login.html"> Login </a></li>
                </ul>
            </div>
            <!--/.nav-collapse -->
        </div>
        <!--/.container -->
    </div>
    <!-- /.Fixed navbar  -->
    <div class="container main-container headerOffset">
        <div class="row">
            <div class="breadcrumbDiv col-lg-12">
                <ul class="breadcrumb">
                    <li><a href="index.html">Home</a></li>
                    <li class="active"> Authentication</li>
                </ul>
            </div>
        </div>
        <div class="row">
            <div class="col-lg-10 col-md-10 col-sm-10">
                <h1 class="section-title-inner"><span><i class="fa fa-lock"></i> Authentication</span></h1>
                <div class="row userInfo">
                    <!--    EMPLOYEE LOGIN  -->
                    <div class="col-xs-12 col-sm-6">
                        <h2 class="block-title-1"><span>CUSTOMER LOGIN</span></h2>
                        <form role="form" id="employeeForm" autocomplete="off">
                            <div class="form-group">
                                <label>Email address</label>
                                <input title="Please enter valid Email ID" type="email" class="form-control" placeholder="Enter Your Work Email" required autocomplete="new-email">
                            </div>
                            <div class="form-group">
                                <label>Password</label>
                                <input title="Please enter valid Password" type="password" class="form-control" placeholder="Password" onkeypress="employeeLogin(event,'onkeypress');" minlength="3" required autocomplete="new-password">
                            </div>
                            <div class="error">
                            </div>
                            <div class="form-group">
                                <!-- <p><a title="Setup Account" href="forgot-password.html?type=newuser">Setup Account</a></p> -->
                                <p><a title="Forgot Password?" href="forgot-password.html?type=changepassword">Setup Account/Forgot Password ? </a></p>
                            </div>
                            <button type="button" class="btn btn-primary" onclick="employeeLogin(event,'onclick');">
                                <i class="fa fa-sign-in"></i> LOGIN
                            </button>
                            <button type="button" id="btn" class="btn btn-primary" onclick="continueAsGuest(event,'onclick');">
                                <i class="fa fa-sign-in"></i> CONTINUE SHOPPING
                            </button>
                        </form>
                    </div>
                    <div class="col-xs-12 col-sm-6">
                        <h2 class="block-title-1"><span>CUSTOMER SIGN UP</span></h2>
                        <form role="form" id="customerSignupForm" autocomplete="">
                            <div class="form-group">
                                <label>First name</label>
                                <input title="Please enter your first name" type="name" id="Fname" class="form-control" placeholder="Enter your first name" required autocomplete="">
                            </div>
                            <div class="form-group">
                                <label>Last name</label>
                                <input title="Please enter your last name" type="name" id="Lname" class="form-control" placeholder="Enter your last name" required autocomplete="">
                            </div>
                            <div class="form-group">
                                <label>Email address</label>
                                <input title="Please enter valid Email ID" type="email" id="custEmail" class="form-control" placeholder="Enter Your Work Email" pattern=".+@globex.com" size="30" required autocomplete="new-email">
                            </div>
                            <div class="form-group">
                                <label>Password</label>
                                <input title="Please enter valid Password" type="password" id="custPassword" class="form-control" placeholder="Password" onkeypress="customerSignUp(event,'onkeypress');" minlength="4" required autocomplete="new-password">
                            </div>
                            <div class="error">
                            </div>
                            <button type="button" id="btn1" class="btn btn-primary" onclick="customerSignUp(event,'onclick');">
                                <i class="fa fa-sign-in"></i> SIGN UP
                            </button>
                        </form>
                    </div>
                </div>
                <!--/row end-->
            </div>
            <div class="col-lg-3 col-md-3 col-sm-5"> </div>
        </div>
        <!--/row-->
        <div style="clear:both"></div>
        <div style="clear:both"></div>
    </div>
    <!-- /.main-container -->
    <div class="gap"></div>
    <footer>
        <div class="footer-bottom">
            <div class="container">
                <p class="pull-left"> OneSource IML  |  <strong><a href="callto:+18668725722">+1-855-892-8231</a></strong>  |  8am-5pm CST Mon - Fri </p>
                <div class="pull-right paymentMethodImg">
                    <img height="30" class="pull-right" src="images/osiml_logo_sm.png" alt="OneSource IML Logo footer">
                </div>
            </div>
        </div>
        <!--/.footer-bottom-->
    </footer>
    <!-- Le javascript
================================================== -->
    <!--    include SweetAlert2 and optionally add polfill    -->
    <script src="assets/plugins-custom/sweetalert2.all.js"></script>
    <!-- Include a polyfill for ES6 Promises (optional) for IE11 and Android browser -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/core-js/2.4.1/core.js"></script>
    <!-- include  parallax plugin -->
    <script type="text/javascript" src="assets/js/jquery.parallax-1.1.js"></script>
    <!-- optionally include helper plugins -->
    <script type="text/javascript" src="assets/js/helper-plugins/jquery.mousewheel.min.js"></script>
    <!-- include mCustomScrollbar plugin //Custom Scrollbar  -->
    <script type="text/javascript" src="assets/js/jquery.mCustomScrollbar.js"></script>
    <!-- include icheck plugin // customized checkboxes and radio buttons   -->
    <script type="text/javascript" src="assets/plugins/icheck-1.x/icheck.min.js"></script>
    <!-- include grid.js // for equal Div height  -->
    <script src="assets/plugins/jquery-match-height-master/dist/jquery.matchHeight-min.js"></script>
    <script src="assets/js/grids.js"></script>
    <!-- include carousel slider plugin  -->
    <script src="assets/js/owl.carousel.min.js"></script>
    <!-- jQuery select2 // custom select   -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.min.js"></script>
    <!-- include touchspin.js // touch friendly input spinner component   -->
    <script src="assets/js/bootstrap.touchspin.js"></script>
    <!-- include custom script for site  -->
    <script src="assets/js/script.js"></script>
</body>

</html>

Java Script

/*to clears all cookies (self invoking function) when login page loads*/
(function() {
    clearAllCookies();
})();

$(document).ready(function() {
    /* Login Function :
        - EMPLOYEE LOGIN
    */

    /* Validate Login Form on keyup and submit for  Employee Login */
    $("#employeeForm").validate({
        errorLabelContainer: $("#employeeForm div.error")
    });

    /* validated  for Employee Login on keypress */
    $('#employeeForm input').on("keypress", function() {
        $("#employeeForm div.error").empty();
        var validateResponse = $("#employeeForm").validate();
    });
    $("#customerSignupForm").validate({
        errorLabelContainer: $("#customerSignupForm div.error")
    });
    $('#customerSignupForm input').on("keypress", function() {
        $("#customerSignupForm div.error").empty();
        var validateResponse = $("#customerSignupForm").validate();
    });
});
/*Handle login for Employee 
 - Login Function
 - Handle Login Response
 */
function employeeLogin(event, type) {
    if ((event.keyCode == 13) || (type == 'onclick')) {
        var employeeEmailId = $('#employeeForm input')[0].value;
        var employeePassword = $('#employeeForm input')[1].value;
        if (checkForParameter(employeeEmailId) && checkForParameter(employeePassword) && validateEmail(employeeEmailId)) {
            swal({
                title: 'Validating Credentials!',
                text: 'Please wait...',
                onOpen: function changeArrowfunction() {
                    swal.showLoading();
                }
            });
            var timeStamp = Date.parse(new Date()).toString();

            var encrypt_data = encryptionModule.processData(timeStamp, employeePassword, 'encrypt');
            encrypt_data = encodeAndDecodeString(encrypt_data, true);
            employeePassword = encrypt_data;

            var u = getSuiteletURL['login'] + "&status=login" + "&email=" + escape(employeeEmailId) + "&cred=" + encodeURIComponent(employeePassword) + "&timestamp=" + escape(timeStamp) + "&guestid=" + getCookie('guestUniqueNumber');
            var cb = 'employeeLoginResponse';
            getJSONP(u + '&callback=' + cb);
        } else {
            if (!(checkForParameter(employeeEmailId)) && !(checkForParameter(employeePassword))) {
                swal('Empty Fields', 'Please enter required fields', 'error');
            } else if (!checkForParameter(employeePassword)) {
                swal('Empty Fields', 'Please enter Password', 'error');
            } else if (!checkForParameter(employeeEmailId)) {
                swal('Empty Fields', 'Please enter Email ID', 'error');
            } else {
                swal('Invalid Email', 'Please enter valid Email ID', 'error');
            }
        }
    }
}


function employeeLoginResponse(data) {
    var employeeLoginResponseObj = convertEscapetoUnescape(data);
    if (employeeLoginResponseObj[0].responseString == 'SUCCESS') {
        if (typeof(Storage) !== "undefined") {
            if (validateLoginServerStatus(employeeLoginResponseObj)) {
                setCookie("customerID", employeeLoginResponseObj[0].customerID, 1);
                setCookie("customerEmailID", employeeLoginResponseObj[0].customerEmailID, 1);
                setCookie("customerName", employeeLoginResponseObj[0].customerName, 1);
                var empName = employeeLoginResponseObj[0].customerFirstName + ' ' + assignDefaultValue(employeeLoginResponseObj[0].customerLastName, '');
                setCookie("customerRealName", empName, 1);
                setCookie("serverPhrase", employeeLoginResponseObj[0].serverPhrase, 1);
                var getCookieValue = getCookie('serverPhrase') + getCookie('customerID') + getCookie('customerEmailID');
                var passPhrase = giveNumberCode(getCookieValue, 7);
                setCookie("customerPassPhrase", passPhrase, 1);
                setCookie("customerVerifyChekout", 'false', 1);
                setCookie("customerTimeStamp", 'false', 1);
                setCookie("guestUniqueNumber", 'false', -1);
                setCookie("customerPassPhraseGuest", 'false', -1);
                swal("Authorized", "Will be redirecting to homepage soon..", "success");
                if (getParameterByName('REDIRECT_TO') == 'cart')
                    window.location.href = 'cart.html';
                else
                    window.location.href = 'index.html';
            } else {
                swal('UNAUTHORIZED', 'UNAUTHORIZED ACCESS', 'error');
            }
        } else {
            console.log("Your browser doesnot support cookies");
            swal('Oops...', 'Your browser doesnot support cookies', 'error');
        }

    } else {
        swal('UNAUTHORIZED', 'Couldn\'t validate Customer', 'error');
    }
}

//triggers when user want to continue as guest
function continueAsGuest(event, type) {
    if (validateGuestAccess()) {
        window.location.href = 'shop.html';
    } else {
        var UNIQUE_ID = guestUniqueNumber();
        setCookie("guestUniqueNumber", UNIQUE_ID, 2);
        setCookie("customerPassPhraseGuest", giveNumberCode(UNIQUE_ID, 5), 2);
        window.location.href = 'login.html';
    }
}

// sign up a new customer to the webstore 
function customerSignUp(event, type) {
    if ((event.keyCode == 13) || (type == 'onclick')) {
        var customerFirstName = $('#Fname').val();
        var customerLastName = $('#Lname').val();
        var customerEmailId = $('#custEmail').val();
        var customerPassword = $('#custPassword').val();
        if (customerValidation({ "First Name": customerFirstName, "Last Name": customerLastName, "EmailId": customerEmailId, "Password": customerPassword })) {
            swal({
                title: 'Validating Customer!',
                text: 'Please wait...',
                onOpen: function changeArrowfunction() {
                    swal.showLoading();
                }
            });
            var timeStamp = Date.parse(new Date()).toString();
            var encrypt_data = encryptionModule.processData(timeStamp, customerPassword, 'encrypt');
            encrypt_data = encodeAndDecodeString(encrypt_data, true);
            customerPassword = encrypt_data;
            var u = getSuiteletURL['signup'] + "&status=signup" + "&firstname=" + escape(customerFirstName) + "&lastname=" + escape(customerLastName) + "&email=" + escape(customerEmailId) + "&cred=" + encodeURIComponent(customerPassword) + "&timestamp=" + escape(timeStamp);
            var cb = 'customerSignupResponse';
            getJSONP(u + '&callback=' + cb);
        }
    }
}

function customerValidation(obj) {
    try {
        for (var key in obj)
            if (!checkForParameter(obj[key].toString().trim())) {
                swal('Empty Fields', 'Please enter ' + key, 'error');
                return false;
            }
        if (!validateEmail(obj.EmailId.toString().trim())) {
            swal('Not Vaild Email', 'Please enter Email ID', 'error');
            return false;
        }
        if ((obj.Password.toString().trim()).length < 4) {
            swal('Not Vaid Password', 'Password length should be atleast 4', 'error');
            return false;
        }
        return true;

    } catch (err) {
        return false
    }
}

function customerSignupResponse(data) {
    var customerSignupResponseObj = convertEscapetoUnescape(data);
    if (customerSignupResponseObj[0].responseString != "FAILURE") {
        swal(customerSignupResponseObj[0].responseMessage, '', customerSignupResponseObj[0].responseString);
        //AFTER CLEAR THE FIED AFTER CUSTOMER CREATION
        $('#Fname').val('');
        $('#Lname').val('');
        $('#custEmail').val('');
        $('#custPassword').val('');
    } else {
        swal('UNAUTHORIZED', customerSignupResponseObj[0].responseMessage, 'error');
        console.log(customerSignupResponseObj[0]);
    }
}

Suitelet

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 */
/**
 * Script Description
 * This script is to handle login request and forgot password request from 
 * Aquverse 
 * 
 * Created on 21-February-2019 by  J&J
 */
/*******************************************************************************
 * * OneSource IML | OSI-61 | Aquverse *
 * **************************************************************************
 * 
 * 
 * Author:  Jobin & Jismi IT Services LLP
 * 
 * REVISION HISTORY
 * 
 * 
 ******************************************************************************/

/**
 *  SCRIPT ID : customdeploy_osi_52_jj_sl_aquverse_sign
 *  
 *  DEPLOYMENT ID : customdeploy_osi_52_jj_sl_aquverse_sign
 *  
 */
var CONTEXT;
define(['N/record', 'N/search', 'N/email', 'N/runtime', 'N/log'], function(record, search, email, runtime, log) {

    //To check whether a value exists in parameter
   /* function checkForParameter(parameter, parameterName) {
        if (parameter != "" && parameter != null && parameter != undefined && parameter != "null" && parameter != "undefined" && parameter != " " && parameter != false) {
            return true;
        } else {
            if (parameterName)
                log.debug('Empty Value found', 'Empty Value for parameter ' + parameterName);
            return false;
        }
    }*/
    //Custom Encoding a given string (for validation and fraud detection)
    /*function giveServerCode(someString, sizeLimit) {
        sizeLimit = ((sizeLimit) ? (sizeLimit) : (5));
        sizeLimit = parseInt(sizeLimit);
        someString = someString.toString();
        var letters = ["d", "e", "g", ";", "w", "o", "q", "5", "p", ".", "a", "2", "z", "3", "l", "m", "4", "'", "b", "c", "7", "s", "8", "r", "u", "v", "y", "t", "0", "@", "1", "f", ":", "6", "h", "i", ",", "n", " ", "x", "j", "k", "9"];

        var numberCode = "";
        for (var i = 0; i < someString.length; i++) {
            var letter = someString[i].toLowerCase();
            var number = letters.indexOf(letter) + 1;
            if (number < 10) {
                number = "0" + number;
            }
            numberCode += number;
        }
        return ((numberCode) % (Math.pow(10, sizeLimit)));
    }*/

    //To encode/decode a string into BASE64
    function encodeAndDecodeString(inputString, isEncode) {
        try {
            var Base64 = {
                _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
                encode: function(e) {
                    var t = "";
                    var n, r, i, s, o, u, a;
                    var f = 0;
                    e = Base64._utf8_encode(e);
                    while (f < e.length) {
                        n = e.charCodeAt(f++);
                        r = e.charCodeAt(f++);
                        i = e.charCodeAt(f++);
                        s = n >> 2;
                        o = (n & 3) << 4 | r >> 4;
                        u = (r & 15) << 2 | i >> 6;
                        a = i & 63;
                        if (isNaN(r)) {
                            u = a = 64
                        } else if (isNaN(i)) {
                            a = 64
                        }
                        t = t + this._keyStr.charAt(s) +
                            this._keyStr.charAt(o) +
                            this._keyStr.charAt(u) +
                            this._keyStr.charAt(a)
                    }
                    return t
                },
                decode: function(e) {
                    var t = "";
                    var n, r, i;
                    var s, o, u, a;
                    var f = 0;
                    e = e.replace(/[^A-Za-z0-9+/=]/g, "");
                    while (f < e.length) {
                        s = this._keyStr.indexOf(e.charAt(f++));
                        o = this._keyStr.indexOf(e.charAt(f++));
                        u = this._keyStr.indexOf(e.charAt(f++));
                        a = this._keyStr.indexOf(e.charAt(f++));
                        n = s << 2 | o >> 4;
                        r = (o & 15) << 4 | u >> 2;
                        i = (u & 3) << 6 | a;
                        t = t + String.fromCharCode(n);
                        if (u != 64) {
                            t = t + String.fromCharCode(r)
                        }
                        if (a != 64) {
                            t = t + String.fromCharCode(i)
                        }
                    }
                    t = Base64._utf8_decode(t);
                    return t
                },
                _utf8_encode: function(e) {
                    e = e.replace(/rn/g, "n");
                    var t = "";
                    for (var n = 0; n < e.length; n++) {
                        var r = e.charCodeAt(n);
                        if (r < 128) {
                            t += String.fromCharCode(r)
                        } else if (r > 127 && r < 2048) {
                            t += String.fromCharCode(r >> 6 | 192);
                            t += String.fromCharCode(r & 63 | 128)
                        } else {
                            t += String.fromCharCode(r >> 12 | 224);
                            t += String.fromCharCode(r >> 6 & 63 | 128);
                            t += String.fromCharCode(r & 63 | 128)
                        }
                    }
                    return t
                },
                _utf8_decode: function(e) {
                    var t = "";
                    var n = 0;
                    var r = c1 = c2 = 0;
                    while (n < e.length) {
                        r = e.charCodeAt(n);
                        if (r < 128) {
                            t += String.fromCharCode(r);
                            n++
                        } else if (r > 191 && r < 224) {
                            c2 = e.charCodeAt(n + 1);
                            t += String.fromCharCode((r & 31) << 6 | c2 &
                                63);
                            n += 2
                        } else {
                            c2 = e.charCodeAt(n + 1);
                            c3 = e.charCodeAt(n + 2);
                            t += String.fromCharCode((r & 15) << 12 |
                                (c2 & 63) << 6 | c3 & 63);
                            n += 3
                        }
                    }
                    return t
                }
            }
            inputString = inputString.toString();
            if (isEncode)
                return Base64.encode(inputString);
            else
                return Base64.decode(inputString);
        } catch (err) {
            log.debug("Error ", "Error at function encodeAndDecodeString()");
            return false;
        }
    }
    //custom encryption module
    var encryptionModule = {
        encrypt: function(key, value) {
            var result = "";
            for (i = 0; i < value.length; ++i) {
                result += String.fromCharCode(key[i % key.length] ^ value.charCodeAt(i));
            }
            return result;
        },
        decrypt: function(key, value) {
            var result = "";
            for (i = 0; i < value.length; ++i) {
                result += String.fromCharCode(key[i % key.length] ^ value.charCodeAt(i));
            }
            return result;
        },
        encode: function(k, s) {
            var enc = "";
            var str = "";
            // make sure that input is string
            str = s.toString();
            for (var i = 0; i < s.length; i++) {
                // create block
                var a = s.charCodeAt(i);
                // bitwise XOR
                var b = a ^ k;
                enc = enc + String.fromCharCode(b);
            }
            return enc;
        },
        finalResult: function(key, value, times, type, index) {
            times = encryptionModule.assignDefaultValue(times, 1);
            index = encryptionModule.assignDefaultValue(index, 1);
            key = key.toString();
            var radKey = parseInt((parseFloat(key) * times * encryptionModule.giveNumberCode(index.toString())) / 1000000000);
            radKey = encryptionModule.giveNumberCode(radKey.toString());
            if (times > index)
                return encryptionModule.finalResult(radKey, value, times, type, index + 1);
            if (type == 'encrypt' || type == 1)
                for (var i = 0; i < times; i++)
                    if (i % 2 == 0)
                        value = encryptionModule.encode(key, value);
                    else
                        value = encryptionModule.encrypt(encryptionModule.giveNumberCode(key), value);
            else if (type == 'decrypt' || type == 2)
                for (var i = 0; i < times; i++)
                    if (i % 2 == 0)
                        value = encryptionModule.encode(key, value);
                    else
                        value = encryptionModule.decrypt(encryptionModule.giveNumberCode(key), value);
            else
                for (var i = 0; i < times; i++)
                    value = encryptionModule.encode(key, value);

            return value;
        },
        processData: function(key, value, type) {
            key = key.toString();
            value = value.toString();
            if (type == 'encrypt' || type == 1) {
                value = encryptionModule.encrypt(key, value);
                value = encryptionModule.encrypt(encryptionModule.giveNumberCode(key).toString(), value);
            } else if (type == 'decrypt' || type == 2) {
                value = encryptionModule.decrypt(encryptionModule.giveNumberCode(key).toString(), value);
                value = encryptionModule.decrypt(key, value);
            } else
                value = encryptionModule.encode(key, value);
            return value;
        },
        giveNumberCode: function(someString) {
            var letters = ["d", "e", "g", ";", "w", "o", "q", "5", "p", ".", "*", "a", "2", "/", "z", "3", "l", "+", "m", "%", "4", "'", "b", "c", "7", "s", "8", "r", "u", "-", "v", "y", "t", "0", "@", "1", "f", ":", "6", "h", "i", ",", "n", " ", "x", "j", "k", "9"];

            var numberCode = "";
            for (var i = 0; i < someString.length; i++) {
                var letter = someString[i].toLowerCase();
                var number = letters.indexOf(letter) + 1;
                if (number < 10) {
                    number = "0" + number;
                }
                numberCode += number;
            }
            numberCode = ((numberCode * 3.14159265359) / 2.22144146908) * 2.64575131106;
            if (numberCode.toString().split(".")[1]) {
                if (numberCode.toString().split(".")[1].length > 5) {
                    numberCode = numberCode.toString().split(".")[1];
                }
            }
            numberCode = parseInt(numberCode) % 1000000;
            return numberCode;
        },
        checkForParameter: function(parameter) {
            if (parameter != "" && parameter != null && parameter != undefined && parameter != "undefined" && parameter != " " && parameter != false) {
                return true;
            } else {
                if (paremeterName)
                    log.debug('Empty Value found', 'Empty Value for parameter ' + paremeterName);
                return false;
            }
        },
        assignDefaultValue: function(value, defaultValue) {
            if (encryptionModule.checkForParameter(value))
                return value;
            else
                return defaultValue;
        },
    };

    var main = {
        routeRequest: function(context) {
            log.debug('context.request.method', context.request.method);
            if (checkForParameter(context.request.parameters.status)) {
                if (checkForParameter(context.request.parameters.callback)) {
                    var status = context.request.parameters.status;
                    if (status == 'signup')
                        return main.signUpCustomer(context);
                    else
                        return main.sendResponse('FAILURE', escape('INVALID STATUS'), false, escape('main.routeRequest()'), context);
                }
            }
            return false;
        },
        runCustomerSearch: function(customerEmail) {
            var customerSearchObj = search.create({
                type: "customer",
                filters: [
                    ["isinactive", "is", "F"],
                    "AND",
                    ["email", "is", customerEmail]
                ],
                columns: [
                    search.createColumn({
                        name: "entityid",
                        sort: search.Sort.ASC,
                        label: "ID"
                    }),
                    search.createColumn({ name: "altname", label: "Name" }),
                    search.createColumn({ name: "email", label: "Email" }),
                    search.createColumn({ name: "phone", label: "Phone" }),
                    search.createColumn({ name: "altphone", label: "Office Phone" }),
                    search.createColumn({ name: "fax", label: "Fax" }),
                    search.createColumn({ name: "contact", label: "Primary Contact" }),
                ]
            });
            var searchResultCount = customerSearchObj.runPaged().count;
            log.debug("customerSearchObj result count", searchResultCount);
            if (searchResultCount > 0)
                return true;
            else
                return false;
        },
        signUpCustomer: function(context) {
            var customerFirstname = unescape(context.request.parameters.firstname);
            var customerLastname = unescape(context.request.parameters.lastname);
            var customerEmail = unescape(context.request.parameters.email);
            customerEmail = customerEmail.toString().trim();
            var customerPassword = unescape(context.request.parameters.cred);
            var timeStamp = unescape(context.request.parameters.timestamp);
            customerPassword = encodeAndDecodeString(customerPassword, false);
            customerPassword = encryptionModule.processData(timeStamp, customerPassword, 'decrypt');
            customerPassword = customerPassword.toString().trim();
            log.debug('customerPassword', customerPassword)
            if (checkForParameter(customerEmail)) {
                var isCustomerExits = main.runCustomerSearch(customerEmail);
                if (isCustomerExits)
                    return main.sendResponse('info', escape('Customer Already Exists'), false, escape('main.signUpCustomer()'), context);
                else {

                    var objRecord = record.create({
                        type: record.Type.CUSTOMER,
                        isDynamic: true,
                    });
                    objRecord.setValue({
                        fieldId: 'customform',
                        value: '2' //{"value":"2","text":"OS Customer Form"}
                    });
                    objRecord.setValue({
                        fieldId: 'entitystatus',
                        value: '13' //{"value":"13","text":"CUSTOMER-Customer Closed (Won)"}
                    });
                    objRecord.setValue({
                        fieldId: 'isperson',
                        value: 'T'
                    });
                    objRecord.setValue({
                        fieldId: 'firstname',
                        value: customerFirstname
                    });
                    objRecord.setValue({
                        fieldId: 'lastname',
                        value: customerLastname
                    });
                    objRecord.setValue({
                        fieldId: 'email',
                        value: customerEmail
                    });
                    objRecord.setValue({
                        fieldId: 'taxable',
                        value: true
                    });
                    objRecord.setValue({
                        fieldId: 'currency',
                        value: "1" //{"value":"1","text":"USD"}
                    });
                    objRecord.setValue({
                        fieldId: 'terms',
                        value: "" //{"value":"","text":""},
                    });
                    objRecord.setValue({
                        fieldId: 'salesrep',
                        value: "95177" //a House Account
                    });
                    objRecord.setValue({
                        fieldId: 'category',
                        value: "8" //Water Webstore (Aquverse.com)
                    });
                    objRecord.setValue({
                        fieldId: 'custentity6', //Fulfill Cust
                        value: "2" //None 
                    });
                    objRecord.setValue({
                        fieldId: 'custentity_jj_webstore_password',
                        value: customerPassword
                    });
                    var recordId = objRecord.save({
                        enableSourcing: true,
                        ignoreMandatoryFields: true
                    });

                    log.debug('recordId', recordId);
                    return main.sendResponse('success', escape('CUSTOMER IS CREATED'), true, escape('main.signUpCustomer()'), context);
                }
            } else
                return main.sendResponse('info', escape('NO EMAIL-ID IS GIVEN'), false, escape('main.signUpCustomer()'), context);

        },
        onRequest: function(context) {
            CONTEXT = context;
            var isProccessed = main.routeRequest(context);
            log.debug("Is request Proccessed ", isProccessed);
        },
        sendResponse: function(responseString, responseMessage, isPositive, responseLocation, context, moreDetailsObj) {
            if (!checkForParameter(context))
                context = CONTEXT;
            var responseObj = {};
            var responseArray = [];
            var callBackFunction = context.request.parameters.callback;
            if (isPositive) {
                responseObj.responseString = responseString;
                responseObj.responseMessage = responseMessage;
                if (checkForParameter(moreDetailsObj))
                    responseObj.moreDetailsObj = moreDetailsObj
            } else {
                responseObj.responseString = responseString;
                responseObj.responseMessage = responseMessage;
                responseObj.responseLocation = responseLocation;
                if (checkForParameter(moreDetailsObj))
                    responseObj.moreDetailsObj = moreDetailsObj
            }
            responseArray.push(responseObj);
            var responseStrJson = callBackFunction + '(\'' + JSON.stringify(responseArray) + '\');';
            context.response.write(responseStrJson);

            if (isPositive)
                return true;
            else
                return false;
        },
        remainingUsage: function() {
            //var scriptObj = runtime.getCurrentScript();
            var remainingTime = runtime.getCurrentScript().getRemainingUsage();
            return remainingTime;
        },
    };

    for (var key in main) {
        if (typeof main[key] === 'function') {
            main[key] = trycatch(main[key], key);
        }
    }

    function trycatch(myfunction, key) {
        function logDetails(error) {
            log.debug("Error in function " + key, JSON.stringify(error));
            log.debug('Error on function ' + key, JSON.stringify(getError(error)));
            log.error("Error in function " + key, JSON.stringify(error));
            log.error('Error on function ' + key, JSON.stringify(getError(error)));
            return true;
        }
        return function() {
            try {
                return myfunction.apply(this, arguments);
            } catch (error) {
                var islogDetails = logDetails(error);
                var responseObj = {};
                var responseArray = [];
                responseObj.responseString = 'FAILURE';
                responseObj.responseMessage = escape(JSON.stringify(getError(error)));
                responseObj.responseLocation = 'Error in main.' + key + '()';
                responseArray.push(responseObj);
                var context = CONTEXT;
                if (checkForParameter(context.request.parameters.callback)) {
                    var callBackFunction = context.request.parameters.callback;
                    var responseStrJson = callBackFunction + '(\'' + JSON.stringify(responseArray) + '\');';
                    context.response.write(responseStrJson);
                } else {
                    var responseStrJson = JSON.stringify(responseArray);
                    context.response.write(responseStrJson);
                }
                return false;
            }
        }
    };

    return main;

});

function getError(e) {
    var stErrMsg = '';
    if (e.getDetails != undefined) {
        stErrMsg = '_' + e.getCode() + '<br>' + e.getDetails() + '<br>' +
            e.getStackTrace();
    } else {
        stErrMsg = '_' + e.toString();
    }
    return stErrMsg;
}

Leave a comment

Your email address will not be published. Required fields are marked *