Merging Task Notes into a Task

Merging Task Notes into a Task



  1. -- This script will take notes on a Task and append them to the Task's Description.
  2. -- This is used on systems that support Tasks but don't support notes on them.

  3. DECLARE @Header NVARCHAR(100) = 'Task Comments'

  4. UPDATE
  5.   __M_Common_Notes
  6. SET
  7.   Final_Status = 'Deleted'
  8. WHERE 1=1
  9.   AND Final_Parent_Type = '__M_Tasks'

  10. ;WITH P AS
  11. (
  12.   SELECT
  13.     n.Final_Parent_Id,
  14.     CONCAT(@Header, CHAR(10), CHAR(10)) + 
  15.     STRING_AGG(nt.NoteText, CONCAT(CHAR(10), ' ----- ', CHAR(10))) WITHIN GROUP (ORDER BY  fd.FinalDate DESC) NoteText
  16.   FROM
  17.     __M_Common_Notes n
  18.       LEFT OUTER JOIN
  19.     __M_Users u
  20.       ON n.Final_Created_By_Id = u.Id
  21.       CROSS APPLY(SELECT 
  22.         NULLIF(u.Final_FullName, '') FullName,
  23.         NULLIF(u.Final_LastName, '') LastName,
  24.         NULLIF(u.Final_FirstName, '') FirstName
  25.         ) fn
  26.       CROSS APPLY(SELECT
  27.         CONCAT_WS(', ', fn.LastName, fn.FirstName) LastFirstName
  28.         ) lfn
  29.       CROSS APPLY(SELECT CONCAT_WS(': ', 'Created By', COALESCE(fn.FullName, lfn.LastFirstName)) CreatedBy) cb
  30.       CROSS APPLY(SELECT COALESCE(n.Final_Date, GREATEST(n.Final_Created_At, n.Final_Updated_At)) FinalDate) fd
  31.       CROSS APPLY(SELECT CONCAT_WS(': ', 'Created At', FORMAT(fd.FinalDate, 'yyyy-MM-dd hh:mm tt')) CreatedAt) ca
  32.       CROSS APPLY(SELECT CONCAT_WS(CHAR(10),  cb.CreatedBy, ca.CreatedAt, n.Original_Description_Text) NoteText) nt
  33.   WHERE 1=1
  34.     AND Final_Parent_Type = '__M_Tasks'
  35.   GROUP BY
  36.     Final_Parent_Id
  37. )

  38. UPDATE
  39.   t
  40. SET
  41.   Final_Description_Text = CONCAT(Original_Description_Text, CHAR(10), CHAR(10), P.NoteText)
  42. FROM
  43.   __M_Tasks t
  44.     INNER JOIN
  45.   P
  46.     ON t.Id = P.Final_Parent_Id


  47. SELECT
  48.   Final_Description_Text,
  49.   Original_Description_Text
  50. FROM
  51.   __M_Common_Notes
  52. WHERE 1=1
  53.   AND Final_Description_Text LIKE CONCAT('%', @Header, '%')
  54.   AND Final_Description_Text != Original_Description_Text