Untitled

 avatar
unknown
plain_text
4 years ago
20 kB
3
Indexable
const express = require('express');
const bodyParser = require('body-parser');
const pdfP =require('pdf2json');
const app  =express();
const crypto= require('crypto');
const multer=require('multer');
const {GridFsStorage} = require('multer-gridfs-storage');
const Grid = require('gridfs-stream');
const methodOverride = require('method-override');
const getStream =require('get-stream')
const mysql = require('mysql2');
app.use(express.json());
app.use(express.urlencoded({ extended: true }))
app.use(bodyParser.json());
app.use(bodyParser.raw())
app.use(bodyParser.urlencoded({ extended: true }));
app.use(methodOverride('_method'));
app.use(express.static("./files"))
const path =require('path');
const pdfParse= require("pdf-parse");
const user =require("./models/user");
const pdfjs=require("pdfjs-dist/legacy/build/pdf")

async  function getContent(src, pg) {
  const doc = await pdfjs.getDocument(src).promise
  const page = await doc.getPage(pg)
  return  page.getTextContent()
}
async function getItems(src) {
  const content1 = await getContent(src, 1)
  const items1 = content1.items
  const content2 =await getContent(src, 2)
  const items2 = content2.items
  const content3 = await getContent(src, 3)
  const items3 = content3.items
  const content4 = await getContent(src, 4)
  const items4 = content4.items
  const content5 = await getContent(src, 5)
  const items5 = content5.items
  const content6 =  await getContent(src, 6)
  const items6 = content6.items
  const content7 = await getContent(src, 7)
  const items7 = content7.items
  const content8 =  await getContent(src, 8)
  const items8 = content8.items
  const content9 = await getContent(src, 9)
  const items9 = content9.items
  var page1 = []
  var page2 = []
  var page3 = []
  var page4 = []
  var page5 = []
  var page6 = []
  var page7 = []
  var page8 = []
  var page9 = []

  for (let i = 0; i < items1.length; i++) {
    if (isThereAnyText(items1[i])) {
      page1.push(items1[i].str)
    }
  }
  for (let i = 0; i < items2.length; i++) {
    if (isThereAnyText(items2[i])) {
      page2.push(items2[i].str)
    }
  }
  for (let i = 0; i < items3.length; i++) {
    if (isThereAnyText(items3[i])) {
      page3.push(items3[i].str)
    }
  }
  for (let i = 0; i < items4.length; i++) {
    if (isThereAnyText(items4[i])) {
      page4.push(items4[i].str)
    }
  }
  for (let i = 0; i < items5.length; i++) {
    if (isThereAnyText(items5[i])) {
      page5.push(items5[i].str)
    }
  }
  for (let i = 0; i < items6.length; i++) {
    if (isThereAnyText(items6[i])) {
      page6.push(items6[i].str)
    }
  }
  for (let i = 0; i < items7.length; i++) {
    if (isThereAnyText(items7[i])) {
      page7.push(items7[i].str)
    }
  }
  for (let i = 0; i < items8.length; i++) {
    if (isThereAnyText(items8[i])) {
      page8.push(items8[i].str)
    }
  }
  for (let i = 0; i < items9.length; i++) {
    if (isThereAnyText(items9[i])) {
      page9.push(items9[i].str)
    }
  }
  let pages = []
  pages.push(page1)
  pages.push(page2)
  pages.push(page3)
  pages.push(page4)
  pages.push(page5)
  pages.push(page6)
  pages.push(page7)
  pages.push(page8)
  pages.push(page9)
  return pages
}
let selam = 'aaa1'
let regex1 = new RegExp(/\d/)
console.log(regex1.test(selam)); // true
console.log("afasfsda")
function isThereAnyText(item) {
  let regex = new RegExp(/[a-z]/i)
  let regex1 = new RegExp(/\d/)
  if (regex.test(item.str) || regex1.test(item.str)) {
    return true
  }
  return false
}

function getAllInfo(pages) {
  let className = getClassName(pages[0])
  let term = getTerm(pages[1])
  let authorInfo = getAuthorInfo(pages[2])
  let projectSummary = getProjectSummary(pages[8])
  let projectTitle = getProjectTitle(pages[0])
  let consultantInfo = getConsultantInfo(pages[1])
  let juryInfo = getJuryInfo(pages[1])
  let keywords = getKeywords(pages[8])

  let allInfo = []
  allInfo[0] = className
  allInfo[1] = term
  allInfo[2] = authorInfo
  allInfo[3] = projectSummary
  allInfo[4] = projectTitle
  allInfo[5] = consultantInfo
  allInfo[6] = juryInfo
  allInfo[7] = keywords
  return  allInfo
}

