const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const admin = require('firebase-admin');
const serviceAccount = require('./chatman-a99e6-firebase-adminsdk-e2t5v-36aaaada49.json');

const indexRouter = require('./routes/index');
const usersRouter = require('./routes/users');

const app = express();

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: 'https://chatman-a99e6.firebaseio.com/'
});

let registrationToken = "dhoxHmhVQzo:APA91bGt3zNCA0OdxZ4PV2HCiWqFRSaPftZr6-rKB53O_ZSnTiBDB_YV8vSbaCjXLYzy_pkhd2VBppm6ohXcePhhPC-h4jXA2IwPADqmauhpN4_6eWEAmiBiPPw2WOjsP3CSIW6i569w";
let message = {
  notification: {
    title: 'Hi :*',
    body: 'Pakabar ?'
  },
  token: registrationToken
}

const db = admin.database();
let message_db = db.ref('message');
let chatrooms_db = db.ref('chatroom');

chatrooms_db.on('child_added', chatroom => {
  console.log('chatroom added');
  chatroom.ref.child('messages').on('child_added', chat => {
  let chatref = message_db.child(chat.val());
  console.log(chat.val());
  chatref.on('value', chatSnap => {
    console.log(chatSnap.val());
    if (chatSnap.val()) {
      let message = {
        notification: {
          title: chatSnap.child('nameSender').val(),
          body: chatSnap.child('message').val()
        },
        token: chatSnap.child('idReceiver').val()
      }
      admin.messaging().send(message)
        .then(response => {
          console.log('Success : ' + response)
        })
        .catch(err => {
          console.log('Error : ' + err)
        });
    }
  });
  console.log('chat added');
  });
});



app.get('/send', function(req, res) {
  admin.messaging().send(message)
  .then(response => {
    console.log('Success : ' + response)
    res.send('success');
  })
  .catch(err => {
    console.log('Error : ' + err)
    res.send('error');
  });
});

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);

app.listen(3000, function() {
  console.log('chatman running at port 3000');
});

module.exports = app;