
    iO
                     d    d dl mZmZ d dlZd dlmZ  ej                  e      Z G d d      Z	dZ
y)    )UserCompanyRoleRoleN)Userc                       e Zd Zed        Zed        Zed        Zed        Zed        Zed        Z	ed        Z
ed        Zy	)
UserRepositoryc                  >    t         j                  j                         S )N)r   objectsall     O/var/www/html/dp2/backend_v2.1/server/apps/core/repositories/user_repository.pyget_querysetzUserRepository.get_queryset   s    ||!!r   c                 J    t         j                         j                  |       S )Nactive_company)r   r   filterr   s    r   get_user_by_active_companyz)UserRepository.get_user_by_active_company   s&    **,33) 4 
 	
r   c                 f    t         j                         j                  |       j                         S )N)profile__phone_number)r   r   r   first)phone_numbers    r   get_user_by_phone_numberz'UserRepository.get_user_by_phone_number   s-    **,33". 4 

%'	r   c                 .    t         j                  | d      S )z7Get all users with Chief Admin role for a given companyzChief Adminr   get_users_by_rolecompanys    r   get_chief_admins_for_companyz+UserRepository.get_chief_admins_for_company   s     //GGr   c                 .    t         j                  | d      S )z;Get all users with Service Manager role for a given companyzService Managerr   r   s    r    get_service_managers_for_companyz/UserRepository.get_service_managers_for_company!   s     //9JKKr   c                 j    t         j                         j                  d| d      j                         S )zCGet all users who should receive booking emails for a given companyT)profile__send_booking_emailscompany_roles__companycompany_roles__is_active)r   r   r   distinctr   s    r   #get_booking_email_users_for_companyz2UserRepository.get_booking_email_users_for_company'   s7     **,33)-#*%) 4 
 (*		r   c                    	 t         j                  j                  | |d      j                         }|s't        j                  d| d| j                          g S t        j                  j                  | |d      j                  d      }|D cg c]%  }|j                  j                  s|j                  ' }}|S c c}w # t        $ r=}t        j                  d| d| j                   d	t        |              g cY d
}~S d
}~ww xY w)z6Get all users with a specific role for a given companyT)r   name	is_activez	No role 'z' found for company: )r   roler)   userzError getting users with role 'z' for company z: N)r   r	   r   r   loggerwarningr(   r   select_relatedr+   r)   	Exceptionerrorstr)r   	role_namer*   user_company_rolesucruserses          r   r   z UserRepository.get_users_by_role0   s
   	<<&& '  eg	  9+5J7<<.YZ	!0!8!8!?!? "@ " nV$	  *<R);#sxx?Q?QSXX);ERL S 	LL:9+^T[T`T`SaacdghidjcklmI	s<   AC 5C B>,B>:C >C 	D	2D>D	D	c                 J    t         j                         j                  |       S )N)id)r   r   get)user_ids    r   	get_by_idzUserRepository.get_by_idJ   s    **,00G0<<r   N)__name__
__module____qualname__staticmethodr   r   r   r   r    r&   r   r;   r   r   r   r   r   	   s    " " 
 

  
 H H
 L L
    2 = =r   r   z
from apps.core.repositories import UserRepository
from apps.companies.models import Company
UserRepository.get_booking_email_users_for_company(
            company=Company.objects.get(id=53)
        )
)apps.permissions.modelsr   r   loggingapps.core.modelsr   	getLoggerr<   r,   r   nor   r   r   <module>rE      s6    9  ! 
		8	$C= C=Jr   