diff --git a/ang/afsearchCategory.aff.html b/ang/afsearchCategory.aff.html new file mode 100644 index 0000000..6656188 --- /dev/null +++ b/ang/afsearchCategory.aff.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/ang/afsearchCategory.aff.json b/ang/afsearchCategory.aff.json new file mode 100644 index 0000000..29dd66c --- /dev/null +++ b/ang/afsearchCategory.aff.json @@ -0,0 +1,13 @@ +{ + "type": "search", + "title": "Category", + "placement": [ + "contact_summary_block" + ], + "icon": "fa-list-alt", + "server_route": "", + "permission": [ + "access CiviCRM" + ], + "permission_operator": "AND" +} diff --git a/ang/afsearchContactsByCategory.aff.html b/ang/afsearchContactsByCategory.aff.html new file mode 100644 index 0000000..275a7d2 --- /dev/null +++ b/ang/afsearchContactsByCategory.aff.html @@ -0,0 +1,5 @@ +
+ + + +
diff --git a/ang/afsearchContactsByCategory.aff.json b/ang/afsearchContactsByCategory.aff.json new file mode 100644 index 0000000..137eafd --- /dev/null +++ b/ang/afsearchContactsByCategory.aff.json @@ -0,0 +1,31 @@ +{ + "type": "search", + "title": "Contacts by category", + "description": "Individuals only", + "placement": [], + "icon": "fa-tags", + "server_route": "civicrm/contact/search/category", + "permission": [ + "access CiviCRM" + ], + "permission_operator": "AND", + "navigation": { + "parent": "Search", + "label": "Contacts by category", + "weight": 0 + }, + "modified_date": "2024-02-28 16:59:26", + "requires": null, + "entity_type": null, + "join_entity": null, + "summary_contact_type": null, + "summary_weight": null, + "is_public": false, + "redirect": null, + "submit_enabled": true, + "submit_limit": null, + "create_submission": null, + "manual_processing": null, + "allow_verification_by_email": null, + "email_confirmation_template_id": null +} diff --git a/managed/searchkit-category-counts.mgd.php b/managed/searchkit-category-counts.mgd.php new file mode 100644 index 0000000..ee04bb0 --- /dev/null +++ b/managed/searchkit-category-counts.mgd.php @@ -0,0 +1,83 @@ + 'SavedSearch_Contact_Category_Summary', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Contact_Category_Summary', + 'label' => E::ts('Contact Category Summary'), + 'api_entity' => 'ContactCategory', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'category:label', + 'COUNT(contact_id) AS COUNT_contact_id', + ], + 'orderBy' => [], + 'where' => [], + 'groupBy' => [ + 'category', + ], + 'join' => [], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], +[ + 'name' => 'SavedSearch_Contact_Category_Summary_SearchDisplay_Contact_Category_Summary', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Contact_Category_Summary', + 'label' => E::ts('Contact Category Summary'), + 'saved_search_id.name' => 'Contact_Category_Summary', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 0, + 'pager' => FALSE, + 'placeholder' => 5, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'category:label', + 'dataType' => 'Integer', + 'label' => E::ts('Category'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'COUNT_contact_id', + 'dataType' => 'Integer', + 'label' => E::ts('Count'), + 'sortable' => TRUE, + ], + ], + 'actions' => TRUE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + ], + 'match' => [ + 'saved_search_id', + 'name', + ], + ], +], +]; diff --git a/managed/searchkit-category-for-contact-summary.mgd.php b/managed/searchkit-category-for-contact-summary.mgd.php new file mode 100644 index 0000000..78b5748 --- /dev/null +++ b/managed/searchkit-category-for-contact-summary.mgd.php @@ -0,0 +1,67 @@ + 'SavedSearch_Category_for_contact', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Category_for_contact', + 'label' => E::ts('Category for contact'), + 'api_entity' => 'ContactCategory', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'id', + 'category:label', + 'contact_id', + ], + 'orderBy' => [], + 'where' => [], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], +[ + 'name' => 'SavedSearch_Category_for_contact_SearchDisplay_Category_for_contact_List_1', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Category_for_contact_List_1', + 'label' => E::ts('Category for contact List 1'), + 'saved_search_id.name' => 'Category_for_contact', + 'type' => 'list', + 'settings' => [ + 'style' => 'ul', + 'limit' => 0, + 'sort' => [], + 'pager' => FALSE, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'category:label', + 'dataType' => 'Integer', + ], + ], + 'placeholder' => 0, + ], + ], + 'match' => [ + 'name', + ], + ], +], +]; diff --git a/managed/searchkit-contacts-by-category.mgd.php b/managed/searchkit-contacts-by-category.mgd.php new file mode 100644 index 0000000..fc15d74 --- /dev/null +++ b/managed/searchkit-contacts-by-category.mgd.php @@ -0,0 +1,153 @@ + 'SavedSearch_Contacts_by_category', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Contacts_by_category', + 'label' => E::ts('Contacts by category'), + 'api_entity' => 'Contact', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'id', + 'contact_sub_type:label', + 'display_name', + 'Contact_ContactCategory_contact_id_01.category:label', + 'Synopsis_Fields.Amount_of_last_contribution', + 'Synopsis_Fields.Date_of_Last_Contribution', + 'Synopsis_Fields.Total_Lifetime_Contributions', + 'Synopsis_Fields.Total_count_of_contributions', + ], + 'orderBy' => [], + 'where' => [ + [ + 'contact_type:name', + '=', + 'Individual', + ], + ], + 'groupBy' => [], + 'join' => [ + [ + 'ContactCategory AS Contact_ContactCategory_contact_id_01', + 'INNER', + [ + 'id', + '=', + 'Contact_ContactCategory_contact_id_01.contact_id', + ], + ], + ], + 'having' => [], + ], + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_Contacts_by_category_SearchDisplay_Contacts_by_category_Table_1', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Contacts_by_category_Table_1', + 'label' => E::ts('Contacts by category'), + 'saved_search_id.name' => 'Contacts_by_category', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [ + [ + 'sort_name', + 'ASC', + ], + ], + 'limit' => 50, + 'pager' => [], + 'placeholder' => 5, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'Contact_ContactCategory_contact_id_01.category:label', + 'dataType' => 'Integer', + 'label' => E::ts('Category'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'display_name', + 'dataType' => 'String', + 'label' => E::ts('Name'), + 'sortable' => TRUE, + 'link' => [ + 'path' => '', + 'entity' => 'Contact', + 'action' => 'view', + 'join' => '', + 'target' => '', + ], + 'title' => E::ts('View Contact'), + ], + [ + 'type' => 'field', + 'key' => 'contact_sub_type:label', + 'dataType' => 'String', + 'label' => E::ts('Contact Subtype'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'Synopsis_Fields.Total_Lifetime_Contributions', + 'dataType' => 'Money', + 'label' => E::ts('£ total'), + 'sortable' => TRUE, + 'alignment' => 'text-right', + ], + [ + 'type' => 'field', + 'key' => 'Synopsis_Fields.Total_count_of_contributions', + 'dataType' => 'Integer', + 'label' => E::ts('Count donations'), + 'sortable' => TRUE, + 'alignment' => 'text-right', + ], + [ + 'type' => 'field', + 'key' => 'Synopsis_Fields.Date_of_Last_Contribution', + 'dataType' => 'Timestamp', + 'label' => E::ts('Latest donation'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'Synopsis_Fields.Amount_of_last_contribution', + 'dataType' => 'Money', + 'label' => E::ts('£ latest'), + 'sortable' => TRUE, + 'alignment' => 'text-right', + ], + ], + 'actions' => TRUE, + 'classes' => [ + 'table-striped', + ], + 'headerCount' => TRUE, + ], + ], + 'match' => [ + 'name', + ], + ], + ], +];