
    }iJ!              
       n   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 d dlmZ d dlmZ d dlmZmZmZmZmZ  ed	d
g      Zd Zej1                  dee          ee      fdefd       Zej1                  de       ee      fde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  G d de	      Z!ej=                  d       ee      fdedee!   defd       Z"ej9                  de       ee      fdededefd       Z#ej=                  de       ee      fdedededefd        Z$ejA                  d       ee      fdededefd!       Z%y")#    )	APIRouterDependsHTTPException)Session)List)	BaseModel)get_db)MassTemplate)TemplatePosition)MassTemplateCreateMassTemplateUpdateMassTemplateResponseTemplatePositionCreateTemplatePositionResponsez/api/mass-templateszMass Templates)prefixtagsc                 8   | D cg c]  }t        |j                  |j                  |j                  |j                  r|j                  j
                  nd |j                  r|j                  j                  nd |j                  |j                         c}S c c}w )N)idposition_numberposition_type_codeposition_type_labelposition_type_color
sort_order	posisi_id)	r   r   r   r   position_typelabelcolorr   r   )	positionsps     :/var/www/html/asim.com/backend/app/routes/mass_template.pyenrich_positionsr!      s      A 	!tt-- 339: 5 5d9: 5 5d||kk	
   s   BB/)response_modeldbc                    | j                  t              j                  t        j                        j	                         }g }|D ]}  }|j                  t        |j                  |j                  |j                  |j                  |j                  |j                  |j                  t        |j                                      |S )Nr   name	mass_typeday_of_weektimeis_first_friday	is_activer   )queryr
   order_byr   allappendr   r'   r(   r)   r*   r+   r,   r!   r   )r$   	templatesresultts       r    get_allr4      s    &//@DDFIF*tt!&&AKKAFF--&q{{3	
 	  M    z/{template_id}template_idc                 ~   |j                  t              j                  t        j                  | k(        j	                         }|st        dd      t        |j                  |j                  |j                  |j                  |j                  |j                  |j                  t        |j                              S )N  Template tidak ditemukanstatus_codedetailr&   )r-   r
   filterr   firstr   r   r'   r(   r)   r*   r+   r,   r!   r   r6   r$   r3   s      r    get_oner@   *   s    
%%loo&DEKKMA4NOO44affMM))Q[["1;;/	 r5   datac                    |j                  t              j                  t        j                  | j                  k(  t        j                  | j                  k(  t        j
                  | j
                  k(  t        j                  dk(        j                         }|rt        dd|j                         | j                         }|j                  dd      }t        di |}|j                  |       |j                          t        d|dz         D ]3  }|j                  t        |j                   t#        |      d|	             5 	 |j%                          |j'                  |       t-        |j                   |j                  |j.                  |j                  |j                  |j
                  |j                  t1        |j2                              S # t(        $ r |j+                          t        d
d      w xY w)NTi  z2Template dengan hari dan jam yang sama sudah ada: r:   num_positions      regular)r6   r   r   r     z"Gagal menyimpan template misa barur&    )r-   r
   r=   r)   r*   r+   r,   r>   r   r'   
model_dumppopaddflushranger   r   strcommitrefresh	Exceptionrollbackr   r(   r!   r   )rA   r$   existingtemplate_datarC   r3   is          r    createrV   6   s    xx%,,  D$4$44TYY&$$(<(<<$&	
 eg  GW
 	

 OO%M!%%oq9M%}%AFF1IHHJ1ma'(
F(	
 	 )Z
		


1  44affMM))Q[["1;;/	   Z
4XYYZs   !G 'G<c                    |j                  t              j                  t        j                  | k(        j	                         }|st        dd      |j                  d      j                         D ]  \  }}t        |||        	 |j                          |j                  |       t        |j                  |j                  |j                  |j                   |j"                  |j$                  |j&                  t)        |j*                              S # t        $ r |j                          t        dd      w xY w)	Nr8   r9   r:   T)exclude_unsetrG   zGagal memperbarui template misar&   )r-   r
   r=   r   r>   r   rI   itemssetattrrO   rP   rQ   rR   r   r'   r(   r)   r*   r+   r,   r!   r   )r6   rA   r$   r3   keyvalues         r    updater]   ^   s    
%%loo&DEKKMA4NOOooDo9??A
U3 BW
		


1  44affMM))Q[["1;;/	   W
4UVVWs   	!D 'D=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)Nr8   r9   r:   rG   zGagal menghapus template misamessagezTemplate dihapus)
r-   r
   r=   r   r>   r   deleterO   rQ   rR   r?   s      r    r`   r`   r   s    
%%loo&DEKKMA4NOOIIaLU
		 )**  U
4STTUs   %A9 9'B c                   "    e Zd ZU eed<   eed<   y)ReorderItemr   r   N)__name__
__module____qualname__int__annotations__rN   rH   r5   r    rb   rb      s    Gr5   rb   z /{template_id}/positions/reorderc                 4   |sddiS |D cg c]  }|j                    }}|j                  t              j                  t        j                   j	                  |      t        j
                  | k(        j                         D ci c]  }|j                   | }}t        |      D ]*  \  }}|j                  |j                         }|s$||_	        , 	 |j                          ddiS c c}w c c}w # t        $ r |j                          t        dd      w xY w)Nr_   zReorder berhasilrG   zGagal menyimpan urutan posisir:   )r   r-   r   r=   in_r6   r/   	enumerategetr   rO   rQ   rR   r   )r6   rA   r$   itemidsr   positions_mapidxs           r    reorder_positionsrp      s   -..#
