| | 81 | }}} |
| | 82 | |
| | 83 | 2. Тежинска просечна оцена, каде што помал број рецензии имаат помала тежина - без деактивирање, само со можност за admin да ги филтрира. |
| | 84 | {{{ |
| | 85 | CREATE OR REPLACE FUNCTION recalc_destination_flag_weighted(p_dest INT) |
| | 86 | RETURNS VOID LANGUAGE plpgsql AS $$ |
| | 87 | DECLARE |
| | 88 | avg_rating FLOAT; |
| | 89 | total_reviews INT; |
| | 90 | weight_rating FLOAT; |
| | 91 | BEGIN |
| | 92 | SELECT AVG(quality), COUNT(*) INTO avg_rating, total_reviews |
| | 93 | FROM review |
| | 94 | WHERE id_destination = p_dest; |
| | 95 | |
| | 96 | IF total_reviews < 5 THEN |
| | 97 | weight_rating := avg_rating * (total_reviews::FLOAT / 5); |
| | 98 | ELSE |
| | 99 | weight_rating := avg_rating; |
| | 100 | END IF; |
| | 101 | |
| | 102 | IF total_reviews >= 1 AND COALESCE(weight_rating, 0) < 3 THEN |
| | 103 | UPDATE destination SET is_flagged = TRUE WHERE id_destination = p_dest; |
| | 104 | ELSE |
| | 105 | UPDATE destination SET is_flagged = FALSE WHERE id_destination = p_dest; |
| | 106 | END IF; |
| | 107 | END; |
| | 108 | $$; |