
    oif                        d dl m Z  d dlmZ d dlmZmZmZ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mZ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!  G d de      Z"d Z#d Z$ed        Z%ed        Z&ed        Z'ed        Z( e       d        Z)ed        Z*ed        Z+ed        Z,ed        Z-ed        Z.ed        Z/ed        Z0ed         Z1y!)"    )datetime)login_required)CountCaseWhenIntegerField)renderredirect)APIView)Responsestatus)	CustomersCompanyUserCustomerDocument)CategoryBatch   )get_customer_statistics)recently_created_batches)get_recently_updated_customers)Contact)CustomersSerializerc                       e Zd Zd ZddZy)CustomersDetailViewc                 B   	 t         j                  j                  |      }|j                  st	        ddit
        j                        S t        |      }t	        |j                        S # t         j                  $ r  t	        ddit
        j                        cY S w xY w)Nqr_codemessagezPassword not set.r   errorCustomer not found)r   objectsgetpasswordr   r   HTTP_400_BAD_REQUESTr   dataDoesNotExistHTTP_404_NOT_FOUNDselfrequestr   customer
serializers        +D:\Rescue Scanner\qr_onkar\website\views.pyr#   zCustomersDetailView.get   s    	_ ((,,W,=H$$,? @IdIdee,X6JJOO,,%% 	_W&:;FD]D]^^	_s   AA+ A+ +0BBNc                    |r	 t         j                  j                  |      }t        ||j                        }|j                         r5|j                          t        |j                  t        j                        S t        |j                  t        j                        S t        ddit        j                        S # t         j                  $ r  t        ddit        j                        cY S w xY w)Nr   )r&   r   r    r!   z QR code is required for updating)r   r"   r#   r   r&   is_validsaver   r   HTTP_200_OKerrorsr%   r'   r(   r)   s        r.   postzCustomersDetailView.post   s    c$,,000A0M
&&(OO%#JOOF<N<NOO
 1 1&:U:UVV W&HIRXRmRmnn )) c*> ?HaHabbcs   A;C  $C 0C54C5)N)__name__
__module____qualname__r#   r4        r.   r   r      s    _or9   r   c                     t        | d      S )Nz
login.htmlr	   r+   s    r.   loginr=   -   s    '<((r9   c                      t        j                         } g }t        ddd      D ]C  }| j                  |z
  }| j                  }|dk  r
|dz  }|dz  }|j                  | d|d       E |S )N   r      r   -02d)r   nowrangemonthyearappend)todaymonthsirF   rG   s        r.   get_last_six_monthsrL   1   sy    LLNEF1b" -azzA:RKEAIDac{+,- Mr9   c                    | j                   }|j                  s]t        |j                        }t	        |j                        }t               }t        |j                        }||||d}t        | d|      S t        d      S )N)dashboard_datarecent_activitieslast_six_months_listrecently_updated_customersz
index.htmlz/admin)	useris_superuserr   companyr   rL   r   r	   r
   )r+   rR   rN   rO   rP   rQ   contexts          r.   	dashboardrV   >   sz    <<D0>4T\\B24%CDLL%Q" -!2$8*D	
 g|W55Hr9   c                 \    t         j                  j                         }t        | dd|i      S )Nzcustomer_management.html	customers)r   r"   allr	   )r+   r,   s     r.   customer_managementrZ   S   s+      $$&H'5X7NOOr9   c                     t         j                  j                  |      }t        j                  j	                  |      }t        | d||d      S )Nid)r,   zcustomer_details.html)rX   	documents)r   r"   r#   r   filterr	   )r+   customer_idr,   r^   s       r.   customer_detailsra   Y   sJ      $$$4H ((///BI'2(W`4abbr9   c                    t         j                  j                  | j                  j                        j                  t        d      t        t        t        ddd      t                           t        t        t        dd	      t        dd
      t                                 }g }|D ]  }|j                  |j                  |j                  |j                  |j                  |j                  |j                   |j"                  |j$                  j'                  d      |j$                  j'                  d      d	        t)        | dd|i      S )N)created_by__companyrX   F r   )customers__password__isnullcustomers__password__gtthen)output_fieldT)re   rg   )customers__passwordrg   )customer_count