$tt477tC
$"23::##C(((K7
 #%Aa    t_	Tdgg&AL %U
		 )**! %  U
4STTUs   C&C+C0 0'Dz/{template_id}/positionsc                    |j                  t              j                  t        j                  | k(        j	                         }|st        dd      t        dd| i|j                         }|j                  |       	 |j                          |j                  |       t        |j                  |j                  |j                  |j                   r|j                   j"                  nd |j                   r|j                   j$                        S d       S # t        $ r |j                          t        dd      w xY w)	Nr8   r9   r:   r6   rG   z$Gagal menambahkan posisi ke templater   r   r   r   r   rH   )r-   r
   r=   r   r>   r   r   rI   rK   rO   rP   rQ   rR   r   r   r   r   r   r   )r6   rA   r$   r3   r   s        r    add_positionrs      s   
%%loo&DEKKMA4NOOF[FDOO4EFAFF1I\
		


1 $44))//56__AOO11$56__AOO11 
 KO   \
4Z[[\s    !D 'D?z&/{template_id}/positions/{position_id}position_idc                    |j                  t              j                  t        j                  |k(  t        j                  | k(        j                         }|st        dd      |j                         j                         D ]  \  }}t        |||        	 |j                          |j                  |       t        |j                  |j                  |j                   |j"                  r|j"                  j$                  nd |j"                  r|j"                  j&                        S d       S # t        $ r |j                          t        dd      w xY w)Nr8   Posisi tidak ditemukanr:   rG   z!Gagal memperbarui posisi templaterr   )r-   r   r=   r   r6   r>   r   rI   rY   rZ   rO   rP   rQ   rR   r   r   r   r   r   r   )r6   rt   rA   r$   r   r[   r\   s          r    update_positionrw      s&   
!")){*$$3	 eg  4LMMoo'--/
U3 0Y
		


1 $44))//56__AOO11$56__AOO11 
 KO   Y
4WXXYs   !D1 1'Ec                 j   |j                  t              j                  t        j                  |k(  t        j                  | k(        j                         }|st        dd      |j                  |       	 |j                          ddiS # t        $ r |j                          t        dd      w xY w)Nr8   rv   r:   rG   z$Gagal menghapus posisi dari templater_   zPosisi dihapus)r-   r   r=   r   r6   r>   r   r`   rO   rQ   rR   )r6   rt   r$   r   s       r    delete_positionry      s    
!")){*$$3	 eg  4LMMIIaL\
		 '((  \
4Z[[\s   7B 'B2N)&fastapir   r   r   sqlalchemy.ormr   typingr   pydanticr   app.databaser	   app.models.mass_templater
   app.models.template_positionr   app.schemas.mass_templater   r   r   r   r   routerr!   rk   r4   rf   r@   postrV   putr]   r`   rb   rp   rs   rw   ry   rH   r5   r    <module>r      sm   5 5 "    1 9 
 
/7G6H	I C%9 :;!&/ 
 
 <
 -AB,3FO 	 	' 	 C	 S!563:6? %# % % 7%N -ABELV_  #5 7  C&  +26? 
+ 
+ 
+ !
+)  ./OVW] +3 +d;.? +W + 0+, '8PQOVW] c )? W  R( 4E]^dklrds  3 >T Za  _. 78FMfo ) )3 )G ) 9)r5   