template.js 8.8 KB
const db = require('./db');

let greetingText = "안녕하세요! 컴공/소융 강의평가 봇이에요. 아래에 버튼 3개를 눌러주세요.";  // 인사말
let greetingTitle = ["교수명으로 검색", "강의명으로 검색", "HELP"];


exports.greetingTemplate = () => {
  return {
    "attachment":{
      "type":"template",
      "payload":{
        "template_type":"button",
        "text": greetingText,
        "buttons":[
          {
            "type":"postback",
            "title":greetingTitle[0],
            "payload":"CHOICE_BY_PROFstat_0"
          },
          {
            "type":"postback",
            "title":greetingTitle[1],
            "payload":"CHOICE_BY_LECTstat_0"
          },
          {
            "type":"postback",
            "title":greetingTitle[2],
            "payload":"CHOICE_BY_HELPstat_0"
          }
        ]
      }
    }
  }
}

//stat_0
exports.getProfNameTemplate = (received) => {
  return {
    "attachment":{
      "type":"template",
      "payload":{
        "template_type":"button",
	"text": "교수명을 입력하세요.",
	"buttons":[
          {
	    "type":"postback",
	    "title":"처음으로",
	    "payload":'Greeting'
	  }
	]
      }
    }
  }
}

exports.getLectNameTemplate = (received) => {
    return {
    "attachment":{
      "type":"template",
      "payload":{
        "template_type":"button",
  "text": "강의명을 입력하세요.",
  "buttons":[
          {
      "type":"postback",
      "title":"처음으로",
      "payload":'Greeting'
    }
  ]
      }
    }
  }
}

//stat_1
exports.choiceLectProfTemplate = (received) => {
  let message = received.text;
  db.query('SELECT * FROM reviews WHERE lecturename LIKE ? OR proname LIKE ?', [message,message], function(error,results){
    if (err){
        console.log(err);
        res.render('error');
    }
    if(results==0){
      return {text: "검색 결과가 없습니다. 검색어를 다시 입력해주세요."}
    }else if(results.length<=2){
      return LectProfList(results,0,results.length,false,'0',message);
    }else if(results.length>2){
      return LectProfList(results,0,2,true,'1',message);
    }
  });
}

const LectProfList = (results,start,length,ismore,morecount,message) => {
  if(length==1){
    return {
    "attachment":{
      "type":"template",
      "payload":{
        "template_type":"button",
  "text": "검색 결과입니다. 평가를 조회할 강의를 선택하세요.",
  "buttons":[
          {
            "type":"postback",
            "title":results[start].lecturename+results[start].proname,
            "payload":'CHOICE_BY_PROFstat_3'+results[start].idreviews
          }
            ]
          }
        }
      }
  }else if((length == 2)&&(!ismore)){
    return {
    "attachment":{
      "type":"template",
      "payload":{
        "template_type":"button",
  "text": "검색 결과입니다. 평가를 조회할 강의를 선택하세요.",
  "buttons":[
          {
            "type":"postback",
            "title":results[start].lecturename+results[start].proname,
            "payload":'CHOICE_BY_PROFstat_3'+results[start].idreviews
          },
          {
            "type":"postback",
            "title":results[start+1].lecturename+results[start+1].proname,
            "payload":'CHOICE_BY_PROFstat_3'+results[start+1].idreviews
          }
            ]
          }
        }
      }
    }else if((length == 2)&&(ismore)){
        return {
    "attachment":{
      "type":"template",
      "payload":{
        "template_type":"button",
  "text": "검색 결과입니다. 평가를 조회할 강의를 선택하세요. 원하는 강의가 없다면 [더보기]를 눌러주세요.",
  "buttons":[
          {
            "type":"postback",
            "title":results[start].lecturename+results[start].proname,
            "payload":'CHOICE_BY_PROFstat_3'+results[start].idreviews
          },
          {
            "type":"postback",
            "title":results[start+1].lecturename+results[start+1].proname,
            "payload":'CHOICE_BY_PROFstat_3'+results[start+1].idreviews
          },
          {
            "type":"postback",
            "title":"더보기",
            "payload":'CHOICE_BY_PROFstat_2'+message+'/'+morecount
          }
            ]
          }
        }
      }
  }
    
}

//stat_2
exports.moreProfTemplate = (received) => {
  let ms=received.payload.substr(20).split('/');
  let more=1*(ms[0]); //to Number
  let message=ms[1];

  db.query('SELECT * FROM reviews WHERE lecturename LIKE ? OR proname LIKE ?', [message,message], function(error,results){
    if (err){
        console.log(err);
        res.render('error');
    }
    if((results.length-2*(more+1))<=0){
      return LectProfList(results,2*more,results.length-2*n,false,'0',message);
    }else{
      return LectProfList(results,2*more,2,true,""+(more+1),message);
    }
  });
}

