DROP VIEW "public"."tech_vendor_detail_view";--> statement-breakpoint
CREATE VIEW "public"."tech_vendor_detail_view" AS (select "id", "vendor_name", "vendor_code", "tax_id", "address", "country", "country_eng", "country_fab", "agent_name", "agent_phone", "agent_email", "phone", "email", "website", "status", "tech_vendor_type", "representative_name", "representative_email", "representative_phone", "representative_birth", "created_at", "updated_at", 
        (SELECT COALESCE(
          json_agg(
            json_build_object(
              'id', c.id,
              'contactName', c.contact_name,
              'contactPosition', c.contact_position,
              'contactEmail', c.contact_email,
              'contactPhone', c.contact_phone,
              'isPrimary', c.is_primary
            )
          ),
          '[]'::json
        )
        FROM vendor_contacts c
        WHERE c.vendor_id = tech_vendors.id)
       as "contacts", 
      (SELECT COALESCE(
        json_agg(
          json_build_object(
            'id', a.id,
            'fileName', a.file_name,
            'filePath', a.file_path,
            'attachmentType', a.attachment_type,
            'createdAt', a.created_at
          )
          ORDER BY a.attachment_type, a.created_at DESC
        ),
        '[]'::json
      )
      FROM tech_vendor_attachments a
      WHERE a.vendor_id = tech_vendors.id)
     as "attachments", 
      (SELECT COUNT(*)
      FROM tech_vendor_attachments a
      WHERE a.vendor_id = tech_vendors.id)
     as "attachment_count", 
        (SELECT COUNT(*) 
        FROM vendor_contacts c
        WHERE c.vendor_id = tech_vendors.id)
       as "contact_count", 
        (SELECT COALESCE(
          json_agg(
            json_build_object(
              'itemCode', i.item_code
            )
          ),
          '[]'::json
        )
        FROM tech_vendor_possible_items i
        LEFT JOIN items it ON i.item_code = it.item_code
        WHERE i.vendor_id = tech_vendors.id)
       as "possible_items", 
        (SELECT COUNT(*) 
        FROM tech_vendor_possible_items i
        WHERE i.vendor_id = tech_vendors.id)
       as "item_count" from "tech_vendors");