
    Ɉ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 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 d dlmZmZmZmZ d dlm Z   eddg      Z!ddhZ"de#fdZ$e!jK                  dee          ee	      fde&de#defd       Z'e!jQ                  d       ee	       ee      fde&de#dedede)f
d       Z*e!jK                  dee          ee	      fde&de#defd        Z+e!jQ                  d       ee	       ee      fde&de#dedede)f
d!       Z,e!jK                  d"ee          ee	      fd#e&de#defd$       Z-y%)&    )	APIRouterDependsHTTPException)Session)List)get_db)require_pengurus)
SeatLayout)MassTemplate)SpecialMass)MassSchedule)
Assignment)Asim)PositionType)SeatLayoutItemSeatLayoutSaveSeatLayoutResponseSeatLayoutWithAssignment)
get_or_404z/api/seat-layoutzseat-layout)prefixtagsdudukaltar	view_typec                 .    | t         vrt        dd      y )Ni  z$view_type harus 'duduk' atau 'altar'status_codedetail)VALID_VIEW_TYPESr   )r   s    8/var/www/html/asim.com/backend/app/routes/seat_layout.py_validate_view_typer!      s    ((4Z[[ )    z#/template/{template_id}/{view_type})response_modeltemplate_iddbc                 B   t        |       t        |t        | d       |j                  t              j                  t        j                  | k(  t        j                  |k(        j                  t        j                  t        j                        j                         }|S )NTemplate)r!   r   r   queryr
   filterr$   r   order_by	row_index	col_indexall)r$   r   r%   rowss       r    get_template_layoutr/      sw    	"r<j988J&&+-	) hz##Z%9%9:335 	 Kr"   data_c                 ,   t        |       t        |t        | d       |j                  t              j                  t        j                  | k(  t        j                  |k(        j                          |j                  D ]U  }|j                  t	        | |j                  ||j                  |j                  |j                  |j                               W 	 |j!                          ddiS # t"        $ r |j%                          t'        dd      w xY w)Nr'   )r$   position_numberr   r+   r,   sidesection  Gagal menyimpan denahr   messageDenah berhasil disimpan)r!   r   r   r(   r
   r)   r$   r   deleteitemsaddr3   r+   r,   r4   r5   commit	Exceptionrollbackr   )r$   r   r0   r%   r1   items         r    save_template_layoutrA   '   s    
 	"r<j9HHZ+-	) fh


z# 00nnnnLL
 	 M
		 011  M
4KLLM   C, ,'Dz&/special/{special_mass_id}/{view_type}special_mass_idc                 B   t        |       t        |t        | d       |j                  t              j                  t        j                  | k(  t        j                  |k(        j                  t        j                  t        j                        j                         }|S )NAcara)r!   r   r   r(   r
   r)   rC   r   r*   r+   r,   r-   )rC   r   r%   r.   s       r    get_special_layoutrF   H   sw    	"r;988J&&""o5	) hz##Z%9%9:335 	 Kr"   c                 ,   t        |       t        |t        | d       |j                  t              j                  t        j                  | k(  t        j                  |k(        j                          |j                  D ]U  }|j                  t	        | |j                  ||j                  |j                  |j                  |j                               W 	 |j!                          ddiS # t"        $ r |j%                          t'        dd      w xY w)NrE   )rC   r3   r   r+   r,   r4   r5   r6   r7   r   r8   r9   )r!   r   r   r(   r
   r)   rC   r   r:   r;   r<   r3   r+   r,   r4   r5   r=   r>   r?   r   )rC   r   r0   r%   r1   r@   s         r    save_special_layoutrH   S   s    
 	"r;9HHZ""o5	) fh


z+ 00nnnnLL
 	 M
		 011  M
4KLLMrB   z#/schedule/{schedule_id}/{view_type}schedule_idc                 F   t        |       t        |t        | d      }|j                  r|j	                  t
              j                  t
        j                  |j                  k(  t
        j                  |k(        j                  t
        j                  t
        j                        j                         }n|j                  r|j	                  t
              j                  t
        j                  |j                  k(  t
        j                  |k(        j                  t
        j                  t
        j                        j                         }ng S |sg S |j	                  t              j                  t        j                  | k(        j                         }|D ci c]  }|j                  | }}|D ch c]  }|j                   s|j                    }}i }	|rg|j	                  t"              j                  t"        j$                  j'                  |            j                         D ci c]  }|j$                  | }	}|D ch c]  }|j(                  s|j(                   }
}i }|
rg|j	                  t*              j                  t*        j,                  j'                  |
            j                         D ci c]  }|j,                  | }}g }|D ]-  }|j/                  |j                        }|r'|j                   r|	j/                  |j                         nd }|r|j/                  |j(                        nd }|j1                  t3        |j$                  |j                  |j                  |j                  |j4                  |j6                  |r|j$                  nd |r|j8                  nd |r|j:                  nd |r|j<                  nd |r|j(                  nd |r|j>                  nd |r|j@                  nd              0 |S c c}w c c}w c c}w c c}w c c}w )NJadwal)idr3   r+   r,   r4   r5   asim_id	asim_nameasim_no
asim_photoposition_type_codeposition_type_labelposition_type_color)!r!   r   r   r$   r(   r
   r)   r   r*   r+   r,   r-   rC   r   rI   r3   rM   r   rL   in_rQ   r   codegetappendr   r4   r5   	full_nameno_asimphotolabelcolor)rI   r   r%   schedulelayout_rowsassignmentsa
assign_mapasim_idsasim_map
type_codes	ptype_mapptresultcellasims                   r    get_schedule_layoutrj   r   s=   	""lKBH hhz*11""h&:&::  I-
 (:'')=)=
>ssu 	 
	!	!hhz*11&&(*B*BB  I-
 (:'')=)=
>ssu 	
 		 ((:&--j.D.D.STXXZK0;<1!##Q&J< $/<;a!))		;H<H%'XXd^%:%:477;;x;P%Q%U%U%WX%WADD!G%WX 1<T1q?S?S!&&JTI+-88L+A+H+HIZIZI^I^_iIj+k+o+o+qr+qRRWWb[+q	r FNN4//0*+		x||AII&t45Y]]1//04.ww 00nnnnLL#DGG(,dnn$$(DLLd%)tzzt78q33d,.D,.D
 		 & MG = = Y U ss*   P
5PP,PPP=PN).fastapir   r   r   sqlalchemy.ormr   typingr   app.databaser   app.core.securityr	   app.models.seat_layoutr
   app.models.mass_templater   app.models.special_massr   app.models.mass_scheduler   app.models.assignmentr   app.models.asimr   app.models.position_typer   app.schemas.seat_layoutr   r   r   r   app.helpers.crudr   routerr   strr!   rV   intr/   putobjectrA   rF   rH   rj    r"   r    <module>r      s   5 5 "   . - 1 / 1 ,   1 p p '	,M?	CW% \3 \ 1$GYBZ[HOPV S S g  \ 12 &/w7G/H22!$2,:22&,2 32@ 4TJ\E]^KRSY?     _ 45 &/w7G/H22%(20>22&,2 62< 1$G_B`aHOPV :S :S :g : b:r"   