Untitled

 avatar
unknown
javascript
3 years ago
9.2 kB
2
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 mongoose = require('mongoose')
const fs = require('fs')
const getStream = require('get-stream')
const mysql = require('mysql2');
app.use(bodyParser.json());
app.use(bodyParser.raw())
app.use(bodyParser.urlencoded({ extended: true }));
app.use(methodOverride('_method'));
const path = require('path');
//const db= require("./db");
//const fs= require('fs');
const pdfParse = require("pdf-parse");
const user = require("./models/user");
const uri = 'mongodb+srv://user:dbUser@cluster0.um1b0.mongodb.net/lib?retryWrites=true&w=majority'
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 await 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
}
getItems('Ornektez1.pdf').then(pages => getAllInfo(pages))
function getAllInfo(pages) {
  getClassName(pages[0])
  getTerm(pages[1])
  getAuthorInfo(pages[2])
  getProjectSummary(pages[8])
  getProjectTitle(pages[0])
  getConsultantInfo(pages[1])
  getJuryInfo(pages[1])
  getKeywords(pages[8])
}
function getClassName(page1) {
  console.log(page1[3])
  return page1[3]
}
async 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
}
async 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
}
async 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
}
async function getProjectTitle(page1) {
  console.log(page1[4])
  return page1[4]
}

async function getConsultantInfo(page2) {
  console.log(page2[6])
}
async function getJuryInfo(page2) {
  console.log(page2[10])
  console.log(page2[15])
}
async 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
}
mongoose.connect(uri, {
  useNewUrlParser: true,
  useUnifiedTopology: true,



}).then(() => console.log('db is connected')).catch((err) => console.error('Error'));
const a = mongoose.connection;


/*   var connection = mysql.createPool({
    connectionLimit:10,
    host: 'localhost',
    user: 'root',
    password: '3005',
    database: 'emlak_takip'
  });
  connection.getConnection((err,connection)=>{
    if(err) throw err;
    console.log("connection established")
  }); */

const upload = multer({ dest: "models/files" });





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


app.get('/register', (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.post("/user", upload.single('file'), (req, res, next) => {

  pdfParse(req.file.path).then(function (data) {
    console.log(data.numpages)

  })
    .catch(function (error) {
      console.log(err);
    })
  getItems(req.file.path)
});



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 {
    user.find({ type: req.body.type, name: req.body.name, pass: req.body.password }).exec()
      .then(user => {
        if (user.length > 0 && req.body.type == 'admin') {
          res.redirect('/admin')

        }
        else if (user.length > 0 && req.body.type == 'user') {

          res.redirect('/user')

        }
        else {

          res.sendFile(path.join(__dirname, 'msg.html'))
        }
      })
      .catch(err => {
        console.log(err);
        res.status(500).json({
          error: err
        });
      });
  }
});

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

  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 {
    user.findOneAndUpdate({ type: req.body.type, email: req.body.email, name: req.body.username, pass: req.body.oldP }, { pass: req.body.newP }).exec()
      .then(doc => {
        if (!doc) {
          return res.status(500).json({
            message: "The information entered is not correct!",
          });
        }
        return res.status(500).json({
          message: "Password changed successfully!",
        });
      }).catch(err => {
        console.log(err);
        res.status(500).json({
          error: err
        });
      });
  }
});

app.listen(3000)