
    jJh6                     
   d dl mZ d dlmZmZ d dlmZmZmZ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 d dlmZmZmZmZmZmZ  e       Z e       Zd	 Zd
 Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+y)    )absolute_import)datetime	timedelta)appdbdb_model
app_logger)Timecategory
ExperienceRegistration)PreCalculatedCampaignService)IntroCallSchedulingService)and_desc)replace_charsformat_partner_name"user_already_has_active_experiencecontent_not_foundpartner_does_not_existduplicate_phone_numbersc           
         | D ]  }t         j                  j                  j                  t	        |d               j
                  }t        j                  t	        t        |d               t	        |d         t	        |d         t	        |d         |      }t        j                  j                  |        t        j                  j                          y )N   r            )nameareacityemail
channel_id)r   Channelqueryget_by_namer   idPartnerr   r   sessionaddcommit)partnerspr    partner_recs       )/var/www/dostadmin/dostadmin/db_helper.pyadd_to_partner_tabler-      s    %%++77ad8KLOO
&&21Q489qt$qt$!%!
 	

{#  JJ    c                     | D ]I  }t        j                  t        t        |                  }t        j
                  j                  |       K t        j
                  j                          y )N)r   )r   r!   r   r   r   r&   r'   r(   )channelscchannel_recs      r,   add_to_channel_tabler3   (   sI    &&M:Ma:P,QR


{#  JJr.   c                    g }g }t         j                  j                  j                  |      }| D ]z  }t         j                  j                  j                  |d   t         j                  j                  j                        }t        j                  t        |d         d      j                         }|rt         j                  j                  j                  |j                        s|t        |j!                          dz
  d      z   }|t        d|      z   }t        j                  |j                  |||t         j                  j                  j"                        }t$        j&                  j)                  |       Q|j+                  |d          g|j+                  |d          } t$        j&                  j-                          ||fS )Nr   r   %m/%d/%Y)daysweeks)experience_idpause_start_datepause_end_datenext_program_idstatus)r   
Programseqr"   get_program_lenr   !find_experience_with_phone_statusStatusACTIVEr   strptimer   dateExperiencePauseLogpending_pause_log_existsr$   r   weekdayPENDINGr   r&   r'   appendr(   )	pause_log_datanext_programno_experiencepending_pause_logprogram_len	pause_logexp
start_dater:   s	            r,   add_experience_pause_logrQ   /   st   M%%++;;LIK#	!!''IIaL(--44;;
 &&}Yq\'BJOTTV
..44MMcffU')$,,..2!+ 
 ",iQk.R!R$77"%&&%/#1$0#66==EE	 

y)!((16  1.- $. JJ+++r.   c                     g }| D ]V  }t        |d         }t        j                  j                  j	                  |      }|r=|j                  t        |             X |S )Nr   )r   r   ContentVersionr"   !find_content_id_with_exotel_appidrH   r   )providernumber_dataerrorsdataexotel_appid
content_ids        r,   )get_error_list_for_adding_provider_numberrZ   N   s\    F#$T!W-,,22TT

 MM+L9: $ Mr.   c                 
   t        |       }|s| D ]  }t        |d         }t        |d         }t        |d         }t        |d         }t        |d         }t        j                  j                  j                  |      }t        j                  j                  j                  |      }	t        j                  j                  j                  |      }
t        j                  j                  |||	|
|j                          |S )Nr   r   r   r   r   )rZ   r   r   r%   r"   r#   rS   rT   Languagefind_language_id_with_nameProviderNumberadd_provider_numberr$   )rU   rV   rW   phoner   rX   language_namepartner_namepartnerrY   language_ids              r,   r_   r_   [   s    67JKF'D!$q'*E a)D(a1L)$q'2M(a1L&&,,88FG''--OO  
 #++11LLK ##77tZgjj! (& Mr.   c                 X   i }g }g }t        | d         }t        j                  j                  j	                  |t        j                  j
                  j                        }|r|j                  t        |d             |j                  |d      sd||<   n|j                  |       |j                  }t        j                  j                  j                  |      }|dk(  r|j                  t        |             |r+dj                  |      }	|j                  t        |	             ||fS )Nr   userFTz, )r   r   r   r"   r?   r@   rA   rH   r   get
