
    W'*i,              
          S SK JrJrJr  S SKJr  S SKJr  S SKJ	r	  S SK
JrJrJrJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  \" SS/S9r\RA                  S5      \" \5      \" \5      4S\S\S\	4S jj5       r!\RA                  S5      \" \5      \" \5      4S\S\S\	4S jj5       r"\RG                  S5      \" \5      \" \5      4S\$S\S\	4S jj5       r%\RM                  S5      \RM                  S5      \" \5      \" \5      4S\$S\S\	4S jj5       5       r&\RO                  S5      \" \5      \" \5      4S\$S\S\S\	4S  jj5       r(g!)"    )	APIRouterDependsstatus)JSONResponse)get_db)Session)CustomerListStoreCustomerUpdateCustomer	UserLogin)CustomerClass)	UserClass)SchoolClass)RolClass)TeachingClass)SchoolModel)get_current_active_user)datetimez
/customers	Customers)prefixtags/customer_listsession_userdbc                    U R                   c  SOU R                   n[        U5      R                  UU R                  U R                  U R
                  U R                  S9n[        U[        5      (       aA  UR                  S5      S:X  a,  [        [        R                  SUR                  SS5      S S.S	9$ U R                   c  S
OSn[        [        R                  SUUS.S	9$ )Nr   )pageitems_per_pageidentification_numbernamescompany_namer   error  messageErrorr   r$   datastatus_codecontentz.Complete customers list retrieved successfullyz Customers retrieved successfully   )r   r   get_allper_pager   r    r!   
isinstancedictgetr   r   HTTP_404_NOT_FOUNDHTTP_200_OK)r   r   r   
page_valueresultr$   s         OC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routers\customers.pyindexr6      s    #((0m6H6HJ2&&$--+AA!!"// ' F &$FJJx$8G$C11!::i9
 	
 CPBTBTB\>  cEG&&
     z/storecustomerc           
         U R                  5       nUR                  S5      nUR                  S5      nUR                  S5      nUR                  SS 5      n[        U5      R	                  U5      n[        U[         5      (       aA  UR                  S5      S:X  a,  [        [        R                  SUR                  SS	5      S S
.S9$ [        U[         5      (       Ga  UR                  S5      S:X  Ga  UR                  S5      n	U	S UUR                  S5      UR                  SS5       SUR                  SS5       3R                  5       UUUR                  S5      S S.	n
[        U5      R	                  U
5      nUS:X  a  [        [        R                  SSUS
.S9$ U(       Ga.  [        U[        5      (       Ga  [        U5      n[        U5      n[        U5      nU H  nU(       d  M  UR                  5       (       d  M#  U	UR                  5       S S S S.nUR	                  U5      n[        U[         5      (       d  Ma  UR                  S5      S:X  d  Mx  UR                  S5      nU	USSS/S.nUR	                  U5        U	US/ SQS.nUR	                  U5        SS S!.S"S#S!.S$S%S!./nU H   nUUS&   US'   S(.nUR	                  U5        M"     M     [        [        R                  S)S*US
.S9$ )+Nemailpasswordrol_idschoolsr   r"     r$   zError creating customerr&   r(   successcustomer_idr   r      	lastnamesphone)	r@   	school_idr<   rut	full_namer:   r;   rD   branch_office_idr   z(Customer created but error creating userr@   school_nameschool_addressdirector_namecommunity_school_passwordrE   Profesional(   )   )r@   rE   rolpermissionsCoordinador)                                       rO   rP   u   Pre BásicarT   )teaching_nameteaching_type_idu   BásicarU   MediarV   rb   ra   )rE   rb   ra      z6Customer, user, schools and roles created successfully)r/   r0   popr   storer.   r   r   HTTP_500_INTERNAL_SERVER_ERRORstripr   listr   r   r   HTTP_201_CREATED)r8   r   r   customer_inputsr:   r;   r<   r=   r4   r@   user_inputsuser_resultschool_class	rol_classteaching_classrJ   school_inputsschool_resultrE   rol_profesional_inputsrol_coordinador_inputsteachings_to_createteaching_datateaching_inputss                           r5   rf   rf   4   s   mmoO (E"":.H  *F !!)T2G 2$$_5F&$FJJx$8G$C==!::i1JK
 	
 &$FJJx$8I$Ejj/ '"&&'>?+//<=Q?R?RS^`b?c>delln $((1 $

  m))+6!"AA!I"  z'400&r?L I*2.N&;;#4#4#6#6'2'2'8'8':*.)-59%M %1$6$6}$EM "-66=;L;LX;VZc;c$1$5$5k$B	 ,7)2#0,.8	2. "(>? ,7)2#0+d	2. "(>? /<QRS.7QO.51M/+ .AM-64ABT4U1>1O/O
 +00A .AQ  '` ++O
 r7   z
/edit/{id}idc                    [        U5      R                  U 5      n[        U[        5      (       ao  UR                  S5      (       d  UR                  S5      S:X  aD  [	        [
        R                  SUR                  S5      =(       d    UR                  SS5      S S.S9$ [        U5      R                  SU S	9n/ n[        U[        5      (       a8  U Vs/ s H+  ofR                  S
5      (       d  M  UR                  S
5      PM-     nn[        U[        5      (       a  UR                  S5      (       a  XSS   S'   [	        [
        R                  SSUS.S9$ s  snf )Nr"   r   r#   r$   Customer not foundr&   r(   r   )r   r@   rJ   customer_datar=   r+   zCustomer retrieved successfully)r   r0   r.   r/   r   r   r1   r   r,   ri   r2   )rx   r   r   r4   schools_resultschools_listschools          r5   editr      s.   2""2&F&$VZZ%8%8FJJx<PT[<[11!::g.]&**YH\2]
 	
 !_,,!,DNL.$''@NlfR\R\]jRk1

=1l &$FJJ$?$?-9	*&&8
  ms   E0Ez/{id}z/delete/{id}c                    [        U5      R                  U 5      n[        U[        5      (       aA  UR	                  S5      S:X  a,  [        [        R                  SUR	                  SS5      S S.S9$ [        [        R                  SS	US.S9$ )
Nr   r"   r#   r$   rz   r&   r(   r+   zCustomer deleted successfully)	r   deleter.   r/   r0   r   r   r1   r2   )rx   r   r   r4   s       r5   r   r      s     2%%b)F&$FJJx$8G$C11!::i1EF
 	
 &&6
 r7   z/update/{id}c                 `   UR                  SS9nUR                  SS 5      n[        U5      R                  X5      n[	        U[         5      (       aA  UR                  S5      S:X  a,  [        [        R                  SUR                  SS5      S S	.S
9$ Ub  [        U5      nUR                  [        5      R                  [        R                  U :H  [        R                  S:H  5      R                  5       nU H$  n	SU	l        [         R"                  " 5       U	l        M&     UR'                  5         [	        U[(        5      (       aP  U HJ  n
U
(       d  M  U
R+                  5       (       d  M#  U U
R+                  5       S S S S.nUR-                  U5        ML     [        [        R.                  SSUS	.S
9$ )NT)exclude_unsetr=   r   r"   r>   r$   zError updating customerr&   r(   r   rT   rI   r+   z)Customer and schools updated successfully)r/   re   r   updater.   r0   r   r   rg   r   queryr   filterr@   deleted_status_idalldtnowupdated_datecommitri   rh   rf   r2   )rx   r8   r   r   rk   r=   r4   rn   existing_schoolsr~   rJ   rq   s               r5   r   r      s   mm$m7O !!)T2G2%%b:F&$FJJx$8G$C==!::i1JK
 	
 "2 88K077##r)))Q.
 #% 	 'F'(F$"$&&(F ' 			 gt$$&;;#4#4#6#6')'2'8'8':*.)-59%M !&&}5  ' &&B
 r7   N))fastapir   r   r   fastapi.responsesr   app.backend.db.databaser   sqlalchemy.ormr   app.backend.schemasr	   r
   r   r   "app.backend.classes.customer_classr   app.backend.classes.user_classr    app.backend.classes.school_classr   app.backend.classes.rol_classr   "app.backend.classes.teaching_classr   app.backend.db.modelsr   app.backend.auth.auth_userr   r   r   	customerspostr6   rf   r0   intr   r   putr    r7   r5   <module>r      s   . . * * " V V < 4 8 2 < - > #
	
 AHI`Aaqxy  rA  Y gn  > =DE\=]mtu{m| rM r rcj r rh |,34K,L\cdj\k S 	 RY  B '
.!.56M.N^efl^m s ) T[  " , ~HOPgHhx  AG  yH 4s 4n 4I 4nu 4 4r7   