
    i#                      T    d dl Z d dlmZ d dlmZmZ d dlmZ d dlmZ  G d d      Z	y)    N)	UserModel)generate_bcrypt_hashpwd_context)datetime)generate_password_hashc                   D    e Zd Zd ZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zy)	UserClassc                     || _         y )N)db)selfr   s     \C:\Users\jesus\OneDrive\Escritorio\proyecto_pie360\backend\app\backend\classes\user_class.py__init__zUserClass.__init__   s	        Nc                    	 t         j                  dk(  g}|"|j                  t         j                  |k(          | j                  j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                        j                  | j                  t         j                        }|dkD  r|j                         }||z   dz
  }|dk  s||kD  rdddS |j                  |dz
  |z        j!                  |      j#                         }|sdddS |D 	cg c]R  }	|	j                  |	j                  |	j                  |	j                  |	j                  |	j                  |	j                  dT }
}	|||||
dS |j#                         }|D 	cg c]R  }	|	j                  |	j                  |	j                  |	j                  |	j                  |	j                  |	j                  dT }
}	|
S c c}	w c c}	w # t$        $ r}t'        |      }d|dcY d }~S d }~ww xY w)	Nr      errorzInvalid page numberstatusmessageNo data found)idrut	full_namerol_idemailphone
added_date)total_itemstotal_pagescurrent_pageitems_per_pagedata)r   deleted_status_idappendr   r   queryr   r   r   r   r   r   filterorder_bycountoffsetlimitall	Exceptionstr)r   r   pager!   filtersr%   r   r   r"   userserialized_dataeerror_messages                r   get_allzUserClass.get_all   s(   B	A 22a78Gy}}34DGGMM##  $$ f
 h  ax#kkm*^;a?!8tk1&-:OPP||TAX$?@FF~VZZ\&-/JJ ##$  ''88!%"kk!ZZ!ZZ"&//$ #$ #$ $/#.$(&4+  yy{ ##$  ''88!%"kk!ZZ!ZZ"&//$ #$ #$ '&?#$*#$  	AFM%-@@	AsP   DH, :H, H, AH")	H, 3H, AH'H, "
H, ,	I5I
I
Ic           	         	 | j                   j                  t              j                  t	        t        |      |k(        j                  t        j
                  dk(        j                         }|rv|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  d}d|i}t        j                   |      }|S y# t"        $ r}t%        |      }d| cY d }~S d }~ww xY w)Nr   )r   r   r   r   customer_idr   r   hashed_password	user_dataz3No se encontraron datos para el campo especificado.Error: )r   r%   r   r&   getattrr#   firstr   r   r   r   r6   r   r   r7   jsondumpsr,   r-   )	r   fieldvalue
data_queryr8   resultserialized_resultr2   r3   s	            r   getzUserClass.getP   s   	-y188E9RV[9[\ccdmdd  DE  eE  F  L  L  NJ$--%>>!+!5!5(//#-#9#9'--'--'1'A'A		   %)JJv$6!(( M 	-FM]O,,	-s   C$C( (	D1D DDc                 (   	 | j                   j                  t              j                  t        j                        j                  t        j                  dk(        j                         }|S # t        $ r}t        |      }d| cY d }~S d }~ww xY w)N   r9   )
r   r%   r   r'   nicknamer&   r   r+   r,   r-   )r   r"   r2   r3   s       r   get_supervisorszUserClass.get_supervisorso   sv    	-77==+44Y5G5GHOOPYP`P`dePefjjlDK 	-FM]O,,	-s   A+A. .	B7BBBc                    t               }|d   |_        |d   |_        |d   |_        |j	                  d      |_        d|_        |d   |_        t        |d         |_	        |d   |_
        |d	   |_        t        j                         |_        t        j                         |_        | j                   j#                  |       	 | j                   j%                          y
# t&        $ r
}Y d }~yd }~ww xY w)Nr   r   branch_office_idr6   r   r   passwordr   r   r   )r   r   r   rI   rC   r6   r#   r   r   r7   r   r   r   nowr   updated_dater   addcommitr,   r   user_inputsr0   r2   s       r   storezUserClass.storew   s    {u%!(+ +,> ?&??=9!"$[13K
4KL )
 )
",,.$LLND	GGNN 		s   C   	C3.C3c                    t               }|j                  |_        d|_        |j                  |_        t        d      |_        |j                  |_        |j                  |_	        t        j                         |_        t        j                         |_        | j                  j                  |       	 | j                  j!                          y# t"        $ r
}Y d }~yd }~ww xY w)N   123456r   r   )r   identification_numberr   r   social_reasonr   r   r7   r   r   r   rK   r   rL   r   rM   rN   r,   rO   s       r   store_loginzUserClass.store_login   s    {44$223H= &&
 &&
",,.$LLND	GGNN 		s   4C 	C"C"c                 \   	 | j                   j                  t              j                  t        j                  |k(        j                         }|r6| j                   j                  |       | j                   j                          yy# t        $ r}t        |      }d| cY d }~S d }~ww xY w)Nsuccessr   r9   )
r   r%   r   r&   r   r;   deleterN   r,   r-   )r   r   r"   r2   r3   s        r   rZ   zUserClass.delete   s    
	-77==+229<<23EFLLNDt$  & 	-FM]O,,	-s   BB 	B+B& B+&B+c                    | j                   j                  t              j                  t        j                  |k(        j                         }d|_        d|_        d|_        t        j                         |_        | j                   j                  |       	 | j                   j                          y# t        $ r
}Y d }~yd }~ww xY w)Nzfpbkdf2:sha256:260000$9199IIO4oyzykgL2$721b8c61330f838acd950f8104f364efc05d513efec2c829fcd773ef4402f10er   r   )r   r%   r   r&   r   r;   rJ   r7   	status_idr   rK   rL   rM   rN   r,   )r   r   r0   r2   s       r   refresh_passwordzUserClass.refresh_password   s    ww}}Y'..y}}/CDJJL A  H$LLND	GGNN 		s   B3 3	CCc                    | j                   j                  t              j                  t        j                  |k(        j                         }|sdddS d|v rN|d   rId|vs|d   sdddS t        j                  |d   |j                        sdddS t        |d         |_        d|v r
|d   |_
        d	|v r
|d	   |_        d
|v r
|d
   |_        d|v r
|d   |_        d|v r
|d   |_        d|v r
|d   |_        t!        j"                         |_        | j                   j'                  |       	 | j                   j)                          dddS # t*        $ r}dt-        |      dcY d }~S d }~ww xY w)Nr   zUser not foundr   rJ   current_passwordz/Current password is required to change passwordzCurrent password is incorrectr   r6   r   r   r   r   rY   zUser updated successfully)r   r%   r   r&   r   r;   r   verifyr7   r   r   r6   r   r   r   r   r   rK   rL   rM   rN   r,   r-   )r   r   	form_datar0   r2   s        r   updatezUserClass.update   s   ww}}Y'..y||r/ABHHJ%2BCC "y'<!2)DV:W")6ghh %%i0B&CTEYEYZ")6UVV $8	*8M#ND y #H-DKI%(7DI 'DH)#&{3DNi"7+DJi"7+DJ$LLND	:GGNN'4OPP 	:%#a&99	:s   0E 	E0E+%E0+E0)Nr   
   )__name__
__module____qualname__r   r4   rC   rG   rQ   rW   rZ   r]   rb    r   r   r	   r	      s2    CAJ->-,&-':r   r	   )
r<   app.backend.db.modelsr   app.backend.auth.auth_userr   r   r   werkzeug.securityr   r	   rg   r   r   <module>rk      s      + H  4\: \:r   