== Додавање на продукт Оваа функционалност овозможува додавање на нов продукт во системот. = Функција fn_validate_seller_package Проверува дали продавачот има право да објавува продукти. * Проверува дали корисникот постои и е активен. * Проверува дали корисникот е верифициран. * Проверува дали корисникот има активен пакет чиј период на важност не е истечен. {{{ CREATE OR REPLACE FUNCTION fn_validate_seller_package(p_seller_id INT) RETURNS VOID LANGUAGE plpgsql AS $$ begin IF NOT EXISTS ( SELECT 1 FROM appuser WHERE user_id = p_seller_id AND is_active = 1 ) THEN RAISE EXCEPTION 'Sellerot ne postoi ili ne e aktiven'; END IF; IF NOT EXISTS ( SELECT 1 FROM appuser WHERE user_id = p_seller_id AND is_verified = 1 ) THEN RAISE EXCEPTION 'Sellerot ne e verificiran'; END IF; IF NOT EXISTS ( SELECT 1 FROM userpackages WHERE seller_id = p_seller_id AND CURRENT_TIMESTAMP BETWEEN start_date AND end_date ) THEN RAISE EXCEPTION 'Sellerot nema aktiven paket (istecen ili ne postoi)'; END IF; END; $$; }}} = Функција fn_validate_product_attribute Валидира парови атрибут:вредност * Проверува дали атрибутот е дефиниран за категоријата во која припаѓа продуктот. * Проверува дали внесената вредност е една од дозволените вредности за атрибутот. {{{ CREATE OR REPLACE FUNCTION fn_validate_product_attribute( p_category_id INT, p_category_attribute_id INT, p_attribute_value VARCHAR ) RETURNS VOID LANGUAGE plpgsql AS $$ BEGIN IF NOT EXISTS ( SELECT 1 FROM categoryattributes WHERE category_attribute_id = p_category_attribute_id AND category_id = p_category_id ) THEN RAISE EXCEPTION 'Atributot % ne pripagja na kategorijata', p_category_attribute_id; END IF; IF NOT EXISTS ( SELECT 1 FROM categoryattributesvalues WHERE category_attribute_id = p_category_attribute_id AND allowed_value = p_attribute_value ) THEN RAISE EXCEPTION 'Vrednosta % ne pripagja na atributot', p_attribute_value; END IF; END; $$; }}}