Ë
    §bj�  ã                   ó\   — d Z ddlmZ ddlmZmZmZ d„ Zd„ Zde	fd„Z
dd	d
dœd„Zddœd„Zy	)z?KYC document review helpers: profile sync and rejection notify.é    )Útimezone)ÚKYCDocumentÚShipperProfileÚTransporterProfilec                 ó¨   — | t         j                  j                  k(  rt        j                  j
                  hS t        j                  j                  hS ©N)r   ÚAccountTypeÚBUSINESSr   ÚDocumentTypeÚBUSINESS_REGISTRATIONÚID©Úaccount_types    ú-/var/www/html/truck-me/accounts/kyc_review.pyÚshipper_required_doc_typesr      s@   € Ø”~×1Ñ1×:Ñ:Ò:Ü×(Ñ(×>Ñ>Ð?Ð?Ü×$Ñ$×'Ñ'Ð(Ð(ó    c                 ó    — | t         j                  j                  k(  rt        t        j
                  «      S t        t        j                  «      S r   )r   r	   ÚFLEET_OWNERÚsetr   ÚFLEET_OWNER_DOC_TYPESÚDRIVER_PERSON_KYC_TYPESr   s    r   Útransporter_required_doc_typesr      s9   € ØÔ)×5Ñ5×AÑAÒAÜ”;×4Ñ4Ó5Ð5äŒ{×2Ñ2Ó3Ð3r   Úreturnc                 óp  — 	 | j                   }|�³t        |j                  «      }t        t        j                  j                  | |t        j                  j                  ¬«      j                  dd¬«      «      }t        |«      xr |j                  |«      }|j                  |k7  r||_        |j                  ddg¬«       |S 	 | j                   }t%        |j                  «      }t        t        j                  j                  | |t        j                  j                  ¬«      j                  dd¬«      «      }t        |«      xr |j                  |«      }|j&                  |k7  r||_        |j                  d
dg¬«       |S # t        j                  $ r d}Y �Œ�w xY w# t"        j                  $ r Y y	w xY w)a  
    Set profile verification from required KYC docs.

    Transporter: documents_verified True iff every required type has APPROVED.
    Shipper: kyc_verified True iff every required type has APPROVED.
    Returns the new verified flag when a matching profile exists, else False.
    N)ÚuserÚdocument_type__inÚreview_statusÚdocument_typeT)ÚflatÚdocuments_verifiedÚ
updated_at©Úupdate_fieldsFÚkyc_verified)Útransporter_profiler   ÚDoesNotExistr   r   r   r   ÚobjectsÚfilterÚReviewStatusÚAPPROVEDÚvalues_listÚboolÚissubsetr    ÚsaveÚshipper_profiler   r   r$   )r   ÚprofileÚrequiredÚapprovedÚverifiedÚshippers         r   Úsync_user_kyc_verifiedr5      s¥  € ðØ×*Ñ*ˆð ÐÜ1°'×2FÑ2FÓGˆÜÜ×Ñ×&Ñ&ØØ"*Ü)×6Ñ6×?Ñ?ð 'ó ÷ ‰k˜/°ˆkÓ5ó
ˆô ˜“>ÒA h×&7Ñ&7¸Ó&AˆØ×%Ñ%¨Ò1Ø)1ˆGÔ&Ø�L‰LÐ(<¸lÐ'KˆLÔLØˆðØ×&Ñ&ˆô *¨'×*>Ñ*>Ó?€HÜÜ×Ñ×"Ñ"ØØ&Ü%×2Ñ2×;Ñ;ð 	#ó 	
÷ ‰+�o¨Dˆ+Ó
1ó€Hô �H‹~Ò= (×"3Ñ"3°HÓ"=€HØ×Ñ˜xÒ'Ø'ˆÔØ�‰ N°LÐ#AˆÔBØ€OøôG ×*Ñ*ò Ø‹ðûô( ×&Ñ&ò Ùðús#   ‚F ÃF ÆFÆFÆF5Æ4F5Ú NT)Úreview_notesÚreviewerÚnotifyc          
      óÜ  — |xs dj                  «       }|t        j                  j                  k(  r|st	        d«      ‚| j
                  }|| _        |t        j                  j                  k(  r|n|r|nd| _        |t        j                  j                  k(  r(|| _        t        j                  «       | _
        || _        nS|t        j                  j                  k(  r!t        j                  «       | _
        || _        nd| _        d| _
        d| _        | j                  «        | j                  g d¢¬«       t        | j                  «       |r�|t        j                  j                  k(  r€|t        j                  j                  k7  rcddlm}  || j$                  gdd	t'        | j(                  «      | j*                  | j-                  «       |d
œdd| j-                  «       › d|› �¬«       | S )z¥
    Apply APPROVED/REJECTED/PENDING review. REJECTED requires non-empty notes.
    Syncs verified flag and profile; notifies user on REJECTED when notify=True.
    r6   zRejection reason is required.N)r   r7   r3   Úreviewed_atÚreviewed_byr"   r   )Únotify_usersÚDOCUMENT_REJECTEDÚKYC)ÚkindÚdocument_idr   Údocument_type_displayÚreasonzDocument rejectedzYour z was rejected: )ÚtitleÚbody)Ústripr   r)   ÚREJECTEDÚ
ValueErrorr   r7   r*   r   Únowr;   r<   Úsync_verified_flagr.   r5   r   Ú
api.notifyr=   Úuser_idÚstrÚpkr   Úget_document_type_display)Údocr   r7   r8   r9   ÚnotesÚpreviousr=   s           r   Úapply_kyc_reviewrS   D   s£  € ð
 Ò˜R×&Ñ&Ó(€EØœ×0Ñ0×9Ñ9Ò9Á%ÜÐ8Ó9Ð9à× Ñ €HØ%€CÔØ -´×1IÑ1I×1RÑ1RÒ R‘uÙ‰˜Bð Ôð œ×0Ñ0×9Ñ9Ò9Ø ˆÔÜ"Ÿ,™,›.ˆŒØ"ˆ�Ø	œ+×2Ñ2×;Ñ;Ò	;Ü"Ÿ,™,›.ˆŒØ"ˆ�àˆÔØˆŒØˆŒà×ÑÔØ‡H�Hò €Hô ô ˜3Ÿ8™8Ô$ñ 	Øœ[×5Ñ5×>Ñ>Ò>Øœ×0Ñ0×9Ñ9Ò9å+áØ�[‰[ˆMØàÜ" 3§6¡6›{Ø!$×!2Ñ!2Ø),×)FÑ)FÓ)HØñð &Ø˜×6Ñ6Ó8Ð9¸ÈÈÐPõ	
ð €Jr   F)Úfile_changedc                ó„   — |s| S t         j                  j                  | _        d| _        d| _        d| _        d| _        | S )zDWhen files are re-uploaded, return the doc to PENDING for re-review.r6   FN)r   r)   ÚPENDINGr   r7   r3   r;   r<   )rP   rT   s     r   Úreset_kyc_document_for_resubmitrW   {   s@   € áØˆ
Ü#×0Ñ0×8Ñ8€CÔØ€CÔØ€C„LØ€C„OØ€C„OØ€Jr   )Ú__doc__Údjango.utilsr   Úaccounts.modelsr   r   r   r   r   r,   r5   rS   rW   © r   r   ú<module>r\      sB   ðÙ EÝ !ç KÑ Kò)ò4ð- Dó -ð` :<ÀdÐSWô 4ðn :?õ 	r   