
    h                        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	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Zdedej,                  dej.                  fdZ	 	 	 ddedededededeej.                     fdZdededej8                  dej.                  fdZdededej.                  fdZdededdfdZdee    fdZ!y)    )Session)Calendar)schema)get_db)HTTPExceptionstatus)utils)List)
joinedload)ConnectedAccount)CalendarPost)JSONResponseNdbcalendar_datareturnc                 ~   |j                   j                         j                  dd      }t        j                  | |      }|st        d      t        di |j                  dh      d|i}| j                  |       | j                          | j                  |       t        j                  j                  |      S )N - Failed to generate a unique slugslug)exclude )namelowerreplacer	   generate_unique_slug
ValueErrorr   
model_dumpaddcommitrefreshr   CalendarOutmodel_validate)r   r   r   unique_slugcalendars        B/var/www/html/hubwallet-dev/src/marketing/apps/Calendar/service.pycreate_calendarr'      s    ##%--c37D,,R6K;<<X-22VH2EXKXHFF8IIKJJx,,X66    	branch_idshow_connected_accounts
show_postsshow_post_typesc                    	 | j                  t              j                  t        j                  |k(  t        j                  dk(        }|r(|j                  t        t        j                              }|rp|rF|j                  t        t        j                        j                  t        j                              }n(|j                  t        t        j                              }|j                         }|st        dddg d      g }|D ]  }t        j                  j                  |      }	|st!        |	d      rg |	_        |st!        |	d      rg |	_        |s$|	j                  r|	j                  D ]	  }
g |
_
         |j#                  |	        |S # t        $ r}|d }~wt$        $ r-}t        t&        j(                  dt+        |      g d      d }~ww xY w)NFi  zBranch ID is required)successmessagedatastatus_codedetailconnected_accountsposts)queryr   filterr)   
is_deletedoptionsr   r4   r5   r   
post_typesallr   r   r"   r#   hasattrappend	Exceptionr   HTTP_500_INTERNAL_SERVER_ERRORstr)r   r)   r*   r+   r,   r6   	calendarscalendar_outputsr%   calendar_outpostes               r&   get_calendar_by_branch_idrF   #   s   A
")))+5(
 #MM*X-H-H"IJEx~~.99,:Q:QR j&@A IIK	 2
 
 ! 	2H!--<<XFL +w|EY/Z24/ ',"@%'" #|'9'9(.. )D&(DO) ##L1!	2$     
== q6
 	

s$   FF 	GFG*(GGcalendar_idc                 >   | j                  t              j                  t        j                  |k(  t        j                  dk(        j                         }|sy |j                  d      }d|v rK|d   j                         j                  dd      }t        j                  | |      }|st        d      ||d<   |j                         D ]  \  }}t        |||        | j                          | j                  |       t         j"                  j%                  |      S )	NFT)exclude_unsetr   r   r   r   r   )r6   r   r7   idr8   firstr   r   r   r	   r   r   itemssetattrr    r!   r   r"   r#   )	r   rG   r   r%   update_datanew_slug_baser$   keyvalues	            r&   update_calendarrR   r   s   xx!(()CXEXEX\aEabhhjH ***>K #F+113;;CE00]C?@@)F!'') &
U#u%& IIKJJx,,X66r(   c                     | j                  t              j                  t        j                  |k(  t        j                  dk(        j                         }|sy t        j                  j                  |      S )NF)	r6   r   r7   rJ   r8   rK   r   r"   r#   r   rG   r%   s      r&   get_calendar_by_idrU      sX    xx!(()CXEXEXZ_E_`ffhH,,X66r(   c                     | j                  t              j                  t        j                  |k(        j	                         }|st        t        j                  d      d|_        | j                          y )NzCalendar not foundr1   T)
r6   r   r7   rJ   rK   r   r   HTTP_404_NOT_FOUNDr8   r    rT   s      r&   delete_calendarrX      sU    xx!(()CDJJLH(A(AJ^__HIIKr(   c                  "    t         j                  S )z&Get all available timezones from pytz.)pytzall_timezonesr   r(   r&   get_all_timezonesr\      s    r(   )FFF)"sqlalchemy.ormr   !src.marketing.apps.Calendar.modelr   src.marketing.apps.Calendarr   src.utils.dbr   fastapir   r   r	   typingr
   r    src.marketing.apps.Account.modelr   src.marketing.apps.post.modelr   fastapi.responsesr   rZ   CalendarCreater"   r'   intboolrF   CalendarUpdaterR   rU   rX   r@   r\   r   r(   r&   <module>rj      s"   " 6 .  ( -  % = 6 * 7 70E0E 7&J\J\ 7, %*!H
H
H
 "H
 	H

 H
 
&

H
^7 7c 7&BWBW 7\b\n\n 7277 7 79K9K 7 c d 49 r(   