registeredunregisteredz%d/%m/%Yz%H:%M)	r]   batch_numberrk   rl   category
created_byrj   created_datecreated_timezqr_code_manager.htmlbatch)r   r"   r_   rR   rT   annotater   r   r   r   rH   r]   rm   rk   rl   rn   ro   rj   createdstrftimer	   )r+   batch_queryset
batch_datarr   s       r.   qr_code_managerrx   `   s+    ]]))gll>R>R)S\\[)PRYZ[)^
 A>!4)^
 ] N  J ((!..**!..**#22!MM22:>!MM227;

 
	 '1GZ3HIIr9   c                     t         j                  j                  |      j                         }t        j                  j                  |      }t        | dd|i      S )Nr\   )rr   zbatch_history.htmlbatch_customers)r   r"   r_   firstr   r	   )r+   batch_idrr   rz   s       r.   batch_historyr}      sQ    MM  H -335E''..U.;O'/2C_1UVVr9   c                 \    t         j                  j                         }t        | dd|i      S )Nzqr_generator.html
categories)r   r"   rY   r	   )r+   rn   s     r.   qr_generatorr      s+    ##%H'.x0HIIr9   c                     t        | d      S )Nzprofile.htmlr;   r<   s    r.   profiler      s     '>**r9   c                     	 t         j                  j                  || j                  j                        }t        | dd|i      S # t        $ r }t        |       t        d      cY d }~S d }~ww xY w)N)r]   rT   zstaff_profile.htmlstaff_profilez/manage_company_user)	r   r"   r#   rR   rT   r	   	Exceptionprintr
   )r+   staff_idstaff_profile1es       r.   r   r      sd    0$,,00HgllFZFZ0[g3o~5VWW 0a.//0s   AA 	A/A*$A/*A/c                     t        | d      S )Nmanage_profiles.htmlr;   r<   s    r.   manage_profilesr          '122r9   c                     t        | d      S )Nzcreate_profiles.htmlr;   r<   s    r.   create_profilesr      r   r9   c                    | j                   dk(  r| j                  j                  d      }| j                  j                  d      }| j                  j                  d      }| j                  j                  d      }	 t        ||||      }|j	                          t        d      S t        | d      S #  t        d      cY S xY w)	NPOSTnameemailsubjectr   )r   r   r   r   z
/dashboardzcontact.html)methodr   r#   r   r1   r
   r	   )r+   r   r   r   r   contacts         r.   r   r      s    ~~||'  ),,""9-,,""9-	*4ugwWGLLNL))
 g~..		*L))s   =)B3 3Cc                     t        | d      S )Nzreports.htmlr;   r<   s    r.   reportsr      s    '>**r9   c                     t         j                  j                  | j                  j                  d      }t        |       t        | dd|i      S )NF)rT   
is_deletedr   company_user)r   r"   r_   rR   rT   r   r	   )r+   company_user_accountss     r.   manage_company_userr      sH    '//66w||?S?S`e6f	
 '1NDY3Z[[r9   N)2r   django.contrib.auth.decoratorsr   django.db.modelsr   r   r   r   django.shortcutsr	   r
   rest_framework.viewsr   rest_framework.responser   rest_frameworkr   accounts.modelsr   r   r   qr_manager.modelsr   r   company_view.dashboard_viewsr   company_view.recent_activitiesr   'company_view.recently_updated_customersr   modelsr   serializersr   r   r=   rL   rV   rZ   ra   rx   r}   r   r   r   r   r   r   r   r   r8   r9   r.   <module>r      sa    9 < < - ( , ! D D - A D S  ,o' o4)
  ( P P
 c c J JD W W J J
 + + 0 0 3 3 3 3 / /" + + \ \r9   