Merging Task Notes into a Task
- -- This script will take notes on a Task and append them to the Task's Description.
- -- This is used on systems that support Tasks but don't support notes on them.
- DECLARE @Header NVARCHAR(100) = 'Task Comments'
- UPDATE
- __M_Common_Notes
- SET
- Final_Status = 'Deleted'
- WHERE 1=1
- AND Final_Parent_Type = '__M_Tasks'
- ;WITH P AS
- (
- SELECT
- n.Final_Parent_Id,
- CONCAT(@Header, CHAR(10), CHAR(10)) +
- STRING_AGG(nt.NoteText, CONCAT(CHAR(10), ' ----- ', CHAR(10))) WITHIN GROUP (ORDER BY fd.FinalDate DESC) NoteText
- FROM
- __M_Common_Notes n
- LEFT OUTER JOIN
- __M_Users u
- ON n.Final_Created_By_Id = u.Id
- CROSS APPLY(SELECT
- NULLIF(u.Final_FullName, '') FullName,
- NULLIF(u.Final_LastName, '') LastName,
- NULLIF(u.Final_FirstName, '') FirstName
- ) fn
- CROSS APPLY(SELECT
- CONCAT_WS(', ', fn.LastName, fn.FirstName) LastFirstName
- ) lfn
- CROSS APPLY(SELECT CONCAT_WS(': ', 'Created By', COALESCE(fn.FullName, lfn.LastFirstName)) CreatedBy) cb
- CROSS APPLY(SELECT COALESCE(n.Final_Date, GREATEST(n.Final_Created_At, n.Final_Updated_At)) FinalDate) fd
- CROSS APPLY(SELECT CONCAT_WS(': ', 'Created At', FORMAT(fd.FinalDate, 'yyyy-MM-dd hh:mm tt')) CreatedAt) ca
- CROSS APPLY(SELECT CONCAT_WS(CHAR(10), cb.CreatedBy, ca.CreatedAt, n.Original_Description_Text) NoteText) nt
- WHERE 1=1
- AND Final_Parent_Type = '__M_Tasks'
- GROUP BY
- Final_Parent_Id
- )
- UPDATE
- t
- SET
- Final_Description_Text = CONCAT(Original_Description_Text, CHAR(10), CHAR(10), P.NoteText)
- FROM
- __M_Tasks t
- INNER JOIN
- P
- ON t.Id = P.Final_Parent_Id
- SELECT
- Final_Description_Text,
- Original_Description_Text
- FROM
- __M_Common_Notes
- WHERE 1=1
- AND Final_Description_Text LIKE CONCAT('%', @Header, '%')
- AND Final_Description_Text != Original_Description_Text