
    3nhW                     V   d dl mZmZmZmZ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 d dl
mZ d dlZd dlZd dl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  e       Z ej:                  dd      Zej>                  jA                  ej>                  jC                  ej>                  jE                  e#      ddd            Z$ej>                  jC                  e$ddddd      Z% ejL                  e%d       ejO                  dejP                  ejR                   ee      g       ed       ed       edd       ed       ed       ed       ee      fde*de	e*   de	e   de	e+   d e	e+   d!e	e+   d"ed#ejP                  fd$       Z,ej[                  d%eee*       ee      g&      d#eee*      fd'       Z.ej[                  d(eejP                     ej^                   ee      g       ee      fd)e+d"ed#e0fd*       Z1ej[                  deeejP                        +      d,d,d, ee       ee      fd e+d-e	e2   d.e	e2   d/e	e2   d"ed0efd1       Z3eji                  d(eejP                      ee      g&       ee      fd)e+d2ejj                  d"ed#e0fd3       Z6ejo                  d(eejP                      ee      g&       ee      fd)e+d2ejj                  d"ed#ejP                  fd4       Z8ejs                  d(ejt                   ee      g5       ee      fd)e+d"efd6       Z;y)7    )	APIRouterDependsstatusFile
UploadFileHTTPExceptionForm)Optional)
controller)get_db)Session)schemaN)Path)APIResponse)Query)List)get_current_userBASE_URLzhttp://localhost:8000z..menu_designdesignerstatic	marketingimagesT)exist_okz
/calendars)response_modelstatus_codedependencies.z2Image file for calendar icon (jpg, png, webp etc.))descriptionnametimezoneiconstore_id	branch_iduser_iddbreturnc                    d}|r|j                   dvrt        dd      |j                  st        dd      t        j                         j
                   dt        j                  j                  |j                         }t        j                  j                  t        |      }		 t        |	d      5 }
t        j                  |j                  |
       ddd       t          d| }t#        j$                  | |||||      }t'        j(                  ||      S # 1 sw Y   ExY w# t        $ r}t        d	d
      d}~ww xY w)z;
    Create a new calendar with optional image upload.
    N)z	image/pngz
image/jpegz	image/jpgz
image/webp  zUnsupported file typer   detailzFilename is required_wbi  zFailed to save imagez/static/marketing/images/)r   r    r"   r#   r$   r!   )content_typer   filenameuuiduuid4hexospathbasenamejoinSTATIC_PATHopenshutilcopyfileobjfile	Exceptionr   r   CalendarCreater   create_calendar_controller)r   r    r!   r"   r#   r$   r%   icon_urlr.   	file_pathbufferecalendar_datas                A/var/www/html/hubwallet-dev/src/marketing/apps/Calendar/router.pycreate_calendarrD   "   s'    H$ZZC8OPP}}C8NOOjjl&&'q)9)9$--)H(IJGGLLh7		Pi& 6&""499f56
 Z8
C))M 00]CC!6 6 	PC8NOO	Ps0   (D% 4!DD% D"D% %	E .D;;E z/calendars/all-timezones)r   r   c                  F    t        j                         } t        dd|       S )z&
    Get all available timezones.
    TzTimezones fetched successfullysuccessmessagedata)r   get_all_timezones_controllerr   )	timezoness    rC   get_all_timezonesrL   O   s(    
 88:I0     z/calendars/{calendar_id}calendar_idc                 |    | st        t        j                  ddg d      t        j                  ||       }dd|dS )z
    Get a calendar by ID.
    FzCalendar ID is requiredrF   r)   TzCalendar fetched successfully)r   r   HTTP_400_BAD_REQUESTr   get_calendar_by_id_controller)rN   r%   results      rC   get_calendar_by_idrS   ^   sT     33 4
 	
 55b+FF 2 rM   )r   Fshow_connected_accounts
show_postsshow_post_typesdependsc                 `    | st        dd      t        j                  || |||      }dd|dS )Nr(   zBranch ID is requiredr)   )r%   r#   rT   rU   rV   TzCalendars fetched successfullyrF   )r   r   $get_calendar_by_branch_id_controller)r#   rT   rU   rV   r%   rW   	calendarss          rC   get_calendars_by_branch_idr[      sI     4KLL?? 7'I 3 rM   rB   c                 <    t        j                  || |      }dd|dS )z
    update a calendar.
    TCalendar updated successfullyrF   r   update_calendar_controllerrN   rB   r%   rR   s       rC   update_calendarra      s+     222{MRF2 rM   c                 <    t        j                  || |      }dd|dS )z&
    Partially update a calendar.
    Tr]   rF   r^   r`   s       rC   partially_update_calendarrc      s+     33B]SF2 rM   )r   r   c                 6    t        j                  ||        ddiS )z"
    Delete a calendar by ID.
    r*   zCalendar deleted successfully)r   delete_calendar_controller)rN   r%   s     rC   delete_calendarrf      s      ))"k:566rM   )<fastapir   r   r   r   r   r   r	   typingr
   src.marketing.apps.Calendarr   src.utils.dbr   sqlalchemy.ormr   r   r2   r/   r8   pathlibr   src.utils.responser   r   r   src.apps.auth.controllerr   routergetenvr   r3   abspathr5   dirname__file__BASE_DIRr6   makedirspostCalendarOutHTTP_201_CREATEDstrintrD   getrL   HTTP_200_OKdictrS   boolr[   putCalendarUpdatera   patchrc   deleteHTTP_204_NO_CONTENTrf    rM   rC   <module>r      s&   U U U  2  " . 	    *   5 

 299Z!89 77??277<<(A4tTUggll8]J+W_` K$ '
 \&*<*<&JaJaqx  zJ  rK  qL  MS	"4j!%d8l!m"4j#Dz!$Z&/(D
(Dsm(D :
(D sm	(D
 }(D c](D 	(D (D M(DX &{497M]deu]v\wx	;tCy1 	 y	 v112""*+,	   &/ 
8 LT&:L:L5M)NO /4!&&+&/ '(8 9%d^  d^	
 	  P6 &{6CUCU7Velm}e~d  A &/(( 	 
	 A  (VEWEW9Xgno  hA  gB  C &/(( 	 	 C$ )v7Q7Qahiyaz`{| &/777 }7rM   