
    Ɉi                     $   d dl mZmZ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 d dlmZmZmZ  edd	g
      ZdedefdZej+                  dee         dd ee      fdee   dee   defd       Zej3                  de       ee      fdedefd       Zej7                  de       ee      fdededefd       Zej;                  d       ee      fdedefd       Zej;                  d       ee      fdedefd       Zy)    )	APIRouterDependsHTTPException)Session)ListOptional)date)get_db)Unavailability)UnavailabilityCreateUnavailabilityResponseUnavailabilityUpdatez/api/unavailabilitiesUnavailabilities)prefixtagsureturnc                 J   | j                   }| j                  dk(  r/| j                  r#| j                  t        j                         k  rd}t        | j                  | j                  | j                  r| j                  j                  nd | j                  r| j                  j                  nd | j                  | j                  | j                  rt        | j                        d d nd | j                  | j                  | j                  | j                   || j"                        S )N
date_rangeF   )idasim_id	asim_nameasim_nounavail_typeday_of_week	mass_time	date_fromdate_toreasonstatus	is_active
created_at)r"   r   r   r	   todayr   r   r   asim	full_nameno_asimr   r   strr   r    r!   r#   )r   r"   s     ;/var/www/html/asim.com/backend/app/routes/unavailability.pyenrichr*      s    I~~%!))		DJJL8P	!44		&'ff!&&""$"#&&d^^MM*+++#akk"2A&4++		xxxx<<     /)response_modelNr   r!   dbc                 j   |j                  t              }| r"|j                  t        j                  | k(        }|r"|j                  t        j                  |k(        }|j                  t        j                  j                               j                         D cg c]  }t        |       c}S c c}w )N)
queryr   filterr   r!   order_byr#   descallr*   )r   r!   r.   qr   s        r)   get_allr6   !   s    
 AHH^++w67HH^**f45 zz.*C*C*H*H*JKOOQRQ!F1IQRRRs   B0datac                 (   ddl m} d }| j                  r9| j                  j                  d      \  }} |t	        |      t	        |            }t        | j                  | j                  | j                  || j                  | j                  | j                  | j                  xs dd	      }|j                  |       	 |j                          |j                  |       t'        |      S # t         $ r |j#                          t%        dd	      w xY w)
Nr   )time:pendingT)	r   r   r   r   r   r   r    r!   r"     z#Gagal menyimpan data unavailabilitystatus_codedetail)datetimer9   r   splitintr   r   r   r   r   r   r    r!   addcommitrefresh	Exceptionrollbackr   r*   )r7   r.   	time_typer   hmr   s          r)   createrK   *   s    *I~~~~##C(1c!fc!f-	&&$$..{{{{'i
	A FF1I[
		


1 !9  [
4YZZ[s   >!C* *'Dz/{unavail_id}
unavail_idc                 v   |j                  t              j                  t        j                  | k(        j	                         }|st        dd      |j                  |_        	 |j                          |j                  |       t        |      S # t        $ r |j                          t        dd      w xY w)N  Tidak ditemukanr=   r<   z'Gagal memperbarui status unavailability)r0   r   r1   r   firstr   r!   rD   rE   rF   rG   r*   )rL   r7   r.   r   s       r)   update_statusrQ   F   s    
 ''(9(9Z(GHNNPA4EFF{{AH_
		


1 !9  _
4]^^_s   %!B 'B8z/{unavail_id}/deactivatec                 F   |j                  t              j                  t        j                  | k(        j	                         }|st        dd      |j                  |       	 |j                          ddiS # t        $ r |j                          t        dd      w xY w)NrN   rO   r=   r<   zGagal menghapus unavailabilitymessagezUnavailability dihapus
r0   r   r1   r   rP   r   deleterD   rF   rG   rL   r.   r   s      r)   
deactivaterW   T   s    
 ''(9(9Z(GHNNPA4EFFIIaLV
		 /00  V
4TUUV   %A9 9'B c                 F   |j                  t              j                  t        j                  | k(        j	                         }|st        dd      |j                  |       	 |j                          ddiS # t        $ r |j                          t        dd      w xY w)NrN   rO   r=   r<   z#Gagal menghapus data unavailabilityrS   DihapusrT   rV   s      r)   rU   rU   a   s    
 ''(9(9Z(GHNNPA4EFFIIaL[
		 y!!  [
4YZZ[rX   )fastapir   r   r   sqlalchemy.ormr   typingr   r   r@   r	   app.databaser
   app.models.unavailabilityr   app.schemas.unavailabilityr   r   r   routerr*   getrB   r(   r6   postrK   putrQ   rU   rW    r+   r)   <module>rf      sz   5 5 " !   4 i i	19K8L	Mn !7 , C%; <=%)4W^_eWf SXc] S8C= SW S >S S!785<V_ % 7  96 O,BCMTU[_ c )= 7  D )*.5fo 
13 
1G 
1 +
1 *1&/ 
"s 
" 
"  
"r+   