
    )i{                         d Z ddlmZ ddlmZmZ ddlmZ 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  G d
 de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)z0
User schema definitions for common operations.
    )datetime)OptionalList)UUID)EmailStrField
ConfigDict)
BaseSchema)FileResponseSchema)AddressSchema)
RoleSchemac                   @   e Zd ZU dZ edd      Zeed<    eddd	      Ze	e
   ed
<    eddd	      Ze	e
   ed<    eddd	      Ze	e
   ed<    eddd	      Ze	e
   ed<    eddd	      Ze	e
   ed<    edd      Zeed<    edd      Zeed<   ede
fd       Zy)UserBasez$Base user schema with common fields..User's email addressdescriptionemailNd   User's username
max_lengthr   usernameUser's first name
first_nameUser's middle namemiddle_nameUser's last name	last_name   User's phone numberphoneTWhether the user is active	is_activeFWhether the user is verifiedis_verifiedreturnc                     | j                   | j                  | j                  fD cg c]  }|s|	 }}|rdj                  |      S dS c c}w )zGet user's full name.  )r   r   r   join)selfnamenamess      `/var/www/html/hwPaymentPortal-be-dev/hw-payment-portal-api/src/apps/users/schemas/user_common.py	full_namezUserBase.full_name   sJ     $(??D4D4Ddnn"U^$Y]^^"'sxx/R/ _s
   A	A	)__name__
__module____qualname____doc__r   r   r   __annotations__r   r   strr   r   r   r!   r#   boolr%   propertyr/        r.   r   r      s    .C-CDE8D#DSFWXHhsmX %dsH[ \J\!&tI]!^K#^$TcGYZIx}Z "BWXE8C=XD.JKItKe1OPKP03 0 0r9   r   c                       e Zd ZU dZ ed      Z edd      Zee	d<    edd	      Z
ee   e	d
<    edd      Zee	d<    edd      Zee	d<    edd      Zee   e	d<    edd      Zee   e	d<   y)UserResponseSchemazUser response schema.T)from_attributes.zUser's unique identifierr   idNzUser's external identifieruser_idr   r   zWhen the user was created
created_atzWhen the user was last updated
updated_atzWhen the user was soft deleted
deleted_at)r0   r1   r2   r3   r	   model_configr   r=   intr4   r>   r   r5   r   r?   r   r@   rA   r8   r9   r.   r;   r;   "   s    d3LC%?@B@"45QRGXc]R#+<=Hc= 2MNJN%*4=]%^J"^%*4=]%^J"^r9   r;   c                   R    e Zd ZU dZ eddd      Zeed<    eddd	      Zeed
<   y)UserCreateSchemazSchema for creating a new user..r   zUser's username (required)r   r      zUser's password (required))
min_lengthr   passwordN)	r0   r1   r2   r3   r   r   r5   r4   rH   r8   r9   r.   rE   rE   /   s-    )##;WXHcX#!9UVHcVr9   rE   c                   <   e Zd ZU dZ edd      Zee   ed<    eddd      Z	ee
   ed	<    eddd
      Zee
   ed<    eddd      Zee
   ed<    eddd      Zee
   ed<    eddd      Zee
   ed<    edd      Zee   ed<    edd      Zee   ed<   y)UserUpdateSchemaz%Schema for updating user information.Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   )r0   r1   r2   r3   r   r   r   r   r4   r   r5   r   r   r   r!   r#   r6   r%   r8   r9   r.   rJ   rJ   6   s    / !&d8N OE8HO#DSFWXHhsmX %dsH[ \J\!&tI]!^K#^$TcGYZIx}Z "BWXE8C=X %d8T UIx~U"':X"YK$Yr9   rJ   c                   b    e Zd ZU  ed      Zeed<    ed      Zeed<    ed      Z	e
ed<   y)	UserRolesSchemazId of user role resourcer   r=   zAssociated role of the userrolez&Is this role the primary role of user?
is_primaryN)r0   r1   r2   r   r=   rC   r4   rM   r   rN   r6   r8   r9   r.   rL   rL   D   s2     :;B;)FGD*G)QRJRr9   rL   c                      e Zd ZU  ed      Zeed<    edd      Zee	   ed<    edd      Z
ee   ed	<    edd
      Zee   ed<    edd      Zee   ed<    edd      Zee	   ed<    edd      Zee   ed<    edd      Zee   ed<    edd      Zee   ed<    edd      Zee   ed<    edd      Zee	   ed<    edd      Zee   ed<    edd      Zee   ed<    edd      Zee   ed<    edd       Zee   ed!<    eg d"      Zeee      ed#<    edd$      Zeee      ed%<    edd&      Z ee	   ed'<    edd(      Z!ee   ed)<    edd*      Z"ee   ed+<   y),
UserSchemazId of user resourcer   r=   Nz3Unique id of user typically has the form 'usr_xxx' )defaultr   r>   zSystem generated uuid of useruuidzBActivation status of user, false denotes that the user is inactiver#   zFVerification status of user, false denotes that the user is unverifiedr%   zAccess level of the useraccess_levelzIs this user an administrator?is_adminzIs this user an owner?is_ownerzLast logged in unix timestamp
last_loginz(User date of birth in formate YYYY/MM/DDdobzCurrent time zone of usertimezonez'Created date and time as unix timestampr?   z'Updated date and time as unix timestampr@   z'Deleted date and time as unix timestamprA   z Profile picture / avatar of useravatarzRoles of this userroleszAddresses of this user account	addresseszUser role type checkuser_role_typez5Checking if user have filled up signup details or notsignup_details_filledz2FA Authorizationtwofa_enabled)#r0   r1   r2   r   r=   rC   r4   r>   r   r5   rR   r   r#   r6   r%   rS   rT   rU   rV   r   rW   rX   r?   r@   rA   rY   r   rZ   r   rL   r[   r   r\   r]   r^   r8   r9   r.   rP   rP   J   s    56B6""WGXc]  !;Z[D(4.[ %"f!Ix~  #("j#K$  #(B\"]L(3-]$T?_`Hhtn`$T?WXHhtnX%*4Ed%eJ"e#"LC(	  $D>YZHhsmZ%*"K&J"  &+"K&J"  &+"K&J"  ,1"D,FH'(  .3 4.E8D)*  05"B0Ix]+,  %*$DZ$[NHSM[,1"Y-8D>  %*$DW$XM8D>Xr9   rP   N)r3   r   typingr   r   rR   r   pydanticr   r   r	   src.apps.base.schemas.commonr
   "src.apps.files.schemas.file_commonr   r   8src.apps.role_permissions.schemas.role_permission_commonr   r   r;   rE   rJ   rL   rP   r8   r9   r.   <module>rd      sy     !  0 0 3 A 6 O0z 0&
_ 
_Wx WZx ZSj S*Y *Yr9   