LP#1661346 - Add User Setting Type View reporter source
authorChris Sharp <csharp@georgialibraries.org>
Thu, 2 Feb 2017 18:07:44 +0000 (13:07 -0500)
committerChris Sharp <csharp@georgialibraries.org>
Thu, 9 Feb 2017 01:40:24 +0000 (20:40 -0500)
With our newly-implemented action_trigger.event_definitions
running, it is now desirable to have easier access to the SMS
settings selected by users. This is best accomplished with a
new view that will be linked from the actor.usr object.

Signed-off-by: Chris Sharp <csharp@georgialibraries.org>
Open-ILS/examples/fm_IDL.xml
Open-ILS/src/sql/Pg/reporter-schema.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.usr_setting_type_view.sql [new file with mode: 0644]

index 84d4597..c841538 100644 (file)
@@ -3311,6 +3311,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="All Hold Requests" name="hold_requests" oils_persist:virtual="true" reporter:datatype="link"/>
                        <field reporter:label="All Permissions" name="permissions" oils_persist:virtual="true" reporter:datatype="link"/>
                        <field reporter:label="All User Settings" name="settings" oils_persist:virtual="true" reporter:datatype="link"/>
+            <field reporter:label="User Contact Settings" name="usr_contact_settings" oils_persist:virtual="true" reporter:datatype="link"/>
                        <field reporter:label="Standing Penalties" name="standing_penalties" oils_persist:virtual="true" reporter:datatype="link"/>
                        <field reporter:label="Statistical Category Entries" name="stat_cat_entries" oils_persist:virtual="true" reporter:datatype="link"/>
                        <field reporter:label="Survey Responses" name="survey_responses" oils_persist:virtual="true" reporter:datatype="link"/>
@@ -3400,6 +3401,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <link field="fund_alloc_pcts" reltype="has_many" key="allocator" map="" class="acqfap"/>
                        <link field="reservations" reltype="has_many" key="usr" map="" class="bresv"/>
                        <link field="usr_activity" reltype="has_many" key="usr" map="" class="auact"/>
+                       <link field="usr_contact_settings" reltype="has_many" key="usr_id" class="rustv"/>
                </links>
                <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
                        <actions>
@@ -10905,6 +10907,19 @@ SELECT  usr,
                </permacrud>
        </class>
 
+    <class id="rustv" controller="open-ils.reporter-store" oils_obj:fieldmapper="reporter::user_setting_type_view" oils_persist:tablename="reporter.user_setting_type_view" reporter:label="User Setting Type View">
+               <fields oils_persist:primary="usr_id">
+                       <field reporter:label="User ID" name="usr_id" reporter:datatype="link"/>
+                       <field reporter:label="Default Phone Number" name="default_phone" reporter:datatype="text"/>
+                       <field reporter:label="Default SMS/Text Carrier" name="default_sms_carrier" reporter:datatype="text"/>
+                       <field reporter:label="Default SMS/Text Number" name="default_sms_notify" reporter:datatype="text"/>
+                       <field reporter:label="Default Hold Pickup Location" name="default_pickup_location" reporter:datatype="text"/>
+               </fields>
+               <links>
+                       <link field="usr_id" reltype="has_a" key="id" map="" class="au"/>
+               </links>
+       </class>
+
 
        <!-- ********************************************************************************************************************* -->
        <!-- What follows is a set of example extensions that are useful for PINES.  Comment out or remove if you don't want them. -->
index dce3603..0477fca 100644 (file)
@@ -378,5 +378,31 @@ CREATE OR REPLACE VIEW reporter.currently_running AS
    JOIN actor.card c ON c.id = u.card
   WHERE s.start_time IS NOT NULL AND s.complete_time IS NULL;
 
+CREATE OR REPLACE VIEW reporter.user_setting_type_view AS
+ SELECT  usr.id as usr_id,
+        (SELECT value
+         FROM actor.usr_setting
+         WHERE name = 'opac.default_phone'
+         AND usr = usr.id) AS default_phone,
+        (SELECT name
+         FROM config.sms_carrier
+         WHERE id::text IN (
+            SELECT value
+            FROM actor.usr_setting
+            WHERE name = 'opac.default_sms_carrier'
+            AND usr = usr.id)) AS default_sms_carrier,
+        (SELECT value
+         FROM actor.usr_setting
+         WHERE name = 'opac.default_sms_notify'
+         AND usr = usr.id) AS default_sms_notify,
+        (SELECT shortname
+         FROM actor.org_unit
+         WHERE id::text IN (
+            SELECT value
+            FROM actor.usr_setting
+            WHERE name = 'opac.default_pickup_location'
+            AND usr = usr.id)) AS default_pickup_location
+   FROM actor.usr usr;
+
 COMMIT;
 
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.usr_setting_type_view.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.usr_setting_type_view.sql
new file mode 100644 (file)
index 0000000..c84662b
--- /dev/null
@@ -0,0 +1,29 @@
+BEGIN;
+
+CREATE OR REPLACE VIEW reporter.user_setting_type_view AS 
+SELECT  usr.id as usr_id,
+        (SELECT value 
+         FROM actor.usr_setting
+         WHERE name = 'opac.default_phone'
+         AND usr = usr.id) AS default_phone,
+        (SELECT name
+         FROM config.sms_carrier
+         WHERE id::text IN (
+            SELECT value
+            FROM actor.usr_setting
+            WHERE name = 'opac.default_sms_carrier'
+            AND usr = usr.id)) AS default_sms_carrier,
+        (SELECT value
+         FROM actor.usr_setting
+         WHERE name = 'opac.default_sms_notify'
+         AND usr = usr.id) AS default_sms_notify,
+        (SELECT shortname
+         FROM actor.org_unit
+         WHERE id::text IN (
+            SELECT value
+            FROM actor.usr_setting
+            WHERE name = 'opac.default_pickup_location'
+            AND usr = usr.id)) AS default_pickup_location
+FROM actor.usr usr; 
+
+COMMIT;