update_quota {
	# Update limit
	update control {
		Tmp-String-0 = "%{sql: \
				UPDATE radreply \
				SET value = CAST(value AS DECIMAL(65, 0)) - %{Acct-Output-Octets64} \
				WHERE username = '%{User-Name}' AND domain = REVERSE('%{Eltex-Domain}') AND attribute = 'Eltex-Traffic-Limit'; \
				\
				UPDATE radreply \
				set value = value - %{Acct-Session-Time} \
				WHERE username = '%{User-Name}' AND domain = REVERSE('%{Eltex-Domain}') AND attribute = 'Eltex-Work-Time-Limit'; \
		}"
	}

	# Check if limit is exceeded
	update control {
        Tmp-Integer-0 = "%{sql: \
			SELECT count(*) FROM radreply WHERE \
				username = '%{User-Name}' and domain = REVERSE('%{Eltex-Domain}') AND \
				(attribute = 'Eltex-Traffic-Limit' OR attribute = 'Eltex-Work-Time-Limit') \
				AND value <= 0; \
        }"
        Tmp-Integer-1 = "%{sql: \
			SELECT count(*) FROM radreply WHERE \
				username = '%{User-Name}' and domain = REVERSE('%{Eltex-Domain}') AND \
				attribute = 'Eltex-User-State'; \
		}"
	}

	if (&control:Tmp-Integer-0 > 0 && &control:Tmp-Integer-1 == 0) {
		# Deactivate the user
		update control {
			Tmp-String-0 = "%{sql: \
					INSERT INTO radcheck (username, domain, attribute, op, value) \
					VALUES ('%{User-Name}', REVERSE('%{Eltex-Domain}'), 'Eltex-User-Deactivated', '==', 'true') \
					ON DUPLICATE KEY UPDATE op = '==', value = 'true'; \
					\
					UPDATE radstat SET deactivated = 1 \
					WHERE username = '%{User-Name}' AND userdomain = REVERSE('%{Eltex-Domain}'); \
			}"
		}
	}
}