exports.moreLectTemplate= (received) => {
let ms=received.payload.substr(20).split('/');
  let more=1*(ms[0]);
  let message=ms[1];

  db.query('SELECT * FROM reviews WHERE lecturename LIKE ? OR proname LIKE ?', [message,message], function(error,results){
    if (err){
        console.log(err);
        res.render('error');
    }
    if((results.length-2*(more+1))<=0){
      return LectProfList(results,2*more,results.length-2*n,false,'0',message);
    }else{
      return LectProfList(results,2*more,2,true,""+(more+1),message);
    }
  });
}

//stat_3
exports.rateTemplate= (received) => {
  let id = received.payload.substr(20);

db.query('SELECT * FROM reviews WHERE idreviews LIKE ?', [id], function(error,results){
    if (err){
        console.log(err);
        res.render('error');
    }

    let proname=results[0].proname;
    let lecname=results[0].lecname;
    let reviews=results[0].review.split(',');
    let review=reviews[0];
    let rate=results[0].avg_rate;
    let botsay=[];
    let randNum=0;
    if(rate != 0){
      Math.floor((Math.random() * (3-0+1))+0);
    }

    if(rate==0){
      botsay=["신설 강좌거나 아직 강의평이 없어요!"];
    }else if((rate>1)&&(rate<2.5)){
      botsay=["음.. 말을 아낄게요.", "다시 생각해보시는게..","이전 단계로 돌아갈까요?","으응?"];
    }else if((rate>=2.5)&&(rate<4.0)){
      botsay=["무난무난","그럭저럭한 것 같아요.","안 들어서 나쁠거 없어요.","평범한 수업이네요"];
    }else{
      botsay=["무조건 들어요!","갓갓 교수님의 갓갓 수업","안 들으면 후회해요ㅠㅠ", "수강신청 1순위!"];
    }

    return {
    "attachment":{
      "type":"template",
      "payload":{
        "template_type":"button",
  "text": proname+" 교수님의 강의 ["+lecname+"]의 강의평입니다.\n  **평균 평점: "+rate+"\n  **봇의 한줄평: "+botsay[randNum]+"\n  **학우의 한줄평: "+reivew,
  "buttons":[
          {
      "type":"postback",
      "title":"자세한 강의평 보기",
      "payload":'MoreRate'+id
    }
  ]
      }
    }
  }
    
  });
}

exports.moreRateTemplate = (received) => {
  let id = received.payload.substr(8);
  let total_review="";
  
  db.query('SELECT * FROM reviews WHERE idreviews LIKE ?', [id], function(error,results){
    if (err){
        console.log(err);
        res.render('error');
    }
    
    let reviews=results[0].review.split(',');
    for(var review in reviews){
        total_review+=review+"\n";
    }

    return {text:total_review}
  });
  //payload:MoreRate(강의식별번호)
  //포스트백 핸들 moreRateTemplate에서 해당 강의의 자세한 평 출력
}

//payload === 'HELP'
exports.howToTemplate= (received) => {
return {
    "attachment":{
      "type":"template",
      "payload":{
        "template_type":"button",
  "text": "안녕하세요. 경희대학교 컴공/소융 강의평가봇입니다. \n 자세한 사용방법은 아래를 참고하세요. \n\n 1. [교수명으로 검색], [강의명으로 검색] 중 하나를 선택한다. \n 2. 찾고자하는 강의의 교수명/강의명을 입력한다. \n 3. 입력하신 정보에 일치하는 강의/교수 목록 버튼 중 하나를 선택한다. \n 4. 강의/교수 버튼을 선택하면 해당 강의의 강의평가가 제공된다. \n 4-1. 더보기 버튼을 선택하면 해당 조건의 강의를 더 볼 수 있다. \n 5. [자세한 평보기] 버튼을 눌러 학우들의 생생한 강의평가를 자세히 본다. \n\n *언제든지 \"처음으로\"를 입력하면 첫 화면으로 돌아갑니다. \n 그럼 아래 버튼을 눌러 강의평가를 조회해보세요.",
  "buttons":[
          {
      "type":"postback",
      "title":"처음으로",
      "payload":'Greeting'
    }
  ]
      }
    }
  }
}

exports.goToGreetTemplate = (received) => {
return {
    "attachment":{
      "type":"template",
      "payload":{
        "template_type":"button",
  "text": "",
  "buttons":[
          {
      "type":"postback",
      "title":"처음으로",
      "payload":'Greeting'
    }
  ]
      }
    }
  }
}