o
    ~8h",                     @   sP   d dl mZ d dlmZ d dlmZ ddlmZ eeG dd dej	Z
dS )	    )admin)format_html)timezone   )ContactFormc                       s<  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d Zde_de_dd Zde_de_dd Zde_dd Zde_d e_d!d" Zd#e_d e_d$d% Zd&d' Zd(e_d)d* Zd+e_d,d- Zd.e_d/d0 Zd1e_d1e_d2d3 Zd4e_ fd5d6ZG d7d8 d8Z  ZS )9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                 C   s.   dddddd}| |jd}td|| 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color r/   "/var/www/apihucms/contact/admin.pyr   G   s   zContactFormAdmin.subject_badgeSubjectr   c                 C   s   |  }td|| S )z!Display status as a colored badger(   )get_status_colorr   get_status_display)r+   r,   r.   r/   r/   r0   r   Y   s   zContactFormAdmin.status_badgeStatusr   c                 C   s   |  rtdS dS )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,   r/   r/   r0   r   d   s
   z ContactFormAdmin.is_recent_badgeRecentc                 C   s   |j r	td|j S dS )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>r5   )pkr   r6   r/   r/   r0   r   m   s   z"ContactFormAdmin.view_details_linkActionsTc                 C   s  |j sdS dg d|j d|j d|j d|jr"|jnd d|  d	|j d
|  d|  d|j	
d d|j dd|j
d d| | d|j d|  d|j dd|jr}|jnd d}t|S )z3Display full contact information in a formatted wayzNot available for new recordsr5   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>
        )r8   joinr	   r
   r   r*   r   r2   r3   r   strftimer   _get_response_infor   )r+   r,   contact_infor/   r/   r0   r   {   sH   




z"ContactFormAdmin.view_full_detailszContact Detailsc                 C   s:   |j r|jrd|j d|j d dS |jdkrdS dS )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;">r:   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   r=   r   r6   r/   r/   r0   r>      s   

z#ContactFormAdmin._get_response_infoc                 C   "   |j dd}| || d dS )z.Action to mark selected submissions as pendingpendingr   z submissions marked as pending.Nupdatemessage_userr+   requestquerysetupdatedr/   r/   r0   r         z ContactFormAdmin.mark_as_pendingzMark selected as Pendingc                 C   rA   )z2Action to mark selected submissions as in progressin_progressrC   z# submissions marked as in progress.NrD   rG   r/   r/   r0   r      rK   z$ContactFormAdmin.mark_as_in_progresszMark selected as In Progressc                 C   s8   |j dt |j p|jjd}| || d dS )z/Action to mark selected submissions as resolvedr@   )r   r   r   z  submissions marked as resolved.N)rE   r   nowuserget_full_nameusernamerF   rG   r/   r/   r0   r       s   z!ContactFormAdmin.mark_as_resolvedzMark selected as Resolvedc                 C   rA   )z-Action to mark selected submissions as closedclosedrC   z submissions marked as closed.NrD   rG   r/   r/   r0   r!      rK   zContactFormAdmin.mark_as_closedzMark selected as Closedc                 C   s   |  dkr| j|ddd dS g }|D ]C}d|j d|j d|jp#d	 d
|  d|jd d|jdd|	  d|j
dd  t|j
dkrKdnd d}||  qd|   dd d d| }| j|d|   ddd dS )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   
            🔖 REFr;   u   
            📊 u   
            💬 d   z...r5   z
            u'   
        📋 Contact Details Summary (z selected):
        
        z

z2==================================================zDetails for zB contact(s) - Check individual contact pages for full information.info)countrF   r	   r
   r   r*   r   r=   r8   r3   r   lenappendstripr<   )r+   rH   rI   detailsr,   detailsummaryr/   r/   r0   r"      sN   
	
z&ContactFormAdmin.view_selected_detailsz!View Details of Selected Contactsc                    s   t  | S )z%Optimize queryset for admin list view)superget_querysetselect_related)r+   rH   	__class__r/   r0   r_      s   zContactFormAdmin.get_querysetc                   @   s   e Zd ZddiZdZdS )zContactFormAdmin.Mediaall)z!admin/css/custom_contact_form.css)zadmin/js/contact_form.jsN)__name__
__module____qualname__cssjsr/   r/   r/   r0   Media   s    ri   )rd   re   rf   __doc__list_displaylist_filtersearch_fieldsreadonly_fieldslist_per_page	fieldsetsactionsr   short_descriptionadmin_order_fieldr   r   r   
allow_tagsr   r>   r   r   r    r!   r"   r_   ri   __classcell__r/   r/   ra   r0   r      sf    $r   N)django.contribr   django.utils.htmlr   django.utilsr   modelsr   register
ModelAdminr   r/   r/   r/   r0   <module>   s    