function getClassName(page1) {
  console.log(page1[3])
  return page1[3]
}
 function getTerm(page2) {
  let x = page2[page2.length - 1]
  let fallOrSpring = ''
  if (x.substring(3, 5) == '01') {
    fallOrSpring = 'Güz'
  }
  else
    fallOrSpring = 'Bahar'
  let year1 = 0
  year1 = parseInt(x.substring(6, 10)) - 1
  let year2 = String(year1)
  console.log(fallOrSpring + " " + year2 + "-" + x.substring(6, 10))
  let term = fallOrSpring + " " + year2 + "-" + x.substring(6, 10)
  return term
}
function getAuthorInfo(page3) {
  console.log(page3[page3.length - 3])
  console.log(page3[page3.length - 2].substring(13, page3[page3.length - 2].length))
  console.log(page3[page3.length - 3].substring(5, 6))
  let educationType = ''
  if (page3[page3.length - 3].substring(5, 6) == '1') {
    educationType = 'Birinci Öğretim'
  }
  else
    educationType = 'İkinci Öğretim'
  let authorInfo = page3[page3.length - 2].substring(13, page3[page3.length - 2].length) + ' ' + page3[page3.length - 3] + ' ' + educationType
  console.log(authorInfo)
  return authorInfo
}
 function getProjectSummary(page9) {
  console.log(page9)
  let i = 0
  while (page9[i] != 'ÖZET') {
    i++
  }
  console.log(i)
  let summary = ''
  let summary1 = []
  i = i + 1
  while (page9[i] != 'Anahtar ') {
    summary1.push(page9[i])
    i++
  }
  summary = summary1.join(' ')
  console.log(summary)
  return summary
}
function getProjectTitle(page1) {
  console.log(page1[4])
  return page1[4]
}

function getConsultantInfo(page2) {
  console.log(page2[6])
  return page2[6]
}
 function getJuryInfo(page2) {
  console.log(page2[10])
  console.log(page2[15])
  let x = []
  x[0] = page2[10]
  x[1] = page2[15]
  return x
}
function getKeywords(page9) {
  let i = 0
  while (page9[i] != 'Kelimeler: ') {
    i++
  }
  i++
  let keywords = ''
  for (i; i < page9.length; i++) {
    keywords += page9[i]
  }
  console.log(keywords)
  let keywords1 = []
  keywords1 = keywords.split(', ')
  keywords1[keywords1.length - 1] = keywords1[keywords1.length - 1].slice(0, -1)
  console.log(keywords1[keywords1.length - 1])
  console.log(keywords1)
  return keywords1
}
let re;
let ty,ty1,sr,sr1,ty2,sr2;
  var connection = mysql.createConnection({
    connectionLimit:10,
    host: 'localhost',
    user: 'root',
    password: '3005',
    database: 'lib'
  });
  connection.connect(function(error){
    if(error){
      console.log("err")
    }
else{
  console.log('connected')
}  })

app.listen(3000)
var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, 'models/files');
  },
  filename: function (req, file, cb) {
    var id = file.originalname ;
    cb(null, id);
  }
});
var upload = multer({ storage: storage })



    app.get('/',(req,res)=>{
        res.sendFile(path.join(__dirname,'index.html'));
    });


    app.get('/changepassword',(req,res)=>{
        res.sendFile(path.join(__dirname,'pass.html'));
    });
    app.get('/user',(req,res)=>{
     
      res.sendFile(path.join(__dirname,'user.html'));
  });
  app.get('/admin',(req,res)=>{
    res.sendFile(path.join(__dirname,'admin.html'));
});

app.get('/register',(req,res)=>{
  res.sendFile(path.join(__dirname,'register.html'));
});
app.get('/profiles',(req,res)=>{
  res.sendFile(path.join(__dirname,'profiles.html'));
});


