From a314e68e86ce97c9802ad813967f3ba4e51b89c7 Mon Sep 17 00:00:00 2001 From: Auldrin-Possa Date: Tue, 19 Aug 2025 17:11:31 +0100 Subject: [PATCH 1/4] TD-5552- Created a stored procedure to send retiring self assessment email notifications --- ...endRetiringSelfAssessmentNotificationSP.cs | 16 ++++++++++ .../Properties/Resources.Designer.cs | 28 ++++++++++++++++++ .../Properties/Resources.resx | 3 ++ .../TD-5552-SendRetiringNotification.sql | Bin 0 -> 15236 bytes 4 files changed, 47 insertions(+) create mode 100644 DigitalLearningSolutions.Data.Migrations/202508191440_CreateSendRetiringSelfAssessmentNotificationSP.cs create mode 100644 DigitalLearningSolutions.Data.Migrations/Scripts/TD-5552-SendRetiringNotification.sql diff --git a/DigitalLearningSolutions.Data.Migrations/202508191440_CreateSendRetiringSelfAssessmentNotificationSP.cs b/DigitalLearningSolutions.Data.Migrations/202508191440_CreateSendRetiringSelfAssessmentNotificationSP.cs new file mode 100644 index 0000000000..d6f109b420 --- /dev/null +++ b/DigitalLearningSolutions.Data.Migrations/202508191440_CreateSendRetiringSelfAssessmentNotificationSP.cs @@ -0,0 +1,16 @@ +namespace DigitalLearningSolutions.Data.Migrations +{ + using FluentMigrator; + [Migration(202508191440)] + public class CreateSendRetiringSelfAssessmentNotificationSP : Migration + { + public override void Up() + { + Execute.Sql(Properties.Resources.TD_5552_SendRetiringNotification); + } + public override void Down() + { + Execute.Sql("DROP PROCEDURE [dbo].[SendRetiringSelfAssessmentNotification]"); + } + } +} diff --git a/DigitalLearningSolutions.Data.Migrations/Properties/Resources.Designer.cs b/DigitalLearningSolutions.Data.Migrations/Properties/Resources.Designer.cs index 631af7bc66..5a70756bd6 100644 --- a/DigitalLearningSolutions.Data.Migrations/Properties/Resources.Designer.cs +++ b/DigitalLearningSolutions.Data.Migrations/Properties/Resources.Designer.cs @@ -2564,6 +2564,34 @@ internal static string TD_5535_Alter_GetActivitiesForDelegateEnrolment_Up { } } + /// + /// Looks up a localized string similar to SET ANSI_NULLS ON + ///GO + /// + ///SET QUOTED_IDENTIFIER ON + ///GO + /// + /// + /// + ///-- ============================================= + ///-- Author: Auldrin Possa + ///-- Create date: 04/08/2015 + ///-- Description: Uses DB mail to send notification to delegates on retiring self assessment. + ///-- ============================================= + ///CREATE PROCEDURE [dbo].[SendRetiringSelfAssessmentNotification] + /// @SelfAssessmentId int, + /// @TestOnly bit + ///AS + ///BEGIN + /// -- SET NOCOUNT ON added to prevent extra result sets from + /// -- interfering with SELEC [rest of string was truncated]";. + /// + internal static string TD_5552_SendRetiringNotification { + get { + return ResourceManager.GetString("TD_5552_SendRetiringNotification", resourceCulture); + } + } + /// /// Looks up a localized string similar to IF OBJECT_ID('dbo.IndexOptimize', 'P') IS NOT NULL DROP PROCEDURE dbo.IndexOptimize; ///IF OBJECT_ID('dbo.CommandExecute', 'P') IS NOT NULL DROP PROCEDURE dbo.CommandExecute; diff --git a/DigitalLearningSolutions.Data.Migrations/Properties/Resources.resx b/DigitalLearningSolutions.Data.Migrations/Properties/Resources.resx index 41e1de40a2..138250507c 100644 --- a/DigitalLearningSolutions.Data.Migrations/Properties/Resources.resx +++ b/DigitalLearningSolutions.Data.Migrations/Properties/Resources.resx @@ -505,4 +505,7 @@ ..\Scripts\TD-5535-Alter_GetActivitiesForDelegateEnrolment_Up.sql;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16 + + ..\Scripts\TD-5552-SendRetiringNotification.sql;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16 + \ No newline at end of file diff --git a/DigitalLearningSolutions.Data.Migrations/Scripts/TD-5552-SendRetiringNotification.sql b/DigitalLearningSolutions.Data.Migrations/Scripts/TD-5552-SendRetiringNotification.sql new file mode 100644 index 0000000000000000000000000000000000000000..dac12e78400b072add6ae5b4eb560d731335f642 GIT binary patch literal 15236 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 Date: Tue, 2 Sep 2025 15:29:37 +0100 Subject: [PATCH 2/4] TD-5552-Email format updated --- .../TD-5552-SendRetiringNotification.sql | Bin 15236 -> 14726 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/DigitalLearningSolutions.Data.Migrations/Scripts/TD-5552-SendRetiringNotification.sql b/DigitalLearningSolutions.Data.Migrations/Scripts/TD-5552-SendRetiringNotification.sql index dac12e78400b072add6ae5b4eb560d731335f642..a2574a85c5f519ff092aff3bb619335fe85ba628 100644 GIT binary patch delta 422 zcmYjNyH3ME5L{D4fsRKJCqi09QE!PAMQW{WBp4fIxKAZK^9z{TJfsV=KAy^DvLMrkpK!wpiKz;+2 z6grG7#r-!cLvI3|b@t_Xb@N~s)rBI{wRWLi#Tsdi@$Zxfc}PQ<+NQLej?}G+d^gu* zR;`%IdjK8fx35`h!;k`*R%=&F)l4fUn9kbq1f3!LsvQ>m3`iI89&{qTYmT1?fh;|m zJVDN=sr}UN#qzSVU3k`4xoFvmQJl2j4S8})!iOE%cQ0h_mJ07ETKNwabN9{o0rLE0 AA^-pY delta 705 zcmb_aJxc>Y5Ph+TUtkfm(Po1=u23|_gNTHPB3P&(c9xgqVh-XdmrH`Aun~LNK0iT( zMX_zIikAW_E8{*WLTwoGz@*>*J}6?t5wdl1uBIoM%4r z8!7$h%(~mCBSC-|ihBbgTC{5LExJ5J1HF~aUMY0xZ}L-!aL%>KHNxpIzQSEGvcq3^ zJ}O)VtCJ@c+RPqch1QYv`1Y)bMYP)F2wQYWeT7TLwXum3R&k*poZ?}X$QdqdwCI+4 z5qZio6J|*)QlkP6jcJGEMm8U_m}mEM zVqBqz1Ng?|dvb%BrAfH>!!7Rp(=D3C!c%IbM&B0a^!s{6m%YZcJQ{bPlDH#p&-A@y P?6+h-)EV Date: Wed, 10 Sep 2025 08:31:12 +0100 Subject: [PATCH 3/4] TD-5552-Moved general TEL team details to config table. --- ...endRetiringSelfAssessmentNotificationSP.cs | 15 +++++++++++++++ .../TD-5552-SendRetiringNotification.sql | Bin 14726 -> 15546 bytes 2 files changed, 15 insertions(+) diff --git a/DigitalLearningSolutions.Data.Migrations/202508191440_CreateSendRetiringSelfAssessmentNotificationSP.cs b/DigitalLearningSolutions.Data.Migrations/202508191440_CreateSendRetiringSelfAssessmentNotificationSP.cs index d6f109b420..e657f3d384 100644 --- a/DigitalLearningSolutions.Data.Migrations/202508191440_CreateSendRetiringSelfAssessmentNotificationSP.cs +++ b/DigitalLearningSolutions.Data.Migrations/202508191440_CreateSendRetiringSelfAssessmentNotificationSP.cs @@ -6,10 +6,25 @@ public class CreateSendRetiringSelfAssessmentNotificationSP : Migration { public override void Up() { + string generalTELTeam = + @"[ + { ""FirstName"":"""", ""LastName"":"""", ""Email"":""Support@dls.nhs.uk"" }, + { ""FirstName"":""Anna"", ""LastName"":""Athanasopoulou"", ""Email"":""anna.athanasopoulou@nhs.net"" }, + { ""FirstName"":""Benjamin"", ""LastName"":""Witton"", ""Email"":""Benjamin.witton1@nhs.net"" } + ]"; + + Execute.Sql(@$"IF NOT EXISTS (SELECT ConfigID FROM Config WHERE ConfigName = 'GeneralTELTeam') + BEGIN + INSERT INTO Config VALUES ('GeneralTELTeam', '{generalTELTeam}', 0,GETDATE(), GETDATE()) + END" + ); + Execute.Sql(Properties.Resources.TD_5552_SendRetiringNotification); } public override void Down() { + Execute.Sql(@"DELETE FROM Config WHERE ConfigName = N'GeneralTELTeam'"); + Execute.Sql("DROP PROCEDURE [dbo].[SendRetiringSelfAssessmentNotification]"); } } diff --git a/DigitalLearningSolutions.Data.Migrations/Scripts/TD-5552-SendRetiringNotification.sql b/DigitalLearningSolutions.Data.Migrations/Scripts/TD-5552-SendRetiringNotification.sql index a2574a85c5f519ff092aff3bb619335fe85ba628..fd2515846341758b94712fbb45d4e1efaef26676 100644 GIT binary patch delta 1062 zcmcIjO-lk%6g@^!_Cb_HNG--nX2kNNkXAuzT8bZJ+6NI~Vv*PgX;6!B*D7f7{znAv z+Vuxow2J;k|Df~U7+Ec%Aci~4eQ)kN=bn4sRsH_rZhO`)}SGSGo0W6 zWt^hUJd6##4UzRvh(}jn)4)6e>hW+rhb(LNSyez95yZG+K<;F*sWR5`JBO8a7Qv1@ zkEh0vVnm56Q47pctdzBLj3C3pHu27qOvUcNfUAxRa`T}^o)t1Jp~3v)FOOKCsP$^9 zGrI_nIYq@kSV$5xOQd}=3lpnAbc3}%Mhzwoaf~CLRK_{qv&7digI&Hgco|W}C(jy_ zHKxT+Ty{H$E!OfM9eePJhbf0$SDml}apRx877g}U z&CfG5+r4Ytmor(V4kqK2>s9(qIxo*$Dx`N{S~_LuRSmy#i}4$~gnkk#p{`tpO?F(3 wmfJVhBc2?i`ZD5FRo>19yRxQixz(Dr)w3>&AxGS!CTs(&>Rzyq=XZR`;>LqDsHbtBM3q;8c%wKP9`43#*AFr zFo6uQUx$#5B_%gl@b%hv#Gl7-61h)S!#+XP>Be{KcI3m$3zJ?CxQvc&7}OuxliDbj VE42Toso}MC&-{fqr7+( Date: Wed, 10 Sep 2025 14:13:07 +0100 Subject: [PATCH 4/4] TD-5552- Removed 'While' loop and unused variables --- .../TD-5552-SendRetiringNotification.sql | Bin 15546 -> 14320 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/DigitalLearningSolutions.Data.Migrations/Scripts/TD-5552-SendRetiringNotification.sql b/DigitalLearningSolutions.Data.Migrations/Scripts/TD-5552-SendRetiringNotification.sql index fd2515846341758b94712fbb45d4e1efaef26676..a5c54373752ac2dec566e4a08c65a277281a87da 100644 GIT binary patch delta 1331 zcmd5*O>YuW6uq>H4oG7mDH#auqkzm%G;OdTq^U*Pq%pN>CDx76YQfZCF}5sNnYeJ# z#BR=iFfMIKT)0x##*dweJL5u=Ci)XRGZd=O)I=AWx0rb|_ucbx&wF0~UVR!JbStse zaV~|oJ-T1XimXams&Y^6$dascUzJtdH*|+WzX~=!4?S@7dc=jV*_i$O771cIb)s=S zdenjS*n%f66H=3kOo~Nb-ne6MIv6)!^lU7I35KifMW4bQdJJH%}O0LNzV&9P4?0S=ZlT_DP zwIDNcLFObc1-=EMl{4{b*y}S}Snb{#9EmaaE|!M#Za*rKL0r!Ep_uU6 zoXHno^drGMc_?iSR4?!-o_ZunI2|K6B^aE*e>NYO(8a+SEt>K+%v%K226< zT58Ga9DT4gwbeWv@nUqssg=n6E*-2R?9zkHL?|Ys#&0#Iqr`qSS(6e%$pWY8^zfZZ zo4zYN8V$u2UHxggJW=M!DmyDqhq>Z@MQ$|~llsA4in20=52@*fI$3sLW86xK^KVm< z?R2Z#*}YOykUa7kzk5+;ImdZ2Ht^o(!)7`c*XUg9>wakp=f?0X?Zsp!5YlA7%B@@m u!_h$A>`JSJJx%oH?Al4)nO#?I{-2ckI(`2qj%I)7=$^O1x)U8YV&ezlw)dg{ delta 2061 zcmdT^-Aj{U6hFhS&2(5g=QLm6<;-`@O*f}r_`#MMN`6(Vgpe>@XiT?SQeFuWbeF{G zK81*&g3Ox;Lc59Rs{R8nx{9C-2@0Zq&$G>axQZZzczNFQyze>Bd4A{PcRq!m%|Es& zy-sqHN+&5wLCA5e)6_@(G(f%BhbW9Eg570ERa(u`Bz8fXf%P;jqNMT*rOMh(b94z$ zkY-`sPd%{ery&YJc4E1CO{s1f#Hp)Uv>KhjjpEjBd18?KG)kJZwDYE=me-a2d|&U$ z^TBGIAL*SAADxAL0!Kh19HLV=c^qE)q}0emE!4`-m73Mt$~7IoRLX0TheiN6Oy^}F zL4X~HyC8p5Obc#m!eftv&x9ACVHy!ZVVyz1@*Iuf%a1@*=(705|094lOoQ0XAaRp) zj$HB`hK$lYRy>>lVvD3Xu~R!0Q=wc2GNjeXhj@2pzeDEThwI`w=R4j;E^-uE4CDip zY50$#R`IX_s*_h7wPvA3j(6yW3r+mWQN*w7N(y4x?qsXe%pvU%zppSlVl@}F&W0xq zJukcJxJxbM9<_p>U`0%2ywRFppppaU>-nN;;rzx*UQ)k78u_lZ&m^L*rw&9KqOL?9 z_^Wj+XRkWW%Z5@89av|r_6={<+PKU%T5LdfI}u-)uAoc9wkqCgQn|$K;tg9Rf3ZE} z4Nq>J=$HX;pjVbo1NzLqYQX6qUUQC+{+3c*1K(1_+v0Us+Y?BDPCUK1uP5=3zaKPn zq&1h{*~&YGR@8J_GDKu4^Bz&(n3vc)#ai57^*cRqS$?VKMa5JQ*YcufaR~o{ae|%M zswL_mSxfD_;5G4*ruQeji<~AYl$;F_aDM{P2|7){Zva*UkaOsypy)L*C-SDyaWiZ+ znE9z<{C`0(*+$6%%cN6?*IY+e^BXVd{>+X&BANY|5=cM4EiKjg_<^UL@3~a|?AfQA z;^Jm^o=iI*YpqZDf1|k#wqcVAeAZi%g^6{vVVfD7ww2vv-@l1xIBkk;b2Wvh{~4=| I9BRA%6RMDa0ssI2