Roman_Jarckov

Untitled

Oct 23rd, 2020
907
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const db = require('../database');
  2. const time = require('moment');
  3. const utils = require('../../modules/utils');
  4. time.locale('ru');
  5. const Schema = db.Schema;
  6. const BattleSchema = new Schema({
  7.     date: {
  8.         required: false,
  9.         type: String,
  10.         default: time().format('DD.MM.YYYY')
  11.     },
  12.     users: {
  13.         type: Array,
  14.         required: false,
  15.         default: []
  16.     },
  17.     all: {
  18.         type: Number,
  19.         required: false,
  20.         default: 0
  21.     },
  22.     lose: {
  23.         type: Number,
  24.         required: false,
  25.         default: 0
  26.     },
  27.     win: {
  28.         type: Number,
  29.         required: false,
  30.         default: 0
  31.     },
  32.     norm: {
  33.         required: true,
  34.         default: 0,
  35.         type: Number
  36.     }
  37. });
  38. const battles = db.model('battles', BattleSchema);
  39.  
  40. module.exports = class Battles {
  41.     constructor(){}
  42.    
  43.     addBattleDay(battleNorm){
  44.         return new Promise(async (ok, err) => {
  45.             try {
  46.                 let battleDay = await battles.findOne({ date: time().format('DD.MM.YYYY') });
  47.                 if(battleDay){
  48.                     battleDay.norm = battleNorm;
  49.                     await battleDay.save();
  50.                     return ok({
  51.                         newDay: false
  52.                     });
  53.                 } else {
  54.                     await new battles({ norm: battleNorm }).save();
  55.                     return ok({
  56.                         newDay: true
  57.                     });
  58.                 }
  59.             } catch(error){
  60.                 return err(error);
  61.             }
  62.         });
  63.     }
  64.  
  65.  
  66.     startBattle(nick, enemy, start){
  67.         return new Promise(async (ok, err) => {
  68.             try {
  69.                 let day = await battles.findOne({ date: time().format('DD.MM.YYYY') });
  70.                 if(day){
  71.                     let user = utils.findOBJ(day.users, nick, 'nick');
  72.                     if(user){
  73.                         day.users[user.index].battles.push({
  74.                             enemy: enemy,
  75.                             start: start,
  76.                             end: false,
  77.                             result: false
  78.                         });
  79.                         await day.save();
  80.                         return ok({user: day.users[user.index], norm: day.norm});
  81.                     } else {
  82.                         let index = day.users.push({
  83.                             nick: nick,
  84.                             all: 0,
  85.                             win: 0,
  86.                             lose: 0,
  87.                             battles: [{
  88.                                 enemy: enemy,
  89.                                 start: start,
  90.                                 end: false,
  91.                                 result: false
  92.                             }]
  93.                         });
  94.                         await day.save();
  95.                         return ok({user: day.users[index - 1], norm: day.norm});
  96.                     }
  97.                 }
  98.                 return ok(false);
  99.             } catch(error){
  100.                 return err(error);
  101.             }
  102.         });
  103.     }
  104.  
  105.     endBattle(nick, result, end){
  106.         return new Promise(async (ok, err) => {
  107.             try {
  108.                 let day = await battles.findOne({ date: time().format('DD.MM.YYYY') });
  109.                 if(day){
  110.                     let user = utils.findOBJ(day.users, nick, 'nick');
  111.                     if(user){
  112.                         let battleLength = day.users[user.index].battles.length;
  113.                         if(day.users[user.index].battles[battleLength - 1].result == false){
  114.                             day.users[user.index].battles[battleLength - 1].result = result;
  115.                             day.users[user.index].battles[battleLength - 1].end = end;
  116.                             day.users[user.index].all++;
  117.                             day.users[user.index].win += (result == 'Победа') ? 1 : 0;
  118.                             day.users[user.index].lose += (result == 'Победа') ? 0 : 1;
  119.                             console.log(day.users[user.index]);
  120.                             await day.save();
  121.                             return ok({user: day.users[user.index], norm: day.norm});
  122.                         } else {
  123.                             day.users[user.index].battles.push({
  124.                                 enemy: `[$ Бот был запущен позже]`,
  125.                                 start: `[$ Бот был запущен позже]`,
  126.                                 end: end,
  127.                                 result: result
  128.                             });
  129.                             await day.save();
  130.                             return ok({user: day.users[user.index], norm: day.norm});
  131.                         }
  132.                     } else {
  133.                         let index = day.users.push({
  134.                             nick: nick,
  135.                             all: 1,
  136.                             win: (result == 'Победа') ? 1 : 0,
  137.                             lose: (result == 'Победа') ? 0 : 1,
  138.                             battles: [{
  139.                                 enemy: `[$ Бот был запущен позже]`,
  140.                                 start: `[$ Бот был запущен позже]`,
  141.                                 end: end,
  142.                                 result: result
  143.                             }]
  144.                         });
  145.                         await day.save();
  146.                         return ok({user: day.users[index], norm: day.norm});
  147.                     }
  148.                 }
  149.                 return ok(false);
  150.             } catch(error){
  151.                 return err(error);
  152.             }
  153.         });
  154.     }
  155. }
RAW Paste Data