
    }i                        d dl mZmZ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 d dlmZ d dlmZmZmZ  ed	d
g      ZdededefdZdededee   fdZej5                  dee          ee
      fdefd       Zej9                  de       ee
      fdedefd       Zej=                  de       ee
      fdededefd       ZejA                  d       ee
      fdedefd       Z y)    )	APIRouterDependsHTTPException)Session
joinedload)List)get_db)PositionSlot)Area)PositionType)PositionSlotCreatePositionSlotUpdatePositionSlotResponsez/api/position-slotszPosition Slots)prefixtagsdbslot_idreturnc                    | j                  t              j                  t        t        j                        t        t        j
                              j                  t        j                  |k(        j                         S )N)	queryr
   optionsr   areaposition_typesfilteridfirst)r   r   s     :/var/www/html/asim.com/backend/app/routes/position_slot.py
_load_slotr      sO    
	L--.
<;V;V0W	X	7*	+		    slotcodesc                     | j                  t              j                  t        j                  j	                  |            j                         }t        |      t        |      k7  rt        dd      ||_        y )N  z+Satu atau lebih tipe posisi tidak ditemukanstatus_codedetail)	r   r   r   codein_alllenr   r   )r   r    r!   typess       r   
_set_typesr,      s[    HH\")),*;*;*?*?*FGKKME
5zSZ4abbDr   /)response_modelc                 z   | j                  t              j                  t        t        j                        t        t        j
                              j                  t        j                  dk(        j                  t        j                  t        j                  t        j                        j                         S )NT)r   r
   r   r   r   r   r   	is_activeorder_byarea_id
sort_ordernomorr)   )r   s    r   get_allr5      ss     		L--.
<;V;V0W	X	&&$.	/	,&&(?(?ASAS	T	r   datac                 (   |j                  t              j                  t        j                  | j                  k(  t        j
                  dk(        j                         st        dd      | j                  dh      }t        d	i |}|j                  |       |j                          t        ||| j                         	 |j                          t#        ||j                        S # t        $ r |j!                          t        dd      w xY w)
NTr#   zArea tidak ditemukanr$   position_type_codes)exclude  zGagal menyimpan posisi baru )r   r   r   r   r2   r0   r   r   
model_dumpr
   addflushr,   r8   commit	Exceptionrollbackr   )r6   r   payloadr    s       r   createrC   (   s    88D>  DLL!8$..D:PQWWY4JKKoo'<&=o>G"'"DFF4LHHJr4112S
		 b$''""  S
4QRRSs   C* *'Dz
/{slot_id}c                    |j                  t              j                  t        j                  | k(        j	                         }|st        dd      |j                  ddh      }|j                         D ]  \  }}t        |||        |j                  t        |||j                         	 |j                          t        ||       S # t        $ r |j                          t        dd      w xY w)	Nr#   Posisi tidak ditemukanr$   Tr8   )exclude_unsetr9   r:   zGagal memperbarui data posisi)r   r
   r   r   r   r   r<   itemssetattrr8   r,   r?   r@   rA   r   )r   r6   r   r    rB   keyvalues          r   updaterK   9   s    88L!((G)CDJJLD4LMMooD;P:QoRGmmo
Uc5! &+2tT556U
		 b'""  U
4STTUs   0C 'C3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)Nr#   rE   r$   r:   zGagal menghapus posisimessagezPosisi dihapus)
r   r
   r   r   r   r   deleter?   r@   rA   )r   r   r    s      r   rN   rN   K   s    88L!((G)CDJJLD4LMMIIdON
		 '((  N
4LMMNs   %A9 9'B N)!fastapir   r   r   sqlalchemy.ormr   r   typingr   app.databaser	   app.models.position_slotr
   app.models.arear   app.models.position_typer   app.schemas.position_slotr   r   r   routerintr   strr,   getr5   postrC   putrK   rN   r;   r   r   <module>r]      sJ   5 5 .   1   1 b b	/7G6H	I7 S \  7  ,  tCy   C%9 :;!&/   < S!563:6? ## # # 7#  L)=>AH #C #1 #w # ?#" |'.v 
)C 
)W 
) 
)r   