| | 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 | }}} |