
    di                         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	m
Z
 d dlmZ d dlmZmZmZmZ d dlmZ d d	lmZ  G d
 d      Zy)    )Session)datetime)CustomResponse)TblEnrollmentEnrollmentBase)TblEnrolledSeafarerInfoEnrolledSeafarerInfoBase)TblSeafarers)createEnrollmentcreateEnrollmentSeafarerCourseGetCourseDetailscoursePriority)TblCourseList)HTTPExceptionc                   F    e Zd ZdedefdZdefdZdefdZ	de
fdZd	 Zy
)EnrollmentServicedbtokenc                      || _         || _        y )N)r   r   )selfr   r   s      6/var/www/html/beacon-api/app/api/enrollment/service.py__init__zEnrollmentService.__init__   s    
    requestc           
        K   |}| j                   j                  t              j                  t        j                  |j                  k(        j                         }|st        dd      |j                  D ]*  }| j                   j                  t              j                  t        j                  |k(        j                         }|st        dd| d      t        |j                  |      }| j                   j                  |       | j                   j                          t        |j                  t        j                         |j                   |j"                  |j$                  |j&                  |j(                        }| j                   j                  |       - | j                   j+                          t-        dd	
      S w)N  zSeafarer ID not foundstatus_codedetailz
Course ID z
 not found)seafarer_id	course_id)enrollment_idenroll_datecourse_name
pass_scoreoperational_areafunctional_areatarget_audience1zEnrollment created successfullystatusmessage)r   queryr
   filterr    firstr   r!   r   r   addflushr   r"   r   utcnowr$   pass_percentager&   r'   r(   commitr   )r   r   payloadseafarerr!   course
enrollmentenrollment_courses           r   create_enrollmentz#EnrollmentService.create_enrollment   sa    77==.55l6N6NRYReRe6efllnC8OPP **IWW]]=1889P9PT]9]^ddfF#Z	{R\;]^^&#//#J
 GGKK
#GGMMO 7(66$OO-"..!11!'!8!8 & 6 6 & 6 6! GGKK)*1 +4 	S1RSSs   G
Gc                 p  K   t        j                  |      }| j                  j                  t              j                  t        j                  |j                  k(        j                         }|st        dd      |j                  |_	        | j                  j                          t        dd      S w)Nr   Enrollment ID not foundr   r)   z$Course priority updated successfullyr*   )r	   model_validater   r-   r   r.   es_idr/   r   
prioritizer4   r   )r   r   r5   r8   s       r   course_priorityz!EnrollmentService.course_priority2   s     *99'BWW]]#:;CCD[DaDaelererDrsyy{
C8QRR ' 2 2
s5[\\s   B4B6r>   c                 H  K   | j                   j                  t              j                  t        j                  |k(        j                         }| j                   j                  t              j                  t        j                  |j                  k(        j                         }|st        dd      |st        dd      | j                   j                  |       | j                   j                  |       | j                   j                          t        dd      S w)Nr   r<   r   z$Student Not Enrolled for this Courser)   zEnrollment deleted successfullyr*   )r   r-   r   r.   r>   r/   r   r"   r   deleter4   r   )r   r>   enrolled_courser8   s       r   delete_enrolled_coursez(EnrollmentService.delete_enrolled_course;   s     ''--(?@GGH_HeHeinHnouuwWW]]=1889T9TXgXuXu9uv||~
C8QRRC8^__'z"S2STTs   D D"c                    K   | j                   j                  t              j                         }|st	        dd      |S w)N404zData Not Foundr*   )r   r-   r   allr   )r   enrolled_datas     r   get_all_enrollemnz#EnrollmentService.get_all_enrollemnG   s9     &=>BBD:JKKs   ?AN)__name__
__module____qualname__r   dictr   r   r:   r   r@   intrD   rI    r   r   r   r   
   sF    7 4 !T/? !TF]^ ]
U 
Ur   r   N)sqlalchemy.ormr   r   app.utils.schemas_utilsr   app.models.main.enrollmentr   r   $app.models.main.enrolledseafarerinfor   r	   app.models.main.seafarerr
   app.api.enrollment.schemar   r   r   r   app.models.main.course_listr   fastapir   r   rO   r   r   <module>rX      s/    "  2 D b 1 x x 5 !A Ar   