123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- 'use strict';
- const async = require('async');
- const db = require('../db');
- const hooks = require('./hooks');
- module.exports = {
- index: hooks.adminRequired((session, cb) => {
- db.models.report.find({ resolved: false }).sort({ released: 'desc' }).exec((err, reports) => {
- if (err) console.error(err);
- cb({ status: 'success', data: reports });
- });
- }),
- resolve: hooks.adminRequired((session, _id, cb) => {
- db.models.report.findOne({ _id }).sort({ released: 'desc' }).exec((err, report) => {
- if (err) console.error(err);
- report.resolved = true;
- report.save(err => {
- if (err) console.error(err);
- else cb({ status: 'success', message: 'Successfully resolved Report' });
- });
- });
- }),
- create: hooks.loginRequired((session, data, cb) => {
- async.waterfall([
- (next) => {
- db.models.report.find({ createdBy: data.createdBy, createdAt: data.createdAt }).exec((err, report) => {
- if (err) console.error(err);
- if (report) return cb({ status: 'failure', message: 'Report already exists' });
- else next();
- });
- },
- (next) => {
- let issues = [
- {
- name: 'Video',
- reasons: [
- 'Doesn\'t exist',
- 'It\'s private',
- 'It\'s not available in my country'
- ]
- },
- {
- name: 'Title',
- reasons: [
- 'Incorrect',
- 'Inappropriate'
- ]
- },
- {
- name: 'Duration',
- reasons: [
- 'Skips too soon',
- 'Skips too late',
- 'Starts too soon',
- 'Skips too late'
- ]
- },
- {
- name: 'Artists',
- reasons: [
- 'Incorrect',
- 'Inappropriate'
- ]
- },
- {
- name: 'Thumbnail',
- reasons: [
- 'Incorrect',
- 'Inappropriate',
- 'Doesn\'t exist'
- ]
- }
- ];
- for (let z = 0; z < data.issues.length; z++) {
- if (issues.filter(issue => { return issue.name == data.issues[z].name; }).length > 0) {
- for (let r = 0; r < issues.length; r++) {
- if (issues[r].reasons.every(reason => data.issues[z].reasons.indexOf(reason) < -1)) {
- return cb({ 'status': 'failure', 'message': 'Invalid data' });
- }
- }
- } else return cb({ 'status': 'failure', 'message': 'Invalid data' });
- }
- next();
- },
- (next) => {
- db.models.report.create(data, next);
- }
- ], err => {
- if (err) return cb({ 'status': 'failure', 'message': 'Something went wrong'});
- return cb({ 'status': 'success', 'message': 'Successfully created report' });
- });
- })
- };
|