From fd52b33ca26e9bd8f2465788dab574a9d9331147 Mon Sep 17 00:00:00 2001 From: titver968 Date: Tue, 17 Jun 2025 13:25:16 +0200 Subject: [PATCH] annehmen ohne selektion eingeichtet --- prisma/praktika.db-journal | Bin 21032 -> 0 bytes src/routes/api/admin/anmeldungen/+server.ts | 49 +++++++++++++++++++- 2 files changed, 48 insertions(+), 1 deletion(-) delete mode 100644 prisma/praktika.db-journal diff --git a/prisma/praktika.db-journal b/prisma/praktika.db-journal deleted file mode 100644 index 719ff1baf531f081ccac53be0b9964ce8441d221..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21032 zcmeHO+ix6K8Q+bQI9|tbXlYjkN>(dXiPa98bDMKUr3hnhA}fjG`l2>LXmqaelD)Wl zY1&9UY>QB7C4>YO5AX=Q@<#sy-jR4MPZh0-ssiF7wG!f+ncekzcO9!2B1mQ=d)ITm zIp6R6zRNl1JL6m~yB=@`jx7KI3#T5-E$*H9!-nLxg!q2SJ8A|;VTJBkPjjT4HYP$V6;+cu)+UZ>h@$Xfnq-&=a*x4qKo7~P5MF*>Jx7jVWs>s;Vb-xr<= zap(oY5UT}o)F|Q`E*+LCkU}6zDMKV63JVorDVPft2`%-t0PVs@AreX{qXcrkq*9?+ z?aV)i7zGoUMXvhND8!bn$rxlJ`;Xq2<`allV~9j*VSI$WkowG{To_Mc%{{6t_MK)< z(9lAkAraUjVJJYO(l~;Ahi#xKGuBs@XsL-Wt>C^iAOQq2N4P*zJDsXcA^H?i%qWTW zTJlz>daGNHswQeSYA+{JfA5tG3ApdX;DnWd^s(|ZbO+XT$b-I#C!`M+!~ypm4}G5k zLqQmtKMc%c0d6N)ioA_SZ^Rhxih7_3EoN+W5^K8x); zw%TdQZaoqGOYiKd1YsB>)PdE85$YM=DUVWNJwdqi0)t5G{mRBj9k>@InueMqjY2As zf&dCssIVo5I0iN#;E2>gWC)*G7rO@?*azV9kWvSdK(VyM4`N^CFebwV zg-{j=zz_BT(!dV~0Hf|+ttm|+^5!Z^Jk0iNW*-MB+W zTMcGYV5b0l#VE%#0uGt=AyOd-u%(t!qo^b1V9myp#~ch@UZw(he!#?#uy2UNdU16*3kx-1CL_Z8sJi+ zKr;j3i?pwa#8N8=p46A#Pmw_g6Cc7MK_*STnuh25y+>yfP?Z=IWGX_OlO7F1aDHO6 z7jla|E{QWN1P6u?Mb2O(F$M+1a!?Hug|d*Gt{tTqa^hhM1py>}PihP31k75HW|aqX4)O(z z9DEjW5l{!|&I!vvH=$ZvP{{(}fI+>P*}AMI6W7eUy@h;&jl|fHZPs+|P%pSFJa z_*1Z?In!U(uq-iFhgcKeXdcV)NT=+^7DHT~gct24b}uXbm81C*t$Yc{4gCS~F2 zP4UUts_k~#dUulDK2NdCRoU5v!Ho0Yml!)$o308}bZhdkk=2`>>Wj&#=JcnB=ZkAo z+@KHRcDDga(2)}ONC|QmiFOC9-X23)TCH4M-np_}I)Clr#mf5mKBE0|<&h5iZJlb} zLSOa0a%mNue|zm}W$2;9?pAg-H^G~uxOHoL`RYdc@XEFIt?kWaFh{9845?^1{>a_3 zFPBRfuWeS=F0CiQaiKhHEiaWeD;F!!?@DE>R9+o9*nnV*<7}yPZ5<$7sX$C_g5J%w zmF@V}&PI&1w6eUlvbo3FSxpVn9my?7%^qk?Bu|zz)pC#dVw&@3MmW1mg*=(4z`t0ndnZss_ zR3b~lSrR@tHQnDyxL0~)w)iZ{_byi(#=f*McwcJxrcb0Syz~RBPFNjBFn>=<%=eec zJL_xD?o=SWRx8h!%9C>AJ(c6Rdx~87LU}}Ic?tF-HF7TBTTBoRlYjbJK@4el>-bb8 z!{+@bQq{u-(3mbpmoBw`v<>?5ThCspc5KNtTXoqfk=)r_KA-z$sRV5w!OtT646Y~P z%ji1;@jC=ZT_5GXc4zMdNaYtlj%61YKR*5M`QH_ORq*G&e*DJ#jhVM*esfeO_euL} z8}rF_?8i}mJNDYsXVM$&i2d2X@v{9{x~sf*`?I@mng%Zkj%`NzGx1Sds!uahpL{f~ z-sN)t2ife0(Zk7N_a_V4Vz>OiQ*rojdi1m+!987;e*SywZAZ1Oyr?V)$6P zR2^-C)oM}#Uh3hqv&AQ#$iH$vnMy`wM!y#hk~`Y;*=Rky5Z!+zf3h-LSo-c4XN&i0 zHUA1*m@Pj3c>ep(Bm`|32Ntx|!RM)i#0+kKHd6MSgi`Rd!oD0FG8|r}7%iX<;6x+O zP0c1F?PIxie}nT$3aAjl^M%=Bv6%05(=|%`())7!YwjRp$-PfW*RYn1`th{~2NSoO zt#R@SOB=^e7N2}Fe?7s{exU{%v#4$1#qx%>V}G7FfN!kvLhP?k!IMiX$4(ZXL-|}1 ztbHlj?KG3WBlvfhYP&9@di7>2DgC!2Gg->G>^E4f4>(Bj(NJ(&hqdNS zIDVM8V$ptQttR}Ff{B#Ww??&&sZ4V51g^UrM(A# { }); }; +export const POST: RequestHandler = async ({ cookies, url }) => { + const id = Number(url.searchParams.get('id')); + if (!id) return json({ error: 'Ungültige ID' }, { status: 400 }); + + try { + const anmeldung = await prisma.anmeldung.findUnique({ + where: { id }, + include: { + wunsch1: true, + wunsch2: true, + wunsch3: true + } + }); + + if (!anmeldung) return json({ error: 'Anmeldung nicht gefunden' }, { status: 404 }); + + const wuensche = [anmeldung.wunsch1, anmeldung.wunsch2, anmeldung.wunsch3]; + + for (const wunsch of wuensche) { + if (wunsch && wunsch.plaetze > 0) { + await prisma.$transaction([ + prisma.anmeldung.update({ + where: { id }, + data: { + status: Status.ANGENOMMEN, + zugewiesenId: wunsch.id + } + }), + prisma.dienststelle.update({ + where: { id: wunsch.id }, + data: { + plaetze: { decrement: 1 } + } + }) + ]); + + return json({ success: true, message: `Zugewiesen an: ${wunsch.name}` }); + } + } + + return json({ error: 'Keine verfügbaren Plätze bei Wunsch-Dienststellen' }, { status: 409 }); + } catch (err) { + console.error(err); + return json({ error: 'Interner Serverfehler' }, { status: 500 }); + } +} + export const DELETE: RequestHandler = async ({ cookies, url }) => { if (!checkAuth(cookies)) return new Response('Nicht erlaubt', { status: 401 }); const id = Number(url.searchParams.get('id'));