Changes between Initial Version and Version 1 of Views


Ignore:
Timestamp:
08/31/25 23:53:06 (37 hours ago)
Author:
222004
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Views

    v1 v1  
     1== **Погледи**
     2----
     3
     4== 1) Поглед што дава детален overview за клиент:
     5**Основни податоци\\
     6Вкупни нарачки и сума на потрошено\\
     7Број на успешни/неуспешни плаќања\\
     8Лојалност (поени од clubcard)\\
     9Проверка дали клиентот е верифициран\\
     10Дали има регистрирани алергии\\
     11Дали има активни рецепти\\**
     12
     13{{{
     14
     15CREATE OR REPLACE VIEW synergymed.v_client_full_activity_overview AS
     16SELECT
     17    u.id AS user_id,
     18    u.first_name || ' ' || u.last_name AS client_name,
     19    u.e_mail,
     20    c.is_verified,
     21    COALESCE(cc.points, 0) AS loyalty_points,
     22   
     23    -- narachki
     24    COUNT(DISTINCT co.id) AS total_orders,
     25    COALESCE(SUM(co.total_price), 0) AS total_spent,
     26   
     27    -- plakjanja
     28    COUNT(DISTINCT p.id) FILTER (WHERE p.status = 'завршено') AS successful_payments,
     29    COUNT(DISTINCT p.id) FILTER (WHERE p.status = 'неуспешно') AS failed_payments,
     30    MAX(p.payment_date) AS last_payment_date,
     31   
     32    -- alergii
     33    CASE
     34        WHEN EXISTS (
     35            SELECT 1 FROM synergymed.healthprofile hp
     36            JOIN synergymed.allergicreaction_healthprofile_medicine ahm ON ahm.health_profile_id = hp.id
     37            WHERE hp.client_id = c.user_id
     38        ) THEN TRUE ELSE FALSE
     39    END AS has_allergies,
     40   
     41    -- recepti
     42    CASE
     43        WHEN EXISTS (
     44            SELECT 1 FROM synergymed.prescription pr
     45            WHERE pr.client_id = c.user_id
     46              AND pr.valid_to >= CURRENT_DATE
     47        ) THEN TRUE ELSE FALSE
     48    END AS has_active_prescriptions
     49
     50FROM synergymed.client c
     51JOIN synergymed.users u ON u.id = c.user_id
     52LEFT JOIN synergymed.clubcard cc ON cc.user_id = c.user_id
     53LEFT JOIN synergymed.clientorder co ON co.client_id = c.user_id
     54LEFT JOIN synergymed.payment p ON p.client_id = c.user_id
     55GROUP BY u.id, client_name, u.e_mail, c.is_verified, cc.points;
     56
     57}}}
     58----
     59== 2) Поглед за движењето на лековите низ целиот supply-chain:
     60**
     61Кој дистрибутер испорачува**\\
     62**Од лек и колку**\\
     63**На која аптека**\\
     64**Статус на нарачката**\\
     65**Очекуван датум на пристигнување**\\
     66**Последна залиха во магацин**\\
     67
     68{{{
     69
     70CREATE OR REPLACE VIEW synergymed.v_supply_chain_overview AS
     71SELECT
     72    so.id AS supply_order_id,
     73    d.company_id AS distributor_id,
     74    cd.company_name AS distributor_name,
     75    ph.company_id AS pharmacy_id,
     76    cp.company_name AS pharmacy_name,
     77    bm.id AS branded_medicine_id,
     78    bm.name AS branded_medicine_name,
     79    sobm.quantity AS ordered_quantity,
     80    so.status AS order_status,
     81    so.order_date,
     82    so.expected_arrival_date,
     83   
     84    COALESCE(ibm.quantity, 0) AS last_known_inventory
     85FROM synergymed.supplyorder so
     86JOIN synergymed.distributor d ON d.company_id = so.distributor_id
     87JOIN synergymed.company cd ON cd.id = d.company_id
     88JOIN synergymed.pharmacy ph ON ph.company_id = so.pharmacy_id
     89JOIN synergymed.company cp ON cp.id = ph.company_id
     90JOIN synergymed.supplyorder_brandedmedicine sobm ON sobm.supply_order_id = so.id
     91JOIN synergymed.brandedmedicine bm ON bm.id = sobm.branded_medicine_id
     92LEFT JOIN synergymed.inventory i ON i.facility_id IN (
     93    SELECT f.id FROM synergymed.facility f WHERE f.company_id = ph.company_id
     94)
     95LEFT JOIN synergymed.inventory_brandedmedicine ibm
     96       ON ibm.inventory_id = i.id AND ibm.branded_medicine_id = bm.id;
     97
     98
     99}}}
     100----
     101== 3) Поглед што ги прикажува залихите на сите лекови во секоја аптека, со датум на последна промена.
     102{{{
     103
     104CREATE OR REPLACE VIEW synergymed.v_inventory_status AS
     105SELECT
     106    ph.company_id AS pharmacy_id,
     107    phc.branded_medicine_id,
     108    bm.name AS branded_name,
     109    ibm.quantity,
     110    ibm.last_changed
     111FROM synergymed.inventory_brandedmedicine ibm
     112JOIN synergymed.inventory i ON ibm.inventory_id = i.id
     113JOIN synergymed.facility f ON i.facility_id = f.id
     114JOIN synergymed.pharmacy ph ON ph.company_id = f.company_id
     115JOIN synergymed.pharmacy_catalog phc ON phc.pharmacy_id = ph.company_id
     116JOIN synergymed.brandedmedicine bm ON bm.id = phc.branded_medicine_id;
     117
     118}}}
     119----
     120== 4) Поглед што дава детална историја на нарачки за секој клиент, со информации за статус, цена и датум.
     121{{{
     122
     123CREATE OR REPLACE VIEW synergymed.v_client_order_history AS
     124SELECT
     125    co.id AS order_id,
     126    u.first_name || ' ' || u.last_name AS client_name,
     127    co.order_date,
     128    co.expected_arrival_date,
     129    co.status,
     130    co.total_price,
     131    pm.method_name AS payment_method
     132FROM synergymed.clientorder co
     133JOIN synergymed.client c ON co.client_id = c.user_id
     134JOIN synergymed.users u ON c.user_id = u.id
     135JOIN synergymed.payment p ON co.payment_id = p.id
     136JOIN synergymed.paymentmethod pm ON p.payment_method_id = pm.id;
     137
     138}}}