
    =Ii                         d dl Z d dl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 d dlmZ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!  G d d      Z"y)    N)BackgroundTasksFileHTTPException
UploadFile)ConnectionConfigFastMailMessageSchema)Session)Messages)TblGroup)SendMailBaseTblSendMail)TblSimulation)
TblStudent)TblUser)TblUserSimulation)CustomResponse)SendMailCreate)JWTPayloadSchemac                   L    e Zd ZdedefdZ ed      fdedede	fdZ
d	efd
Zy)SendMailServicedbtokenc                      || _         || _        y )N)r   r   )selfr   r   s      @/var/www/html/retail-simulation-api/app/api/send_mail/service.py__init__zSendMailService.__init__   s    
    Nrequestbackground_tasksattach_filec                   K   d }|ri|j                   r]|j                   }d| }t        j                  dd       t        |d      5 }t	        j
                  |j                  |       d d d        t        j                  |j                               }||_
        t        j                  || j                        }| j                  j                  t              j!                  t        j"                  | j$                  j"                  k(        j'                         }	| j                  j                  t(              j!                  t(        j"                  |	j"                  k(        j'                         }
| j                  j                  t*              j!                  t*        j,                  |	j,                  k(        j'                         }|j.                  |_        | j                  j                  t0              j!                  t0        j.                  |j.                  k(        j'                         }|j2                  |_        | j                  j                  t4        j6                        j!                  t4        j2                  |j2                  k(        j9                         }| j                  j;                          t=        |
j>                  |
j@                  |
j>                  dddddd		      }tC        |      }|jD                  }|jF                  }|D ]3  }|d
   }tI        ||g|d      }|jK                  |jL                  |       5 tO        dtP        jR                        S # 1 sw Y   xY ww)Nzuploads/uploadsT)exist_okwbzsmtp.stackmail.comi  F)	MAIL_USERNAMEMAIL_PASSWORD	MAIL_FROMMAIL_SERVER	MAIL_PORTMAIL_SSL_TLSMAIL_STARTTLSUSE_CREDENTIALSVALIDATE_CERTSr   plain)subject
recipientsbodysubtype1)statusmessage)*filenameosmakedirsopenshutilcopyfileobjfiler   model_validate
model_dumpr!   r   create_datar   queryr   filteruser_idr   firstr   r   simulation_idsimulation_coder   
group_coder   student_emailallcommitr   email_idpasswordr   r0   r2   r	   add_tasksend_messager   r   	SEND_MAIL)r   r   r    r!   
image_pathimage_filenamebuffervalidated_datacreateget_user_idget_user_dataget_simulation_codeget_group_codeget_student_dataconffmr0   r2   dataemailr6   s                        r   created_datazSendMailService.created_data   s    
;//(11N#N#34JKK	D1j$'6"";#3#3V< (%44W5G5G5IJ%/"((Aggmm$56==>O>W>W[_[e[e[m[m>mnttvg.55gooI\I\6\]cce"ggmmM:AA-B]B]alazazBz{  B  B  D!4!D!Dx0778P8PTgTwTw8wx~~  A*5577==)A)ABII*J_J_cqc|c|J|}  B  B  D+44+44'000!# $#
 d^//||$DGE## %w#	G %%boow? % S(2D2DEEI ('s   AM2!M%(K=M2%M/*M2rG   c                   K   | j                   j                  t              j                  t        j                  | j
                  j                  k(        j                         }|st        dd      | j                   j                  t              j                  t        j                  |k(        j                         }|D cg c])  }|j                  s|j                  j                         + }}|j                  |dS c c}w w)Ni  zUser not found)status_codedetail)
user_emailstudent_emails)r   rA   r   rB   rC   r   rD   r   r   rG   rI   rH   striprK   )r   rG   get_userget_studentsrc   s         r   get_admin_student_emailz'SendMailService.get_admin_student_emailB   s     77==)00DJJDVDV1VW]]_C8HIIggmmJ/66z7L7LPZ7Z[__a;FZ;a!//!////1;Z''(
 	
 [s   CDDD2D)__name__
__module____qualname__r
   r   r   r   r   r   r   r^   strrh    r   r   r   r      sO    7 )9  vzz~u *F *F? *Fhr *FX	
s 	
r   r   )#r8   r;   fastapir   r   r   r   fastapi_mailr   r   r	   sqlalchemy.ormr
   app.locale.messagesr   app.models.main.groupr   app.models.main.send_mailr   r   app.models.main.simulationr   app.models.main.studentr   app.models.main.userr   app.models.main.user_simulationr   app.utils.schemas_utilsr   app.api.send_mail.schemar   app.dependency.authanticationr   r   rm   r   r   <module>r{      sB    	  D D B B " ( * ? 4 . ( = 2 3 ::
 :
r   