var express = require('express')
var router = express.Router()

let Notes = require('@models/Note');
let ShareNote = require('@models/ShareNote');

let userId = null
let socket = null

// middleware that is specific to this router
router.use(function setUserId (req, res, next) {
	if(req.headers.userId){
		userId = req.headers.userId
	}
	if(req.headers.socket){
		// socket = req.
	}
	
	next()
})

//
// Note actions
//
router.post('/get', function (req, res) {
	req.io.emit('welcome_homie', 'Welcome, dont poop from excitement')
	Notes.get(userId, req.body.noteId)
	.then( data => {
		//Join room when user opens note
		// req.io.join('note_room')
		res.send(data)
	})
})

router.post('/delete', function (req, res) {
	Notes.delete(userId, req.body.noteId)
	.then( data => res.send(data) )
})

router.post('/create', function (req, res) {
	Notes.create(userId, req.body.title)
	.then( id => res.send({id}) )
})

router.post('/update', function (req, res) {
	Notes.update(userId, req.body.noteId, req.body.text, req.body.color, req.body.pinned, req.body.archived)
	.then( id => res.send({id}) )
})

router.post('/search', function (req, res) {
	Notes.search(userId, req.body.searchQuery, req.body.searchTags, req.body.fastFilters)
	.then( notesAndTags => {
		res.send(notesAndTags)
	})
})

router.post('/difftext', function (req, res) {
	Notes.getDiffText(userId, req.body.noteId, req.body.text, req.body.updated)
	.then( fullDiffText => {
		//Response should be full diff text
		res.send(fullDiffText)
	})
})

//
// Share Note Actions
//
router.post('/getshareusers', function (req, res) {
	ShareNote.getUsers(userId, req.body.rawTextId)
	.then(results => res.send(results))
})

router.post('/shareadduser', function (req, res) {
	ShareNote.addUser(userId, req.body.noteId, req.body.rawTextId, req.body.username)
	.then(results => res.send(results))
})

router.post('/shareremoveuser', function (req, res) {
	ShareNote.removeUser(userId, req.body.noteId)
	.then(results => res.send(results))
})


//
// Testing Action
//
//Reindex all notes. Not a very good function, not public
router.get('/reindex5yu43prchuj903mrc', function (req, res) {

	Notes.migrateNoteTextToNewTable().then(status => {
		return res.send(status)
	})

})



module.exports = router