
    }i^                     ^   d dl mZ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 d dlmZ d dlmZ d dlmZ  ed	d
g      ZddhZdededefdZdedededdfdZej1                  d       ee       ee      fdefd       Z G d de	      Zej7                  d       ee       ee      fdedefd       Zddgg ddgdgd d!gd"Z G d# d$e	      Zej?                  d%       ee       ee      fdedefd&       Z  ed	d
g      Z!e!j1                  d'       ee      fdefd(       Z"y))    )	APIRouterDependsHTTPException)Session)text)	BaseModel)ListOptional)get_db)require_super_admin)SystemSettingz/api/settingsSettings)prefixtagsmaintenance_modedevelopment_modedbkeyreturnc                     | j                  t              j                  t        j                  |k(        j	                         }|r|j
                  S dS )Nfalse)queryr   filterr   firstvalue)r   r   rows      5/var/www/html/asim.com/backend/app/routes/settings.py_get_settingr      s@    
((=
!
(
():):c)A
B
H
H
JC399((    r   Nc                     | j                  t              j                  t        j                  |k(        j	                         }|r||_        y | j                  t        ||             y )Nr   r   )r   r   r   r   r   r   add)r   r   r   r   s       r   _set_settingr#      sL    
((=
!
(
():):c)A
B
H
H
JC
	
}E23r    c                 @    t        | d      dk(  t        | d      dk(  dS )Nr   truer   )r   r   r   )r   _s     r   get_settingsr)       s.     )-?@FJ(-?@FJ r   c                   "    e Zd ZU eed<   eed<   y)UpdateSettingRequestr   r   N)__name__
__module____qualname__str__annotations__bool r   r   r+   r+   -   s    	HKr   r+   bodyc                 L   | j                   t        vrt        dd| j                          t        || j                   | j                  rdnd       	 |j                          | j                   | j                  dS # t        $ r |j                          t        dd      w xY w)	N  zInvalid key: status_codedetailr&   r     zGagal menyimpan pengaturanr!   )r   
VALID_KEYSr   r#   r   commit	Exceptionrollback)r3   r   r(   s      r   update_settingr>   2   s     xxz!mDHH:4NOOTXXvAR
		 88djj11  R
4PQQRs   A< <'B#assignmentsmass_schedules)special_positionsspecial_subscriptionsspecial_massesspecial_eventsdaily_subscriptionsshift_swapsunavailabilitiesasim_area_unavailabilities)weekly_schedulesrD   rE   rF   rG   c                       e Zd ZU ee   ed<   y)TruncateRequestgroupsN)r,   r-   r.   r	   r/   r0   r2   r   r   rK   rK   N   s    Ir   rK   z	/truncatec           	      
   t        |d      dk7  rt        dd      | j                  D cg c]  }|t        vs| }}|rt        dd|       g }	 | j                  D ]A  }t        |   }|D ]1  }|j	                  t        d| d             |j                  |       3 C |j                          |dt        |       ddS c c}w # t        $ r.}	|j                          t        d	d
t        |	             d }	~	ww xY w)Nr   r&   r5   z9Truncate hanya bisa dilakukan saat Development Mode aktifr6   zInvalid groups: zTRUNCATE TABLE z CASCADEr9   zGagal truncate: zBerhasil truncate z tabel)	truncatedmessage)r   r   rL   TRUNCATABLEexecuter   appendr;   r<   r=   r/   len)
r3   r   r(   ginvalidrN   grouptablestablees
             r   truncate_datarZ   R   s    B*+v5N
 	

 ++>+Q+)=q+G>6Fwi4PQQI	Q[[E 'F

4/% ABC  '   !
 			
 #1CC	NCSSY/Z[[! ?  Q
6Fs1vh4OPPQs#   CCA C 	D)C==Dz/maintenance-statusc                 $    dt        | d      dk(  iS )u1   Public endpoint — frontend checks this on load.r   r&   r'   )r   s    r   maintenance_statusr\   w   s      	L-?@FJ r   )#fastapir   r   r   sqlalchemy.ormr   
sqlalchemyr   pydanticr   typingr	   r
   app.databaser   app.core.securityr   app.models.system_settingr   routerr:   r/   r   r#   getr)   r+   putr>   rP   rK   postrZ   public_routerr\   r2   r   r   <module>rj      s   5 5 "   !  1 3	/	= "45

)W )3 )3 )
4W 43 4s 4t 4 B&/!" 9 
 B &/!"2
22 2& '(89h12!?+-IJi  [ &/!"\
\\ \B 
|D ()%,V_ 7  *r   