From efd31df98d5fa1baa2c681de7f21a53aad63b60d Mon Sep 17 00:00:00 2001 From: AdrianBalunan Date: Tue, 21 Apr 2026 06:21:07 +0200 Subject: [PATCH] Feat: Updating (org_settings) work --- docs/SqlDatabase/ER-DiagramFile.mwb | Bin 18935 -> 18953 bytes docs/SqlDatabase/ER-DiagramFile.mwb.bak | Bin 18941 -> 18948 bytes .../components/CategoryTagController.java | 42 +++++ .../components/NavbarController.java | 2 +- .../profileOrgSettingsController.java | 144 ++++++++++++++++++ .../team6/database/DAO/CharityUserDAO.java | 43 ++++++ .../team6/database/Readers/UserSelect.java | 6 +- .../systemutvikling/team6/models/Charity.java | 5 + .../fxml/components/categoryTag.fxml | 13 ++ .../resources/fxml/profile_org_Settings.fxml | 110 ++----------- 10 files changed, 261 insertions(+), 104 deletions(-) create mode 100644 helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/components/CategoryTagController.java create mode 100644 helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileCharity/profileOrgSettingsController.java create mode 100644 helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/CharityUserDAO.java create mode 100644 helpmehelpapplication/src/main/resources/fxml/components/categoryTag.fxml diff --git a/docs/SqlDatabase/ER-DiagramFile.mwb b/docs/SqlDatabase/ER-DiagramFile.mwb index 3e2e8b9a65f6f1d0d63b8eb2b16e6d8f6efe4234..5105a8b130dac9fe4ca86d42da51efff8e3ff124 100644 GIT binary patch delta 15915 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 YaK&UVX=ZTu*Zqru7jJm+2Oyq{*)UVCQG znh)3Y)Ag1N9+Co%qaqIpg$V`$1_!2tpQ=wivzE^+3$+RJlOn_E1oU> z^+y&aNEU$!Z3pZpWs}{9KLvOaITf0W88sXwuBHXMen#BL2%N|;MPK~KApi)F5c|_n z&-Z%WEn7bE`8;$Ry{{W7`P6UCu9`huy9x4LPQJgy6tTo94ZV%unsEN(ZEvG}e>saU z_xyPNHw(nlTxGPiIwZ4>>}<&yLd4!1Ek|A+~h%_|WhN<4e7z^!(~U zok+0irJ(=Q{m_^z@J2Bm2SWq+Km4fuipGv^M~Rd{4&H!_F6NZTz~V;w^0A433edmg z{Yw7>_=k1LDqLTeE!|?ppJutlxd0w%>NKAYmf8VJ7mdi2*!JqwPDX zLqcuNw+qW=gQfzyuGCuJ>k}IvPvNO`m)qS}p#G%3SlMxs^JDeGFIRn^&86@AVlD&+ zb5O}h&@Z{DpV|#C;Nktssn|5yn@z=Xwn}k%c}9vKmQNeScq!B;?hH_06y|>Rs+9$@ zQHdgEuJxDRP4LI@8f_s+`p~4nJ97wCPrh5tkHMB`zrlL=GIYmJ?}4;m?b*9Jo_6mX z0FgG1<)sFx7i`^I=KCq{%Qm9<=j?;>izZOvA2(Bn_lyYC5ox)=-x&#kq|o$Es9VJ) zuoMmR&d;Xg$J+J6WFlNrab?H0YpRJUcTK%hAp(xhkzOnPU$fK;jg$g344?d$22NaU{9nE;)sfP{t ze!|9#OVQF?#8mDjc{#qie!aXMJ-d1~&+@t_`XzXl3A){(uRh)CZE!pc#=&$3XuH0; z@pGFmdd@zXi(5g$uCAQQQ$UK6IiZDefMgXVq`knxwZWuFkr!RPp>f?%|4rKR@imzE zY;Eh%?$u@?5A!y`%>1J&U}&&8T9%CovM^QIOHzF*YJkAEey>QD!y&dKJC>%i-lTqL zgJbbyA^Yy7-sGk#qtkFGh6ndMP@3uJa+vH9IXF$-nfGh3x~r_OGB&*55D(kV#Yp}v zN8k7I>fD6)7}dhj=N42R*t^%@$(Qri`Py~C+h)7Jcz1v3r0xBcDcG=n&2z){{iMcI z>pt++>I(GYBdFK#Wx4%ux6!t^VC&xc?*nXfD`%>fw$1t{MIXa0&AVr+?4V zhV`SS2zuJ^VffGTg{zB;pKxb@KL>tZI>(~}sC9LL*Qlj$&D0BB5_q~A0~iU|GmxXK z?M?T0M^Et|{tlg`miGRxGFYu?s~IVJRCR?4YG+4aBjij+$4t{2=2V=IMv5j1krZQR z^!S3EtbUBbh%v>%Os)S4%w?ZJa>mhEl1Qij86GU+W7KMP*G`BiY@{TG)Xm4FqsN(J zFaa~R@T%!^p=PJ_K*gAs8BbVIl^LiINYKWaLP0{e44&1rS*=26yZ<}9H8^PYTFh%5 z7n!Xsz^HL2!AjQ&Bh3pF76L0C!T89XY;+%Jld4)99cW^Pht(blL}4Tn(jI-S#b#7e zcV*Vo7O1qaB+0M&Yj~o(DS}^YQ8N4FaD6?lYf<&~eSILdx>;-0RrvTvSZDbMZPmLi zdj?h`PYAM&u{duW&ESq*3cl-pmxG8`Ph_PPIuBFB@#1mOlgB=mG)-{8Y#+*f<1Ak< zJH0kG7R2vyb65o`I^1A5v`^NE~@#&XD&dl4Lay$MrpwTxpPlIUD6+eR?) z3UdD*i=x|OEIJW0V%1Jm!yV!UnEQ_?I6G#V6jLbuo5W<8e44=IP~X5;f4zEH1Onh< zBgt*f{lncDJWp1^1e(O%>_V>9pu>NUyRFvGH>@2rnk)5rM$fxE(bh&?7ZbB$z*0z6Q*= zG=Gcv0GlZ-+911D^Eof;>s^A3I~baa`NPsk)Ye8ed(h8b@r;=6p;m6$$UVYLR3#>?nwQ*?9%p zvCK1>wlu+G+QEm~R}Y;lXY-gljdU9&Yrszdsc$Rr%k8igZcE zRQ6^gAgHA?IzVkhGpyQdsx-7^#0iYLqhRwC3P!9Q-rbr=N=uSORbpG9dSIs{NkxW; zu^MxQQ?IBL4Wsh1C%n6qX6~oiUD!M(1%1VL$+54koH=mmDR2k8G{-+B@LLc!(X4k+ zyerUP&ne}^H8Iu`HEV!6ydjHKX(kd>Y8+DGtKwb*dzNi_KS?Oie zIAzE1;QUI-Phq@dQ5qZ)T$ULP7Qa3svDvc{XiR>aK^ybE=H`^_qt`+~gfO6_lo{ypBE!*4Yq*2Jq`-Ez z%q(FO2f>of96--ig@sNX`1f}>wy;4lyRB3Uqv)!fmOGsG?9AYvCfuQAu=gZTfgqE2 zGBxGA?N7u*Q8@@N?g2LZJc_=!KC*cFe&ewI*xf4^T?O6VzNoMVbhvu8ZLO3S%DHu| zzqSgt7rJ@s1Vp$laWXUbWFRqg)>-d};*R#@g_&?AIQa$jU;bgaT+VdeT4=9iytPja zlV%50sEW^F=+|Lwblnf5<2L0?whlEOO#<$fX6?-^X$ePWYyiWSVVddAeV+7CCvgAg z6kFwtW_R@N<t zj)0%cwDawywAApv5k>g8*n+XA1N2yNyhQ@}a#5WN1e#-Rs*W0H)`HTQ6=socR0+!8 zFZqfhrq!4-+_cO(XO|w6e-~`*0`ULa&rGe=BaEf zrU_@95GZB$FLpoaG>gh{OQe&tp=`?6faoD-8|0*qm8m(07B_?wubJkGc}S;gs!43J zEm`SP(y)liq~iufRU7`hivNK)&$8X{%**?nR#q5Cu0C9)GMokJO<-3y*EDWeCriPv zgPzPGkpLov{MD1g`4fw0M=hLT7YVD^g1fcb4ybz;zOGs|LnNroRJ7ps*0yu$V#&-r z$dQFf%QU0OG;0*iK_os5l0L@~Owv9Il7=7E!7_qX5^FHnaIpw)I@2hHMn35 zUT_BvOTzS23duSQPpbqWG0hZP)(IelBSjF!pg@m*U(x)Uf``UIx&%A0*TI9^6cUkY zM}$pj6NkC91xXPG)}I(e1p~=VOi(2_FJmEdModYcWI9kKR$z{Y!9lqcK9J2}!jx~K z=^73lv*6QT)7)d0(8Ie6sx?7VPdFA5k0H+utPSoNaj95Y{V{-&`qcyv=MjLzq1iV^ z952zVIHN!~3PN3{d)hf~LKJ>&+T~-aYA5|pS70nhfGm?56_8^(Q%b3=FJWCQ@7e#r zfxdadOkLm`nWTP=3l-1%j6E%CO&kbcj&?67G3-kI@=jgAvn;yhPVQ5Tm-l7XmD~rr z$B(}CkJQn|?SqZ|Su>c05;rhCdc+mX80)0OEplac8+OJ@ll{l+HpebEd2+d8i7zpE z5|wi`2b^3Qw|l2RtFATf!Z~TOmR5bQc1x%3Ig7G1$Fhq)+D>!3@rOxVs&p0wM3OwB z0z7yc2K-jUF|_BDuAesD(VRQQV2)lvu`^)|)3|E3n)(+!R6z`uITc{I@2?+gQ8e8V zKMB&waW7h+OO&?~TXnigz^Y-?^C7nS1Os}IvZk82f zK6S7$tgeD-k>1h@i>3Y>FJ7VcmQ z&Nivdm~I0QDSN;aj475Sqp1lj8{1V(m{%<;F>?6-iDvJY<2WFoZ)mHtC4Q87HR)Ypn~(X0UKg z#d8YcqnNfzvjw`!rXQ-y8Jio80hRQ_cr18IMJbTU>_GrRP$0zy`!KoGZXmL8q|e`m z>6v=!+{3Naz&y1G?7SxLDL=fNnw1!MyA1e8+q{m7Cc5q;7+aiKj-phFu!ni0xg17| z!S!($q>lI7k(S5mcfU=DjJFihEW_^Ci=1c#0Yq}%yxi|JASTi8g;M$)g;?LRi`X~# zUKR+ba0vm&96#6TKF#x@Ozvb+we8IxrIlohe=Bolw(ef}1f2IH*Tk4jJBObN4}k?j z<;RkxL&>_@lZ7>YA%VA7w%Wh}tm!HSi6%977s%vT+WETPXnh=vwJ!xWWK<9ZtV)<) z$!ZdvRc1}%k&WSF9@z5@e$NbscqBfhrfq=X6lnlf^hDHq5Ks?{GP1F=oHPxW_F}$> zcJ|Bg=cyKcN>y;Sq}Giiuh<9EG}z6=)N|w7#IaE zxVUT>73hqi(GYkXgD-fg2)nV$(xf5&KM*AV8Db>q0 zY_JfwAYI7PxWJ_~um>g5zny>Ji0aNd#Qgr$-KI8CHc<*(LXFkkZnItM zY7ddoCtH9kRx3C`pbeh%df^K#wWt0V_GJ**#x2uQQVyy=dxfmKJ-#yg^Pz1g-%Kaa z9XQ&wgc1O*BbtIefPtp31_GcMW>ld-6S|IY{kpS6!4<9=PV!K^nsSsjEIn`(;ADLf z*MX*6U}mEiw(S~gJ1ZC?x|8f90l#GQlyt~5w!VPGXo%Bu;c&lT4vS`vaEx3)nU$?j zB*coM(;4hNZcyXUML-UALWswjgt*Y@n)E9Zn{E2>0V)c5QfpBj%>YdEnD!yu>vBi8P{`|!Y7tlY8-ZIhzZRohHHF4z1yelEpqC^#FvuVK;pX4&Y23vlO z72E+U;}CfGgUr|?q(DjuFTdoniy>4GAVDPID=L!NqjSEHmOYkkBM~n#qA@QT&TKi7+~Hd z-*>HgT6VtD()lMyNS}SuQN2&_q?2mEF^G-gYgUqxX#!c&0`Po(G)de@@xoC%?1=f& z3f5A~Gwv2lc!gV?F$*8%<$+D%FBpz^L0&uz_}v`pcU9tQ1l;G+f+AiEl-6d#y3j)H z_M-%*9P=?kcGr>My#$fCH#729-moOw8;>Lz2iAn#hi&t);&QbFs$Sb$U?V7S zG3npE&I%&H8ttOk)yVQ%W-w3NN~uvR7kj(=f2c9=|8Qdq zb77Uy->;y#0SVk6$Wl~|#IZwLOU)d4Z^-L6%)6?^@7lVPbPZsXmo&lk^#cc01dU$b zpjj_q@GmXWha07UwmbUC?%OP!Zsk`eK^=m<3hE43$jg`gXk7%&MaU$ZUN}(+Fq7{i z=+rD|)oh$dOS%gHyuxo-s^-d~PkaM1xeX}C{aF#M;7IHLMbHRu8;v9(J_SN^7My}s z)O&}xBbgZbQ>m@RPWcvPpT(r95fQcYu-$K@VYJpcb)bLnefWFoJ$?i_aYh7qj9fKu zV;>AUp)+dAGf1CR%IR{|qIvC~OB#7x_WcI_m)ACU_vbDZGW(Vj}x{p2a%bGv6F4_=#l+PP5lwg&N1t@J{v-E z0UkYI$J&OU0>0?r?EL>ArKnG&#H!GcOQW6AW11-&C=1me3_I2tBWERgb7VpTDQU}2 z?ZK(yM(@acG&vXxUOV}+xXz;Andd~yL`|2A_8s1}M_c75CHhxRS2$B5XevAu0bFva zyxp2|rw9&03*HS}lyQnSO)$%vKGT6!?w+<#51 z9+GLC`!$wfYa{%F-00eZpzSa#D|>BIS8si4 znBv-Amt4E2Uau-EGpDh!DM1ss3VA#%J3YA3h~k&S^N{H&j6~&hF?pyjDY-FNpyHwr z?A*t6LyB~fRbN^t!nbn+=&9ERiPCk_8}2uYe&aSPr8lVM{tGxw(#pElN#{IGI?Bo_ zUvpN`En@s8ZS!BD%gRdCDt=V!HLO!wS{PW7mA4|tg`@eM&!%lEBty~}l|&oNuD)UP zS?IXesxnOw|EXlsS(L1Nr@M#^dP`!;W;7M~6~{fk;u*%jL^uMhgOXFZ4IYvd|ISEq z%ZB2V1#^YqjvFos-+Pj$(;|>Z7OEZn&GMa~)?1<4;>xx&&gQBgouEdIQanO97l|+% z3FQ)yr6l-fHGQApB2?7&ax8Y>BLi!QTDBYDUKO5lN_OZY(@H#tPns{dEY5%BBZIs6 zJKXFtM{LVMh|(XBP-8fm`b#!=PyhD0E2`AW{-e&l8dwaeccIH}f`)6& z$r?&2i6kAUy~KD*O01T2T~p{K;+hZ=IS7nHD(IU0`#j^*cQ%@-OG{=R@gEa2`D1F;NKiQDH?(5GjZ)xg z?9^fmq4NNBUfISvM{4TQ@xwm_^G}*Kt#QPW%9sAHET_;7U+CF2B~})Yc4@sG9rbgm zyHNVQ`+RT^n3rQWg7QC0?0Gp8G&IZh<@J6pH%`h*a}+TQKVqr7fpXlQUM%>)Ga zPO#f?gH5ugm6ikqbn;=>g@wv0)tE6L=S($$p)e!`5Jo8%gk*LbAK}W0tW>+R4+aBy z0>YtqB%EBnC+iyB6%wAM8EIUhpKej`FG+1-q1DBC@~Ol5uf0-;kPM3 zvxy&xh@aP?$b;in6Icot(!-m!$(k?Iz_1i-$U7N66Bk0jXh9DG_^vSphiNnkVdvEKWhzVjZDztfwdyk z_x% zpd3e+afwO4tjUk)oFZ;AMk}2Q1)6tbXpr)cC35XZm&g>MT*}GdykD%cF8q#4eC0#xj>X2IK`*5gRnP5@ z{70S6*#@zfGC9;I6l%fMH?mE9u+l)Tp`Fi(c&6;BX9%fw)*#1Vdo6yqhV3hBQZhkaYosUVV zCsZ7YeudN2S+%gmY~N5p=%R0({k50_1bUE94LVJmSp|4#5DZxg%@W^kf)MSsSfvin z0AjJp3fx$rlw_c)kpnO(0F&VqQ^?6Lm1v&XMl)`fFj=Rtc*FFllm?&7IIckzHCm_e zm@)THd5~+sQ#qmxL)6P{QmnVgYzw|eMh8SpQ4>b*q)&gY?H0F-6h{OlUBSWYfl0_W zwUg0Xd%@oKsVjOf1{FA3TY|?PmNOTaq|t073Fcqq3g(**IRog7+Lmyv($Lx@xK56A z=Gp-_+_1|ge#K0>0@Wmqc4j4`&Nc{6R*(?}FH0Fa!)e3&KjLaT zQt!E#)ARJwjA!TdQZX#k-=I5EoDf%Az5!5@c+nvsBc1dWZ4N=)$&LQP{J{iaULdnm zrZAd46bPgVnG`_ZHFzHS2?Nk2PIPopR#e%0p@njUUo68Kyr_~jMoi($2k)?Vd)*H_`bL^ zg%}C=ff+oz#xM#A^F<6lVS`*n-}+~kntWlcq4_60*u(y8pbTUGUjvQDoq#;8(gCxW zBGEjG|FIjdD0R#2WnNq;{;yS`x^0A^^+uoX5Sl_?2R%gErhQx}B%*jQfy zO2e9{3)0bYnw#8*>jQXp~yGWQd7SSilYst3_$6Z9cHHJ#Ck%3t3XLgNLRqE7F+-Q(+inJ&m*hNPOvJtK%xA!q^YSDUjK8X84XQW zhHng9wKoRVjC%{P*(uNVfu9wio`_-)Wh5wazHG416^Db-gH^2o4_g2sdTA9Y8V{SG z*JL&70aP2+*dH|b6BB(+E+H_ru^Am!Q3$58G!dS~RD!JE1lD*q`O^*$mBb`Q$5!R| zlm)C|!=mc<*6o%Pw2v$lU~ZEyC()fDO~auhA|!Wl;Yn*AdaMQj5T7$?Xzx% zngCn``z5W1yL4h5QUo3v56r-4vgUR7{Bp9lrXar`Ld^QdY)(2ZEjjBMx>X1sFJ=eF z7~bx!unA6JLL^d%fdT8}*Ni|XS5gHQk*N=}HA2Mlb$&)(vnf-vBFO16ExNI<R#ez7HEx5m`T%P<@^#@^XTiRPkTT|bCsQ{ zOgU(nb+4wh{23MQa?68|HiUP}9n0|tY&Zh4H$?ITrIqrRso9_V9(pQH`!ZtOKV-|0 z|CqVr%EtfD!@*@F;xbA>`6*P-i>&Rmtowkh98Uweq<${~vXQ*$2OBm*td?7?2NI9J z@K+YMeG6~&m$Yo09jrReZ9pi)%o>p82PluK77JrDl9{UV3G-#sfzqSNh~}6Yw9wL6 z=^OHlRcaS zNv%hF5zEUOHw;-#?G@7JrWtHv5)WN`chor z`5FzS9|pE%OO6~NW)UQ>Q8NMh6uP;+Y{C2eJK73seFOKOzZk)lTI@6v&UJ{`?vWjx z_gfNT6e(QMJnt8zhUHR1O9>gKIhEw_tjHR;dXKzF73+I*#7wx8_h58-OLD(-g_#Uq zVVN>gU9uU>TWsOSn*aVwb!1wl6K{5xiGr*<^`_j;~71ILa@w;sM^Qd%OWtzyV2 zqOc+Z1z1jv&^jjqs|hCv(llNrBya_Mc779jss}zIC&zj4|0%4=Hnfyt?@CG7eL4RD zhbghyR;H*yOdv=Ak@|U2~>gt-XcDRLu4Bu=AA%)0>K`WVcz@wdo{K($qCt z8&960rJyHPw=y`v|Mu*@$yHvS@~Y~U`fU2`$uxPk1KCjLU|hL@0O`QHEJ%Asqc}k@4#AAA7Hd}Y5T3)(OE3b@~x|L>9X8! z>gA%gHX0fuou-%I($*5Xw}LbS3#vY7CyR@uJ z04^Cv;ah8C?8Y+x@?tx$62SUb$jzI=h$;h=1cRJ5#*V5fJ0muC7bQ1cu^$24!un}K zifC?2YhEcc{IeYm9~buVic(z-qVV~q(1n@2t^R9EWqTbpAj_p(cTNht%G+YsZHoDF zX7U+!Q4a(E=ydzKOdhj4U`ta!jl4xath9lh$znPl*3xekcWYx#cJ|x3_Fp5~xHY!> zlY(Mye`3^yA|iFFidd)UCK&;ssl*6zHLiH8K?JwK^zThxu(f>ia#peO;C0c{T3qES zh+alMxU=O9$Zg=+U|DB#_lUtNC}lDY*-IPxw^~Fi+FKOwkbVM4pva|b!Zu^w)Tfl5q+2~UTj}2M2YKCiY=L)cI)1mMEmwcv`Ap!9 zgS2z7M7UFMF4KQ>Rlf3GX#WsNj}S7=(PicI0S#HJOc}!wBA&T@oehW0jlRgcLlar8 zv6H96^V`VAj@JA=81nK60PmOglqQ#WdS_H!t{*h7#x{#P?11f^*kvA(_Prpn&4c{y zze{@(3SD2?rU&B{x#Wj@u@qKfk2`3 z7d{lr7o0{e5R@32hSNZ;OwhM;a5BwyXtD8jh>#?!BMdOGM?>)Xz(7&q?>9=Fkm3gdI1N87+b3%MVw6Dw z1a{UMu8GFY=vUTxWz-;&maBdO$F1e~~TZ-&j534qZk3lZx9gTGTk9ul&W>q4jN zh$Z`6MhE>9?c4%;R*8c+MhcA-t(dw|+XHD{J&|}9H&LLUR0H}+c)sQJu^Q(f|#g3gUtm1 z9|Jpc6A&GpZT_}mVcX9zX0`37Ei!)CwBmu!{LLDUTcFX?*4}4}0A-ycJ#1&^rbEd0 zT!)`Hr_u7vjrXF_oZ-38SiVGQC_U1o*}UQybxO~6O`K}aHUq!W>Qvrw&SHFxYk6q( zxZQK@cjp}PWR#=*WDvF@lb=d7O!)q+PIhya4{+hdE9_vK(qL&b>&k@B=vyV}`jHbS zZSUPI@n{izTVU==qO8ZcvgRe=IIm&b?4{XoL^tlCXxVui-E`jQQExf;)RED6JZXLR;#B}dtR}CX51qKJ>M8!f=v_{pS~RT|4+k%4-+Ku% z0zUSQ<+uj9%~;Er^-`lUboiK)9`N$uKk`g^#|205Oy+ zB9({BOIwlU&0!6yU7Nq%^WAy;f2cOkrZ$($GB8)I8!dRn<{b7k39(_x$d{kHxln@)0~`YFPP~e7$^f;w9)iGNs0{e8xKTy!w3B+HOC=0#vsD zaUgbpS?&tp=!*Lce*c&IzKvG?HZR)E<97kuSucC}YVpnF`r>_W-DkRa>|*1KE)zPt zHds^_qqrm^F4;ITfpN!jpVV#7HIkTY9_!fe=dO1rK_;c8r{H3mXM(T8e$Kx4g$Auo zdX4gz?|ts>ZpG#xbk<&sB*$87;4dpOgf$70ay`QEVdw97-$7@iWcPp0kCtkeZ7IDc zf8swwSJTBOsK!^}l9v~{j5ya9>;H!He*I$L0xj!*Y!euC=R@p>cN@eg>GvOfu+HwF zL^;;WPTwyrW_Z;gdoou86rM2^-Khw8JI;c1FqXw(7xyeV?@v32o}V!!AdXUd5iV8p zd2GINO1x+TgQhIsdGKTj_F~u1$%UP93(NA*i}o@k z^0YmA7qoP&!zidnm}8(6MN;_i@-}`M=X_2mxf3L(OwLBYiu+}T5n+JHSam!+Pa>8i z?{VUMnjk3FBLfnVde$}<$Y?a*3N{(zHTQ!nxSrk)A10VmgP)>D?v17IT-Xq=uJhI= z2&QyjU?2vAHC$pB!;Nt})Nz$0_Xu+BWJ2=!Heqp+Eg6WAvrE%IZQ2umm*X7m-baw7 zAJ1s}0@K@r?vQDUUig#aRS@PiWtMZ-e6^i4`D3{whAi~^$QPz2U_>@%AA5KBUG@0Yn0F39$%e3w znhdaoF&V2c{;#nx^fN{@K1Otmy$IfPCsm;^R{$XkAce(8RQR<0g(G4_mBE5*oRFxn zQO2xb6nG(qo}gs)^&E2CRoh}j*SDbir1YpDGkVkr2XvsY@RZOK&B;=N1W|unTA>Et zu!H3_fHe|#8V~0OrwvKVjMgD z73ISKzDvf%_9M6!H3gtC?<)`GN%xajG}MRDSO&Wx02Ko#sfTDWcO8s=w#8#lw@_C! zBth$tujmNsMG{an6-uT1RNDCzPBx4MA*lr7dVM6z*;tnQqdzmIY!kMb2R5I{gVkV) zhxsxqizPB(z7C`^h-Oi1#ZbxQr>f4KNW^dev_densyT#7^4FyxC2;w>79@@N;MxhF z><%pBb*SQ>YH);|kTK>^VU6ILX;NyD*;X`Vo@|$h_5>-c{b97!WL7CdU|bLl`xqgE z8ZMSCg9o#sbeCVu6?`-l*rD*`I>4Cq$wwozg4vn`i=!zcjhXR(u${o4eePHbzjXmb zZI1Y0$Hu~Y)JKZohQAx!1$xIeO2#|uXPZ5ZUft3TW5#I4IiU{l!z-{OX(43gs4Of= z|fM0s6wHj5d=G2`ee<}!BO-%FkMLm{e74I z9LWhMsX}{_jkr=lT$-NK1Y(FmBt|SaI88$7Ul3Zm*E6&vMk8PEtiDRX-{%^mY7Eqj z=*;l)iIHI)%;!AfyW?na;bS!mT71C3H`oa z_EZJAyfqMJA-}{rAuI=4B{(_xoQ7Kv75R>NR0N!Iy{bGZFFj=iqUtqK#q{B3L5x&< zkW>!CsN_wcC@Hc+apq5;Q>hBfJIN{oPVk@~K^Y=8=U^%tZZ@3&O9_6aaT!NY)bX9!2aC#su!dvx!y z*$hjTwv2&Ou2*k2f=GrTlJ7UvG|%4%5Vx?d>Lot!{A@{U6{q*lNU0>;5e9q>bFCt^fr~pmpHQz=)@s^V4-e|UutDoplTK?9s`Q#r z()TK!VQ;_s(c**&-#ipZDFr4jRh%zJ2i5PE**aq7)kdjb8rSO7tI@2_D_+!unEoW& zdgY=MK(o~js6FSOb$af0I^PidPwGw2VW0Y!SR|CA#9fepB~w7#mY&C?Z?plrlm4`? zDf!kBac4KfJEw=<-*CFZ+UBnW*mhA$s|dzu9wYN3v30$RgeFvpVMehNa1H zp9toVYa8rltLhFZSV_Lw;i)4QxZX(}$g79l9z_7;khFEG12gLAl`<_XG<*iju(%_3 zB22x}I~a&_*f*F^nYG{i72X;IpA^C4|2tDG^MB4%7Yo)x0>4k8_6$@HSmeB<%eW!MoJF!bE(WjNutKZ%C>>T+24oKSv%)Xn z2Nr0~hMx5bxF*$@`ex`a8$mDM!RJzTytJ4q8_FV5`riDg2+#f+@{`z(G2Smt))@iX z;P1Vc$&W86t7oI_d!x{oE6$jMw(Tyz^9mSPl#9=XBEQYejwt!jxNYE$c_SosG!(!5 zG6w}C?eLN_BLs#ZD|@Qf+YYM%aOX>9n5zF|$jFZAUamr^*Bo-ZQY*I420W8;ty?^& zWYIRLsjE7m_W#%#8fNr}`|z`ITvyrIVl1%H7_Ns?+#ke+PB-c){ihL){%~w6sWapQ ztu_g39=9G5(8Fp^WYfdGvfF;nyp_}Y)Erl#Z4n!YY{zC*m%`mOJ&yu`+k$=9`ck{g z9vTETK+4BE=S=A}E}!a=jCU4HR`gH0x}CBla$4+4!>SNf#N_IBH&xEEC`jF?&+b?s z5Km;ZJ!U4D%Y;;YfIQyegVj}=pE3Ab^n}kJlP|iMqQL*Y`eB^2nFZ;#PFHGF3VWT| z=eBMwvOSiu$$-A`O%8B9FE?vu@m!OkvvPez(@}rCY94*M*;^CHNv#HYqb$C+$Gzmo zI<7ry1^W1Szy4FJFcb%$4Quvo|3yur3$}vwQ9k}|BP(J5`%efy2wt$+P&f|N32c6?f;3(f;-G4eY;h>24t4YRA;5CVF{a$5GVN z;d#T6X3+Z5h1YjvDG8Rvui|6pgFCbHb5d(i)@B^}90F)-=l&CNX%n_;F}1DrRVrW&Q;|X98l<76bcy^T zq|x^>Ag%xMH_%muMkc3JnBTuiXTpNzSFkGE58}>FLhNzN-L}LBSAa97k$!r&_!fo7 zsb#R@@zwwH#ipBfLrjn@?}uhd0mn!ESu&4TF*7lY*#P?6_=%n0g>SuK<1;CzHG&3k zN1f+rJ^K8rxTy2Pr%3mzo6TaGxV>20#z%<_-6)A1QxfA_Gnp71bEt*k@z((2_Q!zN z_iR{41BAw->rGvwxGO-v^WXIL+x6%8D5t;CYo$!3a@EL$Mdty5(w2e1vQdo-g)Ot_ zWrY_PKR}oE^`BJQtC=60z19Arm9Bz?Vr7T?rt6k%p%6)lq&VWoVs^~f-C>r6Vf;QY za9yO+-9bE!O7ObPd9|egV}y~Ei*;}R=C9)C&vAAit-QZ0djk6x@8#ByRZpwn{C(K(Y^f`+HI}4ZT|`fZd-0oB&gV>+D8C~~8*vw`3eA^nlsGB}ZF z+T!*&QOMF{5%TG9Y#WE4e41|ixUM-`Q>!Gl+E-+|OwV<(Q&nwLan28iTL0JSq8R4Ld-LejQSESeKHmMB sCa86J*!>37YYMj`Apie{nv;oSmBICs?Pb}(gOl@QiNO(*yJSWF4>utQ-~a#s delta 15567 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≥}+3U*GhiMl-jbDGa55*{%u? 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 diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/components/CategoryTagController.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/components/CategoryTagController.java new file mode 100644 index 00000000..5fecbbc8 --- /dev/null +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/components/CategoryTagController.java @@ -0,0 +1,42 @@ +package ntnu.systemutvikling.team6.controller.components; + +import javafx.fxml.FXML; +import javafx.scene.control.Button; + +public class CategoryTagController extends BaseController{ + @FXML private Button button; + private static final String[][] TAG_COLORS = { + {"#E5F0D7", "#6E8A5C"}, // green + {"#D7E8F0", "#5C7A8A"}, // blue + {"#F0E5D7", "#8A6E5C"}, // orange + {"#EFD7F0", "#8A5C8A"}, // purple + {"#F0D7D7", "#8A5C5C"}, // red + {"#D7F0EE", "#5C8A87"}, // teal + {"#F0EDD7", "#8A845C"}, // yellow + }; + + private String[] getRandomTagColor() { + return TAG_COLORS[(int) (Math.random() * TAG_COLORS.length)]; + } + + private String category; + + @Override + protected void authTokenisSet() { + + } + + public void setCategory(String category) { + this.category = category; + + button.setText(category); + String[] colors = getRandomTagColor(); + button.setStyle( + "-fx-background-color: " + colors[0] + ";" + + "-fx-text-fill: " + colors[1] + ";" + + "-fx-background-radius: 20;" + + "-fx-font-size: 11px;" + + "-fx-padding: 4 10 4 10;" + ); + } +} diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/components/NavbarController.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/components/NavbarController.java index f9bbc345..8052ef19 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/components/NavbarController.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/components/NavbarController.java @@ -70,6 +70,6 @@ private void switchToLoginPage(ActionEvent event) { @FXML private void switchToCharityUserPage(ActionEvent event) { System.out.println("Click!"); - LoaderScene.LoadScene("loginSite", event, null, null, authToken); + LoaderScene.LoadScene("profile_org_settings", event, null, null, authToken); } } diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileCharity/profileOrgSettingsController.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileCharity/profileOrgSettingsController.java new file mode 100644 index 00000000..e494249a --- /dev/null +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileCharity/profileOrgSettingsController.java @@ -0,0 +1,144 @@ +package ntnu.systemutvikling.team6.controller.profileCharity; + +import javafx.application.Platform; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.control.Alert; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +import javafx.scene.layout.HBox; +import javafx.stage.Stage; +import ntnu.systemutvikling.team6.controller.components.*; +import ntnu.systemutvikling.team6.database.DAO.CharityUserDAO; +import ntnu.systemutvikling.team6.database.DAO.UserDAO; +import ntnu.systemutvikling.team6.database.DatabaseConnection; +import ntnu.systemutvikling.team6.database.Readers.UserSelect; +import ntnu.systemutvikling.team6.models.Charity; +import ntnu.systemutvikling.team6.models.Donation; +import ntnu.systemutvikling.team6.models.registry.DonationRegistry; +import ntnu.systemutvikling.team6.models.user.User; +import ntnu.systemutvikling.team6.security.PasswordHasher; + +import java.io.IOException; +import java.util.Base64; +import java.util.List; + +public class profileOrgSettingsController extends BaseController { + @FXML private NavbarController navbarController; + @FXML private Label charityNameLabel; + @FXML private TextField organizationNameField; + @FXML private HBox tagContainer; + + @Override + protected void authTokenisSet() { + if (!isLoggedin() || authToken.isCharityUser() == null){ + showAlert(Alert.AlertType.ERROR, "Not logged inn or dont have privileges", "You need to be logged inn an account with Charity User priviliges."); + Platform.runLater(() -> { + Stage stage = (Stage) Stage.getWindows().stream() + .filter(w -> w.isShowing()) + .findFirst() + .orElse(null); + if (stage != null) { + LoaderScene.LoadScene("loginSite", stage, null, null, authToken); + } + }); + return; + } + navbarController.setAuthToken(authToken); + populateFields(); + } + + private void populateFields(){ + Charity usersCharity = authToken.isCharityUser(); + charityNameLabel.setText(usersCharity.getName()); + organizationNameField.setText(usersCharity.getName()); + + // Tags + List categories = usersCharity.getCategory(); + displayCategories(categories); + + } + + private void displayCategories(List categories) { + tagContainer.getChildren().clear(); + if(categories.isEmpty()){ + Label empty = new Label("No categories"); + empty.setStyle("-fx-text-fill: #777777; -fx-font-size: 14;"); + tagContainer.getChildren().add(empty); + return; + } + + for (String category : categories) { + try { + FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/components/categoryTag.fxml")); + Parent card = loader.load(); + CategoryTagController cardController = loader.getController(); + cardController.setCategory(category); + cardController.setAuthToken(authToken); + tagContainer.getChildren().add(card); + } catch (IOException e) { + throw new RuntimeException("Could not load organization card.", e); + } + } + } + + @FXML + private void handleNewName(ActionEvent event){ + String organizationNameFieldText = organizationNameField.getText(); + + + if (organizationNameFieldText.isBlank()) { + showAlert(Alert.AlertType.ERROR, "Empty input", "Please fill out all fields"); + return; + } + + boolean updateSuccess; + DatabaseConnection conn = new DatabaseConnection(); + CharityUserDAO userDataObject = new CharityUserDAO(conn); + Charity savedCharity = authToken.isCharityUser(); + Charity minimalCharityWithJustNewName = new Charity(savedCharity.getUUID().toString(), savedCharity.getOrg_number(), organizationNameFieldText, null, savedCharity.getStatus(), savedCharity.getPreApproved(),null, null, null, null); + try { + updateSuccess = userDataObject.updateCharityVanityName(minimalCharityWithJustNewName); + } catch (Exception e) { + e.printStackTrace(); + showAlert(Alert.AlertType.ERROR, "Unexpected Error", "Unexpected error ocurred"); + return; + } + if (updateSuccess) { + showAlert( + Alert.AlertType.INFORMATION, + "Settings updated", + "You have successfully changed your settings"); + authToken.isCharityUser().setName(organizationNameFieldText); + LoaderScene.LoadScene("profile_user_settings", event, null, null, authToken); + } else { + System.out.println("Something went wrong when updating Settings"); + } + + } + + @FXML + private void switchToPaymentsPage(ActionEvent event){ + LoaderScene.LoadScene("profile_org_Payments", event, null, null, authToken); + } + + @FXML + private void switchToFeedbackPage(ActionEvent event){ + LoaderScene.LoadScene("profile_org_", event, null, null, authToken); + } + + @FXML + private void switchToEditPage(ActionEvent event){ + LoaderScene.LoadScene("profile_user_inbox", event, null, null, authToken); + } + + + @FXML + private void handleLogout(ActionEvent event){ + authToken.logout(); + showAlert(Alert.AlertType.INFORMATION, "Logging out", "Logging out..."); + LoaderScene.LoadScene("FrontPage", event, null, null, authToken); + } +} diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/CharityUserDAO.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/CharityUserDAO.java new file mode 100644 index 00000000..3cff1c8e --- /dev/null +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/CharityUserDAO.java @@ -0,0 +1,43 @@ +package ntnu.systemutvikling.team6.database.DAO; + +import ntnu.systemutvikling.team6.database.DatabaseConnection; +import ntnu.systemutvikling.team6.models.Charity; +import ntnu.systemutvikling.team6.models.user.Settings; +import ntnu.systemutvikling.team6.models.user.User; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; + +public class CharityUserDAO { + + private DatabaseConnection connection; + + public CharityUserDAO(DatabaseConnection connection) { + this.connection = connection; + } + public boolean updateCharityVanityName(Charity charity){ + Connection conn = null; + String sql = """ + UPDATE CharityVanity SET + charity_name = ? + WHERE UUID_charity = ?; + """; + try { + conn = connection.getMySqlConnection(); + PreparedStatement ps = conn.prepareStatement(sql); + + System.out.println(charity.getUUID().toString()); + ps.setString(1, charity.getName()); + ps.setString(2, charity.getUUID().toString()); + + return ps.executeUpdate() > 0; + + } catch (SQLException e) { + e.printStackTrace(); + System.out.println("Something went wrong when updating ah"); + return false; + } + + } +} diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/UserSelect.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/UserSelect.java index 8e212f14..bc5da17f 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/UserSelect.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/UserSelect.java @@ -64,7 +64,7 @@ public boolean isEmailTaken(String email){ public Charity getUserCharityUser(String uuid){ if (uuid == null || uuid.isBlank()) { throw new IllegalArgumentException( - "Email cannot be null or blank," + " and must contain '@' and '.'"); + "UUID cannot be null or blank"); } Charity currentCharity = null; Connection conn = null; @@ -81,7 +81,7 @@ public Charity getUserCharityUser(String uuid){ INNER JOIN CharityVanity cv ON cv.UUID_charity = c.UUID_charities LEFT JOIN Charity_Categories cc ON cc.Charities_UUID_charities = c.UUID_charities LEFT JOIN Categories cat ON cat.category_id = cc.Categories_category_id - WHERE CharityUserId = ?; + WHERE CharityUserId = ? """; PreparedStatement stmt = conn.prepareStatement(sql_query); stmt.setString(1, uuid); @@ -108,7 +108,7 @@ public Charity getUserCharityUser(String uuid){ } String categoryName = rs.getString("category"); - if (categoryName != null & !currentCharity.getCategory().contains(categoryName)) { + if (categoryName != null && !currentCharity.getCategory().contains(categoryName)) { currentCharity.getCategory().add(categoryName); } } diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/Charity.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/Charity.java index 3f4a8cdf..09d6ad0e 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/Charity.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/Charity.java @@ -169,6 +169,11 @@ public byte[] getLogoBlob() { return this.logoBlob; } + /** Setter for new name */ + public void setName(String name) { + this.name = name; + } + /** Setter for verification status. This one sets the charity as verified. */ public void setVerified() { this.status = "approved"; diff --git a/helpmehelpapplication/src/main/resources/fxml/components/categoryTag.fxml b/helpmehelpapplication/src/main/resources/fxml/components/categoryTag.fxml new file mode 100644 index 00000000..3e509532 --- /dev/null +++ b/helpmehelpapplication/src/main/resources/fxml/components/categoryTag.fxml @@ -0,0 +1,13 @@ + + + + + + + + + + + - - - - + + @@ -125,7 +50,7 @@ -