Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const functions = require('firebase-functions');
- const admin = require('firebase-admin');
- admin.initializeApp();
- exports.requestNotification=functions.database.ref('/Users/{userId}/Book_requests/{requestId}')
- .onCreate((snap, context) =>{
- const object=snap.val();
- const recevierId=context.params.userId;
- const requestId=context.params.requestId;
- const requesterId=object['requesterId'];
- const bookId=object['bookId'];
- const requesterRef=admin.database().ref('/Users/'+requesterId).once('value');
- const bookRef=admin.database().ref('/Books/'+bookId).once('value');
- const recieverRef=admin.database().ref('/Users/'+recevierId).once('value');
- return Promise.all([requesterRef,recieverRef,bookRef]).then((result=>{
- const requesterName=result[0].val()['name'];
- const reciverToken=result[1].val()['deviceToken'];
- const bookTitle=result[2].val()['title'];
- const recieverName=result[1].val()['name'];
- const requesterHistory='you have requested to '+recieverName+' for the book '+bookTitle;
- const recieverHistory=requesterName+' requests for the books named '+bookTitle;
- const historyRefRequester=admin.database().ref('/Users/'+requesterId+'/History/').push({
- historyType:"request",
- historyMsg:requesterHistory
- });
- const historyRefReciever=admin.database().ref('/Users/'+recevierId+'/History/').push({
- historyType:"request",
- historyMsg:recieverHistory
- });
- return Promise.all([historyRefRequester,historyRefReciever]).then((result=>{
- const payload={
- notification:{
- title:" Book Request ",
- body:requesterName+" wants one of your book named "+bookTitle
- },
- data:{
- Type:"request"
- }
- }
- return admin.messaging().sendToDevice(reciverToken,payload).catch((error=>{
- console.log('error occured',error);
- }));
- }))
- }))
- });
- exports.acceptNotification=functions.database.ref('/Users/{userId}/Book_requests/{requestId}')
- .onUpdate((change, context) =>{
- const updatedObj=change.after.val();
- const borrowerId=updatedObj['requesterId'];
- const requestId=context.params.requestId
- const lenderId =context.params.userId;
- const bookId=updatedObj['bookId'];
- const bookRef=admin.database().ref('/Books/'+bookId).once('value');
- const borrowerRef=admin.database().ref('/Users/'+borrowerId).once('value');
- const lenderRef=admin.database().ref('/Users/'+lenderId).once('value');
- return Promise.all([borrowerRef,lenderRef,bookRef]).then((result=>{
- const bookTitle=result[2].val()['title'];
- const borrowerName=result[0].val()['name'];
- const lenderName=result[1].val()['name'];
- const borrowerHistoy='your request for the book '+bookTitle+' has been accepted by '+lenderName;
- const lenderHistory='you have accepted '+borrowerName+' requests for the book'+bookTitle;
- const borrowerToken=result[0].val()['deviceToken'];
- const historyRefBorrower=admin.database().ref('/Users/'+borrowerId+'/History/').push({
- historyType:"request accepted",
- historyMsg:borrowerHistoy
- });
- const historyRefLender=admin.database().ref('/Users/'+lenderId+'/History/').push({
- historyType:"request accepted",
- historyMsg:lenderHistory
- });
- const updateBookStatus=admin.database().ref('/Books/'+bookId+'/').update({
- status:'Not Available'
- });
- const originalBook=result[2].val();
- originalBook['borrowerId']=borrowerId;
- const deleteFromUserBookList=admin.database().ref('/Users/'+lenderId+'/Books/Available/'+bookId).remove();
- const requestDelete=admin.database().ref('/Users/'+lenderId+'/Book_requests/'+requestId).remove();
- const borrowedBookListRef=admin.database().ref('/Users/'+borrowerId+'/Books/Borrowed/'+bookId).set(originalBook);
- const lendBookListRef=admin.database().ref('/Users/'+lenderId+'/Books/Lend/'+bookId).set(originalBook);
- return Promise.all([historyRefBorrower,historyRefLender,updateBookStatus,borrowedBookListRef,lendBookListRef,deleteFromUserBookList,requestDelete]).then((result=>{
- const payload={
- notification:{
- title:" Book Request Accepted ",
- body:lenderName+" accepted your request for the book "+bookTitle
- },
- data:{
- Type:"requestAccept"
- }
- }
- return admin.messaging().sendToDevice(borrowerToken,payload).catch((error=>{
- console.log("error occured in"+error);
- }));
- }))
- }));
- });
- exports.returnRequestNotification=functions.database.ref('/Users/{recieverId}/Return_requests/{requestId}')
- .onCreate((snapshot,context)=>{
- const recevierId=context.params.recieverId;
- const requestId=context.params.requestId;
- const object=snapshot.val();
- const requesterName=object['requesterName'];
- const requesterId=object['requesterId'];
- const bookTitle=object['bookTitle'];
- const recieverRef=admin.database().ref('/Users/'+recevierId).once('value');
- return recieverRef.then((result=>{
- const recieverToken=result.val()['deviceToken'];
- const recieverName=result.val()['name'];
- const requesterHistory='you have requested to '+recieverName+' to return the book '+bookTitle;
- const recieverHistory=requesterName+' wants to return the book '+bookTitle;
- const historyRefRequester=admin.database().ref('/Users/'+requesterId+'/History/').push({
- historyType:"return request",
- historyMsg:requesterHistory
- });
- const historyRefReciever=admin.database().ref('/Users/'+recevierId+'/History/').push({
- historyType:"return request",
- historyMsg:recieverHistory
- });
- return Promise.all([historyRefRequester,historyRefReciever]).then((result=>{
- const payload={
- notification:{
- title:" Book Return Request ",
- body:requesterName+" wants to return your book named "+bookTitle
- },
- data:{
- Type:"returnRequest"
- }
- }
- return admin.messaging().sendToDevice(recieverToken,payload).catch((error=>{
- console.log("error occured in"+error);
- }))
- }))
- }))
- })
- exports.acceptReturnRequestNotification=functions.database.ref('/Users/{recieverId}/Return_requests/{requestId}')
- .onUpdate((change,context)=>{
- const object=change.after.val();
- const recieverId=context.params.recieverId;
- const requestId=context.params.requestId;
- const requesterId=object['requesterId'];
- const bookId=object['bookId'];
- const bookTitle=object['bookTitle'];
- const requesterRef=admin.database().ref('/Users/'+requesterId).once('value');
- const recieverRef=admin.database().ref('/Users/'+recieverId).once('value');
- return Promise.all([requesterRef,recieverRef]).then((result=>{
- const requesterName=result[0].val()['name'];
- const requesterToken=result[0].val()['deviceToken'];
- const recieverName=result[1].val()['name'];
- const requesterHistoy='your return request for the book '+bookTitle+' has been accepted by '+recieverName;
- const recieverHistory='you have accepted return requests of '+requesterName+' for the book '+bookTitle;
- const historyRefRequester=admin.database().ref('/Users/'+requesterId+'/History/').push({
- historyType:"return request accepted",
- historyMsg:requesterHistoy
- });
- const historyRefReciever=admin.database().ref('/Users/'+recieverId+'/History/').push({
- historyType:"return request accepted",
- historyMsg:recieverHistory
- });
- const updateBookStatus=admin.database().ref('/Books/'+bookId+'/').update({
- status:'Available'
- });
- return Promise.all([historyRefRequester,historyRefReciever,updateBookStatus])
- .then((result=>{
- const bookRef=admin.database().ref('/Books/'+bookId).once('value');
- return bookRef.then((result=>{
- const bookObj=result.val();
- bookObj['borrowerId']="";
- const deleteFromlendList=admin.database().ref('/Users/'+recieverId+'/Books/Lend/'+bookId).remove();
- const deleteFromBorrowList=admin.database().ref('/Users/'+requesterId+'/Books/Borrowed/'+bookId).remove();
- const insertIntoAvailableList=admin.database().ref('/Users/'+recieverId+'/Books/Available/'+bookId).set(bookObj);
- const deleteRequest=admin.database().ref('/Users/'+recieverId+'/Return_requests/'+requestId).remove();
- return Promise.all([deleteFromlendList,deleteFromBorrowList,insertIntoAvailableList,deleteRequest])
- .then((result=>{
- const payload={
- notification:{
- title:"Return Book Request Accepted ",
- body:recieverName+" accepted your return request for the book "+bookTitle
- },
- data:{
- Type:"returnRequestAccept"
- }
- }
- return admin.messaging().sendToDevice(requesterToken,payload).catch((error=>{
- console.log(error);
- }))
- }))
- }))
- }))
- }))
- })
- exports.scheduledFunctionCrontab = functions.pubsub
- .schedule('50 19 * * *').onRun((context) => {
- console.log('This will be run every day at 19:50 AM UTC!');
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement