o
    ȟ1iC
                     @   sZ   d dl m Z 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 G dd dZdS )	    )datetimetimezone)get_db)CoreDBErrorGenericError)AgeGroupCourse)AgeGroupResponsec                   @   s:   e Zd Zdd Zdd ZdefddZdd	 Zd
d ZdS )AgeGroupServicec                 C   s   t  <}| }ztdi |}|| |  || |W W  d    S  ty> } z|  td| d }~ww 1 sBw   Y  d S )Nz Could not create new age group:  )	r   
model_dumpr   addcommitrefresh	Exceptionrollbackr   )selfrequestdbpayloadZnew_age_grouper   r   /app/services/age_group.pysave   s   

zAgeGroupService.savec                 C   sT   t  }|ttjd  }dd |D W  d    S 1 s#w   Y  d S )Nc                 S   s   g | ]	}t | qS r   )r	   model_validater   ).0recordr   r   r   
<listcomp>   s    z7AgeGroupService.fetch_all_age_group.<locals>.<listcomp>)r   queryr   where
deleted_atis_all)r   r   recordsr   r   r   fetch_all_age_group   s   $z#AgeGroupService.fetch_all_age_groupage_group_idc                 C   sl   t  )}|ttj|ktjd  }|stdddt	
| W  d    S 1 s/w   Y  d S )N  zAge group not foundstatus_codeexc)r   r   r   r   idr   r    firstr   r	   r   r   )r   r$   r   r   r   r   r   fetch_an_age_group   s   

$z"AgeGroupService.fetch_an_age_groupc                 C   s   |j dgd}t ,}|ttj|ktjd j|dd}|	  |dkr.t
dddW d    d S 1 s9w   Y  d S )	Nr)   )excludefetch)synchronize_sessionr     zCould not update age groupr&   )r   r   r   r   filterr)   r   r    updater   r   )r   r$   r   r   r   resultr   r   r   update_age_group(   s   "z AgeGroupService.update_age_groupc                 C   s   t  F}|ttj|k dkrtddd|ttj|ktj	
d  }|s3tdddttj|_	|  ddiW  d    S 1 sLw   Y  d S )	Nr   r/   z3Age group is associated with course. Cannot delete.r&   r%   zage group not foundmessagezAge group deleted successfully)r   r   r   r   r$   countr   r   r)   r   r    r*   r   nowr   utcr   )r   r$   r   	age_groupr   r   r   delete_age_group4   s   

$z AgeGroupService.delete_age_groupN)	__name__
__module____qualname__r   r#   intr+   r3   r9   r   r   r   r   r
   	   s    r
   N)r   r   core.configr   core.security.exceptionsr   r   modelsr   r   schema.age_groupr	   r
   r   r   r   r   <module>   s    