
    soj?                        d dl mZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmc mc mZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z)m*Z* d dl+m,Z,  G d de          Z-dedej.        dedede/f
dZ0dede1fdZ2dede1fdZ3dedej.        dededdf
dZ4dedej.        dede deddfdZ5	 	 d#dedej.        dede d ej        ddfd!Z6dedefd"Z7dS )$    )StrEnum)Update)ContextTypesN)User)Location)CommandName)MessageSource)Region)ReservedKeyboardKeys)Screen)CommonChatException)Keyboard)cron_datetime_difference)update_location)full_message_sendmention_markdown_v2get_image_previewget_yes_no_keyboardget_message_source)get_belly_formattedc                       e Zd ZdZdZdS )ChangeRegionReservedKeysz+
    The reserved keys for this screen
    aN)__name__
__module____qualname____doc__REGION     ,/app/src/chat/common/screen_change_region.pyr   r      s          FFFr    r   updatecontextuserdestination_regionreturnc                   K   t          j        |j                  }|j        |k    rGt          j                            t          |                    }t          ||| d           d{V  dS |j	        sct          j
                            t          t          j                                                            }t          ||| d           d{V  dS |t          j        k    r|t          j                    }|                                |j        k     rLt          j                            t+          |j                            }t          ||| d           d{V  dS dS )z
    Validate the move request
    :param update: The update
    :param context: The context
    :param user: The user
    :param destination_region: The region to move to
    :return: True if the move is valid
    Tr"   add_delete_buttonNF)r)   )r   get_by_levellocation_levelregionphrasesLOCATION_ALREADY_IN_REGIONformatget_region_textr   can_change_regionLOCATION_CANNOT_CHANGE_REGIONr   EnvCRON_RESET_CAN_CHANGE_REGIONgetr
   	NEW_WORLDget_first_new_worldget_max_bountyrequired_bounty5LOCATION_NEW_WORLD_REQUEST_REJECTED_NOT_ENOUGH_BOUNTYr   )r"   r#   r$   r%   locationot_textfirst_new_world_locations          r!   validate_move_requestr>   &   s}      ".t/BCCH,,,4;;OL^<_<_``SWXXXXXXXXXXu ! 7>>$S%E%I%I%K%KLL
 
  &DQQQQQQQQQQu V----5-I-K-K   #;#KKKSZZ#$<$LMM G $GWVW[\\\\\\\\\\54r    r,   c                      | | j         k    rdndS )NParadisezthe New World)PARADISEr,   s    r!   r0   r0   M   s    6?22::Gr    c                     | t           j        k    r+t          t          j                                                  S | t           j        k    r+t          t          j                                                  S dS )N )r
   rA   r   r3   LOCATION_PARADISE_IMAGE_URLr5   r6   LOCATION_NEW_WORLD_IMAGE_URLrB   s    r!   get_region_image_previewrG   Q   s\       !@!D!D!F!FGGG	6#	#	# !A!E!E!G!GHHHrr    c           	        K   |t           j        u rt          t          j                  t          j                            t          |          t          |j	        |j
                  t          |                    }t          |t          |           t          j        t          j        |          g}t!          ||| |d| j        du           d{V  dS )z
    Send proposal for region change
    :param update: The update object
    :param context: The context object
    :param user: The user object
    :param region: The region to move to
    :return: None
    )screenyes_textno_textprimary_keyFN)r"   keyboarddisable_web_page_previewnew_message)r
   NDr   r-   &LOCATION_INVALID_CHANGE_REGION_REQUESTLOCATION_CHANGE_REGION_PROPOSALr/   rG   r   
tg_user_idtg_first_namer0   r   
get_screenKEYBOARD_OPTION_ACCEPTKEYBOARD_OPTION_REJECTr   callback_query)r"   r#   r$   r,   r<   inline_keyboards         r!   send_proposalrZ   Z   s       !'"PQQQ5<< ((DOT-?@@ G 	f%%32	
 	
 	
-O  !&*$6           r    rM   c                   K   |j         t          j                 r>t          | |||           d{V sdS d|_        t          ||| d|d           d{V  dS t          j                            t          |          t          |          t          j        |j                                                            }t          ||| d           d{V  dS )z
    Keyboard interaction
    :param update: The update
    :param context: The context
    :param user: The user
    :param keyboard: The keyboard
    :param region: The region
    :return: None
    NFT)cap_to_paradiser,   requested_by_userr(   )infor   CONFIRMr>   r1   r   r-   (LOCATION_CHANGE_REGION_PROPOSAL_REJECTEDr/   rG   r0   Commandget_other_region_command_namer+   get_formattedr   )r"   r#   r$   rM   r,   r<   s         r!   keyboard_interactionrd      s     $ })12 *67D&IIIIIIII 	F "''65[_
 
 
 	
 	
 	
 	
 	
 	
 	
 	 BII$V,,F##1$2EFFTTVV
 

  SWXXXXXXXXXXr    commandc                   K   |%t          |j        t          j                           }nG|,|j        t
          j        u rt           j        nt           j        }nt          t          j
                  t          | |||           d{V sdS |t          | |||           d{V  dS |t          t          j                  t          | ||||           d{V  dS )z
    Manage the change region request
    :param update: The update object
    :param context: The context object
    :param user: The user object
    :param keyboard: The keyboard object
    :param command: The command message
    :return: None
    N)r
   r^   r   r   namer   rA   r6   r   r-   rQ   r>   rZ   KEYBOARD_NOT_FOUNDrd   )r"   r#   r$   rM   re   r,   s         r!   manageri      s     $ &>&EFGG		$+LK4H$H$HfN^!'"PQQQ&vwfEEEEEEEE  FGT6::::::::: !'"<===
vwh
G
GGGGGGGGGGr    c                 h    t          |           t          j        u rt          j        S t          j        S )zU
    Get the screen
    :param update: The update object
    :return: The screen
    )r   r	   GROUPr   GRP_CHANGE_REGIONPVT_CHANGE_REGION)r"   s    r!   rU   rU      s,     &!!]%888''##r    )NN)8enumr   src.tg_compatr   src.tg_compat.extr   resources.EnvironmentEnvironmentr3   resources.phrasesr-   src.model.enums.Commandmodelenumsra   src.model.Userr   src.model.enumsr   src.model.enums.CommandNamer   src.model.enums.MessageSourcer	   src.model.enums.Regionr
   $src.model.enums.ReservedKeyboardKeysr   src.model.enums.Screenr   src.model.error.CommonChatErrorr   src.model.pojo.Keyboardr   src.service.date_servicer   src.service.location_servicer   src.service.message_servicer   r   r   r   r   src.utils.string_utilsr   r   DEFAULT_TYPEboolr>   strr0   rG   rZ   rd   ri   rU   r   r    r!   <module>r      s}                     * * * * * * # # # # # # # # # # # # ) ) ) ) ) ) ) ) ) ) ) )       $ $ $ $ $ $ 3 3 3 3 3 3 7 7 7 7 7 7 ) ) ) ) ) ) E E E E E E ) ) ) ) ) ) ? ? ? ? ? ? , , , , , , = = = = = = 8 8 8 8 8 8              7 6 6 6 6 6    w   $$)6$>B$X^$	$ $ $ $NHF Hs H H H HV     &&)6&>B&LR&	& & & &R&&&& & 	&
 & 
& & & &Z #%H %H%H&%H %H 	%H
 _%H 
%H %H %H %HP
$v 
$& 
$ 
$ 
$ 
$ 
$ 
$r    