Guest User

Untitled

a guest
Mar 19th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.73 KB | None | 0 0
  1. ratingReview: function (params, callback) {
  2. async.waterfall([function (cb) {//checking user should rate package in between 5 days of booking
  3.  
  4. var query = {
  5. _id: params.booking_id
  6. }
  7. bookingModel.Booking.find(query, function (err, res) {console.log("+++++++++++++++++++++",res)
  8. if (err) {
  9. Utils.logger.errorLogger('+++++++++++++++ Error in rate package in between 5 days of booking ++++++++++++++', err);
  10. cb(Utils.responses.systemError);
  11. }
  12. else if(res[0].already_rated) {
  13. cb({statusCode: 400, status: 'warning', message: 'You already reviewed this booking ' });
  14. }
  15. else{
  16. var booking_diplay_date=moment.unix(res[0].end_date).add(5, 'days')
  17. var current_date=moment.unix()
  18. if(current_date>booking_diplay_date){
  19. cb({statusCode: 400, status: 'warning', message: 'You cannot review booking' })
  20. }
  21. cb(null,res)
  22. }
  23. });
  24.  
  25.  
  26. },
  27. // function (cb) {//checking user already rated/reviewed Guide
  28. // if (params.guide_id && params.review_to_guide && params.rating_to_guide) {
  29. // var query = {
  30. // from: params.user_id,
  31. // to: params.guide_id,
  32. // type: 1
  33. // }
  34. // Models.Review.find(query, function (err, res) {
  35. // if (err) {
  36. // Utils.logger.errorLogger('+++++++++++++++ Error in already rated/reviewed Guide ++++++++++++++', err);
  37. // cb(Utils.responses.systemError);
  38.  
  39. // } else if (res.length > 0) {
  40. // cb(
  41. // { statusCode: 400, status: 'warning', message: 'Already reviewed guide' }
  42. // )
  43. // }
  44. // else {
  45. // cb(null, res);
  46. // }
  47. // });
  48.  
  49. // } else {
  50. // cb(null, params)
  51. // }
  52.  
  53.  
  54. // },
  55. // function (data, cb) {//checking user already rated/reviewed package
  56. // if (params.package_id) {
  57. // var query = {
  58. // from: params.user_id,
  59. // package_id: params.package_id,
  60. // type: 2
  61. // }
  62. // Models.Review.find(query, function (err, res) {
  63. // if (err) {
  64. // Utils.logger.errorLogger('+++++++++++++++ Error in already rated/reviewed package ++++++++++++++', err);
  65. // cb(Utils.responses.systemError);
  66.  
  67. // } else if (res.length > 0) {
  68. // cb(
  69. // { statusCode: 400, status: 'warning', message: 'Already reviewed package' }
  70. // )
  71. // }
  72. // else {
  73. // cb(null, res);
  74. // }
  75. // });
  76.  
  77. // } else {
  78. // cb(null, params);
  79.  
  80. // }
  81.  
  82.  
  83. // },
  84.  
  85. //***********review to guide***************//
  86. function (data, cb) {
  87. if (params.guide_id && params.review_to_guide && params.rating_to_guide) {
  88. var objToSave = {
  89. to: params.guide_id,
  90. from: params.user_id,
  91. rating: params.rating_to_guide,
  92. review: params.review_to_guide,
  93. type: 1
  94. };
  95. Models.Review(objToSave).save(function (err, res) {
  96. if (err) {
  97. Utils.logger.errorLogger('+++++++++++++++ Error in reviewing guide ++++++++++++++', err);
  98. cb(Utils.responses.systemError);
  99. } else {
  100. cb(null, res);
  101. }
  102. });
  103. } else {
  104. cb(null, params);
  105. }
  106.  
  107. },
  108. //***********finding average rating of guide***************//
  109. function (data, cb) {
  110. if (params.guide_id && params.review_to_guide && params.rating_to_guide) {
  111.  
  112. var pipeline = [
  113. { "$match": { 'to': Mongoose.Types.ObjectId(params.guide_id), 'type': 1 } },
  114. {
  115. "$group": {
  116. "_id": "$to",
  117. "avgRating": { "$avg": "$rating" }
  118. }
  119. }
  120. ];
  121. Models.Review.aggregate(pipeline, function (err, res) {
  122. if (err) {
  123. Utils.logger.errorLogger('+++++++++++++++ Error in finding average rating of guide ++++++++++++++', err);
  124. cb(Utils.responses.systemError);
  125. }
  126. else {
  127. cb(null, res)
  128. }
  129. })
  130.  
  131. }
  132. else {
  133. cb(null, params)
  134. }
  135. },
  136. //***********updating average rating of guide***************//
  137. function (data, cb) {
  138.  
  139. if (params.guide_id && params.review_to_guide && params.rating_to_guide) {
  140. userModel.Users.findOneAndUpdate({ _id: params.guide_id }, { average_rating: data[0].avgRating }, { new: true }, function (err, res) {
  141. if (err) {
  142. Utils.logger.errorLogger('+++++++++++++++ Error in updating average rating of guide ++++++++++++++', err);
  143. cb(Utils.responses.systemError);
  144. }
  145. else {
  146. cb(null, res);
  147. }
  148. })
  149.  
  150. }
  151. else {
  152. cb(null, params)
  153. }
  154. },
  155.  
  156. //***********review to package***************//
  157. function (data, cb) {
  158. if (params.package_id) {
  159. var objToSave = {
  160. package_id: params.package_id,
  161. from: params.user_id,
  162. to: params.guide_id,
  163. rating: params.rating_to_package,
  164. review: params.review_to_package,
  165. type: 2
  166. };
  167.  
  168. Models.Review(objToSave).save(function (err, res) {
  169. if (err) {
  170. Utils.logger.errorLogger('+++++++++++++++ Error in reviewing package ++++++++++++++', err);
  171. cb(Utils.responses.systemError);
  172. } else {
  173. cb(null, res);
  174. }
  175. });
  176. }
  177. else {
  178. cb(null, params);
  179. }
  180.  
  181.  
  182. },
  183. //*********** find average rating of package***************//
  184. function (data, cb) {
  185. if (params.package_id) {
  186.  
  187. var pipeline = [
  188. { "$match": { 'package_id': Mongoose.Types.ObjectId(params.package_id), 'type': 2 } },
  189. {
  190. "$group": {
  191. "_id": "$package_id",
  192. "avgRating": { "$avg": "$rating" }
  193. }
  194. }
  195. ];
  196. Models.Review.aggregate(pipeline, function (err, res) {
  197.  
  198. if (err) {
  199. Utils.logger.errorLogger('+++++++++++++++ Error in average rating of package ++++++++++++++', err);
  200. cb(Utils.responses.systemError);
  201. }
  202. else {
  203. cb(null, res)
  204. }
  205. })
  206.  
  207. }
  208. else {
  209. cb(null, params)
  210. }
  211. },
  212. //*********** updating average rating of package***************//
  213. function (data, cb) {
  214.  
  215. if (params.package_id) {
  216. packageModel.Package.findOneAndUpdate({ _id: params.package_id }, { average_rating: data[0].avgRating }, function (err, res) {
  217. if (err) {
  218. Utils.logger.errorLogger('+++++++++++++++ Error in updating average rating of package ++++++++++++++', err);
  219. cb(Utils.responses.systemError);
  220. }
  221. else {
  222. cb(null, res)
  223. }
  224. })
  225.  
  226. }
  227. else {
  228. cb(null, params)
  229. }
  230. },
  231.  
  232. //**********saving private message****************//
  233. function (data, cb) {
  234. if (params.private_message) {
  235. var objToSave = {
  236. package_id: params.package_id,
  237. from: params.user_id,
  238. review: params.private_message,
  239. type: 3
  240. };
  241.  
  242. Models.Review(objToSave).save(function (err, res) {
  243. if (err) {
  244. Utils.logger.errorLogger('+++++++++++++++ Error in saving private message ++++++++++++++', err);
  245. cb(Utils.responses.systemError);
  246. } else {
  247. //**************send email to admin pending**********//
  248. cb(null, res);
  249. }
  250. });
  251. } else {
  252. cb(null, params);
  253. }
  254.  
  255. }
  256.  
  257. ],
  258. function (err, result) {
  259. if (err) {
  260. callback(err)
  261. } else {
  262. callback(null, result)
  263. }
  264. });
  265. }
  266.  
  267. }
Add Comment
Please, Sign In to add comment