From 1cfe393a100ff7f520e20a05678069db516c8287 Mon Sep 17 00:00:00 2001 From: Ananya Date: Mon, 10 Mar 2025 11:37:11 +0530 Subject: [PATCH 1/9] changed the ui of the landing page --- CLIENT/src/app/page.tsx | 61 ++++++++++-------- SERVER/__pycache__/main.cpython-313.pyc | Bin 0 -> 1885 bytes .../ats/__pycache__/__init__.cpython-313.pyc | Bin 0 -> 405 bytes .../ats_resume_reader.cpython-313.pyc | Bin 0 -> 12112 bytes .../__pycache__/resume_routes.cpython-313.pyc | Bin 0 -> 6340 bytes .../__pycache__/admin_auth.cpython-313.pyc | Bin 0 -> 2720 bytes .../auth/__pycache__/login.cpython-313.pyc | Bin 0 -> 1717 bytes .../auth/__pycache__/register.cpython-313.pyc | Bin 0 -> 1363 bytes .../blogs/__pycache__/blogs.cpython-313.pyc | Bin 0 -> 2335 bytes .../addInternships.cpython-313.pyc | Bin 0 -> 1679 bytes .../fetchInternships.cpython-313.pyc | Bin 0 -> 1121 bytes 11 files changed, 35 insertions(+), 26 deletions(-) create mode 100644 SERVER/__pycache__/main.cpython-313.pyc create mode 100644 SERVER/api/ats/__pycache__/__init__.cpython-313.pyc create mode 100644 SERVER/api/ats/__pycache__/ats_resume_reader.cpython-313.pyc create mode 100644 SERVER/api/ats/__pycache__/resume_routes.cpython-313.pyc create mode 100644 SERVER/api/auth/__pycache__/admin_auth.cpython-313.pyc create mode 100644 SERVER/api/auth/__pycache__/login.cpython-313.pyc create mode 100644 SERVER/api/auth/__pycache__/register.cpython-313.pyc create mode 100644 SERVER/api/blogs/__pycache__/blogs.cpython-313.pyc create mode 100644 SERVER/api/internships/__pycache__/addInternships.cpython-313.pyc create mode 100644 SERVER/api/internships/__pycache__/fetchInternships.cpython-313.pyc diff --git a/CLIENT/src/app/page.tsx b/CLIENT/src/app/page.tsx index 7030f69..b2421b5 100644 --- a/CLIENT/src/app/page.tsx +++ b/CLIENT/src/app/page.tsx @@ -4,33 +4,41 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; const LandingPage = () => { return ( -
-
-

- Welcome to Our Platform +
+ {/* Grid overlay for cybernetic effect */} +
+
+
+ +
+

+ SYSTEM ACCESS PORTAL

{/* Admin Section */} - - - Admin Portal + + + ADMIN TERMINAL - + @@ -38,25 +46,25 @@ const LandingPage = () => { {/* User Section */} - - - User Portal + + + USER TERMINAL - + @@ -65,8 +73,9 @@ const LandingPage = () => {
{/* Footer */} -
- © 2024 Your Company Name. All rights reserved. +
+
SYSTEM VERSION 2.0.25
+
© 2025 YOUR_CORPORATION || ALL_RIGHTS_SECURED
diff --git a/SERVER/__pycache__/main.cpython-313.pyc b/SERVER/__pycache__/main.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..531473eee73e1d80596d5db699795c5069a4afd7 GIT binary patch literal 1885 zcmb_c&2Jk;6o0e3{-{3_JFy$5v{uqeI3-R>RjQ^HsEUe+E!-+b2nkEp*1L%p*}G#Xyl~29(&3bq3hE}<-(mwy*{C@L3Ja2Xw zk4FHXU%&Zn`xgb^Z{c`P*agD{3E&Y_p-Re7B9!C>mda8|rgBN4isQ@WKq*K=E)F9; z<>Cn9sEcEW;|^BJiBgg#-SsJ4pLTHyaXJq*vH(}y66g$Ol*_ZoWRQ_3m~2g1fLitn z8A*|y*}UX#oA{|EtAQ0#4OT;F#T&jBaI}{vL@unJ@}gBExp56SjQl!v)K|wQ)bpsm z_TSjGjHh<8zfKW4QQ_D3#u$E0Z&buj%rbqVB0W}Y#|w#PqTK@Fp$}DN-@LO?ka+M8 zHCS8aVXAK%%+@K=L27kJD6xKfv-+{2X)S$6rTW*iP229Qt*o@HhT3Xc%wD^^y1M!a zCrbr|$JJKL+NoRA*fvbYr$=ss>Y8rahT3ADqOIFaOY_~Pu4+1EJj863+TBiL@=#=S z_V68kgk}-)IOm`H{H9=!J>Eoa;2mfpe~&zpD}fm9+=ehz0$1fN@|aYxbxFI+Lk-I` z^@jZzh9V9>zrI#mx7uyPUcPB+%j=f;Wml)Q>aERBZ*A7vs$mv8U(q;99W#%B&7gS( zyYNpW_T$onrHAhvDwzW%^I{l7;=9ueehw}W9%jw1tyw!}0~!AjP3+mY*>`hkmw>QqTIz+ z*vRszaJ;>eYDJYM75bGk=0HI(|Ui9cj0)_L#}XiW(n-2J}!iZEwirQ z!<#gkK5=e5VVI3pS97z`V`t05H`p$5Wb)KJ~jvfQ4S&XJEV@3)KPlrN$TQJCU=z1 z>|b!qAPOY?9D+m|Oo0^m;mo&Z?i&Z>^mB=j>`(@2ZXgiGamgcPbc_w61OCfxHqxZu0{*L!eo?5+I)XPq1H5-rKD2mk;8 literal 0 HcmV?d00001 diff --git a/SERVER/api/ats/__pycache__/__init__.cpython-313.pyc b/SERVER/api/ats/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d16fd2cd4f24c53241ac70a0aea0c434aebbe201 GIT binary patch literal 405 zcmXw#yGjE=6ozMJlk7&bilSK9*rtf477-+*89{UdRtv+p8RC$=d1gamB{sf+58<;2 zKESkAc4~^Wo{{V+KF&Xv^9{2M!wrJ<{`4_BXWXgZYTs3*7d${9_jkFQ%W#OfHJd8+5J0NCHJC)B2mVySB(wT zq5_#zLS<5?wo}Jk;+?HJnW;`wV-M;)FJLOvqEw(&o+!H;{Y$PC+oP1OSU}l|AbuQv_kvCK>_dqA Ee`>{aIRF3v literal 0 HcmV?d00001 diff --git a/SERVER/api/ats/__pycache__/ats_resume_reader.cpython-313.pyc b/SERVER/api/ats/__pycache__/ats_resume_reader.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..985f0f0be9349b52fde1f0b1595f7eec104db391 GIT binary patch literal 12112 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 TioyNTca3#}9nyC@hZYjx{l11$1Sf{kXe?vFj^ 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 literal 0 HcmV?d00001 diff --git a/SERVER/api/auth/__pycache__/admin_auth.cpython-313.pyc b/SERVER/api/auth/__pycache__/admin_auth.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f761d3ab545ce205d44cca23ef43489ea3809b6c GIT binary patch literal 2720 zcmb7GO>7fK6rT0&de^^6AWob(DQ-wY-QxT~5CJUz?I zu-Izy%q)jFfyKNR^&r98i3Bc2kJ8npu+7x+ptbGO+GA7?8m*cj?1(uc9XrClPOy(s zRZ(!nY$q*(vlA^cyR%&XGt0GamK|of56p5WnLyJ^vTT4dY?Bv45iOUMF%hODT|TEJ zq7ILoi0|_Y?VJr&CP2H6VhB?L!WMzTbRUW_F;=h~gAtRXcR6O4 zV+ki%u{FsBc!QlJd%Wa9XYlj6R4Oc`WrLN|l9Dp`jHK&J8crB?(-koe4n9KRN1VZn zq6(IxXxK$DttE0P!aGIrYEDY+j5LYjyn^*?N>OE1gJD|FVgt02s%lv&t7xhYT8}8| zM2d@2Hj9&%~y+bXv&ODMlPL=#H5T8lXBUG zSk*SqqhOMgG%m}+viFS_wAV~*L?W%^SHfc*f`23Vfgi;4B2Q+S_7P6 zH)H#emV^M4(_jZ7PC{IS5M3BI)!3>hULtnZ2r!CFctz)VP4DM0TVJ_3dY zmzH&1O3EvTLh3asr6m03&HJYTE&<-WY{O<=g?L3?HtZL$qNgPSa>JT2dBYmVvIJLl zaN~dlcaaSoRV$I)vrg{C@5dxj48C^Nn4sDNpZ*z;muMAja?T>xUf|jvp5EYkpLg{a zyMoWUf*W0f#jdeJ*I3Eh{f+x;cgfRvKYA}(lUjXSHugPxzH6+E*lx$ah;4VQIm&L- z(OdK$FL;laJpQ7mzu@UFfhor{+slZt*~?DU(wX-S=9`A{{Loeh%zC9C0#9yDc26?USSgW&D2z08qX9oZX%N&+d> zAZ3Rjr5dIaijY^Mu0fJD(3;@T5dl$y1dr~fw`nJW9n~ngLEFGT&^FgO0ir+;(5fX$ zqHDHDYmM9Md(fOkU`UFerd1l&ArD|(d!0S!Xn`AG05rT{+X2nG2^xFYgb84SU0RT_ z9H0%0lBhz*#0I}8DT&LPt{d!!!pP_tsdZ8+sbM9%kUoGk)11v}S7a3m5XKr_@r2a4 zhOr#a`T-vaS8Ed8}CbfXr>fZw)82iWDQ}hO&c>^2XcZ%Ne zf_MDM(l6{Ej$a-5iI4N%@w|7gcxY~Qw!}H_T)%n!fv?yREOZ1nxZvZy;>c8CWa?*S zW8{3P?alk@J@vb2F*s2OPW*JG_`#(D{F*;msBkKjzZffClnNK6{GwK9%H;XXW^;SqTLYsD9lk`p(n%)W8ku%dKTy+l z=EtcvU;|ACH!nf;%_tZiRCrG^%Lxgh9LFR8hO7GS3_yXGQ#vNls)l};aAtVTI!nrs zVa4X38H34aQ0K{eWCqMEb9=ST;NPwOU6{aUz=V`0{RWUSO;OYf)cpdz@d6$H3)wfF zZL79zhM`*5LfZ(sZ6{5&-tE{%&~4d~{qUE*RqH0j-SOS@`1QXt^s0v1WtI4Oh@K15VNfl`XCP~wfNifpr5?6p~9?>e*V zBH&OO4x#FyQKj_b)b`Z&)2;vY6~RVopqwFpTT06p;BLpCopo z753j%p&SjbaWzA zn*iw}BqM?)M0^q^%!^27Wlr+F1R4)96iF=c%e>6e@PL-{WPT##*ceazAUxnUmcvs+P5ClFYoz5;L!Ti(&y+P!vNgXo}*Bic&B$r98zUMY&f}^GBL9ijvidW#@H6 zGfYr3mQ7rcs)k|OD!r1WC?p7b5qcE&oT6A%o>o-bCi)V@f*OQCSA!q9{nOXvX|qt! z?Y`?qrf=Fb?v*qmOEby0W|Fd6)Md3~FUxr|ryKpnHSaFoK<{I9!tel9gUws#c8o3CwOe0cSPzTenx(gteJcs+Qf1VO&yxp7&F(?_oeCJ508ZNXo=57P4}3NgP; z4sfECT$7e{dy^WBnfEFjcn)&ZKkUrxSAf@p?MH1J~7{1%h4RP{p10B!3DCLv< z5-$m3jKP4PmSbH5{hvKkj1=f+FVLHd^yUJZ-yUVMI2N2I0dNS#!L2T9M1#a7#3bv@ zv{a&yYSFA&GBPp7_30VU)XOk8RYK0gmx zeqs%0n|C#1y=Bfwn}ld-JKCs@nCOZNM7Ihm-PZLNJ?sXvx{*;zhE6k;9+S|}6Pk5a2B=7;!1gO#VM_qTQ{80 z#(rDG>3YR!9dts2hpnhJh5xo_7Tq75n#AAZsd4u4Q~+SC$>p;u^o62MXs3gIw3bl~ z=n{m6!S&l~Mcv5NJ4jPKX8q8Sw7lh2Gl_x~Iq#Vguf4i#(S%M!T!L6cQ;k8s7Y?bw+w31bUxEPu literal 0 HcmV?d00001 diff --git a/SERVER/api/auth/__pycache__/register.cpython-313.pyc b/SERVER/api/auth/__pycache__/register.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d06dc01c3a2b3223b3bbf81fa601084c1161ea7e GIT binary patch literal 1363 zcmZux-D})N5TBJ+ANS=nv7IV5O%69{QR+C<)EJkN;+T~9jE``_eyKpHKG~7Elg=Yu zOX5P^8j?bv{9xRFp>O>c@?0o)&BGZ%XrX!Wo6QAE-#V+ia~eKM-|WuMGFWnZ;6PSPxp7t$rd|`WS5T)334{88dq%984+6%s*PJ zgw5E)MEk;xVuB`1GWXrcTMnyUjR0SXJX||-KJ;$`-Fsx+2OE%CfRe>fz6Cb76-)Y% zc2Z3~)%dBV2+dMa-Ox-ORRTvMNr}GRtkueH-Afd&?)tSvZ@5wPO^DTmV_5TkfwHM3 zy5j`o<2Xsyaq3~USrdBRakiRnt-o{0an^l|;+h|LK}g$j6k|eGHwePmjr}l)$U5pc zkw9yX8^`E>MR_1I7U(ivnvi_F@Tt8J*6V(JXFjOjSqOuzriZrmptAa)V!I9BcAN2I z8@&xbq8v^&o}|x7g?LhQmBe#69J;)_e3%>BE%mf);n^aN(pKvDbm(rAQhaxCO2P$P z>(`LH05qDrG`lKU--jY){Yzm_M}-)7e*Djp%7A}oTvnhWvVLxmRX=AUNY<3wZ|{&b z|F%USi%oG$nq!N^>c_;Aui3s_R`L+A6?S1nc40(zQAA4?r{4sfNH8m}Gn1E1jv0!I z;(nMDLflDEw(7<%5tr&jgvmZaKdQTe#);ZU^+a7m&!vi8^u2`d(lJS{=jw=JL?Xq- zB8qY*`k+vFgPnD8t&$(s3TH-Ru~XZDaD+?au7O_Uyyfs@qxJY_D#%;-~H0 zc8hPH6v+4A=n6&sVSe~NV=qS8{OA0|)!U?(&0M0bQ!f)eQM4*@64Xmis%}7B$F$c9 zz1K}q19`P5KNWkw1KtR!XT%HBe(2G)_x{g%U3U*}(XOCrv`FGuW{mv_AH0I= zuVC^G=WOW5xi>(|NglGpKaKCGe=+U(`1j+j!h0{-^EruP5=M^ literal 0 HcmV?d00001 diff --git a/SERVER/api/blogs/__pycache__/blogs.cpython-313.pyc b/SERVER/api/blogs/__pycache__/blogs.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d18839ad68acd7d940404555b320088310d93084 GIT binary patch literal 2335 zcma(SO>YxNboRr${>+C-VsM<`e8-f;5Rp_MS}7m2O;Q5#ihh9A)nad)P3>JXy9Omv zMSufodnh2Gq^HtTMSnoWnQNsg#u9e7K~>dWxH$?^#jS5(ubKDe&3iNZ zfq)kQ{CfSj%Dz&1;P!_?HM-K@|@Vj7~3;_em-FoEEO*S z$IoPq43W+#rh3*$tJxT9^K)9tvbkw}4K(hwVyTvvQ&X?|tA&sD-v{Y^lth@35G0Gi z+z?9gNteWqfQC{Wr39eG6D-L%Xn7)&T-covVj_lXLC<}FY?ozxsp>FkR#vsel%ZRy zZaqXxF^}z*WnIasvTS>0IcKB`Swj0|`AR{_)-)7bltEN zOEYv+mazc7ut*$s%Cbr1DOs^BtX+o05Q7%b?ZZHJeD+jw*2v{FYiwFikIfqTm4b?s z(wW33XA(&zuO%--3QY%(=hx_AC?W?k!+>t1im&C?f`bC>cLwg5cSgVd;wj&ayFg8i z*S&GrD^B;ac`~JH1ppQZxnbObvHujL11JhPzeMB|5^SAn%>C#BN|3xZfy78`oRPSb zoX%WeB%a)dz9NM|pwZ;g^oyu~}% z9&B;}EJ(?vHUUT@O(I}H+WV$d@{S9GNb*VkW6U62?b6wIxn(96ShC%#ik7}?n5OOe zNSc_Og8uU=*^GfTYb9seJT{;!T+?%B=a+0&OWQ6rr)b%j3zN*-V!>3gtfg^)aDq~> zRt#+Oq=8AR!>q&vYDz6Ic|q`Dg8B&>AgjcjYMM$$T_5_~C`1*kMxk$_&Q{vGnvPmV zG=){zGD?ax)@F07*DPB|t0{OrFl}P*d90Z^Wd`)Nkf*dQIE$P>`Bl?^CQlb~dD97n zRGTdntdwqCds|#F4wI{}#k{hXHI%gNbM}>K!;se~8ja!*G4VN`s0JSc38^>p383d_ z1O3y|{@v;~tJ@tvguf3zxcKPPNAty&4>mrmh%K8}Z(QFVDT#f%k>PS=>`7#-6p5E3 zQ^m+srSs6%#k&_Pq26ul?pM2^?ydEE>kkHhI{M?$QYc>O>e zPqzTG-b!DSWz|Zp&bf_Y4W1xc-U2OeW(h8F z6xQMxAltL7>1jEq&`-uigEYyDSHDFXyK}wx1jvVBm}Dir#bBfy9C#8OCuK%f_cas<9`+>m{`yjmlb&K^BN{Oz+_K5;8fB$ z{3vSHbe?Y#rtQwJr4=2%222iZ3)Wg*(=&~~1Cye~?@%44KdQ~=4ft6OGt~Phicr?~mnZmb_lEF-=a|Um z$rlKwsu!{D+ub+1H!Z*S@{+<%kyT`IjJ5e8| H6piUW$O7sC literal 0 HcmV?d00001 diff --git a/SERVER/api/internships/__pycache__/addInternships.cpython-313.pyc b/SERVER/api/internships/__pycache__/addInternships.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6720311f5da7569f6194d0b4a17a2390eea2c43d GIT binary patch literal 1679 zcmaJ>F>l*O6n;liB&A5P1le^QH>&K!HH6yEQo(Ie3y=+?ke$kbh;&F8u&hYiEF_XS zQm);lX#_MwmoDDBcI;2cT%eGeK>`5-1=_`%3fd)`eTDeR5B0wfdW)grAlh3ToQ_yCj(WH)X0aNBHx6sg^N?sy=X3W$~NRk5G~#> zRh))zQl_lyp82_Bm^D;lB^z1W+qc~6CFd{<1^N|ak3j`W6rh|!D8B%zphgsK5iKF& zFOYD7A|VoSpLl^Jh7_4fEHuiJb;_0?;#+>r46YfbSEZKgTaFz_Rj2Oi_E8|$oT@&c zJl}Fn+X!T%K||^nDCgur)-+qMo0=BHG_CF!jT*yoO?%SNYeUO~rtMnP^J|uE+76m| z&!+*hx@|jt=*(lRW&6RDrg@C2YP#=J>nltf+URu*wT}~m!p0}+hEuOw{&LYamNy*x zNyDV7vRV0Jv!d#*rJ|c*Qax2Sj8Trg756Co@^E2a?`3g$4&7LyS?VU!&7E$1qPg8o zB%Aln(GU0NG;Ruye4DC1qDO*^;|Sa-lvvV*GI(?h;GOPVwIXYR@DD{;^+)I3{rzb+NdNv_M@{|dV`s- zU#&-)MREeC*Tv-&p2FXml};xAM<)L=v)aiN+L=N(HQPzewNrE5>ABAIa(jBYo4(aa zFSOGO-N{U6a`J{A8Y((~ExXIqK+m*jSji;_eB=dC_4+2?_~a~4wJRsRBy C)MAeS literal 0 HcmV?d00001 diff --git a/SERVER/api/internships/__pycache__/fetchInternships.cpython-313.pyc b/SERVER/api/internships/__pycache__/fetchInternships.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..40412671c67c9ebfbdf7b3a44f5cc9ff307fa115 GIT binary patch literal 1121 zcmZWo&ubGw6n>LUb~kBavxuk>OROzzgjNx2MMSN&hc>mAEP8QaS+kpVA=zDLHbQ%` z8n6d1UiwE={7(c?duSLa2zu$wl3u*|W|A}oAMBg&{g|2e=6&1AS$yZ1M~)L z-H)mwxi7sEpi@E54p=~m2{d66s*Hn`v{Ghb0wWSBCn$M>QWB|{r=B29AXBH>TDp{> z;*k!8;;Gn=>mDC+JyxZD6#HSowQAUioM40N^|0!6T`cw^FL1f;HmP*&!b(Z!x@`we z!?SIkvF%3aHtPasZTnTzsrMqowq5fni|c;i1tEqN7E_L1CkVn=9>#>%4`P1KwwZ8M zZ6}VY{}P`KWAqG`+QAR_!}+_`eAsCC@zh-4PR)nGtENXSbD{Elp<+3aZ{ab$M`c#c zi>vE{S7y`EhU{G`(LXDq+J<%}*II1n&$gbnv%{@&JC|=Q_tE=hdLEPHmd$h5@rvv6 z*i-lXH@y~a=&Yl<3PqgY3q)P1B>HHu4ro^ClXnn2A=M(%cO9AWn(QbmsVoHW48}l* z6?ImrkrG)cDLlVQeb#UW4RbY;9-glGfonH#sK~pd>%|d6}>~|A4$u7B( z{G{E)sxn-wIXKhEr-Ij9k2YK Date: Mon, 10 Mar 2025 12:45:56 +0530 Subject: [PATCH 2/9] solve merge conflicts --- CLIENT/src/app/page.tsx | 76 ------------------ .../fetchInternships.cpython-313.pyc | Bin 1121 -> 1154 bytes SERVER/api/internships/deleteinternships.py | 16 ++++ SERVER/api/internships/fetchInternships.py | 2 +- SERVER/main.py | 2 + SERVER/prisma/schema.prisma | 28 ++++--- 6 files changed, 37 insertions(+), 87 deletions(-) create mode 100644 SERVER/api/internships/deleteinternships.py diff --git a/CLIENT/src/app/page.tsx b/CLIENT/src/app/page.tsx index 83b6e57..e2680c9 100644 --- a/CLIENT/src/app/page.tsx +++ b/CLIENT/src/app/page.tsx @@ -5,74 +5,6 @@ import { RocketIcon, ShieldCheckIcon, UsersIcon, ArrowRightIcon, BarChartIcon, C const LandingPage = () => { return ( -<<<<<<< HEAD -
- {/* Grid overlay for cybernetic effect */} -
-
-
- -
-

- SYSTEM ACCESS PORTAL -

- -
- {/* Admin Section */} - - - ADMIN TERMINAL - - - - - - - {/* User Section */} - - - USER TERMINAL - - - - - -=======
{/* Navbar */}
-<<<<<<< HEAD - {/* Footer */} -
-
SYSTEM VERSION 2.0.25
-
© 2025 YOUR_CORPORATION || ALL_RIGHTS_SECURED
-======= {/* Hero Section */}
{/* Background decorative elements */} @@ -136,7 +61,6 @@ const LandingPage = () => { />
->>>>>>> 61eb8a21b6ff2c4df8dabb79443d0bf6cc26d84c
diff --git a/SERVER/api/internships/__pycache__/fetchInternships.cpython-313.pyc b/SERVER/api/internships/__pycache__/fetchInternships.cpython-313.pyc index 40412671c67c9ebfbdf7b3a44f5cc9ff307fa115..c94641cf42be5b7eb16f71cdafaf970d7d05793e 100644 GIT binary patch delta 199 zcmaFJ(ZtF7nU|M~0SG!Ko=ZQnk#`~!7YmTr48)(aCa+*}_jmJ8Ot7X(c% z2>M;;_G@st!Oh>`{gIi0$Di?MF%M8>lZG+lDn>(=)$GQTS23Fz$^gY~u@&W)mZTQl mVopyjDN+E66!C!waS$N^ByMro<|kAT}ld delta 186 zcmZqTe8|E3nU|M~0SHdlpG#k}k#`~!7c-F848)%^Ca+*}R|(O!7>Oev@^W z{oLe$e10G<)&vqS85$U#2r6C|)VL(5aamC7x}eELL6ggZX4kpR8eDF0^EY^ZWM<$o z|5?lfRNbU*#JG~tfMpfC(d5(2W`(_KCoks! diff --git a/SERVER/api/internships/deleteinternships.py b/SERVER/api/internships/deleteinternships.py new file mode 100644 index 0000000..fc709ad --- /dev/null +++ b/SERVER/api/internships/deleteinternships.py @@ -0,0 +1,16 @@ +from fastapi import APIRouter, HTTPException +from prisma.models import Internship as PrismaInternship + +router = APIRouter() + +@router.delete("/api/deleteinternship/{internship_id}") +async def delete_internship(internship_id: int): + try: + # Instead of deleting, update isActive to False + await PrismaInternship.prisma().update( + where={"id": internship_id}, + data={"isActive": False} + ) + return {"message": "Internship deactivated successfully"} + except Exception as e: + raise HTTPException(status_code=404, detail=f"Internship with ID {internship_id} not found") \ No newline at end of file diff --git a/SERVER/api/internships/fetchInternships.py b/SERVER/api/internships/fetchInternships.py index 39f251c..fb4aa8b 100644 --- a/SERVER/api/internships/fetchInternships.py +++ b/SERVER/api/internships/fetchInternships.py @@ -14,5 +14,5 @@ class Internship(BaseModel): @router.get("/api/fetchinternships") async def fetch_internships(): - data = await PrismaInternship.prisma().find_many() + data = await PrismaInternship.prisma().find_many(where={"isActive": True}) return data diff --git a/SERVER/main.py b/SERVER/main.py index eb12d29..ad523f9 100644 --- a/SERVER/main.py +++ b/SERVER/main.py @@ -7,6 +7,7 @@ from fastapi.middleware.cors import CORSMiddleware from api.blogs.blogs import router as blog_router from api.ats.resume_routes import router as ats_router +from your_path.deleteinternship import router as delete_router app = FastAPI() @@ -39,3 +40,4 @@ async def shutdown(): app.include_router(admin_auth_router) app.include_router(blog_router) app.include_router(ats_router) +app.include_router(delete_router) \ No newline at end of file diff --git a/SERVER/prisma/schema.prisma b/SERVER/prisma/schema.prisma index 22fd13a..02962ee 100644 --- a/SERVER/prisma/schema.prisma +++ b/SERVER/prisma/schema.prisma @@ -1,19 +1,21 @@ -generator client { - provider = "prisma-client-py" -} - datasource db { - provider = "sqlite" + provider = "postgresql" url = env("DATABASE_URL") } +generator client { + provider = "prisma-client-py" + interface = "asyncio" + recursive_type_depth = 5 +} + model User { - id Int @id @default(autoincrement()) + id Int @id @default(autoincrement()) fullName String - email String @unique + email String @unique password String - role String - blogs Blog[] + role ROLE @default(USER) + blogs Blog[] } model Internship { @@ -24,14 +26,20 @@ model Internship { location String stipend Int duration Int + isActive Boolean @default(true) } model Blog { id Int @id @default(autoincrement()) user_id Int title String - content String + content Json author String date DateTime user User @relation(fields: [user_id], references: [id]) +} + +enum ROLE { + ADMIN + USER } \ No newline at end of file From b15df26340ffeafd799444b02a7b88d0ac8439eb Mon Sep 17 00:00:00 2001 From: Ananya Date: Mon, 10 Mar 2025 13:35:11 +0530 Subject: [PATCH 3/9] fixes issue#67 team8 --- SERVER/__pycache__/main.cpython-313.pyc | Bin 1885 -> 1998 bytes .../deleteinternships.cpython-313.pyc | Bin 0 -> 1113 bytes SERVER/main.py | 3 +-- 3 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 SERVER/api/internships/__pycache__/deleteinternships.cpython-313.pyc diff --git a/SERVER/__pycache__/main.cpython-313.pyc b/SERVER/__pycache__/main.cpython-313.pyc index 531473eee73e1d80596d5db699795c5069a4afd7..77de6f37b3a56e6eeb97f271cf91c9c166f9bc30 100644 GIT binary patch delta 419 zcmcc1caER$GcPX}0}vF>IG3);I+0I;F<_#4sYftFFtfLa7h9320z(X=5`!s74G-;W+WNO7#1al7)et`h)STWSdi(&8=A~wLFSWL7&TdCfCA=|jTklSWq~YP zh%#g{Mgm1MHWlmyRd5ni!9DpFBR9}hwv%5l%7bYxCJ3#=BqxExX`-7QnBo~3WhO6R zKEIZqHm}T-tHs#6J*&cFSWsoZp1_}WH-7hb8 diff --git a/SERVER/api/internships/__pycache__/deleteinternships.cpython-313.pyc b/SERVER/api/internships/__pycache__/deleteinternships.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5212990b8f365f82473bf514d62b67ba7784d886 GIT binary patch literal 1113 zcmZ8g-D?zA6hC+F&g{%2JKIe(MPqbo46?-}7GshvS{%|yH$n(IDupbB>CW9`WWRc6 z)|iMGt-{LVS|p8Gp< z+NqQYxPG|%^YTpv;7@7nEV`|FzE)O|~pIQPd|CS3L+<61!Q(vX)J5%7CmQ3}+!a{EpX1<1aEnEp2>m%b{BN+Etg+(mbg~zXV^`*eSAyWUdOWS31ibeSjogf|JBmT#7Q0Q}RgE3Q~EM+@teqFW%s)u6B|f10Ck| zk6=;TIU@;PKR}Hv8as%aboEPMfoq(iu9;I9anbLPGAYAZdIZX3ik3;XXI?0QFZ3XE zN>Ol?oks@M)fL8>NcdjliDZ?9p|{M|hr8U_KJ#R>7ct)so23$ll$({xTJSycv)=z+ z=Z%5TKYyFhyT1(t5B=2| zd_d#L{Ik(#N8&HPiYH3XEkD-%cP%R2|AwDn4Y!GNfZX{w2S1Xj#G_;m9!uaSl7lCv zGeDnG%gNBE8CB{76kYRKQzXkC^4D@vRxc=Ew;V z6xry|@DSSQ2fj~6>1QypSz({?AvEQ1gwrUnQbK-*6TiXqYoqVG!42&XlKgh))=-?D bd_ksKia{88aH Date: Mon, 10 Mar 2025 15:20:40 +0530 Subject: [PATCH 4/9] issue#67 team 8 --- SERVER/api/internships/deleteinternships.py | 47 +++++++++-- SERVER/api/internships/fetchInternships.py | 7 ++ SERVER/api/internships/frontend.jsx | 89 +++++++++++++++++++++ 3 files changed, 136 insertions(+), 7 deletions(-) create mode 100644 SERVER/api/internships/frontend.jsx diff --git a/SERVER/api/internships/deleteinternships.py b/SERVER/api/internships/deleteinternships.py index fc709ad..7b01693 100644 --- a/SERVER/api/internships/deleteinternships.py +++ b/SERVER/api/internships/deleteinternships.py @@ -1,16 +1,49 @@ +# from fastapi import APIRouter, HTTPException +# from prisma.models import Internship as PrismaInternship + +# router = APIRouter() + +# @router.delete("/api/deleteinternship/{internship_id}") +# async def delete_internship(internship_id: int): +# try: +# # Instead of deleting, update isActive to False +# await PrismaInternship.prisma().update( +# where={"id": internship_id}, +# data={"isActive": False} +# ) +# return {"message": "Internship deactivated successfully"} +# except Exception as e: +# raise HTTPException(status_code=404, detail=f"Internship with ID {internship_id} not found") from fastapi import APIRouter, HTTPException from prisma.models import Internship as PrismaInternship router = APIRouter() -@router.delete("/api/deleteinternship/{internship_id}") -async def delete_internship(internship_id: int): +@router.put("/api/toggleinternship/{internship_id}") +async def toggle_internship_status(internship_id: int): try: - # Instead of deleting, update isActive to False - await PrismaInternship.prisma().update( + # First, get the current status + internship = await PrismaInternship.prisma().find_unique( + where={"id": internship_id} + ) + + if not internship: + raise HTTPException(status_code=404, detail="Internship not found") + + # Toggle the isActive status + new_status = not internship.isActive + + # Update the internship + updated = await PrismaInternship.prisma().update( where={"id": internship_id}, - data={"isActive": False} + data={"isActive": new_status} ) - return {"message": "Internship deactivated successfully"} + + status_message = "activated" if new_status else "deactivated" + return {"message": f"Internship {status_message} successfully", "status": new_status} + except Exception as e: - raise HTTPException(status_code=404, detail=f"Internship with ID {internship_id} not found") \ No newline at end of file + if "not found" in str(e): + raise HTTPException(status_code=404, detail="Internship not found") + raise HTTPException(status_code=500, detail=str(e)) + \ No newline at end of file diff --git a/SERVER/api/internships/fetchInternships.py b/SERVER/api/internships/fetchInternships.py index fb4aa8b..c692a5e 100644 --- a/SERVER/api/internships/fetchInternships.py +++ b/SERVER/api/internships/fetchInternships.py @@ -16,3 +16,10 @@ class Internship(BaseModel): async def fetch_internships(): data = await PrismaInternship.prisma().find_many(where={"isActive": True}) return data +@router.get("/api/fetchdeletedinternships") +async def fetch_deleted_internships(): + # Fetch only inactive internships + data = await PrismaInternship.prisma().find_many( + where={"isActive": False} + ) + return data \ No newline at end of file diff --git a/SERVER/api/internships/frontend.jsx b/SERVER/api/internships/frontend.jsx new file mode 100644 index 0000000..ba0eea6 --- /dev/null +++ b/SERVER/api/internships/frontend.jsx @@ -0,0 +1,89 @@ +function InternshipCard({ internship, onToggleStatus }) { + return ( +
+

{internship.title}

+

{internship.company} - {internship.location}

+

Stipend: ${internship.stipend}

+

Duration: {internship.duration} months

+ +
+ ); + } + + // In your main internships component + function InternshipsPage() { + const [activeInternships, setActiveInternships] = useState([]); + const [deletedInternships, setDeletedInternships] = useState([]); + const [showDeleted, setShowDeleted] = useState(false); + + useEffect(() => { + // Fetch active internships + fetchActiveInternships(); + // Fetch deleted internships + fetchDeletedInternships(); + }, []); + + const fetchActiveInternships = async () => { + const response = await fetch('/api/fetchinternships'); + const data = await response.json(); + setActiveInternships(data); + }; + + const fetchDeletedInternships = async () => { + const response = await fetch('/api/fetchdeletedinternships'); + const data = await response.json(); + setDeletedInternships(data); + }; + + const handleToggleStatus = async (id) => { + const response = await fetch(`/api/toggleinternship/${id}`, { + method: 'PUT' + }); + + if (response.ok) { + // Refresh both lists + fetchActiveInternships(); + fetchDeletedInternships(); + } + }; + + return ( +
+

Internships

+ +
+ + +
+ +
+ {!showDeleted ? ( + activeInternships.map(internship => ( + + )) + ) : ( + deletedInternships.map(internship => ( + + )) + )} +
+
+ ); + } \ No newline at end of file From 6e6dfa7b646f3de97b965b52bfd6a51c445025ac Mon Sep 17 00:00:00 2001 From: Ananya Date: Mon, 10 Mar 2025 15:28:58 +0530 Subject: [PATCH 5/9] changed --- SERVER/api/internships/frontend.jsx | 89 ----------------------------- 1 file changed, 89 deletions(-) delete mode 100644 SERVER/api/internships/frontend.jsx diff --git a/SERVER/api/internships/frontend.jsx b/SERVER/api/internships/frontend.jsx deleted file mode 100644 index ba0eea6..0000000 --- a/SERVER/api/internships/frontend.jsx +++ /dev/null @@ -1,89 +0,0 @@ -function InternshipCard({ internship, onToggleStatus }) { - return ( -
-

{internship.title}

-

{internship.company} - {internship.location}

-

Stipend: ${internship.stipend}

-

Duration: {internship.duration} months

- -
- ); - } - - // In your main internships component - function InternshipsPage() { - const [activeInternships, setActiveInternships] = useState([]); - const [deletedInternships, setDeletedInternships] = useState([]); - const [showDeleted, setShowDeleted] = useState(false); - - useEffect(() => { - // Fetch active internships - fetchActiveInternships(); - // Fetch deleted internships - fetchDeletedInternships(); - }, []); - - const fetchActiveInternships = async () => { - const response = await fetch('/api/fetchinternships'); - const data = await response.json(); - setActiveInternships(data); - }; - - const fetchDeletedInternships = async () => { - const response = await fetch('/api/fetchdeletedinternships'); - const data = await response.json(); - setDeletedInternships(data); - }; - - const handleToggleStatus = async (id) => { - const response = await fetch(`/api/toggleinternship/${id}`, { - method: 'PUT' - }); - - if (response.ok) { - // Refresh both lists - fetchActiveInternships(); - fetchDeletedInternships(); - } - }; - - return ( -
-

Internships

- -
- - -
- -
- {!showDeleted ? ( - activeInternships.map(internship => ( - - )) - ) : ( - deletedInternships.map(internship => ( - - )) - )} -
-
- ); - } \ No newline at end of file From 19cf09a99bb9656be7076c1f6742e4d0e2690a47 Mon Sep 17 00:00:00 2001 From: Ananya Date: Mon, 10 Mar 2025 15:33:07 +0530 Subject: [PATCH 6/9] changes --- CLIENT/src/intern.jsx | 90 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 CLIENT/src/intern.jsx diff --git a/CLIENT/src/intern.jsx b/CLIENT/src/intern.jsx new file mode 100644 index 0000000..79ee444 --- /dev/null +++ b/CLIENT/src/intern.jsx @@ -0,0 +1,90 @@ + +function InternshipCard({ internship, onToggleStatus }) { + return ( +
+

{internship.title}

+

{internship.company} - {internship.location}

+

Stipend: ${internship.stipend}

+

Duration: {internship.duration} months

+ +
+ ); + } + + // In your main internships component + function InternshipsPage() { + const [activeInternships, setActiveInternships] = useState([]); + const [deletedInternships, setDeletedInternships] = useState([]); + const [showDeleted, setShowDeleted] = useState(false); + + useEffect(() => { + // Fetch active internships + fetchActiveInternships(); + // Fetch deleted internships + fetchDeletedInternships(); + }, []); + + const fetchActiveInternships = async () => { + const response = await fetch('/api/fetchinternships'); + const data = await response.json(); + setActiveInternships(data); + }; + + const fetchDeletedInternships = async () => { + const response = await fetch('/api/fetchdeletedinternships'); + const data = await response.json(); + setDeletedInternships(data); + }; + + const handleToggleStatus = async (id) => { + const response = await fetch(`/api/toggleinternship/${id}`, { + method: 'PUT' + }); + + if (response.ok) { + // Refresh both lists + fetchActiveInternships(); + fetchDeletedInternships(); + } + }; + + return ( +
+

Internships

+ +
+ + +
+ +
+ {!showDeleted ? ( + activeInternships.map(internship => ( + + )) + ) : ( + deletedInternships.map(internship => ( + + )) + )} +
+
+ ); + } \ No newline at end of file From db2a166c391da9cbbbc5a9369ab4e5b1988629d2 Mon Sep 17 00:00:00 2001 From: Ananya Date: Mon, 10 Mar 2025 16:13:42 +0530 Subject: [PATCH 7/9] changes --- .../components/dashboard/admin-dashboard.tsx | 0 .../dashboard/internship-portal.tsx | 0 CLIENT/src/intern.jsx | 90 ------------------- 3 files changed, 90 deletions(-) create mode 100644 CLIENT/src/components/dashboard/admin-dashboard.tsx create mode 100644 CLIENT/src/components/dashboard/internship-portal.tsx delete mode 100644 CLIENT/src/intern.jsx diff --git a/CLIENT/src/components/dashboard/admin-dashboard.tsx b/CLIENT/src/components/dashboard/admin-dashboard.tsx new file mode 100644 index 0000000..e69de29 diff --git a/CLIENT/src/components/dashboard/internship-portal.tsx b/CLIENT/src/components/dashboard/internship-portal.tsx new file mode 100644 index 0000000..e69de29 diff --git a/CLIENT/src/intern.jsx b/CLIENT/src/intern.jsx deleted file mode 100644 index 79ee444..0000000 --- a/CLIENT/src/intern.jsx +++ /dev/null @@ -1,90 +0,0 @@ - -function InternshipCard({ internship, onToggleStatus }) { - return ( -
-

{internship.title}

-

{internship.company} - {internship.location}

-

Stipend: ${internship.stipend}

-

Duration: {internship.duration} months

- -
- ); - } - - // In your main internships component - function InternshipsPage() { - const [activeInternships, setActiveInternships] = useState([]); - const [deletedInternships, setDeletedInternships] = useState([]); - const [showDeleted, setShowDeleted] = useState(false); - - useEffect(() => { - // Fetch active internships - fetchActiveInternships(); - // Fetch deleted internships - fetchDeletedInternships(); - }, []); - - const fetchActiveInternships = async () => { - const response = await fetch('/api/fetchinternships'); - const data = await response.json(); - setActiveInternships(data); - }; - - const fetchDeletedInternships = async () => { - const response = await fetch('/api/fetchdeletedinternships'); - const data = await response.json(); - setDeletedInternships(data); - }; - - const handleToggleStatus = async (id) => { - const response = await fetch(`/api/toggleinternship/${id}`, { - method: 'PUT' - }); - - if (response.ok) { - // Refresh both lists - fetchActiveInternships(); - fetchDeletedInternships(); - } - }; - - return ( -
-

