/**
 * My API Sandbox
 * 
 */

Sandbox.define('/addMessage','POST', function(req, res){
    if (!req.is('application/json')) {
        return res.send(400, 'Invalid content type, expected application/json');
    }
    
    if (req.body.userId === "undefined" ||
        req.body.avatar === "undefined" ||
        req.body.message === "undefined") {
        return res.send(400, 'usage: userId, avatar, message');
    }
    
    state.messages = state.messages || [];
    
    req.body.id = state.messages.length + 1;
    state.messages.push(req.body);
    
    res.type('application/json');
    res.status(200);
    res.json({
        "status": "ok"
    });
});

Sandbox.define('/getMessages/{userId}/{index}', 'GET', function(req, res){
    var userId = req.params.userId;
    var index = req.params.index;
    
    res.type('application/json');
    res.status(200);
    
    state.messages = state.messages || [];
    
    if (!state.messages.length) {
        return res.json({
            "status": "ok",
            "lastIndex": 0,
            "messages": []
        });
    }
    
    var lastMessage = _.last(state.messages);
    
    var messages = _.filter(state.messages, function(o) {
        return o.id > index;
    });
    
    if (!messages.length) {
        return res.json({
            "status": "ok",
            "lastIndex": lastMessage.id,
            "messages": []
        });
    }
    
    messages = _.map(messages, function (item) {
        if (item.userId == userId) {
            item.me = true;
        } else {
            item.me = false;
        }
        return item;
    });
    
    return res.json({
        "status": "ok",
        "lastIndex": lastMessage.id,
        "messages": messages
    });
});