
from django.shortcuts import render
from django.contrib import messages
from django.shortcuts import redirect
import requests
from django.http import HttpResponse
import serial
import time
from serial import Serial
from django.http import JsonResponse
# Create your views here.
def operator_page(request):
   response = requests.get('https://thingsaccess.com/rfid/index.php/Api/getOperator')
   data_send = response.json()
   data_operator = data_send['response']
   return render(request, 'operators/operator.html',context={'data_operator': data_operator})


def Add_operator(request):
   if request.method == 'POST':
        data = {
            'Name': request.POST.get('Name'),
            'cnic': request.POST.get('cnic'),
            'cell': request.POST.get('cell'),
            'address': request.POST.get('address'),
            'skill': request.POST.get('skill'),
            'tag_id': request.POST.get('tag_id'),
        }
        response = requests.post('https://thingsaccess.com/rfid/index.php/Api/addOperator', json=data)
        if response.status_code == 200:
            return redirect('operator_page')
            # messages.success(request, 'Data added successfully')
        else:
            # Insertion failed, show error message to user
            # messages.error(request, 'Failed to add data')
            return HttpResponse("Operator not added")

   return render(request, 'operators/addOperator.html')

def Edit_Operator(request,id):
   response = requests.get('https://thingsaccess.com/rfid/index.php/Api/getOperator')
   data_send = response.json()
   data = data_send['response']
   edit_item = None
   for item in data:
        if item['ID'] == id:
            edit_item = item
            break
   if edit_item:
      if request.method == 'POST':
         data = {
                'id':id,
                'Name': request.POST.get('Name'),
                'cnic': request.POST.get('cnic'),
                'cell': request.POST.get('cell'),
                'address': request.POST.get('address'),
                'skill': request.POST.get('skill'),
                'tag_id': request.POST.get('tag_id'),  
         }
         response = requests.post('https://thingsaccess.com/rfid/index.php/Api/editOperator', json=data)
         if response.status_code == 200:
               return redirect('operator_page')
               # messages.success(request, 'Data added successfully')
         else:
               # Insertion failed, show error message to user
               messages.error(request, 'Failed to edit data')
              

   return render(request,'operators/editOperator.html',context={'item': edit_item})


def delete_Operator(request,id):
   data_delete = {
        'id': id
   }
   print(data_delete)
   response = requests.post('https://thingsaccess.com/rfid/index.php/Api/deleteOperator', json=data_delete)
   if response.status_code == 200:
        return redirect('operator_page')
        # messages.success(request, 'Data added successfully')
   else:
        # Insertion failed, show error message to user
       messages.error(request, 'Failed to delete data')
       return HttpResponse("Operator not deleted")
   

def get_operator_tag_id():
   number = None
   ser = serial.Serial(port='COM5', baudrate=115200, bytesize=8, timeout=2, stopbits=serial.STOPBITS_ONE)
   try:
    # Read data from the port
    while True:
        data = ser.readline().strip()  # Remove whitespace characters from the received data

        if data:
            print(data)
            try:
                decoded_data = data.decode()  # Assuming the received data is a valid string
                number_start_index = decoded_data.index('O') + 1  # Find the index of 'B' and add 1 to skip it
                number = int(decoded_data[number_start_index:])  # Extract the number portion and convert it to an integer
                print('Number:', number)
                break  # Stop reading after receiving a number
            except ValueError:
                pass
   except KeyboardInterrupt:
      pass

   finally:
      # Close the port
      ser.close()
   return number

def tag_id_operator(request):
    if request.method == 'GET':
        number = get_operator_tag_id()  # Call your function to get the tag ID
        response = {'number': number}
        print(response)
        return JsonResponse(response)

   