Internships

- -
- - -
- -
- {!showDeleted ? ( - activeInternships.map(internship => ( - - )) - ) : ( - deletedInternships.map(internship => ( - - )) - )} -
-
- ); - } \ No newline at end of file From cff7ce783a666ecc9b9fd62ab01f598dc9107bc4 Mon Sep 17 00:00:00 2001 From: Ananya Date: Mon, 10 Mar 2025 16:16:00 +0530 Subject: [PATCH 8/9] changes --- .../components/dashboard/admin-dashboard.tsx | 309 ++++++++++++++++++ .../components/dashboard/internship-list.tsx | 44 ++- .../dashboard/internship-portal.tsx | 32 ++ 3 files changed, 379 insertions(+), 6 deletions(-) diff --git a/CLIENT/src/components/dashboard/admin-dashboard.tsx b/CLIENT/src/components/dashboard/admin-dashboard.tsx index e69de29..6d2c02f 100644 --- a/CLIENT/src/components/dashboard/admin-dashboard.tsx +++ b/CLIENT/src/components/dashboard/admin-dashboard.tsx @@ -0,0 +1,309 @@ +import { useState, useEffect } from "react" +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" +import { Button } from "@/components/ui/button" +import { Input } from "@/components/ui/input" +import { Textarea } from "@/components/ui/textarea" +import { Label } from "@/components/ui/label" +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" +import { Badge } from "@/components/ui/badge" +import { Building2, Clock, MapPin, Plus, RefreshCw } from "lucide-react" + +interface Internship { + id: number + title: string + company: string + location: string + type: string + duration: string + description: string + isActive: boolean + stipend: number +} + +export default function AdminDashboard() { + const [activeInternships, setActiveInternships] = useState([]) + const [inactiveInternships, setInactiveInternships] = useState([]) + const [newInternship, setNewInternship] = useState({ + title: "", + company: "", + location: "", + type: "Remote", + duration: "", + description: "", + stipend: 0 + }) + const [isLoading, setIsLoading] = useState(false) + + const fetchInternships = async () => { + try { + // Fetch active internships + const activeResponse = await fetch("http://localhost:8000/api/fetchinternships") + const activeData = await activeResponse.json() + setActiveInternships(activeData) + + // Fetch inactive internships + const inactiveResponse = await fetch("http://localhost:8000/api/fetchdeletedinternships") + const inactiveData = await inactiveResponse.json() + setInactiveInternships(inactiveData) + } catch (error) { + console.error("Error fetching internships:", error) + } + } + + useEffect(() => { + fetchInternships() + }, []) + + const handleInputChange = (e: React.ChangeEvent) => { + const { name, value } = e.target + setNewInternship(prev => ({ + ...prev, + [name]: name === "stipend" ? parseInt(value) || 0 : value + })) + } + + const handleAddInternship = async (e: React.FormEvent) => { + e.preventDefault() + setIsLoading(true) + + try { + const response = await fetch("http://localhost:8000/api/addinternships", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(newInternship), + }) + + if (response.ok) { + // Reset form and refresh data + setNewInternship({ + title: "", + company: "", + location: "", + type: "Remote", + duration: "", + description: "", + stipend: 0 + }) + await fetchInternships() + } else { + console.error("Failed to add internship") + } + } catch (error) { + console.error("Error adding internship:", error) + } finally { + setIsLoading(false) + } + } + + const toggleInternshipStatus = async (id: number) => { + try { + const response = await fetch(`http://localhost:8000/api/toggleinternship/${id}`, { + method: "PUT" + }) + + if (response.ok) { + // Refresh data after toggle + await fetchInternships() + } else { + console.error("Failed to toggle internship status") + } + } catch (error) { + console.error("Error toggling status:", error) + } + } + + const renderInternshipCard = (internship: Internship, isActive: boolean) => ( + + +
+
+ {internship.title} + + + {internship.company} + +
+ {!isActive && ( + Inactive + )} +
+
+ +
+
+ + {internship.location} +
+
+ + {internship.duration} +
+ {internship.type} +

{internship.description}

+ {internship.stipend > 0 && ( +

Stipend: ₹{internship.stipend}/month

+ )} +
+
+
+ +
+
+ ) + + return ( +
+

Internship Management

+ + + + Active Internships ({activeInternships.length}) + Inactive Internships ({inactiveInternships.length}) + Add New Internship + + + +
+ +
+
+ {activeInternships.map((internship) => renderInternshipCard(internship, true))} + {activeInternships.length === 0 && ( +

No active internships found.

+ )} +
+
+ + +
+ +
+
+ {inactiveInternships.map((internship) => renderInternshipCard(internship, false))} + {inactiveInternships.length === 0 && ( +

No inactive internships found.

+ )} +
+
+ + + + + Add New Internship + Fill in the details to add a new internship position + + +
+
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ +
+ +