
    ~8h",                         d dl mZ d dlmZ d dlmZ ddlmZ  ej                  e       G d dej                               Z
y)	    )admin)format_html)timezone   )ContactFormc                       e Zd ZdZg dZg dZg dZg dZdZddd	ifd
ddifddddfddddffZ	g dZ
d Zde_        de_        d Zde_        de_        d Zde_        d Zde_        de_        d Zde_        de_        d Zd  Zd!e_        d" Zd#e_        d$ Zd%e_        d& Zd'e_        d'e_        d( Zd)e_         fd*Z G d+ d,      Z xZS )-ContactFormAdminz%Admin interface for ContactForm model)idnameemailsubject_badgestatus_badgeis_recent_badgeview_details_link
created_at)statussubjectr   
updated_at)r   r   messagephone)r
   r   r   	is_recentview_full_details   zContact Informationfields)r   r   r   zInquiry Details)r   r   zStatus Management)r   admin_notesresponded_byresponded_at)collapse)r   classeszSystem Information)mark_as_pendingmark_as_in_progressmark_as_resolvedmark_as_closedview_selected_detailsc                     dddddd}|j                  |j                  d      }t        d||j                               S )z"Display subject as a colored badgez#3b82f6z#10b981z#f59e0bz#8b5cf6z#6b7280)	admission	academicsfeescareerothers<span style="background-color: {}; color: white; padding: 3px 8px; border-radius: 12px; font-size: 12px;">{}</span>)getr   r   get_subject_display)selfobjcolorscolors       "/var/www/apihucms/contact/admin.pyr   zContactFormAdmin.subject_badgeG   sR     #"
 

3;;	2 B##%
 	
    Subjectr   c                 X    |j                         }t        d||j                               S )z!Display status as a colored badger+   )get_status_colorr   get_status_display)r.   r/   r1   s      r2   r   zContactFormAdmin.status_badgeY   s2    $$& B""$
 	
