
    ]i                     
   d Z ddlmZ ddlmZmZmZmZmZm	Z	 ddl
mZ ddlmZ ddlmZmZ ddlmZ ddlmZ dd	lmZmZmZ dd
lmZ  eddg      Zdeez  defdZej?                  de        ed       edd       ed       edd       eddd       ee       ee      fde!dedz  dedz  de"dz  d e!d!e!d"ed#ede fd$       Z#ejI                  de e	jJ                  %       ee       ee      fde!d&ed"ed#ede f
d'       Z&ej?                  d(e        ee       ee      fde!d)e!d"ed#ede f
d*       Z'ejQ                  d(e        ee       ee      fde!d)e!d&ed"ed#ede fd+       Z)ejU                  d(e	jV                  ,       ee       ee      fde!d)e!d"ed#eddf
d-       Z,ejI                  d.e        ee       ee      fde!d/ed"ed#ede f
d0       Z-ejI                  d1e        ee       ee      fde!d)e!d/ed"ed#ede fd2       Z.ejI                  d3e        ee       ee      fde!d)e!d/ed"ed#ede fd4       Z/ejQ                  d5e        ee       ee      fde!d)e!d&ed"ed#ede fd6       Z0y)7z1Router for penebusan (BBM procurement) endpoints.    )date)	APIRouterDependsHTTPExceptionQuery
UploadFilestatus)AsyncSession)get_db)get_current_userget_spbu_access)StatusPenebusan)User)PenebusanCreatePenebusanUpdateSetSORequest)penebusan_servicez/spbus/{spbu_id}/penebusan	penebusan)prefixtagsereturnc                     t        | t              r$t        t        j                  t        |             S t        t        j                  t        |             S )Nstatus_codedetail)
isinstancePermissionErrorr   r	   HTTP_403_FORBIDDENstrHTTP_400_BAD_REQUEST)r   s    7/var/www/html/spbu.com/backend/app/routers/penebusan.py_service_errorr#      s:    !_%)B)B3q6RRV%@%@QPP     )response_modelN)defaultr	   )r'   alias)r'   ge      d   )r'   r)   lespbu_idtanggalpenebusan_statusbooking_codeskiplimitdbcurrent_userc           	         K   	 t        j                  || |||||       d {   \  }}	|D cg c]  }|j                          c}|	||z  dz   |ddS 7 2# t        t        f$ r}
t	        |
      d }
~
ww xY wc c}w w)Nr+   )totalpageper_page)datameta)r   list_penebusan
ValueErrorr   r#   
model_dump)r.   r/   r0   r1   r2   r3   r4   r5   rowsr7   r   rs               r"   r<   r<      s      -<<"2L$
 
e *..A.):N 
 (  Q  /sB   A>A AA A>A9A>A A6&A11A66A>)r&   r   r:   c                    K   	 t        j                  || ||j                         d {   }|j                         ddS 7 # t        t        f$ r}t        |      d }~ww xY ww)NzPenebusan berhasil disimpanr:   message)r   create_penebusanidr=   r   r#   r>   )r.   r:   r4   r5   resultr   s         r"   rD   rD   6   sj      (99|
 

 %%'4QRR
 (  Q 7   A%%A AA A%A A"AA""A%z/{penebusan_id}penebusan_idc                    K   	 t        j                  || |       d {   }d|j                         iS 7 # t        t        f$ r}t	        |      d }~ww xY ww)Nr:   )r   get_penebusan_detailr=   r   r#   r>   )r.   rH   r4   r5   rF   r   s         r"   rJ   rJ   F   s]      (==b'<XX F%%'(( Y(  Q s1   A7 57 A7 AAAAc                    K   	 t        j                  || ||       d {   }|j                         ddS 7 # t        t        f$ r}t	        |      d }~ww xY ww)NzPenebusan berhasil diupdaterB   )r   update_penebusanr=   r   r#   r>   r.   rH   r:   r4   r5   rF   r   s          r"   rL   rL   T   sa      (99"g|UYZZ %%'4QRR [(  Q s1   A9 79 A9 AAAA)r   c                    K   	 t        j                  || |       d {    y 7 # t        t        f$ r}t	        |      d }~ww xY ww)N)r   delete_penebusanr=   r   r#   )r.   rH   r4   r5   r   s        r"   rO   rO   c   sB      00WlKKK(  Q s0   A& $& A& AA  AAz
/parse-pdffilec                    K   |j                   r)|j                   j                         j                  d      st        t        j
                  d      |j                          d {   }t        |      dkD  rt        t        j
                  d      	 t        j                  ||       d {   }d|j                         iS 7 ^7 # t        $ r)}t        t        j
                  t        |            d }~ww xY ww)Nz.pdfzFile harus berformat PDFr      Ukuran file maksimal 10 MBr:   )filenamelowerendswithr   r	   r!   readlenr   	parse_pdfr=   r    r>   )r.   rP   r4   r5   contentrF   r   s          r"   rY   rY   p   s      == 3 3 5 > >v F33-
 	
 IIKG
