Advertisement
DataCCIW

cust_CCIW_online_registrations_summary_hfsp

Jul 29th, 2019
348
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 9.82 KB | None | 0 0
  1. USE [ArenaDB]
  2. GO
  3. /****** Object:  StoredProcedure [dbo].[cust_CCIW_online_registrations_summary_hfsp]    Script Date: 7/29/2019 10:52:04 AM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8.  
  9. ALTER PROCEDURE [dbo].[cust_CCIW_online_registrations_summary_hfsp]
  10. @OrganizationId INT = 1, -- this param name is specific to the HTML From SPROC Module
  11. @NewRegistrantsLookback INT = 7, -- number of days range to create sum of new registrants for
  12. @FilterOnOwner bit = 0,
  13. @CurrentUser  INT, -- this param name is specific to the HTML From SPROC Module
  14. @FilterOnStatus INT = -1,
  15. @FilterOnEventType INT = -1
  16. AS
  17.  
  18.  
  19. -- Original Author: Erik Peterson
  20. -- Source: http://community.shelbysystems.com/arena/f/arena-administration/14861/how-to-hyperlink-event-tag-name/42256#42256
  21. -- Updates By: Nick Hilbelink, Tony Visconti
  22. -- 6/25/19 - changing inputs to bits from varchar, fixed event fees to show quantity and fee $ correctly
  23. -- 7/29/19 - corrected status for subevents which were not displaying correctly
  24.  
  25. -- Arena will pass in a '' value when the value is not specified
  26. IF @FilterOnStatus = '' SET @FilterOnStatus = -1
  27. IF @FilterOnEventType = '' SET @FilterOnEventType = -1
  28.  
  29. DECLARE @EmptyDate DATETIME = '1900-01-01'
  30.  
  31. DECLARE @html1 varchar(MAX) = '
  32. <style>
  33. .dot
  34. {
  35.  height: 10px;
  36.  width: 10px;
  37.  background-color: #bbb;
  38.  border-radius: 50%;
  39.  display: inline-block;
  40. }
  41. .registration_block
  42. {
  43.  */border: 1px solid black;*/
  44. }
  45.  
  46. .registration_block img
  47. {
  48.  display: block;
  49.  margin-left: auto;
  50.  margin-right: auto;
  51. }
  52.  
  53. </style>
  54. <table style="width: 100%;">';
  55.  
  56. DECLARE @html3 varchar(MAX) = '', @html4 varchar(MAX) = '</table>';
  57.  
  58. --I found out that when you don't specify the parameter in the url HTML From Stored Procedure is sending in 0 ints and bits and a '' for varchar
  59. DECLARE @html2 varchar(MAX) ='';
  60. DECLARE @PortalDomain varchar(200) = (SELECT DEFAULT_DOMAIN from port_portal where portal_id = 2); --my college church portal
  61.  
  62.  
  63. WITH registration_summary AS (
  64.  
  65. SELECT CASE
  66.          WHEN EP.image_id = '' THEN ''
  67.          ELSE dbo.cust_NHLC_funct_image_blob(EP.image_id,90,90)
  68.          END AS widget_image,
  69.        '/default.aspx?page=376&profile=' + CONVERT(varchar(8),EP.profile_id) as event_edit_link,
  70.        CASE
  71.          WHEN EP.[end] = @EmptyDate THEN ''
  72.        ELSE CASE
  73.               WHEN DATEDIFF(day,EP.start,EP.[end]) = 0
  74.               THEN (CONVERT(varchar(20), EP.start, 100))
  75.               ELSE (CONVERT(varchar(20),EP.start, 107) + ' - ' + CONVERT(varchar(20), EP.[end], 107))
  76.               END
  77.        END as event_start_end,
  78.        (SELECT COUNT(person_id) FROM core_profile_member TM
  79.         WHERE TM.profile_id = EP.profile_id
  80.           AND TM.status_luid = 255) -- 255 = Status Connected
  81.        AS registrant_count_connected,
  82.        (SELECT COUNT(person_id)
  83.           FROM core_profile_member TM
  84.          WHERE TM.profile_id = EP.profile_id
  85.            AND TM.status_luid = 255
  86.            AND TM.date_created > getdate() - @NewRegistrantsLookback)
  87.        As registrant_count_connected_new,
  88.        EP.image_id,EP.[end],EP.start,EP.profile_id,EP.registration_end,EP.registration_start,EP.approved_date,
  89.        CASE
  90.             WHEN (CASE WHEN EP_Parent.subevents_enabled  = 1 THEN EP_Parent.registration_end ELSE EP.registration_end END) < getdate() THEN 4 -- 'Expired'
  91.             WHEN (CASE WHEN EP_Parent.subevents_enabled  = 1 THEN EP_Parent.registration_start ELSE EP.registration_start END) > getdate() THEN 3 -- 'Not Open Yet'
  92.             WHEN (CASE WHEN EP_Parent.subevents_enabled  = 1 THEN EP_Parent.approved_date ELSE EP.approved_date END) = @EmptyDate THEN 2 -- 'Approval Needed'
  93.             ELSE 1 -- Live
  94.        END AS reg_status,
  95.        EP.registration_enabled,
  96.        EP.registration_maximum_individuals,
  97.        EP.registration_maximum_individuals -
  98.          (SELECT COUNT(person_id) FROM core_profile_member TM WHERE TM.profile_id = EP.profile_id AND TM.status_luid = 255)
  99.          AS SPOTS_REMAINING,
  100.        SUBSTRING( -- select statement below will start with a <br> tag, hence the substring
  101.          (SELECT DISTINCT '<br>' + F.title + ': $' + CONVERT(varchar(9),F.amount) + ' / ' + ISNULL(CONVERT(varchar(3),SUM(RF.quantity) OVER (PARTITION BY F.fee_id)),'0') + ' Purchased'  -- lists additional fees and the quantity for each
  102.             FROM evnt_event_profile ET
  103.             LEFT JOIN evnt_fee F ON F.profile_id = ET.profile_id
  104.             LEFT JOIN evnt_registrant_fee RF ON RF.fee_id = F.fee_id
  105.            WHERE ET.profile_id = EP.profile_id
  106.            --GROUP BY F.title
  107.              FOR XML PATH ( '' ), type).value('.','varchar(max)'), -- Performs an XQuery against the XML and returns a value of SQL type
  108.                                                                    -- The dot points to the current element
  109.                                                                    -- select statement without .value function applied: &lt;br&gt;Suggested Donation for Spring: 52&lt;br&gt;P
  110.                                                                    -- with .value applied: <br>Suggested Donation for Spring: 52<br>P
  111.                                                                    -- http://blogs.lobsterpot.com.au/2010/04/15/handling-special-characters-with-for-xml-path/                                                                                                                 
  112.        5,999999) as additional_fees,
  113.         ep.type_luid,
  114.        dbo.cust_AJV_funct_luid_to_value(ep.type_luid) as event_type,
  115.         isSubEvent = EP_Parent.subevents_enabled
  116.   FROM evnt_event_profile EP
  117.   JOIN core_profile T ON T.profile_id = EP.profile_id
  118.   LEFT JOIN evnt_event_profile EP_Parent ON EP_Parent.profile_id = T.parent_profile_id
  119.  WHERE (@FilterOnOwner = 0 OR T.owner_id = @CurrentUser)
  120.    AND EP.registration_enabled = 1
  121.    AND EP.[end] > getdate() -7 -- only include events for 7 days after they have passed
  122.     AND (@FilterOnEventType = -1  OR ep.type_luid = @FilterOnEventType)
  123.     AND (@FilterOnStatus = -1 OR
  124.             (CASE
  125.                 WHEN (CASE WHEN EP_Parent.subevents_enabled  = 1 THEN EP_Parent.registration_end ELSE EP.registration_end END) < getdate() THEN 4 -- 'Expired'
  126.                 WHEN (CASE WHEN EP_Parent.subevents_enabled  = 1 THEN EP_Parent.registration_start ELSE EP.registration_start END) > getdate() THEN 3 -- 'Not Open Yet'
  127.                 WHEN (CASE WHEN EP_Parent.subevents_enabled  = 1 THEN EP_Parent.approved_date ELSE EP.approved_date END) = @EmptyDate THEN 2 -- 'Approval Needed'
  128.                 ELSE 1 -- Live
  129.             END) = @FilterOnStatus)
  130. )
  131.  
  132.  
  133. --select * from registration_summary
  134.  
  135. SELECT @html3 = SUBSTRING((SELECT + '
  136. <tbody class="registration_block">
  137.  <tr>
  138.    <td rowspan="' + CASE additional_fees WHEN '' then '4' ELSE '5' END +'">' + EW.widget_image +
  139.     '</td>
  140.    <td colspan="1"><a href="' + event_edit_link + '"target="_blank">' + T.profile_name + '</a>
  141.          ('+CASE reg_status
  142.             WHEN 4 THEN '<span class="dot" style="background-color:#B62626"></span> Expired'
  143.          WHEN 3 THEN '<span class="dot"></span> Not Open Yet'
  144.          WHEN 2 THEN '<span class="dot" style="background-color:#E8D913"></span> Approval Needed'
  145.          ELSE '<span class="dot" style="background-color:#26B639"></span><strong><a href="https://' + @PortalDomain + '/default.aspx?page=3389&event='+CONVERT(VARCHAR(10),CASE WHEN isSubEvent = 1 THEN T.parent_profile_id ELSE T.profile_id END)+'"> Live</a></strong>' END+')
  146.    <td>
  147.  </tr>
  148.  <tr>
  149.    <td colspan="2">' + event_start_end + '<br></td>
  150.  </tr>
  151.  <tr>
  152.    <td colspan="2">Registered: ' + CONVERT(varchar(4),registrant_count_connected) + ' / ' + CONVERT(varchar(4),registration_maximum_individuals)
  153.     + CASE WHEN registrant_count_connected_new>0 THEN '<strong><span> (' + CONVERT(varchar(4),registrant_count_connected_new) + ' new!)</span></strong>' ELSE '' END
  154.     + '<br>
  155.  </td>
  156.  </tr>
  157.  <tr>
  158.  <td colspan="2"> Spots Remaining: '+CASE registration_maximum_individuals WHEN 0 THEN 'NA' ELSE CONVERT(varchar(10),SPOTS_REMAINING) END+'</td>
  159.  </tr>
  160.  '
  161.     + CASE additional_fees
  162.         WHEN '' then ''
  163.         ELSE
  164.   '<tr>
  165.     <td colspan="2"> Additional Fees: <br><small>' + additional_fees +'</small>
  166.    </td>
  167.  </tr>'
  168. END +
  169. '</tbody><tr><td><br></td></tr>'
  170.     AS [html]
  171.   FROM registration_summary EW
  172.   JOIN core_profile T ON T.profile_id = EW.profile_id
  173.  ORDER BY EW.reg_status, EW.start
  174.    FOR XML PATH ( '' ), type).value('.','varchar(max)'),0,999999)
  175.  
  176. IF @html3 is null SET @html3 = '';
  177.  
  178. DECLARE @intial_results_count smallint =
  179. (SELECT count(*)
  180. FROM (SELECT EP.*,
  181.         CASE
  182.             WHEN (CASE WHEN EP_Parent.subevents_enabled = 1 THEN EP_Parent.registration_end ELSE EP.registration_end END) < getdate() THEN 4 -- 'Expired'
  183.             WHEN (CASE WHEN EP_Parent.subevents_enabled = 1 THEN EP_Parent.registration_start ELSE EP.registration_start END) > getdate() THEN 3 -- 'Not Open Yet'
  184.             WHEN (CASE WHEN EP_Parent.subevents_enabled  = 1 THEN EP_Parent.approved_date ELSE EP.approved_date END) = @EmptyDate THEN 2 -- 'Approval Needed'
  185.             ELSE 1 -- Live
  186.         END AS reg_status
  187.     FROM evnt_event_profile EP
  188.     JOIN core_profile T ON T.profile_id = EP.profile_id
  189.     LEFT JOIN evnt_event_profile EP_Parent ON EP_Parent.profile_id = T.parent_profile_id
  190.     ) EP
  191. JOIN core_profile T ON T.profile_id = EP.profile_id
  192. LEFT JOIN evnt_event_profile EP_Parent ON EP_Parent.profile_id = T.parent_profile_id
  193. WHERE (@FilterOnOwner = 0 OR T.owner_id = @CurrentUser)
  194.     AND (@FilterOnStatus = -1 OR
  195.             (CASE
  196.             WHEN (CASE WHEN EP_Parent.subevents_enabled  = 1 THEN EP_Parent.registration_end ELSE EP.registration_end END) < getdate() THEN 4 -- 'Expired'
  197.             WHEN (CASE WHEN EP_Parent.subevents_enabled  = 1 THEN EP_Parent.registration_start ELSE EP.registration_start END) > getdate() THEN 3 -- 'Not Open Yet'
  198.             WHEN (CASE WHEN EP_Parent.subevents_enabled  = 1 THEN EP_Parent.approved_date ELSE EP.approved_date END) = @EmptyDate THEN 2 -- 'Approval Needed'
  199.             ELSE 1 -- Live
  200.             END) = @FilterOnStatus)
  201.     AND (@FilterOnEventType = -1 OR ep.type_luid = @FilterOnEventType)
  202.     AND EP.registration_enabled = 1
  203.     AND EP.[end] > getdate() -7)
  204.  
  205. SET @html2 = '<p>'+Convert(varchar(max),@intial_results_count) + ' Results Found Based On Filters</p>';
  206.  
  207.  
  208. SELECT @html1 + @html2 + @html3 + @html4 AS html
  209. --SELECT @html1 + @html2 + @html3 AS html
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement