
    X2h                        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mZmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZmZmZmZ d dlmZmZ  eddg      ZejA                  dejB                  e      edededefd              Z"ejG                  dejH                  e      edede%dedefd              Z&ejO                  dejH                  e      e ed d        eddd      dfdedede%d e%d!ee(   f
d"              Z)ejU                  dejH                  e      edede%defd#              Z+y)$    )datetimetimezone)Optional)	APIRouterQuerystatus)ServiceRepository)UserRepository)ServiceSchemaCreateServiceRequestUpdateServiceRequest)handles_authenticationuser_dependency)db_dependency)NotFoundException)ResponseObjectResponseModelListResponseModelBaseResponseModel)BusinessTypeRegisterStepz/api/servicesServices)prefixtagsz/create)status_coderesponse_modeluserrequestdbc           	        K   t        |      }t        |      }|j                  | j                  d             d {   }|j                  st        d      |j                  | j                  d      t        j                         d {    t        |j                  |j                  |j                  t        j                  t        j                        t        j                  t        j                              }|j!                  |       d {   }t#        j$                  d|j&                  |j                  |j                  d      S 7 7 7 Bw)Niddefault company)
company_idnameprice
created_at
updated_atServicer!   r$   r%   r$   obj)r	   r
   	get_by_idgetdefault_companyr   update_stepr   SETUP_SERVICESr   r$   r%   r   nowr   utccreate_servicer   postr!   )r   r   r   service_repo	user_repo	user_dataservice_dataservices           D/var/www/html/phonemate/phone_mate_backend/app/api/service_router.pyr3   r3      s      %R(Lr"I))$((4.99I$$ 122


0K0K
LLL ,,\\mm<<-<<-L !//==G==iGJJ_f_l_l-mnn! : M >s5   :EEAE
EBEE>EEEz/{service_id}
service_idc                 ,  K   t        |      }t        |      }|j                  | j                  d             d {   }|j                  st        d      |j                  |       d {   }|st        d      |j                  |j                  k7  rt        d      |j                  |j                  |j                  |j                  n|j                  |j                  |j                  n|j                  |j                  t        j                  t        j                        d}t        di |}	|j!                  ||	       d {   }
t#        j$                  d|
j                  |
j                  |
j                  d      S 7 P7 #7 Cw)Nr!   r"   r(   )r!   r#   r$   r%   r&   r'   r)   r*    )r	   r
   r,   r-   r.   r   r#   r!   r$   r%   r&   r   r1   r   r2   r   updater   put)r   r;   r   r   r5   r6   r7   r9   update_dataservice_schemaupdated_services              r:   update_servicerC   *   sP     %R(Lr"I))$((4.99I$$ 122 **:66G	**Y666	** jj(( ' 8gll")--";((ll8<<0K #1[1N(//
NKKO<<"%%/C/CoNcNcd / : 7" Ls4   :FF/F,F-C!FF>FFFz	/read-all)ge
      d   )rD   leNstart	page_sizesearchc                   K   t        |      }t        |      }|j                  | j                  d             d {   }|j                  st        d      |j                  |j                  |       d {   }|j                  |j                  |||       d {   }	t        j                  |	||d      S 7 7 F7 !w)Nr!   r"   )r#   rI   sizerK   r   )entitiestotal_countrJ   r$   )
r	   r
   r,   r-   r.   r   count_by_companyget_by_company_paginatedr   list)
r   r   rI   rJ   rK   r5   r6   r7   totalservicess
             r:   get_servicesrU   Q   s      %R(Lr"I))$((4.99I$$ 122//	0I0I6RRE!::,,	 ;  H ==	  : Ss3   :CB<:C7B>8&CC C>C Cc                   K   t        |      }t        |      }|j                  | j                  d             d {   }|j                  st        d      |j                  |       d {   }|st        d      |j                  |j                  k7  rt        d      |j                  |       d {   }|st        d      t        j                  d      S 7 7 s7 +w)Nr!   r"   r(   )r$   )
r	   r
   r,   r-   r.   r   r#   delete_servicer   delete)r   r;   r   r5   r6   r7   r9   deleted_services           r:   rW   rW   q   s      %R(Lr"I))$((4.99I$$ 122 **:66G	**Y666	**(77
CCO	**??	** : 7 Ds4   :C$C/C$,C -A	C$6C"7(C$ C$"C$),r   r   typingr   fastapir   r   r   repositories.service_repositoryr	   repositories.user_repositoryr
   schemas.servicer   r   r   utils.auth_dependencyr   r   utils.databaser   utils.exceptionsr   utils.responser   r   r   r   utils.constantsr   r   routerr4   HTTP_201_CREATEDr3   r?   HTTP_200_OKintrC   r-   strrU   rX   rW   r=       r:   <module>rj      s   '  , , = 7 U U I ( . ^ ^ 6	/	= YF$;$;L_`o o9M oS` o  ao, O););L_`#
## "# 		#  a#J KV%7%7HYZ qQ2!, 
  	
 SM  [< F,>,>O`a+
++ 	+  b+ri   