r3   Statusr   c                 :    |j                         rt        d      S y)z+Display a badge if the submission is recentzx<span style="background-color: #ef4444; color: white; padding: 2px 6px; border-radius: 8px; font-size: 11px;">NEW</span> )r   r   r.   r/   s     r2   r   z ContactFormAdmin.is_recent_badged   s#    ==? K  r3   Recentc                 H    |j                   rt        d|j                         S y)z+Display a link to view full contact detailsu   <a href="/admin/contact/contactform/{}/change/" class="button" style="background-color: #417690; color: white; padding: 4px 8px; text-decoration: none; border-radius: 4px; font-size: 11px; display: inline-block;">📄 View Details</a>r:   )pkr   r;   s     r2   r   z"ContactFormAdmin.view_details_linkm   s*    66@   r3   ActionsTc                    |j                   sydj                  g d|j                   d|j                   d|j                   d|j                  r|j                  nd d|j                          d	|j                   d
|j                          d|j                          d|j                  j                  d       d|j                   dd|j                  j                  d       d| j                  |       d|j                   d|j                          d|j                   dd|j                  r|j                  nd d      }t        |      S )z3Display full contact information in a formatted wayzNot available for new recordsr:   uk  
        <div style="background: #f8f9fa; padding: 15px; border-radius: 8px; margin: 10px 0;">
            <h3 style="color: #495057; margin-top: 0;">📧 Contact Information</h3>
            <table style="width: 100%; border-collapse: collapse;">
                <tr><td style="padding: 5px; font-weight: bold; width: 120px;">Name:</td><td style="padding: 5px;">z</td></tr>
                <tr><td style="padding: 5px; font-weight: bold;">Email:</td><td style="padding: 5px;"><a href="mailto:z">zu</a></td></tr>
                <tr><td style="padding: 5px; font-weight: bold;">Phone:</td><td style="padding: 5px;">zNot providedz</td></tr>
                <tr><td style="padding: 5px; font-weight: bold;">Subject:</td><td style="padding: 5px;"><span style="background-color: #e3f2fd; padding: 2px 6px; border-radius: 4px;">u  </span></td></tr>
            </table>
            
            <h4 style="color: #495057; margin: 15px 0 10px 0;">💬 Message</h4>
            <div style="background: white; padding: 10px; border-left: 4px solid #007bff; margin: 10px 0; white-space: pre-wrap;">uH  </div>
            
            <h4 style="color: #495057; margin: 15px 0 10px 0;">📊 Status Information</h4>
            <table style="width: 100%; border-collapse: collapse;">
                <tr><td style="padding: 5px; font-weight: bold; width: 120px;">Status:</td><td style="padding: 5px;"><span style="background-color: z7; color: white; padding: 2px 6px; border-radius: 4px;">z|</span></td></tr>
                <tr><td style="padding: 5px; font-weight: bold;">Submitted:</td><td style="padding: 5px;">%B %d, %Y at %I:%M %pz</td></tr>
                <tr><td style="padding: 5px; font-weight: bold;">Reference:</td><td style="padding: 5px; font-family: monospace; background: #f1f3f4; padding: 2px 6px; border-radius: 4px;">REF06dzx</td></tr>
                <tr><td style="padding: 5px; font-weight: bold;">Last Updated:</td><td style="padding: 5px;">z9</td></tr>
            </table>
            
            u   
            
            <div style="margin-top: 15px; padding: 10px; background: #fff3cd; border-radius: 4px; border: 1px solid #ffeaa7;">
                <strong>📞 Quick Actions:</strong>
                <a href="mailto:z?subject=Re: z - REFu   " style="margin-left: 10px; color: #007bff;">✉️ Reply via Email</a>
                <span style="margin-left: 10px;">📱 Call: zNo phone providedz2</span>
            </div>
        </div>
        )r>   joinr   r   r   r-   r   r6   r7   r   strftimer   _get_response_infor   )r.   r/   contact_infos      r2   r   z"ContactFormAdmin.view_full_details{   s   vv2  t  uxt|t|s}	~w	
 x{  xA  xA  wB
 BD
 EH  EN  EN  DO
Og uxt}t}gjgpgp  DR  gSSx y|  yP  yP  yR  xSSC DG  DO  DO  CPPU VY  Vj  Vj  Vl  Um md eh  e{  e{  e}  d~~k  lokyky  lC  lC  D[  l\  k]! ]A!" BE  BH  BH  IL  AM#"Mn#$ orn|n|  oF  oF  G^  o_  n`%$`%* $$S)*+*+!+2 "%32 ,932 :=9P9P9R8S32 TZ32 [^Z`Z`adYe32f=34 KN))SYYYl<m54n	5< <((r3   zContact Detailsc                     |j                   r8|j                  r,d|j                   d|j                   j                  d       dS |j                  dk(  ryy)z3Helper method to generate response information HTMLu  
            <h4 style="color: #28a745; margin: 15px 0 10px 0;">✅ Response Information</h4>
            <table style="width: 100%; border-collapse: collapse;">
                <tr><td style="padding: 5px; font-weight: bold; width: 120px;">Responded By:</td><td style="padding: 5px;">zy</td></tr>
                <tr><td style="padding: 5px; font-weight: bold;">Response Date:</td><td style="padding: 5px;">rA   z,</td></tr>
            </table>
            resolvedu   
            <h4 style="color: #ffc107; margin: 15px 0 10px 0;">⚠️ Response Information</h4>
            <p style="background: #fff3cd; padding: 8px; border-radius: 4px;">Status marked as resolved but no response details recorded.</p>
            u   
            <h4 style="color: #6c757d; margin: 15px 0 10px 0;">⏳ Pending Response</h4>
            <p style="background: #f8f9fa; padding: 8px; border-radius: 4px;">This inquiry is awaiting response.</p>
            )r   r   rD   r   r;   s     r2   rE   z#ContactFormAdmin._get_response_info   s     0 0| }@  }M  }M  |N Nooroo  pI  pI  Ja  pb  oc c	  ZZ:%
