
    }i                        d dl mZ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 d dlZ eddg      Zej?                  d       ed       ed       ed       ed       ed       ee
       ee      fdee    dee!   dee!   dee    dee    dedefd       Z"ej?                  d       ee
      fde defd       Z#y)    )	APIRouterDependsQueryHTTPException)Session)Optional)get_db)
Assignment)MassSchedule)MassTemplate)SpecialMass)SpecialEvent)PositionType)Asim)User)get_current_userNz/api/portalzPortal ASIM)prefixtagsz/jadwal-sayaasim_id	date_fromdate_tomonthyeardbcurrent_userc                 r   |j                   dk(  r0|j                  st        dd      |j                  j                  } n| t        dd      ddlm} dd l}|r9|r7|j
                  j                  |      }	|j
                  j                  |      }
n|r.|r, |||d	      }	 |||t        j                  ||      d	         }
n|j
                  j                         } ||j                  |j                  d	      }	 ||j                  |j                  t        j                  |j                  |j                        d	         }
|j                  t              j                  t              j!                  t        j"                  | k(  t        j$                  d
k(  t        j
                  |	k\  t        j
                  |
k        j'                         }|sg S |D ch c]  }|j(                   }}|j                  t*              j!                  t*        j,                  j/                  |            j'                         D ci c]  }|j,                  | }}|D cg c]/  }|j0                  j2                  s|j0                  j2                  1 }}|D cg c]/  }|j0                  j4                  s|j0                  j4                  1 }}i }i }|r|j                  t6              j!                  t6        j                  j/                  |            j'                         }|D ci c]  }|j                  | }}|D ch c]  }|j8                   }}|j                  t:              j!                  t:        j                  j/                  |            j'                         }|D ci c]  }|j                  | }}i }|ri|j                  t<              j!                  t<        j                  j/                  |            j'                         }|D ci c]  }|j                  | }}g }|D ]M  }|j0                  }|j?                  |j(                        }|j2                  d u}d } d }!d }"d}#|ra|j?                  |j2                        }|ry|j?                  |j8                        }$|$r|$j@                  nd } |j@                  }!|jB                  }#n5|j?                  |j4                        }%|%r|%jB                  }#|%j@                  }"|jE                  |j                  tG        |j
                        |#|jH                  |j(                  |r|jJ                  nd |r|jL                  nd |j$                  || |!|"d       P |jO                  d        |S c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )Nasimi  z!Akun tidak terhubung ke data ASIM)status_codedetaili  zasim_id diperlukanr   )date   T-)schedule_idr    timeposition_numberposition_type_codeposition_type_colorposition_type_labelis_published
is_special
event_name	mass_nametemplate_namec                     | d   | d   fS )Nr    r$    xs    3/var/www/html/asim.com/backend/app/routes/portal.py<lambda>z!get_jadwal_saya.<locals>.<lambda>x   s    qy!F)4    key)(roler   r   iddatetimer    fromisoformatcalendar
monthrangetodayr   r   queryr
   joinr   filterr   r)   allr&   r   codein_schedulespecial_mass_idtemplate_idr   event_idr   r   getnamer$   appendstrr%   colorlabelsort)&r   r   r   r   r   r   r   r    dt
_date_from_date_tor=   assignmentsapt_codesptpt_mapspecial_mass_idstemplate_idssm_map	event_mapsmssm	event_idseventsetemplate_map	templatestresultrD   r*   r+   r,   r-   r$   eventtmpls&                                         r2   get_jadwal_sayarf      s    F"  C8[\\##&&	4HIIWWW**95
77((1	4$q)
eX%8%8u%Ea%HI%**ekk15


EKK1D1DUZZQVQ\Q\1]^_1`a((:&++L9@@g%!!T)Z'X%	
 
ce  	 /::k$$kH:$&HH\$:$A$A,BSBSBWBWX`Ba$b$f$f$hi$hbbggrk$hFi =HfKq1::KeKe

22Kf4?ZKq1::CYCYAJJ**KLZ FIhh{#**;>>+=+=>N+OPTTV&)*c"%%)c*+./3RR[[3	/,'..|/B/B9/MNRRT&,-fQTT1Wf	-LHH\*11,//2E2El2STXXZ	)23Aa3F::ZZ,,---T9

	H445B!bkk2+0UZZd
GG	ww##H$8$89Dyy $		#;;& 00"#"6"6/1288t/1288t$11$$"*
 	- J KK4K5M{ ;i gZ +/-
 4s<   V?VV5VV /V "V%<V*$V/V4z/jadwal-detail/{schedule_id}r#   c                 D   ddl m} ddlm} |j	                  t
              j                  t
        j                  | k(        j                         }|sg S |j	                  t              j                  t        j                  | k(        j                         }|sg S i }|j                  rf|j	                  |      j                  |j                  |j                  k(        j                         }|D ]  }|j                  ||j                  <    nq|j                  re|j	                  |      j                  |j                  |j                  k(        j                         }|D ]  }|j                  ||j                  <    |D 	ch c]  }	|	j                    }
}	|j	                  t"              j                  t"        j$                  j'                  |
            j                         D ci c]  }|j$                  | }}|D 	cg c]  }	|	j(                  s|	j(                   }}	i }|ri|j	                  t*              j                  t*        j                  j'                  |            j                         }|D ci c]  }|j                  | }}g }|D ]  }	|j-                  |	j                         }|	j(                  r|j-                  |	j(                        nd }|j/                  |	j                  |	j                   |r|j0                  nd |r|j2                  nd |	j(                  |r|j4                  nd |r|j6                  nd |r|j8                  nd |j-                  |	j                  d      d	        |j;                  d        |S c c}	w c c}w c c}	w c c}w )Nr   )TemplatePosition)SpecialPositioni  )	r%   r&   r(   r'   r   no_asim	full_namephoto
sort_orderc                     | d   S )Nrm   r/   r0   s    r2   r3   z#get_jadwal_detail.<locals>.<lambda>   s    aor4   r5   )app.models.template_positionrh   app.models.special_positionri   r>   r   r@   r8   firstr
   r#   rA   rE   rm   r%   rF   r&   r   rB   rC   r   r   rH   rJ   rM   rL   rj   rk   rl   rN   )r#   r   rh   ri   rD   rR   position_order	positionsprS   rT   rU   rV   asim_idsasim_mapasimsr   rc   s                     r2   get_jadwal_detailrx   |   s   =;xx%,,\__-KLRRTH	((:&--+-	ce  	 NHH_-44++x/G/GG

#% 	 A01N1,,- 			HH-.55((H,@,@@

#% 	 A01N1,,-  /::k$$kH:$&HH\$:$A$A,BSBSBWBWX`Ba$b$f$f$hi$hbbggrk$hFi $/<;a!))		;H<H%%dggkk(&;<@@B.34edDGGTMe4FZZ,,-*+))x||AII& 00"#"6"6/1288t/1288tyy'+t||+/T#'TZZT(,,Q->->D

 
	  KK-K.M7 ;i = 5s   N*NNN=N)$fastapir   r   r   r   sqlalchemy.ormr   typingr   app.databaser	   app.models.assignmentr
   app.models.mass_scheduler   app.models.mass_templater   app.models.special_massr   app.models.special_eventr   app.models.position_typer   app.models.asimr   app.models.userr   app.core.securityr   r;   routerrH   intrK   rf   rx   r/   r4   r2   <module>r      s!   < < "   , 1 1 / 1 1     . 	-}o	>N"4[$T{"4[ ;+&/ !12fc]f}f c]f C=	f
 3-f 	f f fR *+6=fo :3 :G : ,:r4   