U
    YHg%                     @   sB   d dl mZmZ d dlmZmZ d dlmZmZ G dd dZ	dS )    )db
app_logger)PreCalculatedUserCampaignDataCampaign)get_current_isttimeis_current_date_timestampc                   @   s.   e Zd Zdd Zdd ZdddZdd	 Zd
S )PreCalculatedCampaignServicec                 C   s&   t |dd}tj| tj  |S )NT)experience_idis_eligible_to_call)r   r   sessionaddcommit)selfr	   Znew_campaign_data r   S/var/www/dostadmin/dostadmin/services/scheduling/pre_calculated_campaign_service.pyadd_new_experience   s     
z/PreCalculatedCampaignService.add_new_experiencec              
   C   s  dddddddddd	ddd
dddddddddddddddd}| d}| d}|d krfd S tj|}|s| |}||krd S zN| dd kr| dd k	r||| d | d | dd k	r||| d | d | dd k	r||| d | d | d d k	rD||| d | d  | d!d k	rn||| d | d! | d"d k	r||| d# | d" t |_tj	
  n.t| d}||| d# | tj	
  W n: tk
r } ztd$| d%|  W 5 d }~X Y nX d S )&Nprevious_regular_campaign_idprevious_campaign_name!previous_regular_call_deploy_timeprevious_content_idprevious_content_version_id previous_regular_campaign_status)previous_campaign_idr   previous_call_deploy_timer   r   previous_campaign_status previous_missed_call_campaign_id previous_missed_call_deploy_time$previous_missed_call_campaign_statusprevious_nudge_campaign_idprevious_nudge_campaign_nameprevious_nudge_call_deploy_timeprevious_nudge_content_id!previous_nudge_content_version_idprevious_nudge_campaign_statusprevious_blast_campaign_idprevious_blast_campaign_nameprevious_blast_call_deploy_timeprevious_blast_content_id!previous_blast_content_version_id#previous_blast_call_campaign_status)cron_regularcron_missed_call
cron_nudge	ui_manualr	   scheduled_byexotel_statuscampaign_idr   campaign_namedeploy_datetimer   
content_idcontent_version_idcampaign_statusr   zMPre Calculated Campaign Service: Error while updating details for experience z. Exception: )getr   queryget_data_by_experience_idr   __setattr__r   call_details_for_dater   r   r   r   &get_campaign_status_from_exotel_status	Exceptionr   error)r   campaign_datamappingr	   r.   Zpre_calculated_campaign_datacall_statusr=   r   r   r   (update_pre_calculated_user_campaign_data   s    			#










 zEPreCalculatedCampaignService.update_pre_calculated_user_campaign_dataFc                 C   sv  |j |j|j|jtjjd}|dd kr4|j|d< |dd krF|S |dd ksj|jr|j|dkr|j	|d< |j
|d< tjj|d< |j|d< |rd|ji}|srt|j}|r|dd ks|j|dkr|j|d< |j|d< |j|d< |j|d< tjj|d< t|j}|rr|dd ks>|j|dkrr|j|d< |j|d< |j|d< |j|d< tjj|d< |S )N)r0   statusdeploy_timer1   r.   rC   r0   rB   r.   r1   )r   r   r   r   r   ScheduledByCRON_REGULARr6   r   r   r   CRON_MISSED_CALLr    r   r   r#   r   
CRON_NUDGEr&   r$   r)   r%   	UI_MANUAL)r   Zpre_calculated_user_campaignZonly_content_callZonly_non_content_calldataZis_current_date_callr   r   r   get_previous_campaign_datav   s     z7PreCalculatedCampaignService.get_previous_campaign_datac                 C   s   i }|D ]}|||j < q|S )N)r	   )r   Zusers_campaign_data_listZusers_campaign_data_dictZuser_campaign_datar   r   r   get_user_campaign_data_dict   s    z8PreCalculatedCampaignService.get_user_campaign_data_dictN)FF)__name__
__module____qualname__r   rA   rJ   rK   r   r   r   r   r      s   j  
\r   N)
	dostadminr   r   dostadmin.db_modelr   r   utils.helpers.helpersr   r   r   r   r   r   r   <module>   s   