From 3ab566389bacd73fe46da81d35b2183f88add7fc Mon Sep 17 00:00:00 2001 From: Shahadat Hossain Date: Sun, 5 Oct 2025 14:25:28 +0600 Subject: [PATCH 1/3] Pay slip mail body need to update Done --- Payroll.UI/Payroll.UI/Salary/fPayslipSendMail.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Payroll.UI/Payroll.UI/Salary/fPayslipSendMail.cs b/Payroll.UI/Payroll.UI/Salary/fPayslipSendMail.cs index e16b206..52dc3da 100644 --- a/Payroll.UI/Payroll.UI/Salary/fPayslipSendMail.cs +++ b/Payroll.UI/Payroll.UI/Salary/fPayslipSendMail.cs @@ -352,7 +352,8 @@ namespace Payroll.UI sb.AppendLine("Dear " + item.Name + "

"); sb.AppendLine("Attached your pay slip of " + dtpfromDate.Value.ToString("MMMM yyyy") + "." + "

"); sb.AppendLine("If you have any query, please contact :" + "

"); - sb.AppendLine("Md. Showkat Hossain, Mobile-01711679640, email: fkanak@celimited.com" + "
"); + sb.AppendLine("Md. Showkat Hossain, Mobile-01711679640, email: fkanak@celimited.com" + "

"); + sb.AppendLine("Note:
***Please use the last four digits of your mobile number, that you have shared with us, as the password to open the pay-slip" + "
"); MS.Body = sb.ToString(); } //else if (nType == 2) From 367b1ae98e857b0fa76b3e612fb976c205019f53 Mon Sep 17 00:00:00 2001 From: Shahadat Hossain Date: Sun, 5 Oct 2025 17:28:00 +0600 Subject: [PATCH 2/3] Pay slip mail body need to update again Done --- Payroll.UI/Payroll.UI/Salary/fPayslipSendMail.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Payroll.UI/Payroll.UI/Salary/fPayslipSendMail.cs b/Payroll.UI/Payroll.UI/Salary/fPayslipSendMail.cs index 52dc3da..acf1369 100644 --- a/Payroll.UI/Payroll.UI/Salary/fPayslipSendMail.cs +++ b/Payroll.UI/Payroll.UI/Salary/fPayslipSendMail.cs @@ -353,7 +353,7 @@ namespace Payroll.UI sb.AppendLine("Attached your pay slip of " + dtpfromDate.Value.ToString("MMMM yyyy") + "." + "

"); sb.AppendLine("If you have any query, please contact :" + "

"); sb.AppendLine("Md. Showkat Hossain, Mobile-01711679640, email: fkanak@celimited.com" + "

"); - sb.AppendLine("Note:
***Please use the last four digits of your mobile number, that you have shared with us, as the password to open the pay-slip" + "
"); + sb.AppendLine("Note:
***Please use the last four digits of your mobile number, that you have shared with us, as the password to open the pay-slip" + "
"); MS.Body = sb.ToString(); } //else if (nType == 2) From d25b979d2f225b5176b0097a1576381d6123e67d Mon Sep 17 00:00:00 2001 From: Shahadat Hossain Date: Wed, 3 Dec 2025 12:15:03 +0600 Subject: [PATCH 3/3] 20251202-1870 Issue with Payslip Mail Exception Fixed --- Payroll.UI/Payroll.UI/App.config | 17 ++--- Payroll.UI/Payroll.UI/Payroll.UI.csproj | 1 + Payroll.UI/Payroll.UI/Resource/home_pano.jpg | Bin 0 -> 5851 bytes .../Payroll.UI/Salary/fPayslipSendMail.cs | 65 ++++++++++++++---- 4 files changed, 60 insertions(+), 23 deletions(-) create mode 100644 Payroll.UI/Payroll.UI/Resource/home_pano.jpg diff --git a/Payroll.UI/Payroll.UI/App.config b/Payroll.UI/Payroll.UI/App.config index 1a7e864..3c94861 100644 --- a/Payroll.UI/Payroll.UI/App.config +++ b/Payroll.UI/Payroll.UI/App.config @@ -7,7 +7,8 @@
- + + @@ -20,13 +21,13 @@ - - - - - - - + + + + + + + diff --git a/Payroll.UI/Payroll.UI/Payroll.UI.csproj b/Payroll.UI/Payroll.UI/Payroll.UI.csproj index e873de2..21cceae 100644 --- a/Payroll.UI/Payroll.UI/Payroll.UI.csproj +++ b/Payroll.UI/Payroll.UI/Payroll.UI.csproj @@ -3504,6 +3504,7 @@ + diff --git a/Payroll.UI/Payroll.UI/Resource/home_pano.jpg b/Payroll.UI/Payroll.UI/Resource/home_pano.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8e025f18678f76ee561e38e18cda5f40e0ffa017 GIT binary patch literal 5851 zcmbW4c{r4By#F8jZmeTB*&>o9OBj2$e1#}w4TT{j+r-%SEun~FtRY)=F_FEJWM?d6 z29d&yN)LuP`u)!JJ=b;qI_G?z`}yns+|TuX-S>UHKhK9UM_Bj*ga=j+udho{^QAm6e5=g@uisi-V1wlbwZy1Ioe4&BM#f z%L?J+hw|`q@$mBe{RkD!=^9!(COSGM9yS&>p8s`F-T|D9fDAyQp%MqEIjLwksVD;g z3;?L;PSySu{GUNZeX5b3fsu)swKr=eBlb z5D(x{j>#%vlrU)Q<-Imel)UKnAeM<4%EvDtD0Nm^=A5jGs+#&G4Nb$#M#d(lW>;)% zuivn{dCT7Y&Rq{rFNAksP;f{n@?lt9d_rPUa!P7;&XcFPdC&3-O3TVCURG9BziMi3 zX>Duoc+=U}KQK5n{QkqoiOH$ync2B{ES|8sw*GZv^V=3_@8_@I`+vZL!@pcq0L}l$ z`j_m#adDnBN-ix%90WTm!hpm17ur46;fZdzmCIUL*3l zJs4+(N~++cNPp4(AKCv5EcX9I_Al6fabW>g8miO7qu~T}fujaHkd5eKG$}o$a3Tys z`zC0W%>x6A=lgklwmyyH^|v2es;=7~kG(5|m|$j#L6M5B0(p#cptm)6<>Sm!9(dXJ zfw*#Wn6XeO(XYPDfuxo~@U^odd8S=p?PmY7+ud9GjavJAHBRo{#dz5FwdDp@vy4~n zS>RS7T~c(grNELxI_558YiGM%jtLPfGLCqjm*TN4HNG>vb~SBmS1x}l2ZR{#AZ(&~ z?BIkEGw^OWep9td*W<13k*p7LC;QM>$S6^a%3?%J;jAs^@s5vHe;$qnewSww0c)mq znm6iF|BlZPJLA7!_OyI&9kv6lN3SHNqlGZ)_?p6hTE}94v0Rcr|7!#Grsr*{nDC@I z`gfLbZ<*1(#JgFU`YxBZUJtWpMI}!McyB2x#WYu3>deVhSE`*6eNq9r)BW>novtAm zP~)X`__p##4?;CziX~9E-|)-u`;iXehbK=rMOi@!qW@4gbewF6AlCG8ENq2jIT`Yt zh%|H21}{>%C9Ukrg4WK060s_b4|kLxJQQG_Ob^PfxJE}2EPWnFeNVlv|9-83 z8I|p=%bG|5`c+Zl-zfldL$3>Xb)Eu{Iu8~GM45`Avdjq-ngI!~Isi8%?W__0isXG9pjnqULPvi8aP$u{>K1;Ugwu*Av zTyyozPdM7fUACC7ZHvOJ0ZvoG*PiDMbi*!=<>YlbSPL5Aju|&VQ#BGL3_PhWlY8oww{6p2Xe0b5)DqC;+yt(Gu?ybma8% z$HVcju>8npDv=X90wlX3g*ehT`^dZi>ap6n(TIw?KSqvRs*Gta6M zG7}@^dq|MX?lbcUE}b&=BnrTYi~Ds6J(BOfIoZW7abfq3VZ@XbQnf|=mC2v%#uw#y zg%EKEZwk;%d+3o-B^`|s+qdwsI-*Oj!^^aNUcQ|cdWg2H0#P(6_1u% z6k3{nfaZ9@#Lzi-70rx%CC^~@1!GvY_zg<|1|cGn^7opCCCn-u)F{9O?Pn{}4ZQQh zYFyXW(|hXu_ohBx_cqWH{k^gzu^&WgPjUaEvYU9q?PMR$_}lb$7cu?DNpM$?*GT`* z)oyGJ1NoxVaGVFp4dm{n0CP&-=y{fa)6FR7&;5R1h~uGv>zhXOzJ+61XsIa`i8yW@3ZBH@p4D_7&9@ZaRg+Qm*I z)jo<5P4r$nG0Nq6F!l30!|P6XtDKoPWd`ZEi+8V7Tpf;Jk0bh9gPS<^mfg4$-Zw=< zSo62n4qcdgh1EuygRTgD=v^EjZ>;xi3oR7PO$I^c$F7suiqaUO;V|vd?I*MQllu6Z zqAbsfeRKHNIb36l%H6RYS`G0y&Q>%HIjY-&?FZR~FsfhogSMSBP7TdIxB5s8^4K2w z^udCbo#Qgwj09*%aI)<0rk<+9+&K}>G@3-)VA{irY)#e%8`}(d?wL1IYk#^pQ)*lF zhXN$+ZeE(II)s1`u19JptLfTb88q*fS-Peae9umui3gqMSr&%A3q<|C1vJNMe3nZ+ zZt4~xYlHs8BNI^}qIz75Kd1NM02CV7kkqmwVTe{;`{^cY<-0{6>FRQs3;`WHi4FLk z#1>eyac4r|6Klt@7AS(5KIiL}T__OMq%HTMTM_9#D5`W^MrNw%Nl>*g>2>Cg4KI`L z9Qdcbp-ad;^oHx+;Ov)i{fUI|I(M$MjggPniAg^ui8W5MzmB%qXZyoWo>w^XtA>XV z_w!Wi78AJ)%2Vz!D>s_R!uYj(uK4Qi-^;X}_%*rWPp>*uU1e5**fYX=32JpcTe$N< z=s?S1L>F14E$3pFH)Kx%Vo#(NkPf|pNd5ZrcOo=)UZzN6-ab{Fh!IjurnSZQr15?& zVg#*MSs=-1W{(b{)p2*1iseul-LwpmvYlCFCi8s zl!EFje95Y}>QpE|;xgyko4?J1lDgvhX6hKb^z+5o)>rtaP2G$yP83gJ&K zHoyoxefA$)C#c44;%LibDUt=w6LA@Nqwhsrc6pHxtk;DJ<$!NU6;&kh#sAnrsg{D7 zdf{nr&mKpovITs$8nD|1%s!z*3v%|oK%ek(uVt>ZK~c7;A7p*}?+(L=SIhe6tsUX< zV^W=EsEI3q`4HJkU@BZzF}(unC@t|CtRb4L?8Ze3BQu?zQtCK+o_4cMMEP95r zP)C@;8z54(FY+V085c*kAiC(27}7CJczHYf=~bVmJH(}UAK?pufm zU&(Nb8^Qflit}#Mn0qk4ipA{puT*BXTF!S)_U3GcLUqJRp{evG1jNf+@%`5=_^(f2 z&uLsv(G!Ugk!!$!8U&xH)MZW5RW$w^Yorhni_l?iLzGeg)56jagw@VUik?P}H2ilx z+T8&4(MBobN@mH^)d-dqh5>~{Xs8bF7xG1X<;?G=Uw$3iPxgjPe)1dW*t_h@KuVB^ zB7SZ6RdI>4&l@ryOUiX&L@7vYwpoPMdjE0eZck-|h}xgqyC3Sh@bKXNC7k0}e`buc z(zt3*G&ZCRU+w+{rS2R2YU>Xq0BU3VEGJ(t>N#yTBQAZ~*ACAxkP(VU4|SE5TKE%s z_`qn7>3Vm&HvgVF?1M#7~*YC-qaniU~R$Lu&5-m#t|HuHbC^c zq00^zlKMSVgso*?7L0aSbdW4^FcW?$QcFYB^b`K+Y);bc$1#&#>&Z%A;4~{PtoEY> zCq({l7Js(+`cgjdbsWJ_hwsl=~@2WLTM>SfeRY(u!Vv*=8 ztsO%0Gjq|>MY!gxyB$|8KWDs~>%je1ds)@#v@^|2djX(1P9=)i^kF?>2uv7W0{_>R z#-5%$JL1bX{?d8!Z>O^PvX>x-n5Q?u_`fEmLvEF!^k!5RK9Gf0=~Lw+O(jpp zrU+JThn?{sykHr*nWhtZl4fZa4zz*4s%qJeMmyE z%w+p#Ri6}sze;mHb%ImnhR4z87paYSCrg54w?b>ufCWK`1(6qfDA#2kG&$pxvVNez zqW%n-x2qF|dJ6kN0csoiEZLEP{fDoSaIFTcewA1I53>|Mj|^wR=t61skBPw|eyxO| zap!|q@1@2Y4rA8TsLr%46(aG~L!3_}++?S%YE;UQA01v~_KRgk7YRvZf{*(tK&f}s z{Hg0-D`L2`aU{4v0WMeQ6F;5S`xqkbINFs0jH|u_r3tFbNyI$-pG2~*cPBdC|JNnS z_O=U`)f)MueV%9QtjX%JkgwvzSAN=!e)xD-_1sVtK_|iRY2`fz4eQy74p^-HP6fd~ zA(C&ZHN2;7%Pxe|GB9xc!1sJoO}sGGwsVY~z`6RsSnGf%rLqIbidAI|`o@C`8D#>W zm2etk8&^vk9vB~ZJA{mP%?i)55ESBdU?fAs7!WqcfDBoZF>yK*)=a$HA^#1}(` zRJwqEd)P_qj+tLeTER;_MYVZ+Of>k=$}^^xWLoQhqULpJm^e}K(lZ}-%LoKIhJRit;p}td)2X$TQILQ{ZLag@96Lx$gLy|!N02tFbjvk_F`g~K zrTV4|zHkfmM2vPh){&9$Cb%sFE1ho2TOs8qscgzDPSqMy3@L@TEET4`pn4G&RQB;7 z&c^%3jKki<1zl{K<+MCT?ih{t=fru7N~#kV5aUJ+&uRA`z(cJ*{xiq=D4iyA=|yHi zt@)7&BBbct^ZrRM=d(WRv$}YZpYE+@Zt5Ph+h<~%Jbg^YjS z-$Z%!Om)kR;%}lK=pHa_iFR+LZCHNoii!a1W3kUwZ z$Li7SLPdOr$(%>}%g&%X!LOPigsk5|3582GVZD@x&q3Mz+Bq`5T4l%>yx$0+5gP=; zS5kNYPCXIDb0y-ewsf?_``avTb zu6(FZYHD|m7sx#_^@e>>{6)K~It}ixqV72jQvfD8q>Gu48cU@fpM`nbMK%h62@$vM zVz+zrgzDFQD^1`Wt!Z&|sCd&-lPb?g!nJLjA_9kPkbZJLHAwmLmYd{l z(uMi956$mU8c}HBS%kuHArG?e`{kSdchW4g3EC#sMlQ{WZJu*-`OhO)fX5eBo~ysM zm=`F9*f7?N>+QZP7LR2g&nlY6pU5AV__d&E7QncFi1l^BygQZU^N6OUhXKP?!(pU* z*>D}>@pH6lV=vq*g5wDL&lLtTbl(vT1J5?gm*O1zelC>fk~B5!WbZDC=NcP)sgZ4j zDe_Q(EJi$53_G~w6BRNWDI`-ZuNHNg2rYA0&QxZ}h#ZZPD4_tiW-w`kv%1W|6o74U zQw`n19$g^$s)in2{k@H^Z>sXJEzvm3!=R_n-dW2nRrXHK;%3=3+Y_$KBv@=-pCafN zg@xgdPcqmrAr!zJ6QOx0TP0nFUC@n5lD*YVZw9V}?~rPGef$cerm`n2A3xiP`ZCZ! zmYMkMNHxbmNR^Y!D3Yz&^4UDmB+euh-`vdYY3Yd>D)jUh!31Ei;oMxq?X(BSK78-E zK?uI+sr;j)BU9vAU5%cH0f7OoDxayhFCzp|PmJ)!_se2ZWlBG!EqwZoK5YO6PB@W# zy`4JoJ$xvE@O_q>+uaj~#|0`~VU5;jsp`ukCwdr9TO%o(UR}`o)@jT9QKl}tEt!ym zsUJN3G0g=HDS(mPzmvN7if)cm+rCb;JmI+!MShTaE;_3J3i-^b*H^Eg$uhMR09=O= zCvc2Wo3B9W(`H;w_e8^p2Z-u7M~R(g)%=@vKZ>JUk}LqC5oP@mq`ZF3FhoH`cLUHw z5{cc(mBtC&KX^YT72#DHeQ8$|99!Yx@OD0vM|fEWh4%Ks%egyg%CR{OP)q*l~?%k2E#v++M#H882@ zNX<7i6{nXYpbTtZfyUG!-46Q+N%5yF@nJ&mw@=l^7fg>AeVg9MHdekn*OW{9GtYgh zpw5@z5(Di%pXuU~rUMOMo82I>!vaJLln4bH7Scfz^7H>XG{5rl3dk z=|S8Z%q=W)0z*H!2w?pRKCcX+s@Zq*ZHE#pHfX-G{zi0uuJ zDd;7cB%jbD+XqA?rzF8){1P0@F%*PW`g#%^XcLh%AFuBXJblbmE|hfXwr*mo3{`Ls zH<@)7jwnIq4zKE@;osVrOH9@v<7hIalHNGju#rOV(MZe!LT?(y7jfndSWPiQB zhHvl~y1WD77$aB_k)6}(ix$3XrWuJJl81Y3esV9T%1}q=tiW&FP*X&CPSh0)4?qa! zKF`SR9(URbm)%G&ul92@eWeTNNYQ}bsCd*sr7#2AYlR0irDrQAMtzL zd7Gol02&nHIvB(-)I$p!+FzFG0tbt|LvQ39>_gj6&Nk+s_f+JUL^^&oViUk#FIURR Q?frhb(O}JASE9`S2j6I1+5i9m literal 0 HcmV?d00001 diff --git a/Payroll.UI/Payroll.UI/Salary/fPayslipSendMail.cs b/Payroll.UI/Payroll.UI/Salary/fPayslipSendMail.cs index acf1369..05ded4c 100644 --- a/Payroll.UI/Payroll.UI/Salary/fPayslipSendMail.cs +++ b/Payroll.UI/Payroll.UI/Salary/fPayslipSendMail.cs @@ -11,6 +11,7 @@ using Payroll.BO; using Payroll.Controls; using Payroll.Controls.CustomControls; using Payroll.Report; +using System.Net.Mail; namespace Payroll.UI { @@ -385,7 +386,7 @@ namespace Payroll.UI return MS.SendMail(); } - + #endregion #region Events @@ -483,40 +484,74 @@ namespace Payroll.UI lblSelected.Text = "0"; } + //private void btnSendMail_Click(object sender, EventArgs e) + //{ + // DirectoryInfo dirInfo = null; + // try + // { + // dirInfo = new DirectoryInfo(Application.StartupPath + @"\Report"); + // if (!Directory.Exists(Application.StartupPath + @"\Report")) + // { + // dirInfo.Create(); + // } + // else // For Fail Safe Check. Do not remove this 'else' block + // { + + // dirInfo.Delete(true); + // dirInfo.Create(); + // } + + // if (Validation()) + // { + // PrepareReport(); + // } + // } + // catch (Exception exp) + // { + // throw new Exception(exp.Message); + // } + // finally + // { + // if (dirInfo != null) + // dirInfo.Delete(true); + // } + + //} private void btnSendMail_Click(object sender, EventArgs e) { DirectoryInfo dirInfo = null; + string reportPath = Application.StartupPath + @"\Report"; + try { - dirInfo = new DirectoryInfo(Application.StartupPath + @"\Report"); - if (!Directory.Exists(Application.StartupPath + @"\Report")) + dirInfo = new DirectoryInfo(reportPath); + + if (!dirInfo.Exists) { dirInfo.Create(); } - else // For Fail Safe Check. Do not remove this 'else' block + else { - - dirInfo.Delete(true); - dirInfo.Create(); + // Clean contents, not directory + foreach (FileInfo file in dirInfo.GetFiles()) file.Delete(); + foreach (DirectoryInfo subDir in dirInfo.GetDirectories()) subDir.Delete(true); } if (Validation()) { - PrepareReport(); + PrepareReport(); // <-- Generate PDF and Send Mail } + + // IMPORTANT: Delete only after everything is closed + foreach (FileInfo file in dirInfo.GetFiles()) file.Delete(); } catch (Exception exp) { - throw new Exception(exp.Message); + MessageBox.Show(exp.Message); } - finally - { - if (dirInfo != null) - dirInfo.Delete(true); - } - } + #endregion }