7|&&33/
 	
T(222w?? F%%'((   @ T(C(CCPQFSSTsH   A$C>&C'-C>C	 .C/C	 3C>C	 		C;$C66C;;C>z/{penebusan_id}/upload-doc                 `  K   |j                          d {   }t        |      dkD  rt        t        j                  d      	 t        j                  || |||j                  xs dd       d {   }|j                         ddS 7 q7 # t        t        f$ r}t        |      d }~ww xY ww)NrR   rS   r   zdo.pdfdozFile DO berhasil diuploadrB   rW   rX   r   r	   r!   r   upload_filerT   r=   r   r#   r>   r.   rH   rP   r4   r5   rZ   rF   r   s           r"   	upload_dor`      s      IIKG
7|&&33/
 	
 (44w0I4
 

 %%'4OPP  
 (  Q E   B.B-B.+B 0B
1B 5B.
B B+B&&B++B.z/{penebusan_id}/upload-buktic                 `  K   |j                          d {   }t        |      dkD  rt        t        j                  d      	 t        j                  || |||j                  xs dd       d {   }|j                         ddS 7 q7 # t        t        f$ r}t        |      d }~ww xY ww)NrR   rS   r   z	bukti.pdfbuktiz"Bukti pembayaran berhasil diuploadrB   r]   r_   s           r"   upload_buktird      s      IIKG
7|&&33/
 	
 (44w0Lg
 

 %%'4XYY  
 (  Q ra   z/{penebusan_id}/set-soc                    K   	 t        j                  || ||j                         d {   }|j                         ddS 7 # t        t        f$ r}t        |      d }~ww xY ww)NzSO berhasil disetrB   )r   set_sono_sor=   r   r#   r>   rM   s          r"   rf   rf      sd      (//G\4::VV %%'4GHH W(  Q rG   )1__doc__datetimer   fastapir   r   r   r   r   r	   sqlalchemy.ext.asyncior
   app.core.databaser   app.dependenciesr   r   app.models.penebusanr   app.models.userr   app.schemas.penebusanr   r   r   app.servicesr   routerr=   r   r#   getdictintr    r<   postHTTP_201_CREATEDrD   rJ   patchrL   deleteHTTP_204_NO_CONTENTrO   rY   r`   rd   rf    r$   r"   <module>r|      s   7  P P / $ > 0   
 +	'

Qj?2 Q} Q Bt$ !./4T/R$T2aA&raC0v 1D[ &, *	
   	  
 %, R&2I2IJ v 1	SS
S 	S 	S
 
S KS d3 v 1	
)
)
) 	
) 	
)
 

) 4
) 5
 v 1SSS S 		S
 S 
S 6S  f.H.HI v 1		 	 	  		  		 
 
	  J	  \$/ v 1	))
) 	) 	)
 
) 0)0 (>
 v 1QQQ Q 		Q
 Q 
Q ?Q, +DA
 v 1ZZZ Z 		Z
 Z 
Z BZ, &t<
 v 1III I 		I
 I 
I =Ir$   