r3   c                 R    |j                  d      }| j                  || d       y)z.Action to mark selected submissions as pendingpendingr   z submissions marked as pending.Nupdatemessage_userr.   requestquerysetupdateds       r2   r    z ContactFormAdmin.mark_as_pending   s*    ///3'gY.M#NOr3   zMark selected as Pendingc                 R    |j                  d      }| j                  || d       y)z2Action to mark selected submissions as in progressin_progressrK   z# submissions marked as in progress.NrL   rO   s       r2   r!   z$ContactFormAdmin.mark_as_in_progress   s*    ///7'gY.Q#RSr3   zMark selected as In Progressc                     |j                  dt        j                         |j                  j	                         xs |j                  j
                        }| j                  || d       y)z/Action to mark selected submissions as resolvedrH   )r   r   r   z  submissions marked as resolved.N)rM   r   nowuserget_full_nameusernamerN   rO   s       r2   r"   z!ContactFormAdmin.mark_as_resolved   sZ    //! 335N9N9N " 

 	'gY.N#OPr3   zMark selected as Resolvedc                 R    |j                  d      }| j                  || d       y)z-Action to mark selected submissions as closedclosedrK   z submissions marked as closed.NrL   rO   s       r2   r#   zContactFormAdmin.mark_as_closed   s*    ///2'gY.L#MNr3   zMark selected as Closedc                    |j                         dkD  r| j                  |dd       yg }|D ]  }d|j                   d|j                   d|j                  xs d	 d
|j                          d|j                  j                  d       d|j                  dd|j                          d|j                  dd  t        |j                        dkD  rdnd d}|j                  |j                                 d|j                          ddz   dz   dj                  |      z   }| j                  |d|j                          dd       y)z9Action to view detailed information for selected contacts
   z3Please select 10 or fewer contacts to view details.warning)levelNu   
            📧 z (u   )
            📞 zNo phoneu   
            📋 u   
            📅 z%Y-%m-%d %H:%Mu   
            🔖 REFrB   u   
            📊 u   
            💬 d   z...r:   z
            u'   
        📋 Contact Details Summary (z selected):
        
        z

z2==================================================zDetails for zB contact(s) - Check individual contact pages for full information.info)countrN   r   r   r   r-   r   rD   r>   r7   r   lenappendstriprC   )r.   rP   rQ   detailsr/   detailsummarys          r2   r$   z&ContactFormAdmin.view_selected_details   s   >>b g'\dmn  
	+C((2cii[ ))))z* +))+, -..))*:;< =VVCL !((*+ ,++ds#$c#++.>.DU"$M NF NN6<<>*
	+''/~~'7&8 9	   !'G 45 	8>>+,,no 	 	
r3   z!View Details of Selected Contactsc                 >    t         |   |      j                         S )z%Optimize queryset for admin list view)superget_querysetselect_related)r.   rP   	__class__s     r2   rk   zContactFormAdmin.get_queryset   s    w#G,;;==r3   c                       e Zd ZddiZdZy)ContactFormAdmin.Mediaall)z!admin/css/custom_contact_form.css)zadmin/js/contact_form.jsN)__name__
__module____qualname__cssjs r3   r2   Mediaro      s    9
 +r3   rw   )rq   rr   rs   __doc__list_displaylist_filtersearch_fieldsreadonly_fieldslist_per_page	fieldsetsactionsr   short_descriptionadmin_order_fieldr   r   r   
allow_tagsr   rE   r    r!   r"   r#   r$   rk   rw   __classcell__)rm   s   @r2   r	   r	      sn   /	LKMO M 
0!
 	 
,
 	 
O$
 	 
Z$ 
 	I"G
 '0M#&/M#
 &.L"%-L" )1O%
 +4'#' #)H +<'#' *P )CO%T -K)Q *E&O (AN$'@N$
> /R+>+ +r3   r	   N)django.contribr   django.utils.htmlr   django.utilsr   modelsr   register
ModelAdminr	   rv   r3   r2   <module>r      s@      ) !  v+u'' v+ v+r3   