
    h                        S SK JrJrJr  S SKJr  S SKJrJrJr   " S S\5      r	 " S S\5      r
 " S S	\5      r " S
 S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S  S!\5      r " S" S#\5      r " S$ S%\5      r " S& S'\5      r " S( S)\5      rg*)+    )	BaseModelField	validator)datetime)ListOptionalDictc                      \ rS rSr% \\S'   \" SSS9r\\S'   \" SSS9r	\\S'   \" S	S
S9r
\\   \S'   \" SSS9r\\S'   \" SSS9r\\S'   \" SSS9r\\S'   \" SSS9r\\S'   \" SSS9r\\S'   \" SSS9r\\S'   \" SSS9r\\S'   \" SSS9r\\S'   \" \SS9r\\   \S'   \" \SS9r\\   \S '   \" \S!S9r\\   \S"'   \" \S#S9r\\   \S$'   \" \R8                  S%S9r\\S&'   \" \R8                  S'S9r\\S('   S)rg	)*Service   
service_id.Identifier for the accountdescription
account_idIdentifier for the useruser_idNz!Parent service identifier, if any	parent_idzTitle of the serviceservice_titlez#Detailed description of the serviceservice_descriptionz!Maximum number of concurrent jobscapacity_jobsz&Indicates if the service is chargeablehas_costz!URL or path for the service imageimagezURL or path for the map iconmap_iconz.Status of the service (e.g., active, inactive)statusz&True if the service is vehicle focusedis_vehicle_focusedzInput form variablesdefault_factoryr   input_variableszAdditional optional variablesinput_addonszChecklist variables	checklistzSkills variablesskillsCreation timestampcreated_dateLast updated timestampupdated_date ) __name__
__module____qualname____firstlineno__int__annotations__r   r   strr   r   r   r   r   r   r   boolr   r   r   r   listr   r   r    r!   r"   r   utcnowr$   r&   __static_attributes__r'       MC:\Suresh\moveshuttle\MDcreated\moveengine\app\v1\models\platform\services.pyr   r      sW   OC-IJJJ*CDGSD$T7Z[Ix}[s0FGM3G$S6[\\s0STM3T3,TUHdUs(KLE3L#+IJHcJ)YZFCZ$S6^__!&tI_!`OT#Y`#DFefL$s)f CXYItCyYd@RSFDIS"8??PdeL(e"8??PhiL(ir3   r   c                   4   \ rS rSr% \" SSS9r\\S'   \" SSS9r\\S'   \" SSS9r	\\S	'   \" SS
S9r
\\S'   \" SSS9r\\S'   \" SSS9r\\S'   \" SSS9r\\S'   \" \SS9r\\   \S'   \" \R&                  SS9r\\S'   \" \R&                  SS9r\\S'   Srg)PricingRule   .r   r   r   r   r   zRule identifier	rule_namez*Pricing type (e.g., fixed, time, distance)pricing_typezFixed base cost	base_costzVariable cost per unitratez#Unit for pricing (e.g., minute, km)unitz&Conditions or tags (e.g., night, peak)r   
conditionsr#   r$   r%   r&   r'   N)r(   r)   r*   r+   r   r   r.   r-   r   r8   r9   r:   floatr;   r<   r0   r=   r   r   r1   r$   r&   r2   r'   r3   r4   r6   r6      s    C-IJJJ*CDGSD3,=>Is>c/[\L#\S.?@Iu@)ABD%Bc'LMD#M!$DlmJS	m"8??PdeL(e"8??PhiL(ir3   r6   c                       \ rS rSr% \" SSS9r\\S'   \" SSS9r\\S'   \" SSS9r	\\S	'   \" \
R                  S
S9r\
\S'   \" SSS9r\\S'   Srg)PricingType&   .r   r   r   r   r   zPricing type valuer9   r#   r   created_datetimez+Status (e.g., active, inactive, deprecated)r   r'   N)r(   r)   r*   r+   r   r   r.   r-   r   r9   r   r1   rB   r   r2   r'   r3   r4   r@   r@   &   sa    C-IJJJ*CDGSDc/CDL#D!&xTh!ihi)VWFCWr3   r@   c                       \ rS rSr% \\S'   \\S'   \\   \S'   \\   \S'   \\   \S'   \\S'   \\S'   \\S	'   S
r\	\   \S'   S
r
\	\   \S'   S
r\	\   \S'   \" SSSSS9S 5       rSrg
)WorkforceBase0   r   r   r"   addonsr!   r   r   r   Nr   r   r   T)prec                     [        U[        5      (       aF  UR                  S5       Vs/ s H)  o"R                  5       (       d  M  UR                  5       PM+     sn$ U$ s  snf )N,)
isinstancer.   splitstrip)clsvitems      r4   parse_comma_separated_strings+WorkforceBase.parse_comma_separated_strings=   sE    a-.WWS\J\TZZ\LDJJL\JJ Ks   AAr'   )r(   r)   r*   r+   r.   r-   r   r,   r   r   r   r   r   rP   r2   r'   r3   r4   rD   rD   0   s    IICyME8C="Hhsm" FHSM xhD9 :r3   rD   c                   >    \ rS rSr% Sr\\   \S'   Sr\\   \S'   Sr	g)WorkforceUpdateBaseC   Nnamemobiler'   )
r(   r)   r*   r+   rU   r   r.   r-   rV   r2   r'   r3   r4   rS   rS   C   s      D(3- FHSM r3   rS   c                   .    \ rS rSr% SrSr\\   \S'   Sr	g)	WorkforceJ   zLA complete Workforce model that can be extended with extra fields if needed.Nr   r'   )
r(   r)   r*   r+   __doc__r   r   r.   r-   r2   r'   r3   r4   rX   rX   J   s    V $J$r3   rX   c                   N   \ rS rSr% Sr\\   \S'   Sr\\   \S'   Sr	\\   \S'   Sr
\\   \S'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S	'   Sr\\   \S
'   \\   \S'   / r\\\      \S'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S'   \" SS5      S 5       rSrg)WorkforceCreateN   Nr   r   r   s_idr   r   r   r   dynamicFieldscategory_inputsr   r   r   r   r"   rF   c                 *    U(       d  [        S5      eU$ )Nz#At least one skill must be selected)
ValueError)rM   rN   s     r4   validate_skillsWorkforceCreate.validate_skills]   s    BCCr3   r'   )r(   r)   r*   r+   r   r   r.   r-   r   r   r^   r,   r   r   r   r   r/   r   r	   r`   r   r   r   r   r   rc   r2   r'   r3   r4   r\   r\   N   s    !GXc]! $J$ $J$D(3-#'M8C=')-#-#'M8C='#Hhtn#:,.OXd4j).E8C="Hhsm" FHSM )--x! "r3   r\   c                      \ rS rSr% Sr\\   \S'   Sr\\   \S'   Sr	\\   \S'   Sr
\\   \S'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S	'   Sr\\   \S
'   \" \R$                  S9r\\   \S'   Sr\\   \S'   Sr\\   \S'   Srg)WorkforceUpdatec   Nr   r   r8   r9   r:   r;   r<   r=   )r   last_updatedr   r   r'   )r(   r)   r*   r+   r   r   r.   r-   r   r8   r9   r:   r>   r;   r<   r=   r   r   r1   rh   r   r   r2   r'   r3   r4   rf   rf   c   s     $J$!GXc]!#Ix}#"&L(3-&!%Ix% D(5/  D(5/  $J$',X__'ML(8$ME8C="Hhsm"r3   rf   c                      \ rS rSr% Sr\\   \S'   Sr\\   \S'   Sr	\\   \S'   Sr
\\   \S'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S	'   Sr\\   \S
'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S'   Sr\\   \S'   / r\\   \S'   / r\\   \S'   / r\\   \S'   Srg)WorkforceListp   Nr   idr   r   r^   r   r   r   r   r   r   r   r   r   r    r$   
last_loginr"   r!   rF   r'   ) r(   r)   r*   r+   r   r   r.   r-   rl   r   r   r^   r,   r   r   r   r   r/   r   r   r   r   r   r    r$   r   rm   r"   r   r!   rF   r2   r'   r3   r4   rj   rj   p   s   !GXc]!B $J$ $J$D(3-#'M8C=')-#-#'M8C='#Hhtn#E8C="Hhsm" FHSM )--%)OXc])"&L(3-&'+L(8$+%)J")FDIItCyFDIr3   rj   c                   0    \ rS rSr% \\S'   \\   \S'   Srg)
Workforces   total_countusersr'   N)	r(   r)   r*   r+   r,   r-   r   rj   r2   r'   r3   r4   ro   ro      s    r3   ro   c                   R    \ rS rSr% Sr\\   \S'   Sr\\   \S'   Sr	\\   \S'   Sr
g)	CheckList   Nr   r   rU   r'   r(   r)   r*   r+   r   r   r.   r-   r   rU   r2   r'   r3   r4   rt   rt      ,    !GXc]! $J$D(3-r3   rt   c                   &    \ rS rSr% \\   \S'   Srg)CheckListSelect   rr   r'   N)r(   r)   r*   r+   r   rt   r-   r2   r'   r3   r4   ry   ry          	?r3   ry   c                   R    \ rS rSr% Sr\\   \S'   Sr\\   \S'   Sr	\\   \S'   Sr
g)	AddonList   Nr   r   rU   r'   rv   r'   r3   r4   r}   r}      rw   r3   r}   c                   &    \ rS rSr% \\   \S'   Srg)AddonsSelect   rr   r'   N)r(   r)   r*   r+   r   r}   r-   r2   r'   r3   r4   r   r      r{   r3   r   c                   R    \ rS rSr% Sr\\   \S'   Sr\\   \S'   Sr	\\   \S'   Sr
g)
SkillsList   Nr   r   rU   r'   rv   r'   r3   r4   r   r      rw   r3   r   c                   &    \ rS rSr% \\   \S'   Srg)SkillsListSelect   rr   r'   N)r(   r)   r*   r+   r   r   r-   r2   r'   r3   r4   r   r      s    
r3   r   c                   R    \ rS rSr% Sr\\   \S'   Sr\\   \S'   Sr	\\   \S'   Sr
g)ServiceCatList   Nr   r   service_categoryr'   )r(   r)   r*   r+   r   r   r.   r-   r   r   r2   r'   r3   r4   r   r      s-    !GXc]! $J$&*hsm*r3   r   c                   &    \ rS rSr% \\   \S'   Srg)ServiceCategorySelect   rr   r'   N)r(   r)   r*   r+   r   r   r-   r2   r'   r3   r4   r   r      s    r3   r   c                   &    \ rS rSr% \\   \S'   Srg)SubServiceSelect   rr   r'   N)r(   r)   r*   r+   r   rj   r-   r2   r'   r3   r4   r   r      s    r3   r   N)pydanticr   r   r   r   typingr   r   r	   r   r6   r@   rD   rS   rX   r\   rf   rj   ro   rt   ry   r}   r   r   r   r   r   r   r'   r3   r4   <module>r      s    0 0  ' 'ji j(
j) 
jX) XI &!) !% %m *#i #I 2 	 
i 	 
9  
y +Y +
 I  y r3   