partner_idr%   	get_by_idr   joinr   )
usersproviderphones
duplicatesrV   r`   
experienceri   rc   duplicate_phoness
             r,    get_error_list_for_non_mvp_usersrr   t   s    FJF%(#E$$**LLx""))00J 8GH::eU#u% $$J$$..z:GR,Z8999Z0-.>?@7?r.   c                 x   	 t        | |      \  }}|st| \  }}}}	t        |      ||j                  t        |      t        |      |	|j                  d}
t	        |
t
        j                  j                  j                  |      \  }}}}|fS # t        $ r"}t        j                  d|        Y d }~y d }~ww xY w)N)r`   experience_typeprovider_numberprogramblock	timerangeri   z8Error while preparing new users data to add through UI. )rr   r   r`   r$   add_to_users_tabler   UserTypeTypePARENT	Exceptionr	   error)rf   rt   rm   current_userrV   rc   r`   rv   rw   rx   	user_datanew_usernew_registrationnew_exppre_calculated_campaign_dataes                   r,   add_non_mvp_usersr      s    Y:4J/3,E7E9 'u-#2#+>>(1&u-&%jjI #8,,1188, ,
 x!17<XXX YSTUSVWXXYs   BB 	B9B44B9c                     t         j                  j                  j                  | d         }t         j                  j                  j                  | d         }|j                  |j                  fS )Nri   rw   )r   r%   r"   rj   DistrictBlockMappingget_by_block_namestatedistrict)r   rc   district_block_mappings      r,   get_partner_and_block_detailsr      s`    $$..y/FGG%::@@RR' ==09999r.   c                    t         j                  j                  t         j                  j                  t         j                  j
                  t         j                  j                  gt         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  gt         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  gi}|j                  | g       S N)r
   	TimeRangeMORNING_TIME_RANGECategoryEIGHT_AMNINE_AMTEN_AMAFTERNOON_TIME_RANGE	TWELVE_PMONE_PMTWO_PMEVENING_TIME_RANGEFOUR_PMFIVE_PMSIX_PMrh   )rx   time_slots_maps     r,   determine_time_slotr      s    11!!**!!))!!((4

 	33!!++!!((!!((6

 	11!!))!!))!!((4
N" i,,r.   c
                    t        j                  d|| d   i       }
t        j                  j	                  |
       t        j                  j                          t        j                  |
j                  | d   | d   | d   |t         j                  j                  j                  |j                  ||| d   t         j                  j                  j                  |	j                        }t        j                  j	                  |       t        j                  j                          t        j                  |
j                  |j                  || d   || d   | d   t         j                  j                  j                  |		      }t        j                  j	                  |       t        j                  j                          |
||fS )
Nfnuri   )r   user_type_idri   program_orderru   r`   rw   )user_idri   ru   r`   
program_idsignup_statustime_category_idr   r   rw   onboarding_sourceonboarded_byrt   )	r   timecategory_idrd   r`   rP   ru   typer<   r   )r   Userr   r&   r'   r(   r   r$   SignupStatusCOMPLETEOnboardingSourceUI_REGISTEREDusernamer   r@   rA   )r   	user_typer   r   timecategoryr   r   rd   rP   r   r   r   new_experiences                r,   create_user_and_registrationr      sj    }}!\*	H JJNN8JJ,,\*!"34 ++88AA% "//@@NN!** JJNN#$JJ(($ !"34()""))00
N JJNN>"JJ%~55r.   c                 p    t         j                  | j                        }t        j	                  | |       |S r   )pre_calculated_campaign_serviceadd_new_experiencer$   intro_call_scheduling_service"create_and_schedule_intro_campaign)r   r   s     r,   schedule_intro_campaignr     s:    #B#U#U$  "DD4 ('r.   c                    	 t        j                  d|        t        |       \  }}t        | d         }t        j
                  j                  |      }t        j                  j
                  j                  | d         }t        j                  j
                  j                  |      }t        j                  j
                  j                         }	t        j                         j!                         }
| d   t        j"                  j$                  j&                  k(  r|
t)        d      z  }
t+        | |||||||	|
|
      \  }}}t-        |      }||||fS # t.        $ r"}t        j0                  d|        Y d }~y d }~ww xY w)NzAdding new user data: %srx   rv   rt   r   )r6   z'Error occurred while adding new users: )r	   infor   r   r
   r"   get_least_users_timeslotr   Programfind_program_id_with_namerz   get_user_type_id_by_namer\   r]   r   nowrC   r   r{   SELFPACEDPCr   r   r   r}   r~   )r   r   r   r   r   	timeslotsr   r   r   rd   rP   r   r   r   r   r   s                   r,   ry   ry     sk   %H2I>7	Bx'	+(>?	#))BB9M%%++EEi 

  ((..GG	R''--HHJ\\^((*
&'8+>+>+C+C+O+OO)++J5Q6
2"N (?~'N$ (	
 	
  HB1#FGGHs   EE 	E?E::E?c                 (   |D ]n  }t         j                  j                  j                  t	        t         j                  j
                  t        |d         k(  t         j                  j                  | k(              j                         }|r_t         j                  j                  j                  |d         |_        t        |d         |_        t        |d         |_        | |_        t        j                  t         j                  j                  j                  |d         | t        |d         t        |d         t        |d               }t        j                  j!                  |       q t        j                  j#                          y )Nr   r   r   r   )rY   r   sequence_indexweekday)r   r=   r"   filterr   r   intr   firstContentfind_content_id_with_namerY   r   r   r   r&   r'   r(   )r   pdatar*   pseq_recs       r,   add_to_programr   7  s3   &&,,33##22c!A$i?##..*<

 %' 	 "*"2"2"8"8"R"RSTUVSW"XH!IHMqt9HL",H**#++11KKAaDQ%"1Q4y1Y!IH JJNN8$) * JJr.   c                 j   |t         j                  d   k(  rt         j                  d   S |t         j                  d   t         j                  d   fv rt         j                  d   S t        j                  j                  j                  t        t        j                  j                  | k(  t        j                  j                  dk(              j                         }|rt        j                  j                  j                  t        t        j                  j                  |j                  k(  t        j                  j                  dk(              j                  t        t        j                  j                              j!                  d      j                         }|r"|j"                  r|j"                  j$                  S t        j&                  j                  j                  t        t        j&                  j(                  |j(                  k(  t        j&                  j*                  dk(              j                         }|r"|j"                  r|j"                  j$                  S |r|j"                  s,t-        j.                  d	       nt-        j.                  d
|        t         j                  d   S )NEXOTEL_CALLIN_PHONEEXOTEL_CALLIN_DEFAULT_APPIDEXOTEL_POSTER_PHONE1EXOTEL_POSTER_PHONE2EXOTEL_POSTER_DEFAULT_APPIDactive	completedr   zProgramseq/Content not foundz3User/Experience not found: New user with Phone %s ?EXOTEL_DEFAULT_APPID)r   configr   r   r"   r   r   r`   r<   r   Campaignr8   r$   order_byr   deploy_datetimelimitcontentrX   r=   r   r   r	   r~   )r`   	exo_phoneexp_reclast_campaign
first_pseqs        r,   get_appid_for_userphoner   P  s   CJJ455zz788

)*

)*  zz788!!''..X  &&%/1D1D1K1Kx1WXeg  ##**%%33wzzA%%,,; Xd8,,<<=>U1XUW 	 ]22 ((555 ((..55##..'2D2DD##22a7

 %' 	 *,,%%222z11;<NPUV::,--r.   c           	      :   | D ]m  }i }i }t        |d         }t        j                  t        |d         d      j                         }t        j                  t        |d         d      j                         }|d   j	                         j                  d      }|d   j	                         j                  d      }	|D ]8  }
|
j                  d      D cg c]  }|j                          }}|\  }}|||<   : |	D ]8  }|j                  d      D cg c]  }|j                          }}|\  }}|||<   : t        j                  ||||||	      }t        j                  j                  |       p t        j                  j                          y c c}w c c}w )
Nr   r   r5   r   r   ,r   :)r   experiment_idrP   end_dateinputsoutputs)r   r   rB   rC   rstripsplitstripr   Cohortr   r&   r'   r(   )rW   r   valinputs_jsonoutputs_jsoncohort_namerP   r   r   r   
input_itemxinput_type_val
input_type	input_valoutput_itemoutput_type_valoutput_type
output_valcohorts                       r,   create_cohortsr   ~  s~   #CF+&&}SV'<jINNP
$$]3q6%:JGLLNQ&&s+a&--/'', J1;1A1A#1FG1FAaggi1FNG$2!J	&/K
# ! #K2=2C2CC2HI2HQqwwy2HOI&5#K(2L% # '! 
 	

v1 2 JJ! H Js   FFN),
__future__r   r   r   	dostadminr   r   r   r	   dostadmin.db_modelr
   r   r   =dostadmin.services.scheduling.pre_calculated_campaign_servicer   ;dostadmin.services.scheduling.intro_call_scheduling_servicer   
sqlalchemyr   r   utils.helpers.helpersr   r   r   r   r   r   r   r   r-   r3   rQ   rZ   r_   rr   r   r   r   r   r   ry   r   r   r    r.   r,   <module>r     s    & ( 3 3 E E "  #?"@  : < ,>
2:Y>:-*46n(&HR2+.\r.   