Edify Hub Invites Code Script

by Joshua Dwire

HTML

<script src="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.1.0/bootstrap.min.js"></script>
<div class="row">
    <div class="col-sm-8 col-sm-offset-2"><h2>Website Invite Script</h2></div>
</div>
<form class="form-horizontal">
    <div class="form-group">
        <label class="col-sm-2 control-label">Website Owners</label>
        <div class="col-sm-8">
            <textarea id="owners" class="form-control" rows="10"></textarea>
            <span id="helpBlock" class="help-block">Run the command <code>db.Websites.distinct("owner")</code>. Copy result as JSON and paste it here.</span>
        </div>
    </div>
    <div class="form-group">
        <label for="inputEmail3" class="col-sm-2 control-label">Action</label>
        <div class="col-sm-8">
            <div class="radio">
                <label>
                    <input type="radio" name="action" value="increment" checked="checked" />Increment</label>
            </div>
            <div class="radio">
                <label>
                    <input type="radio" name="action" value="set" />Set</label>
            </div>
        </div>
    </div>
    <div class="form-group">
        <label class="col-sm-2 control-label">Amount</label>
        <div class="col-sm-2">
            <input type="number" id="amount" class="form-control" value="5"/>
        </div>
    </div>
     <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
    <button id="create_query" class="btn btn-primary">Create query</button>
         </div></div>
    <div class="form-group">
        <label class="col-sm-2 control-label">Query</label>
        <div class="col-sm-8">
            <textarea id="query" class="form-control" rows="5" disabled="disabled"></textarea>
        </div>
    </div>
</form>

CSS

@import url('https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css');
 @import url('https://netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.min.css');
 .container {
    margin-top: 10px;
}

JavaScript

$('#create_query').click(function (e) {
    e.preventDefault();
    var action = $('input[name="action"]:checked').val(),
        amount = parseInt($('#amount').val(), 10),
        websiteOwners = null;
        
    try{
        websiteOwners = JSON.parse($('#owners').val());
    }
    catch(ex){}
    
    if(!websiteOwners){
        alert('No owners');
        return;
    }
    
    if(!amount){
        alert('Invalid amount');
        return;
    }
    
    websiteOwners = $.map(websiteOwners, function(val, key) { return val; });
    
    var query = 'db.Users.update({"_id":{"$in":'+JSON.stringify(websiteOwners)+'}}, {'+(action=='set'?'$set':'$inc')+':{"wpSiteInvitesMax":'+amount+'}}, {"multi":true})';
    
    $('#query').val(query);
});