#
# Todos Routes
#
module.exports = (app) ->
  {TodoModel} = require '../../models'

  app.namespace '/v1', ->
    app.get '/todos', (req, res) ->
      TodoModel.find (err, todos) ->
        unless err
          res.json todos: todos
        else
          console.log err

    app.post '/todos', (req, res) ->
      todo = new TodoModel
        title: req.body.todo.title
        isCompleted: req.body.todo.isCompleted

      todo.save (err) ->
        if err
          console.log err
        res.json todo: todo

    app.get '/todos/:id', (req, res) ->
      TodoModel.findById req.params.id, (err, todo) ->
        unless err
          res.json todo: todo
        else
          console.log err

    app.put '/todos/:id', (req, res) ->
      TodoModel.findById req.params.id, (err, todo) ->
        todo.title = req.body.todo.title
        todo.isCompleted = req.body.todo.isCompleted
        todo.save (err) ->
          if err
            console.log err
          res.json todo: todo

    app.delete '/todos/:id', (req, res) ->
      TodoModel.findById req.params.id, (err, todo) ->
        todo.remove (err) ->
          if err
            console.log err

    app.put '/todos', (req, res) ->
      if Array.isArray req.body.todos
        len = req.body.todos.length

      i = 0
      while i < len
        for id of req.body.todos[i]
          TodoModel.update
            _id: id
          , req.body.todos[i][id], (err, numAffected) ->
            if err
              console.log err
          i++
          res.json todos: req.body.todos

    app.delete '/todos', (req, res) ->
      TodoModel.remove (err) ->
        if err
          console.log err