| 31 | == 2. Тригери за суспендирање на рејтингот на станар при повеќекратни задоцнети плаќања |
| 32 | * Доколку станар има три или повеќе задоцнети плаќања низ сите негови изнајмувања, неговиот UserD.rating се поставува на 0, а во биографијата се додава напомена дека е суспендиран. |
| 33 | {{{ |
| 34 | CREATE OR REPLACE FUNCTION suspend_rating_on_repeated_delinquency() |
| 35 | RETURNS TRIGGER AS $$ |
| 36 | DECLARE |
| 37 | tenant_rec domify.Lease%ROWTYPE; |
| 38 | late_payments INT; |
| 39 | BEGIN |
| 40 | SELECT * INTO tenant_rec FROM domify.Lease WHERE id = NEW.lease_id; |
| 41 | IF FOUND THEN |
| 42 | SELECT COUNT(*) INTO late_payments |
| 43 | FROM domify.Payment p |
| 44 | JOIN domify.Lease l ON p.lease_id = l.id |
| 45 | WHERE l.tenant_id = tenant_rec.tenant_id AND p.status = 'доцнење'; |
| 46 | |
| 47 | IF late_payments >= 3 THEN |
| 48 | UPDATE domify.UserD |
| 49 | SET rating = 0.00, |
| 50 | bio = 'Суспендиран станар поради повеќе доцнења на плаќање' |
| 51 | WHERE id = (SELECT id FROM domify.UserD WHERE id = tenant_rec.tenant_id); |
| 52 | END IF; |
| 53 | END IF; |
| 54 | RETURN NEW; |
| 55 | END; |
| 56 | $$ LANGUAGE plpgsql; |
| 57 | |
| 58 | CREATE TRIGGER trg_suspend_tenant_on_late_payments |
| 59 | AFTER INSERT OR UPDATE ON domify.Payment |
| 60 | FOR EACH ROW |
| 61 | WHEN (NEW.status = 'доцнење') |
| 62 | EXECUTE FUNCTION suspend_rating_on_repeated_delinquency(); |
| 63 | }}} |