Resolved conflict

This commit is contained in:
piyushkag
2025-04-17 12:27:38 +05:30
committed by nisha
parent cfe5df9941
commit d68644c366
14 changed files with 731 additions and 23 deletions

View File

@@ -2678,4 +2678,9 @@
<sqlFile dbms="postgresql"
path="db/dump/update_form_field_data_14_04_2025.sql"/>
</changeSet>
<changeSet id="09-04-2025_NK_172550" author="Nisha Kashyap">
<sqlFile
dbms="postgresql"
path="db/dump/create_application_form_view.sql"/>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,125 @@
CREATE OR REPLACE VIEW gepafin_schema.application_form_view AS
SELECT app_data.id,
app_data.call_id,
app_data.application_form_id,
app_data.form_id,
app_data.application_id,
field_data.value ->> 'id' AS field_id,
COALESCE(
(SELECT s.value ->> 'value'
FROM jsonb_array_elements(field_data.value -> 'settings') s(value)
WHERE s.value ->> 'name' = 'label'
LIMIT 1),
field_data.value ->> 'label'
) AS field_label,
(
SELECT (s.value ->> 'value')::boolean
FROM jsonb_array_elements(field_data.value -> 'settings') s(value)
WHERE s.value ->> 'name' = 'reportEnable'
LIMIT 1
) AS report_enable,
COALESCE( (SELECT s.value ->> 'value'
FROM jsonb_array_elements(field_data.value -> 'settings') s(value)
WHERE s.value ->> 'name' = 'reportHeader'
LIMIT 1),
field_data.value ->> 'reportHeader'
) AS report_header,
field_data.value ->> 'name' AS field_type,
CASE
WHEN field_data.value ->> 'name' = 'fileupload' THEN
to_jsonb((
SELECT string_agg(d.file_name, ', ')
FROM unnest(string_to_array(app_data.field_value, ',')) file_ids(file_id)
JOIN gepafin_schema.document d ON d.id::text = file_ids.file_id
WHERE d.is_deleted = false
))
WHEN field_data.value ->> 'name' IN ('checkboxes', 'select', 'radio') THEN
CASE
WHEN app_data.field_value ~~ '[%' THEN
to_jsonb((
SELECT string_agg(opt.value ->> 'label', ', ')
FROM jsonb_array_elements_text(app_data.field_value::jsonb) selected_id(value)
CROSS JOIN LATERAL (
SELECT s.value
FROM jsonb_array_elements(field_data.value -> 'settings') s(value)
WHERE s.value ->> 'name' = 'options'
) options_setting,
LATERAL jsonb_array_elements(options_setting.value -> 'value') opt(value)
WHERE opt.value ->> 'name' = selected_id.value
))
ELSE
to_jsonb((
SELECT opt.value ->> 'label'
FROM (
SELECT s.value
FROM jsonb_array_elements(field_data.value -> 'settings') s(value)
WHERE s.value ->> 'name' = 'options'
) options_setting,
LATERAL jsonb_array_elements(options_setting.value -> 'value') opt(value)
WHERE opt.value ->> 'name' = app_data.field_value
LIMIT 1
))
END
ELSE
to_jsonb(app_data.field_value)
END AS field_value,
app_data.status,
app_data.amount_requested,
app_data.amount_accepted,
app_data.is_deleted,
app_data.hub_id,
app_data.user_id,
app_data.evaluation_version,
app_data.company_id,
c.company_name,
c.vat_number AS company_vat_number,
c.codice_ateco,
c.codice_fiscale AS company_codice_fiscale,
p.protocol_number,
b.codice_fiscale AS user_codice_fiscale,
COALESCE(NULLIF(TRIM(BOTH FROM CONCAT(COALESCE(u.first_name, ''), ' ', COALESCE(u.last_name, ''))), ''), '') AS user_name,
uwc.is_legal_representant AS legal_representative,
cl.name AS call_title,
cl.end_date AS call_end_date,
cl.end_time AS call_end_time,
cl.start_date AS call_start_date,
cl.start_time AS call_start_time
FROM (
SELECT a.id AS application_id,
a.call_id,
a.protocol_number,
af.id AS application_form_id,
af.form_id AS form_id,
aff.id AS id,
aff.field_value,
a.status,
a.amount_requested,
a.amount_accepted,
a.is_deleted,
a.hub_id,
a.user_id,
a.evaluation_version,
a.created_date,
a.company_id,
aff.field_id,
f.content
FROM gepafin_schema.application a
JOIN gepafin_schema.application_form af ON af.application_id = a.id
JOIN gepafin_schema.application_form_field aff ON aff.application_form_id = af.id
JOIN gepafin_schema.form f ON f.id = af.form_id
WHERE a.is_deleted = false
) app_data
CROSS JOIN LATERAL (
SELECT jsonb_array_elements.value
FROM jsonb_array_elements(app_data.content::jsonb) jsonb_array_elements(value)
WHERE jsonb_array_elements.value ->> 'id' = app_data.field_id::text
) field_data(value)
LEFT JOIN gepafin_schema.call cl ON app_data.call_id = cl.id
LEFT JOIN gepafin_schema.company c ON app_data.company_id = c.id
LEFT JOIN gepafin_schema.protocol p ON app_data.protocol_number = p.id
LEFT JOIN gepafin_schema.gepafin_user u ON app_data.user_id = u.id
LEFT JOIN gepafin_schema.user_with_company uwc ON app_data.user_id = uwc.user_id AND app_data.company_id = uwc.company_id AND uwc.is_deleted = false
LEFT JOIN gepafin_schema.beneficiary b ON u.beneficiary_id = b.id
WHERE app_data.id IS NOT NULL
AND app_data.status NOT IN ('DRAFT', 'AWAITING', 'READY')
ORDER BY app_data.id, field_data.value ->> 'id';