From 051e1e8a32ecee30edc3c4ccb6450b03c0f47fab Mon Sep 17 00:00:00 2001 From: AG Date: Thu, 18 Dec 2025 22:45:50 +0200 Subject: [PATCH] Initialize GUI has profile attributes --- playwright-report/index.html | 2 +- server/prisma/test.db | Bin 2940928 -> 2990080 bytes server/src/controllers/auth.controller.ts | 4 +- server/src/services/auth.service.ts | 21 +++++-- src/components/InitializeAccount.tsx | 70 +++++++++++++++++++++- src/components/Profile.tsx | 11 ++-- src/components/ui/DatePicker.tsx | 3 +- src/services/auth.ts | 4 +- src/services/i18n.ts | 2 + tests/01_core_auth.spec.ts | 36 +++++++++++ tests/05_user_system.spec.ts | 2 +- 11 files changed, 136 insertions(+), 19 deletions(-) diff --git a/playwright-report/index.html b/playwright-report/index.html index 8968129..63c28bf 100644 --- a/playwright-report/index.html +++ b/playwright-report/index.html @@ -82,4 +82,4 @@ Error generating stack: `+n.message+`
- \ No newline at end of file + \ No newline at end of file diff --git a/server/prisma/test.db b/server/prisma/test.db index df7a0ba97eddba891ab71337adc2773a160a5882..2529006fa3e1c2c415ccc6ecba0c7b24e2acea10 100644 GIT binary patch delta 62460 zcmdqKdvp|K);^l5uD;(p9Y{JM>4Z+mtwVKncXbulbb~q~LPSJv1F7z+5^oq46_J5} zh=>Rg#a9tEIu0r#Mp4Q^bmBOpj-w+w4x@}>L_|eL~|YpdUezy9Xh_|8|BO997I^zC^6PESwX;$_O7^g0=~Vr z;@V;O_LmhauiE+7O=EU5j~jswrrS^M-CAGA;bT4`qozip#=iMXO9$t=sAM*=_A#}r ztDH3SF)`NpIhoYQEaa@)@anlhQ{4DxAHz6jHd)SLd0t71svyS;lA^~`8qdd-44;VW zvYN;UQbthpe9l_DGO6$>J`+!;1u34&#^6|Ws zPQ+6QjF8WyWL;FUn~iaQW?oP&Gnhlf&a)X7-^cN+%CbJAw~rggke=tPTn9#}D+w8c zOlIVGDlckrDIv=7WFeL2MO_q<87Vix{M0m`&=nOAp5$?*EX(n{!sDZbH2#uMM7|(q zZ#E=>ePtLki@heDoFKEdbk9`HWlU0X=UB_Vy{SvuG^T+A}kKZjjjFN%_!RHV2l zX-V8%q}K@bWK6TKT6{VXa!+JTRZ@IPPv~)8&tSy_H4(>_qx(QED6%B! zk|^hf79UC}=zJm_S0oLKmClIRs)c;KP~ej(C6UI}sT^a(t(Jd`3V7CgRL>~pkSE|i z?B3(sZpCog(cfXY%3H4$QoJB3@d8dMrV*PhkFACo%41jO zQw8jV+~s8MJj>skG(4>$B;!h+&O#!uVa8KpJgH%9dO{ThUCdo#4&=*&!(ya+zGc+| zT#u#GGMgzS_Cd>U!mP~tnGcz#nVXsOn6XT$;|%u#b8*Q(2Q956`=YaswBF-=liak? zJCb}ph;6#yE6W|jIO|MmoO4XZ^zEQG{Q9-t2fmhw34IOhMUR8JL{H_eN!u&$*3)OwS8(OPihxb)v=9Fk+!Lo z2|}`!jpUb8E6*Xj@2ZQD)l({WkV|%W>)6m_GIt8D9=N-1in&yYd_h-|S|%AoGEv#^ZN?=ziLLGp2-TA)oTq_!8ur$oNF{Lu5iF*JK2R>QWo2sN|Z-6sfwI zT)GZN{w}F{FB>bUssv-CX$6tmE&=0`M!}&b(`xV&p}tt*GK9CjqP>*nLdYY zFK6?NvTelzJYidEo914?=>C;H!PaO!?&rv|K%>a{+uY;GbA9esN}FSGNGz* zIS&IZrS&8XwxVZJYIcLU@481-#abK3n(s=cbxDTX(b9B6_(Cc!NpL_)T1$(`L`F`e zli5M?!HwZ&)1C-PAt7im`AU+9=_}|e4nj(e!$j~}M#?CBA)W0zac2>(D-}=bu+%9& znS?`2D{)>*@`{9QkynN6!(@9+*SW_vD{zV#Zpb{Et?0#wT^nbH~SZO~$KIdApU= z(qAt8v3a;{T-cm|_YOH@tk+Lgk1M~nUd|+vvXY3WGf5TBq`=2z9Ci5Nj3y)t3QVGu z{eiTNFMrFh^>WAkgzL8sVVNEh>Ena|E4eOmwXlcrmWQqtYv}tF<(CidM*H@SmK~3G-zwtrsAURS(nI?wY7A)d%2VPjP-9|ux^tI}|9J)aU& zikvN4^X@;kV*VfJuDXe{cuLMD)^_Whu%(mP;~wYy+`ZA>VEYNyXRSpfUG3Jt8s}di<(ulC_%UydDhX)M3FG*)`cZgY(VB`vPZL&tk~dpAC+K=AE@Q|5W>P+#7Zg!WCvywwQzj*tOcARDc!5Pz;l$;%Mh_KW zq$XoJfH$TTuhjCAj-#f@X*i#hAjV}W2~VyAZYFp^rptTWywdpOUTgUjuW8Ue;+PHo zHp_hC8?;7jB_Fx>urg^Kv<^Q@b1$&%bsb^fw{3;-{VnT<*Z;tCkTtw(ZPQ%+?s2Z$ zY)#e~_E#K}tgU{|lD4wkTig!+Ol}o7o8!GAXSclT+t1$QxSJWx7A$VE1s?&g<6mi- z?*=KIlu}8+D2;A)SY(V?OsC^~Azy%VO(!*AxoO77gVx2Yal_ZvSx(cfNZ6c08t_Te z;FVJ{Aa-8Or-4>9Nfj~~T}ukt-x{7{*jOjtpzA7}c)UQZT`HA;2iK@?P6C~1N+F5k zn43yw*4TOS@a-op%X?!QW5)5Ht+uFZCeu^m-{;?sMQ-nOLQsN3lk*byv z^8n;(N=s)K8HZ|Z!=`ZDTP4$pwaXS~E$yFsSz9A#W7ipdUABa! ziC6OqELU8`3ruG|f&Bzf2fVJ}OepCBFX!s%$CHH(_84hfWSbkqQA-uD57S9ZrKrGh zNChFDNk}kHd`3?wLavGISY&JF+=p>8-dSX8jpa2x4SXZZB32Ej6|1JFVXCkmd(!1U~||q9x#=^t_r7@@n=qW8HnWD=xNUnr4*% zH+TZ}k<4f^CSZ@TR+e-I>~%IKh`(rLb->=}v$j$n!|t-UaK7KVMd@szt7mP>AVf<5 zxAJltE68J~(6X#nJQ{( zUc_N8U>{(-uuFLvyFg9gTml58M6AFW^d9h*IQj7HIF;Cv8bDHB)%AE9ag>%y;A&CG z3B)m_kvCSC*&j5+km*&nKx6KX-mrcI_bth1`&Y|?F*P6-K-*JVZ4Gr3{L zxQFe}hdFLFJr4c$(^yLGU zldCb-K5t*Lg*k&*I~}#G9~sA)9JX9`7@b(9UC*Y{NVU?(f9yb;s!8OIDQyU z68Dz#0`@SXB}^m2i9#lOsbNN3%ylot~P9TAwE767(0fVT=jAoUiCngY9^XOdYn2$J$rUQYlh zrqeWp6*4L;A-t!oC-QJGY9_BM+2_s48FwzcyKkN2yHWy!9wAZQ<0T_|yk(@l*AZoz zJw|7*V|I}oXjTyABPbW*f(T2V5&-v=4B!T@Cj_OSAUIR_oXfm#@KSo;`y5}#i$UPW zjJMNqxA%bKCHFYXJotz3UdJfbE0QUD9Scu9>0ZYqkGV#LL|RtzumyRE8ZCfW;9?4n z6iL*QiDW@br?Sr)o$os8ic0|RqNWgE$MZT}0)*(88W0D(023|9I?P!rH-v0|&vB03 za}ZYKlM)i>;rdu_C(Of0^CTJn?BTw37fsig>q}$Abr&~>ytx*^#oD{LE7>8%@ZgB) zC;Th@GyQD)|d;mg{TB_e(j)qLOpq3Y=3}W(=9$Z_c(W$9pG#h7yNae(Gf`h z!PQSu7X0%R6QgdnwmLs&#{37JP^Jj62l=ea*2aT&aFTuuThrVyTR*loR87xk(^HwWcQet#(b-L{4 zlZvncFz47eI#vKs387L_0$ZW;0F{87c`cQ_#dzWo=b4Y&xK$-*F(Jd=75o*)S&x@I zNDeFjv9o9PLBXV`{ux(eDi;GgC ztH*U2(?+iBakV@AoM)8hp!dMZ{b4n}=y7fKg6Ud&x2t=Kpz4U{;(QYGnJT~>$_4m7 z1<(jgLcRb(AvcCjfK*TgQ2|f~ZpQQj6C<$29BViglB&Sw^LqA5GV>nSLw0so$;=WM zm@%D>7~$J1J#-_r^Y$>A-0Mnt7~M9lA!lDVuhb;`qah3S z13knrw5q1ViKNmnPk1^>%>Jc#<~B^BV_Rq+0=Osw}`q7vxMq6jTL~rJ8-n=(*R` zz|d)b(Aa&S>$G7`-|CV%cvjFMfv(ypY3_He3b^N-l z<<)|YN65}Kj=by|T0hLb7&~Z83Dd)_WAhf5<#EfJ|AYv{(dnAR0#r`xbTtpLf9LFC zC9j841)fpPQ~ldnpRvSCleJH9SThzu2{{xPqMv zU0azaZSLdaqtn3BGB;ax+NU@sxsIHqvpfeqPg&->!=Ck|uHC)H*xv58aIE)$@z_N7 zyLJ-<4+g)ga$4BCqlOQ7MzWEv@$lrAz48OuYS z>%5lf>{Mcpdgd@JQKFtH#$!>>-Hhp-;Cb`uf`Tn2(33_3S6P!2aX}V&o|nZ;T9laW z#?^J68@-O{tOUrxt|Q|*9d(=d<|xZb#uVQ3@d;3-s)YjFfF4J9i33iV9~o>DhzA{U zZyw=hLCodNLvYD9O63Ti#lN)tv*b*8Do>Vm-9b+6@ys^v>+yVFjJ^wqR`WclcWg~O zq>e}zXcCA@#gmH)f_510?~La+d$OBAk1Rks$$JjVY$S7e?`)P?0B5(u1VbGK&`5kj z6X8}Uj-!4)uZf7b5SeHx1g*Rz=SI{NLuw2lDOdcmGr7GF4%t;?RpWe$$Jnx34@9On((ZEb5 zT;f^J37o@n!14q*NZgU@|B%tjL+k>`cOxR6^4tNVJi0>r>-ciO=1KwNhtY?%lwY(1GPYLn@<&O}K#?wMZ#}9&pC^~zi zInC`4V{i9->Rl9LP9xTUZw_ni1~uSI8zkVXW0{wY-67wfS>$@OL|RZmX3(>qQ4p3( zh>!9@0q#TQ5kxDwbB%3fzS)zQ3laYLUiR;@Zn9o(JH}Ik@%;&6ne9 zEvK;Lu5%l!SmrVk(0p}dOEywV-qL(N^85Kr*ubmS2!mWtx9?$(>o(6QuLmHq)8A(7 z>Gu8ELN~@FI{!ZB9nMRfr!XHlD;-}tUUb~$sIhn{mC(T}qQRCevqpI^b({k+Ll#8q7_k@gl4UVqzWu zl`b(nGdyx!q)7*wE*DiTyPTZ&sc&WjFk&GCT8~n8*rMP9;&~C-WaP>b(u2SUS)YB5 zj63R^UVOOjH;|Q5KJ%?O@llzCM)wE^40u_j4iS4$C@U#xkgbV~D(Ttt4bMM)e_`7+ z9_|~A6HWr9P|aM2K(q0>hL8bfhu4JMl`eM}AQ~~EZ_qcJML51-(6{2|4(^048T5^C znIMMjKR7f-#vJusSD#Rk`;~bxn@C&&k0%j%P$LFYqhntcU}17eEmRdZ17rpo2XfO2DhN$AH{aa# zOJ2pUf9F+yJUT*{r zIwVIujy@7z38Yn!Y5~9jnS@MuTo=U*4_l?_LMAuUxcG=8!m+TYH+=5+TP%T8H@Gi7 z4NjKgAlPeIpkzWupaa$*k{VfvrnjXO}!zLY)Wf zn`bc4YwQ>dJZ52HM&~zydZr$k>~sc3KW&nHfT>6iU`Eq`g!w{R=Xq7mEikry8<_0^ z5`JcrJ$Q|adB(Qfc8;yZ#*jdFEb`?2!J#L>1!XA^enAXDK?=fm1nG*Lg7r)kR8fb# zBrWF7Gq+;zFR>NmFrc`zt6IToc@opnBn}|b+v^&cC=wQD`&{ug|0aySa6LXPb_q` zkjK7^4JUmCmxFXQ2kK~;<0P9day5}_M-8vDC4J_A9{#x@W|QOQ>tDG*=)8QMD@Aq} zT#bZnfYq&DfOp-J$GaL9xXvL5e`={E0R{IQScpp&FL1ROFaOKsu@yJOHPx*#XM2c} zKxeVLHrboU`|Pi{!!$okgH8K=n>v~!nF`Q~cQ33BHj|fcz?V0!ZmJ`HSsk>Kuj!9v>+t2V4Z#-jmo<2mJ*&Kqts6&X zuL|-ca%1ou@>g+qEm^+;*FXMb`Eb&6BjT{G>9JZ{x+qQ=H-U;GO#XmWJ4$10WC01S z2#zEVCWZ}Xn@h+m*9ZSjhSAUOxaWkRM9#n=g5ZXirJ9~RqCY85T_hrRm?S^|K9zHt zJ2r!}M^l@kYEnt~0?iQ*f(20xFc1g>CA-u3&fe^DSX~~O+NPeMe$I#PvF@9h-`dXd z?e{)m|JFCxvc|vCGLL)2^$AkyuX)p!lx>9TcRs=2=D5p0(|HPat(EZ~}cd2!`>q7Rul8?OenGMVb)`vDdSBngLPw<%23=3(Z!c}HbwRl2RkLwfKi3*%0Lz&@*v-pgq9m;+_WWlRgwX*w>NlG6ci}v zJjYl6**vbC^VE|`W@nf2_}(C7D<%ITOV_Y5^8Md~ubbus3I?!R1q3HRari8F1Zd0< zHGs845S&Z`QRgnDkA*8`kdJ_eIHWK<$S^B;(80*}L$jsl@p$Rn9HZ*(;DsYojGK2u>KdU@OLN^AFb3Or%WyP$Pm?5nT{>V^uPBVERF)U`x zUQek;)A96e2zERXVgkdEr|!VIFd=3)D_Pc9-k};Q>v8u+P>N3xS0Gf+Y$I)fkXr7W z`+s#2Bu+*4HxOzeqbFElLxQ1YB#0C|IT8$=O|C!1+H9N`3SmM=`~rVAN<+=$*lE@l z!xIkO&&05~L^u-Y?&x$O!z34w6VxOGry7X(f+lC*CU2I7Mv_}5iA zzVJaqxs~kxvU((WJQE&nZ27q1c2LFB$y;e(D>*Fq>MhvAL>d~6v2DL3(I2X36J;%2 zO6OPA32Y$9i?08oVYy*z4;`}P3SG|P`;yMkNaNwoP>_v*gUZ0c^H6!vhyoP9 z0=W&sWu#^DNVDq6+$3WlAF3VeL@a*_v%3VMk?yFijre*)(^K9~+mFm{%e<10Eve#} zV|sA@#z2N7nQ?5JeUFSXU?`U`JiKXog9V7p!3DpzdeW7MLu|JV9_k}t*-+pc( z>A5fT5YZk9okLQOhMLHqpl%??%R;Nj!BYH~c*p}6S{ky~Bb?75B&Nwwpp+zXgZUJ= zX5>T*DouAMk?h+~q)><_@AuTyvGLbQC>Y|6d^O!VUw;*?Bkv3gIY?+2ZrigG`H~;E zhAy<7jYAGy0|HeY4h82O^ODvP^d$>2;<_}vNk03A_drQ=hUWpEaZv#&Lf|=?XHdX~ z15ktI1~!w@h3tCsG`3vT8nd+@_3g*OdO(Biw(SVL$@y1;@a!Ab5+m%Rp+vo|LVXIx z4M~4EG0HjT0k)8O&qH~e(hGb>$`Ug3QA`<*+%jYJqoJiyo2ST|2lj^YNDGn6_J$g1 zerogH(3F2e|IhY@q8`rYz_|^)8)})F1~H$^UuWo?7b1Ymp>4CGZ+D1&lH(u zR^oPWtE{Yb1{IuH-y~Iop$!i_G8nSL9qsrw)KZ_+^Y9QzcJRv(7>*r)7^Xc@+RGGmF^7cG#WW?xEFqoaN|(^- z`pGyjuCyUYomod|27D|T(^0y}=iKc49IksQ#D{JE?dJA0KIx_^kdrPZ~&3j8nIxxn&KWRa7U(bLD#1;kU25UljK#_U~UDEVq0njF+W=$d$ zVz{IV87kOT6WK$AgRBOkT^^QE0^gDr`fJ|%;&#MAkve?$h z+`^pC2H6iR3U@sXDWESq)wvm3sc@S*c6geqowhN=M|P$}*>9iRxp%p{yLpZ$;?D#Qf3 zfCx37#73lkn%)}BCJ*HRP3K`hso58dQIo?j4`#?f0RGA&xX>^I+L zVj;5aX?x7(oPoPoy?& zatxkrCgUm_>D6#J_q)5e#$y+ytd6wNsTmP*e$xZJJz>oI46@HUyqUamb9f%h zAQ49W^o)(+FUYUg1ncQ44w@5j<5zI&Bkv`*--7E(9wFYZknF3wHN1{xFCl%mhI@!U z!5Sm#ChUy+h@~uIPEZ|LI}BLm^G)GS=1ns7ws31JJDJ`ulK^Fq2B3wImZoyRiGyPW z*cVa>kQ7+Tf||XCJa8Kw)j4Fxp=dKnknpW!FW*$hjy^^{A>rpqy2d`7ymmXC@Oue! zM>s`psc))tjeZrwzRVo9?*JRKu_Lg439`&K+}uUCnSXhIa#hULI1g8TXZ}3PLgTtc zB)BS9}Ck-VgGKvC$P>Mv)Ksl(Mi_cRckKg z0`kt~5P)G(FCz!eY-}di+=cfesrATR;W|KP(!({oyLN8L1)vMGHKA#*T7K;vByHRJsch#R4P}ql0)XXhJ&%!{dgy!?X;=1^A3;b0+R)hVlTE z|CVxuPq&b4qO{piz6l#vvVDB%NFq#a9p2i06&({|swhC@u{6e?s4h{W0P$HIWo6gs?j0n)OwkB6^oQV^FR z{|J_gru%5Z30gJqh=43GK6ydblzEeB;WSNobiJT)I^5B!zMK-Te}NckTKib@rP1E^9Z{)$nDT8f;6M-CmLD zpI($-W9T#ljn^?BvmO*SJGqWZ zX}MKC2RHk~hYdt8D<(*w@kc^d1Db@?j_N&t76s~{0b}7e(-3y2vhUG_%cPRng-I%6 zMD-cuS*VkOW&%eE>NfBoz(GQGuerpZErud={|C`-ieHx*^A1I~nVQ39!}EFcN5-&q zlpWpRgnWd8LN-r&+AG7vF;KRU1)l5bwT4|BUkpK^-s+9o#+(eh%C2F^4bYF0n-7-N zLn_HEF?JusFPo6uRAgj$6cDnAAnDjp*Z}Sj1`~20hzkn2i_EdDoq<@oaT94PI=_)4{S4Op}hdNCHMe)(w0I)G%0gnrQ=X2H{y!NMmPzZa&ox zD`4vUugb0?m_= zjRqkBwiN_Eh^P>`sF^flG9)6%bDh>nL3NEGXd;+v3P}|xo}mNewS*uu4;zCMhlJh# z9}i(VhERQK$(tpPrH*NiCi~C!zu6zQue8s!x7n?>f7l-5o+Z)FA(xX)okK2S`i<*u zZ`o5U=MyyWlCKQ2)%aK)Qst&O$F3m>)_xxmyN1j+ zNY{`tHs%fT&{Sw(ezJQGxi5z_k`ImzsV84TKV+o;>IZNWRpby5(kN77Bg0225{?t9K%g@h^rR>k za?QkZY{*E`m#rIaJo2W$U@v+L>k!J&-2%_C%oz8MKh8aQ;ZWkALFcW%gq4dk$82O4 zFylO^N%e-`ijHueAS~HSAa0r@G21qfaXz-5Y&# zJqMv_p4478`BcwS+;#poR7M84Io?h#;X2~{+_TzyT#D&`wg_Iw~m&89iq)#+^~t!Ej!Yn#m!pvDWqx zblD&$L0uQf2{;Litbq3+LI&PS6f$WPkOHTqa<$~(c2oF{N+lGsT3@bUlgkCR9H{8%-;*1;`ij3it_B#sL^9V2u)Tu7VCphnq&(I7;aR zT5%11Gi)j4G$7JKc!A2hl%6e?lx{c;>vH4cL$CHy`lWy9EY|fLnb$wGJ?bJJ%`@5) zbbsW2#(j(XeD`?F7_HleZX$(T;0c6*w>a_EbMG3_KrVWDXp1SwfLH~xYRoRcER~2r zcP&8;gRO>2ED^O4g}jzMK!>Vk3aGpSE-8p+rXERmNr&&#u<)P>pmx{Q?4RkCgkO$q zVCkQSewpH?(M)=@Ye;xgRry?G(>E7nx|AwiDdU@EPOK=CYFphbD^!z2_aZ=>W&d!T$S3Nq>OHMR!I zE8Jjp`YX#DmYb6d8{wGk-Z zfsI4GMw~|_B+8GF*TG(T*}M`Dj9Ly6#3D-hQ4tNgNC0XF!$s9};KxCnKHX$!Rpnbs z?GO&nrfHV&K;3o+yUQ^Nd`}fN`@h-iy4M)O-U#+|;9%V)R-)a7`qryIuDiO3dQKKK zdhX(88&`f(cQP%x`ir`5u+!y7=W~uLs0y*S{0i3kGg;DGJ`oid<>Rg9!3BjXg8rld z02PTPAllEPWIGQ3risXL>6nG=2j$9rW!-`o5^8 z-CN$}HPHyP-pDv(JJ3WuC2ygI6Ok8$5Fa;1O`n*NvkS=T1Lf1n@5o7V{sJ9-vGu+3 z)}o≠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 Vg4>fqe%-_+Pe>!r>QzNm{|{4Z#R~uc delta 19616 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 diff --git a/server/src/controllers/auth.controller.ts b/server/src/controllers/auth.controller.ts index 0e7ab1b..280bc1f 100644 --- a/server/src/controllers/auth.controller.ts +++ b/server/src/controllers/auth.controller.ts @@ -86,11 +86,11 @@ export class AuthController { static async initializeAccount(req: any, res: Response) { try { const userId = req.user.userId; - const { language } = req.body; + const { language, birthDate, height, weight, gender } = req.body; if (!language) { return sendError(res, 'Language is required', 400); } - const user = await AuthService.initializeUser(userId, language); + const user = await AuthService.initializeUser(userId, language, { birthDate, height, weight, gender }); return sendSuccess(res, { user }); } catch (error: any) { logger.error('Error in initializeAccount', { error }); diff --git a/server/src/services/auth.service.ts b/server/src/services/auth.service.ts index bcd5fdb..d7122bd 100644 --- a/server/src/services/auth.service.ts +++ b/server/src/services/auth.service.ts @@ -153,12 +153,25 @@ export class AuthService { } } - static async initializeUser(userId: string, language: string) { - // Update profile language + static async initializeUser(userId: string, language: string, profileData: any = {}) { + // Prepare profile update data + const updateData: any = { language }; + + if (profileData.weight && !isNaN(parseFloat(profileData.weight))) updateData.weight = parseFloat(profileData.weight); + if (profileData.height && !isNaN(parseFloat(profileData.height))) updateData.height = parseFloat(profileData.height); + if (profileData.gender) updateData.gender = profileData.gender; + if (profileData.birthDate && profileData.birthDate !== '') { + const date = new Date(profileData.birthDate); + if (!isNaN(date.getTime())) { + updateData.birthDate = date; + } + } + + // Update profile language and other attributes await prisma.userProfile.upsert({ where: { userId }, - update: { language }, - create: { userId, language, weight: 70 } + update: updateData, + create: { userId, ...updateData } }); // Seed exercises in that language diff --git a/src/components/InitializeAccount.tsx b/src/components/InitializeAccount.tsx index a5f107b..956fd96 100644 --- a/src/components/InitializeAccount.tsx +++ b/src/components/InitializeAccount.tsx @@ -13,11 +13,22 @@ interface InitializeAccountProps { const InitializeAccount: React.FC = ({ onInitialized, language, onLanguageChange }) => { const [isSubmitting, setIsSubmitting] = useState(false); const [error, setError] = useState(''); + const [birthDate, setBirthDate] = useState(''); + const [height, setHeight] = useState(''); + const [weight, setWeight] = useState(''); + const [gender, setGender] = useState<'MALE' | 'FEMALE' | 'OTHER' | ''>(''); const handleInitialize = async () => { setIsSubmitting(true); setError(''); - const res = await initializeAccount(language); + + const profileData: any = {}; + if (birthDate) profileData.birthDate = birthDate; + if (height) profileData.height = parseFloat(height); + if (weight) profileData.weight = parseFloat(weight); + if (gender) profileData.gender = gender; + + const res = await initializeAccount(language, profileData); if (res.success && res.user) { onInitialized(res.user); } else { @@ -32,8 +43,8 @@ const InitializeAccount: React.FC = ({ onInitialized, la ]; return ( -
-
+
+
@@ -78,6 +89,59 @@ const InitializeAccount: React.FC = ({ onInitialized, la ))}
+
+
+
+ + setBirthDate(e.target.value)} + className="w-full p-4 rounded-2xl bg-surface-container-high border border-outline-variant/30 text-on-surface focus:border-primary focus:outline-none transition-all" + /> +
+
+
+ + setHeight(e.target.value)} + className="w-full p-4 rounded-2xl bg-surface-container-high border border-outline-variant/30 text-on-surface focus:border-primary focus:outline-none transition-all" + /> +
+
+ + setWeight(e.target.value)} + className="w-full p-4 rounded-2xl bg-surface-container-high border border-outline-variant/30 text-on-surface focus:border-primary focus:outline-none transition-all" + /> +
+
+
+ + +
+
+
+