Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ratingReview: function (params, callback) {
- async.waterfall([function (cb) {//checking user should rate package in between 5 days of booking
- var query = {
- _id: params.booking_id
- }
- bookingModel.Booking.find(query, function (err, res) {console.log("+++++++++++++++++++++",res)
- if (err) {
- Utils.logger.errorLogger('+++++++++++++++ Error in rate package in between 5 days of booking ++++++++++++++', err);
- cb(Utils.responses.systemError);
- }
- else if(res[0].already_rated) {
- cb({statusCode: 400, status: 'warning', message: 'You already reviewed this booking ' });
- }
- else{
- var booking_diplay_date=moment.unix(res[0].end_date).add(5, 'days')
- var current_date=moment.unix()
- if(current_date>booking_diplay_date){
- cb({statusCode: 400, status: 'warning', message: 'You cannot review booking' })
- }
- cb(null,res)
- }
- });
- },
- // function (cb) {//checking user already rated/reviewed Guide
- // if (params.guide_id && params.review_to_guide && params.rating_to_guide) {
- // var query = {
- // from: params.user_id,
- // to: params.guide_id,
- // type: 1
- // }
- // Models.Review.find(query, function (err, res) {
- // if (err) {
- // Utils.logger.errorLogger('+++++++++++++++ Error in already rated/reviewed Guide ++++++++++++++', err);
- // cb(Utils.responses.systemError);
- // } else if (res.length > 0) {
- // cb(
- // { statusCode: 400, status: 'warning', message: 'Already reviewed guide' }
- // )
- // }
- // else {
- // cb(null, res);
- // }
- // });
- // } else {
- // cb(null, params)
- // }
- // },
- // function (data, cb) {//checking user already rated/reviewed package
- // if (params.package_id) {
- // var query = {
- // from: params.user_id,
- // package_id: params.package_id,
- // type: 2
- // }
- // Models.Review.find(query, function (err, res) {
- // if (err) {
- // Utils.logger.errorLogger('+++++++++++++++ Error in already rated/reviewed package ++++++++++++++', err);
- // cb(Utils.responses.systemError);
- // } else if (res.length > 0) {
- // cb(
- // { statusCode: 400, status: 'warning', message: 'Already reviewed package' }
- // )
- // }
- // else {
- // cb(null, res);
- // }
- // });
- // } else {
- // cb(null, params);
- // }
- // },
- //***********review to guide***************//
- function (data, cb) {
- if (params.guide_id && params.review_to_guide && params.rating_to_guide) {
- var objToSave = {
- to: params.guide_id,
- from: params.user_id,
- rating: params.rating_to_guide,
- review: params.review_to_guide,
- type: 1
- };
- Models.Review(objToSave).save(function (err, res) {
- if (err) {
- Utils.logger.errorLogger('+++++++++++++++ Error in reviewing guide ++++++++++++++', err);
- cb(Utils.responses.systemError);
- } else {
- cb(null, res);
- }
- });
- } else {
- cb(null, params);
- }
- },
- //***********finding average rating of guide***************//
- function (data, cb) {
- if (params.guide_id && params.review_to_guide && params.rating_to_guide) {
- var pipeline = [
- { "$match": { 'to': Mongoose.Types.ObjectId(params.guide_id), 'type': 1 } },
- {
- "$group": {
- "_id": "$to",
- "avgRating": { "$avg": "$rating" }
- }
- }
- ];
- Models.Review.aggregate(pipeline, function (err, res) {
- if (err) {
- Utils.logger.errorLogger('+++++++++++++++ Error in finding average rating of guide ++++++++++++++', err);
- cb(Utils.responses.systemError);
- }
- else {
- cb(null, res)
- }
- })
- }
- else {
- cb(null, params)
- }
- },
- //***********updating average rating of guide***************//
- function (data, cb) {
- if (params.guide_id && params.review_to_guide && params.rating_to_guide) {
- userModel.Users.findOneAndUpdate({ _id: params.guide_id }, { average_rating: data[0].avgRating }, { new: true }, function (err, res) {
- if (err) {
- Utils.logger.errorLogger('+++++++++++++++ Error in updating average rating of guide ++++++++++++++', err);
- cb(Utils.responses.systemError);
- }
- else {
- cb(null, res);
- }
- })
- }
- else {
- cb(null, params)
- }
- },
- //***********review to package***************//
- function (data, cb) {
- if (params.package_id) {
- var objToSave = {
- package_id: params.package_id,
- from: params.user_id,
- to: params.guide_id,
- rating: params.rating_to_package,
- review: params.review_to_package,
- type: 2
- };
- Models.Review(objToSave).save(function (err, res) {
- if (err) {
- Utils.logger.errorLogger('+++++++++++++++ Error in reviewing package ++++++++++++++', err);
- cb(Utils.responses.systemError);
- } else {
- cb(null, res);
- }
- });
- }
- else {
- cb(null, params);
- }
- },
- //*********** find average rating of package***************//
- function (data, cb) {
- if (params.package_id) {
- var pipeline = [
- { "$match": { 'package_id': Mongoose.Types.ObjectId(params.package_id), 'type': 2 } },
- {
- "$group": {
- "_id": "$package_id",
- "avgRating": { "$avg": "$rating" }
- }
- }
- ];
- Models.Review.aggregate(pipeline, function (err, res) {
- if (err) {
- Utils.logger.errorLogger('+++++++++++++++ Error in average rating of package ++++++++++++++', err);
- cb(Utils.responses.systemError);
- }
- else {
- cb(null, res)
- }
- })
- }
- else {
- cb(null, params)
- }
- },
- //*********** updating average rating of package***************//
- function (data, cb) {
- if (params.package_id) {
- packageModel.Package.findOneAndUpdate({ _id: params.package_id }, { average_rating: data[0].avgRating }, function (err, res) {
- if (err) {
- Utils.logger.errorLogger('+++++++++++++++ Error in updating average rating of package ++++++++++++++', err);
- cb(Utils.responses.systemError);
- }
- else {
- cb(null, res)
- }
- })
- }
- else {
- cb(null, params)
- }
- },
- //**********saving private message****************//
- function (data, cb) {
- if (params.private_message) {
- var objToSave = {
- package_id: params.package_id,
- from: params.user_id,
- review: params.private_message,
- type: 3
- };
- Models.Review(objToSave).save(function (err, res) {
- if (err) {
- Utils.logger.errorLogger('+++++++++++++++ Error in saving private message ++++++++++++++', err);
- cb(Utils.responses.systemError);
- } else {
- //**************send email to admin pending**********//
- cb(null, res);
- }
- });
- } else {
- cb(null, params);
- }
- }
- ],
- function (err, result) {
- if (err) {
- callback(err)
- } else {
- callback(null, result)
- }
- });
- }
- }
Add Comment
Please, Sign In to add comment