app.post("/user", upload.single('file'), async (req, res, next) => {
  ty = req.body.ty,
ty1=req.body.ty1,
ty2=req.body.ty2,
sr=req.body.nr,
sr1=req.body.nr1,
sr2=req.body.nr2;
console.log(sr)
console.log(ty)    
const file = req.file;

const allInfo = await getItems(file.destination+"/"+file.filename).then(pages => getAllInfo(pages)).catch(err=>console.log(err))

const a= await allInfo[7].length


var sql = "INSERT INTO `files`( `file_name`,`author`,`subject`,`summary`,`year`,`project_name`,`keywords`,`mentor`,`jury`,`user_name`) VALUES (?,?,?,?,?,?,?,?,?,?)";
connection.query(sql, [req.file.originalname,await allInfo[2],await allInfo[0],await allInfo[3],await allInfo[1],await allInfo[4],await allInfo[7][0]+","+await allInfo[7][1]+","+await allInfo[7][2]+","+await allInfo[7][3],await allInfo[5] ,await allInfo[6][0]+", " +await allInfo[6][1],re], function (err, result) {
  if (err) {
    console.log("error")
  }
})
 res.redirect('/user')
});
app.post("/admin",  (req, res, next)=>{
  ty = req.body.ty;
ty1=req.body.ty1;
ty2=req.body.ty2;
sr=req.body.nr;
sr1=req.body.nr1;
sr2=req.body.nr2;
console.log(sr)
console.log(ty)     

})
app.get("/search",(req, res, next) =>{ 
  console.log(ty)  
  console.log(sr) 
  console.log(ty)  
  console.log(sr) 
  console.log(ty)  
  console.log(sr) 
  let ac,t
var a="Author"
var b="ProjectName"
var c="Subject"
var d="Keywords"
var e="Program Year"
var f="User"
    var sql = "SELECT  * FROM `files`  ";
     connection.query(sql, (err, rows) =>  {
      if(err){
        console.log("error1")
      }
       else{    
          if(sr== a){
        for(let i=0;i<rows.length;i++){
          if(rows[i].author==ty ){
            ac= JSON.stringify(rows[i])
          } t=JSON.parse(ac) 
       console.log(t)
         res.json(t)  
      }}
    else  if(sr== b){
        for(let i=0;i<rows.length;i++){
          if(rows[i].project_name==ty ){
            ac= JSON.stringify(rows[i])
          } t=JSON.parse(ac) 
       console.log(t)
         res.json(t)  
      }}
      else  if(sr== c){
        for(let i=0;i<rows.length;i++){
          if(rows[i].subject==ty ){
            ac= JSON.stringify(rows[i])
           t=JSON.parse(ac) 
       console.log(t)
         res.json(t)  
        }  }}
      else  if(sr== d){
        for(let i=0;i<rows.length;i++){
          if(rows[i].keywords==ty ){
            ac= JSON.stringify(rows[i])
          } t=JSON.parse(ac) 
       console.log(t)
         res.json(t)  
      }}
      else  if(sr== e ){
        for(let i=0;i<rows.length;i++){
          if(rows[i].year==ty ){
            ac= JSON.stringify(rows[i])
          } t=JSON.parse(ac) 
       console.log(t)
         res.json(t)  
      }}
      else  if(sr2==c){
        for(let i=0;i<rows.length;i++){
          if(rows[i].user_name==ty && rows[i].year==ty1 && rows[i].subject==ty2){
            ac= JSON.stringify(rows[i])
          } t=JSON.parse(ac) 
       console.log(t)
         res.json(t)  
      }} 
     
    }                                                  
      })});


   app.post("/submit", (req, res, next) => {

    if(req.body.password==" "&& req.body.name==" "){
        return res.status(500).json({
           message:"Make sure there isn't any empty field"
          });
    }
   else if(req.body.password==""|| req.body.name==""){
        return res.status(500).json({
           message:"Make sure there isn't any empty field"
          });
    }
  else{ connection.query('SELECT * FROM `user`' , (err, rows) => {
        if (err) {
      console.log("Error")
      
        }
        else{
          console.log("success")
          for(let i=0;i<rows.length;i++){
            if(rows[i].username==req.body.name && rows[i].password==req.body.password && rows[i].type==req.body.type){
            if (req.body.type=='admin'  ) {
              res.redirect('/admin')}
              else if (req.body.type=='user'  ) {
                re=req.body.name
               res.redirect('/user')
            
            }}
            else {
                
                 res.sendFile(path.join(__dirname,'msg.html'))
                   }} }
                      
                    }) } 
                    })
                    
 app.post("/changepassword", (req, res) => {

               if(req.body.oldP==""|| req.body.username==""|| req.body.email==""||req.body.newP==""){
                       return res.status(500).json({
                          message:"Make sure there isn't any empty field"
                         });
                   }
                   else{
                  connection.query('SELECT * FROM `user`' , (err, rows) => {
                    
                        for(let i=0;i<rows.length;i++){
                          if(rows[i].username==req.body.username && rows[i].email==req.body.email && rows[i].password==req.body.oldP && rows[i].type==req.body.type){
                        
                   const query='UPDATE `user` SET  `password`=? where `username`=?'
                   connection.query(query,[req.body.newP,rows[i].username], (err, rows) => {
                          if(err){
                            console.log("error")}
                            else{
                              console.log("success")
                           } })
                                return res.status(500).json({
                                  message:"Password changed successfully!",})} 
                            else{
                                  return res.json({
                                    message:"Information entered is not correct!",}) 
                                 }
                      
                      }})}})
   app.post("/register", (req, res) => {

    if(req.body.password==""|| req.body.username==""|| req.body.email==""){
             return res.status(500).json({
              message:"Make sure there isn't any empty field"
                   });
                            }
     else{
          connection.query('SELECT * FROM `user`' , (err, rows) => {
                             
      for(let i=0;i<rows.length;i++){
      if(rows[i].email==req.body.email ){
        return res.json({
          message:"This email is registered!",}) 
           }
      else if( rows[i].username == req.body.username ){
            return res.json({
              message:"This username is not available!",}) 
               }
      else{
        query='INSERT INTO `user`( `email`, `username`, `type`, `password`) VALUES (?,?,?,?)'
                             
         connection.query(query,[req.body.email,req.body.username,req.body.type,req.body.password], (err, rows) => {
                if(err){
                      console.log("error")}
                else{
                 console.log("success")
                                    } })
                   return res.status(500).json({
                     message:"Account Registered Successfully!",})} 
             
       }})}})
   app.get('/files1',(req,res,next)=>{ 
        var sql= 'SELECT * FROM `files`where `user_name`=? ' ;                   
        connection.query(sql,['user1'] ,(err, rows) => {
            if (err) {
          console.log("Error")
         } else  {
          for(let i=0;i<rows.length;i++){
           
              ac= JSON.stringify(rows)
            } t=JSON.parse(ac) 
         console.log(t)
           res.json(t)  
          }})});
    app.get('/files',(req,res,next)=>{ 
            var sql= 'SELECT * FROM `files` ' ;                   
            connection.query(sql,(err, rows) => {
                if (err) {
              console.log("Error")
             } else  {
              for(let i=0;i<rows.length;i++){
               
                  ac= JSON.stringify(rows)
                } t=JSON.parse(ac) 
             console.log(t)
               res.json(t)  
              }})});


  app.get('/file',(req,res,next)=>{
    console.log(ty)  
    console.log(sr) 
    let ac,t
    var a="Author"
    var b="ProjectName"
    var c="Subject"
    var d="Keywords"
    var e="Program Year"
    var f="User"
                          var sql= 'SELECT * FROM `files`where `user_name`=? ' ;                   
                         connection.query(sql,['user1'] ,(err, rows) => {
                             if (err) {
                           console.log("Error")
                           
                             }
                             else{
                              if(sr== a){
                                for(let i=0;i<rows.length;i++){
                                  if(rows[i].author==ty ){
                                    JSON.stringify(rows[i])
                                  } t=JSON.parse(ac) 
                               console.log(t)
                                 res.json(t)  
                              }}
                            else  if(sr== b){
                                for(let i=0;i<rows.length;i++){
                                  if(rows[i].project_name==ty ){
                                    ac.push(JSON.stringify(rows[i]))
                                  } t=JSON.parse(ac) 
                               console.log(t)
                                 res.json(t)  
                              }}
                              else  if(sr== c){
                                for(let i=0;i<rows.length;i++){
                                  if(rows[i].subject==ty ){
                                   JSON.stringify(rows[i])
                                  } t=JSON.parse(ac) 
                                  console.log(sr)
                                  console.log(sr)
                                  console.log(sr)
                                 res.json(t)  
                                 console.log(sr)
                              }}
                              else  if(sr== d){
                                for(let i=0;i<rows.length;i++){
                                  if(rows[i].keywords==ty ){
                                    ac.push(JSON.stringify(rows[i]))
                                  } t=JSON.parse(ac) 
                               console.log(t)
                                 res.json(t)  
                              }}
                              else  if(sr== e && sr1==""){
                                for(let i=0;i<rows.length;i++){
                                  if(rows[i].year==ty ){
                                    ac.push(JSON.stringify(rows[i]))
                                  } t=JSON.parse(ac) 
                               console.log(t)
                                 res.json(t)  
                              }}
                              else  if(sr== e && sr1==c ){
                                for(let i=0;i<rows.length;i++){
                                  if(rows[i].year==ty && rows[i].subject==ty1){
                                    ac.push(JSON.stringify(rows[i]))
                                  } t=JSON.parse(ac) 
                               console.log(t)
                                 res.json(t)  
                              }}
                             }
  })  })
               
    
   app.get("/profile", (req, res, next) => { 
    var sql = "SELECT  * FROM `user`  ";
    connection.query(sql, (err, rows) =>  {
     if(err){
       console.log("error1")
     }
     else  {
     
       
          ac= JSON.stringify(rows)
         t=JSON.parse(ac) 
     console.log(t)
       res.json(t)  
      }} )})             
    
Editor is loading...