|
|
|
from django.contrib import messages
|
|
|
|
from django.contrib.auth import authenticate, login as auth_login, logout
|
|
|
|
from django.shortcuts import render, redirect, get_object_or_404
|
|
|
|
from .models import skyonnAdmin, ClientDetails, SubcompanyDetails, Contact, Locations, AddContact, SublocationDetails,InternalTeam
|
|
|
|
from django.contrib.auth.hashers import make_password
|
|
|
|
from django.http import HttpResponse
|
|
|
|
import random
|
|
|
|
import string
|
|
|
|
from django.http import JsonResponse
|
|
|
|
import json
|
|
|
|
from django.core.serializers.json import DjangoJSONEncoder
|
|
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
|
|
from django.views.decorators.http import require_http_methods
|
|
|
|
from django.core.exceptions import ObjectDoesNotExist
|
|
|
|
from .serializers import DetailsSerializer
|
|
|
|
from django.core.validators import validate_email
|
|
|
|
from django.core.exceptions import ValidationError
|
|
|
|
import re
|
|
|
|
from django.http import JsonResponse
|
|
|
|
from django.db.models import Q
|
|
|
|
from django.core.mail import send_mail
|
|
|
|
import threading
|
|
|
|
import pandas as pd
|
|
|
|
|
|
|
|
def home(request):
|
|
|
|
return render(request, 'skyonnadmin/home.html')
|
|
|
|
|
|
|
|
|
|
|
|
def create_admin(request):
|
|
|
|
if request.method == 'POST':
|
|
|
|
first_name = request.POST['first_name']
|
|
|
|
last_name = request.POST['last_name']
|
|
|
|
phone_number = request.POST['phone']
|
|
|
|
phone_number_2 = request.POST.get('phone_2')
|
|
|
|
company_email = request.POST['company_email']
|
|
|
|
personal_email = request.POST.get('personal_email')
|
|
|
|
address = request.POST['address']
|
|
|
|
work_location = request.POST['work_location']
|
|
|
|
role = 'admin'
|
|
|
|
password = request.POST['password'] # Assuming there's a password field in the form
|
|
|
|
hashed_password = make_password(password)
|
|
|
|
|
|
|
|
picture = request.FILES.get('picture')
|
|
|
|
|
|
|
|
# Generate admin ID based on the last ID in the database
|
|
|
|
last_admin = skyonnAdmin.objects.order_by('-id').first()
|
|
|
|
if last_admin:
|
|
|
|
last_id = int(last_admin.admin_id[4:]) # Extract the serial number part and convert to int
|
|
|
|
new_id = last_id + 1
|
|
|
|
else:
|
|
|
|
new_id = 1
|
|
|
|
admin_id = f'SKYA{new_id:03d}' # Construct the new admin ID
|
|
|
|
|
|
|
|
# Create the admin user
|
|
|
|
admin = skyonnAdmin.objects.create(
|
|
|
|
first_name=first_name,
|
|
|
|
last_name=last_name,
|
|
|
|
phone=phone_number,
|
|
|
|
phone_number_2=phone_number_2,
|
|
|
|
company_email=company_email,
|
|
|
|
personal_email=personal_email,
|
|
|
|
address=address,
|
|
|
|
work_location=work_location,
|
|
|
|
role=role,
|
|
|
|
admin_id=admin_id,
|
|
|
|
password=hashed_password,
|
|
|
|
picture= picture
|
|
|
|
)
|
|
|
|
print((admin.first_name, admin.last_name))
|
|
|
|
admin.backend = 'user.backend.PhoneAuthenticationBackend'
|
|
|
|
auth_login(request, admin)
|
|
|
|
|
|
|
|
return JsonResponse(
|
|
|
|
{'success': 'Login successful', 'redirect_url': f'/skyonnadmin/admin/dashboard/{admin.admin_id}'})
|
|
|
|
else:
|
|
|
|
return render(request, 'skyonnadmin/home.html')
|
|
|
|
|
|
|
|
def validate_admin(request):
|
|
|
|
if request.method == 'GET':
|
|
|
|
email1 = request.GET.get('company_email')
|
|
|
|
email2 = request.GET.get('personal_email')
|
|
|
|
phone_number1 = request.GET.get('phone')
|
|
|
|
phone_number2 = request.GET.get('phone_2')
|
|
|
|
response = {
|
|
|
|
'exists': False
|
|
|
|
}
|
|
|
|
if email1 and (skyonnAdmin.objects.filter(company_email=email1).exists() or
|
|
|
|
skyonnAdmin.objects.filter(personal_email=email1).exists()):
|
|
|
|
response['exists'] = True
|
|
|
|
|
|
|
|
if email2 and (skyonnAdmin.objects.filter(company_email=email2).exists() or
|
|
|
|
skyonnAdmin.objects.filter(personal_email=email2).exists()):
|
|
|
|
response['exists'] = True
|
|
|
|
|
|
|
|
if phone_number1 and (skyonnAdmin.objects.filter(phone=phone_number1).exists() or
|
|
|
|
skyonnAdmin.objects.filter(phone_number_2=phone_number1).exists()):
|
|
|
|
response['exists'] = True
|
|
|
|
|
|
|
|
if phone_number2 and (skyonnAdmin.objects.filter(phone=phone_number2).exists() or
|
|
|
|
skyonnAdmin.objects.filter(phone_number_2=phone_number2).exists()):
|
|
|
|
response['exists'] = True
|
|
|
|
|
|
|
|
return JsonResponse(response)
|
|
|
|
|
|
|
|
|
|
|
|
def admin_login(request):
|
|
|
|
if request.method == 'POST':
|
|
|
|
phone = request.POST.get('phone')
|
|
|
|
password = request.POST.get('password')
|
|
|
|
|
|
|
|
if not phone and 'phone' in request.POST:
|
|
|
|
return JsonResponse({'error': 'Please fill the phone number field.'}, status=400)
|
|
|
|
if not password and 'password' in request.POST: # Validate password if it's present
|
|
|
|
return JsonResponse({'error': 'Please fill the password field.'}, status=400)
|
|
|
|
|
|
|
|
admin = skyonnAdmin.objects.filter(phone=phone).first()
|
|
|
|
if admin is None:
|
|
|
|
return JsonResponse({'error': 'Incorrect phone number.'}, status=404)
|
|
|
|
|
|
|
|
if password:
|
|
|
|
if not admin.check_password(password):
|
|
|
|
return JsonResponse({'error': 'Incorrect password.'}, status=401)
|
|
|
|
|
|
|
|
return JsonResponse(
|
|
|
|
{'success': 'Login successful', 'redirect_url': f'/skyonnadmin/admin/dashboard/{admin.admin_id}'})
|
|
|
|
|
|
|
|
return JsonResponse({'success': 'Phone number is valid.'}, status=200)
|
|
|
|
|
|
|
|
return JsonResponse({'error': 'Invalid request method.'}, status=405)
|
|
|
|
|
|
|
|
|
|
|
|
def admin_dashboard(request, admin_id):
|
|
|
|
admin = get_object_or_404(skyonnAdmin, admin_id=admin_id)
|
|
|
|
|
|
|
|
# Get the manager's first name
|
|
|
|
first_name = admin.first_name.capitalize()
|
|
|
|
full_name = f"{first_name}"
|
|
|
|
print(full_name)
|
|
|
|
|
|
|
|
return render(request, 'skyonnadmin/admin_dashboard.html', {'first_name': full_name, 'admin_id': admin_id,'picture': admin.picture})
|
|
|
|
# Admin dashboard logic goes here
|
|
|
|
|
|
|
|
|
|
|
|
def logout_view(request):
|
|
|
|
logout(request)
|
|
|
|
return redirect('admin_home')
|
|
|
|
|
|
|
|
def get_admin_details(request):
|
|
|
|
admin_id = request.GET.get('admin_id', None)
|
|
|
|
print(admin_id)
|
|
|
|
admin = get_object_or_404(skyonnAdmin, admin_id=admin_id)
|
|
|
|
print('admin:', admin)
|
|
|
|
|
|
|
|
admin_picture = admin.picture.url
|
|
|
|
|
|
|
|
admin_data = {
|
|
|
|
'first_name': admin.first_name,
|
|
|
|
'last_name': admin.last_name,
|
|
|
|
'phone': admin.phone,
|
|
|
|
'phone_number_2': admin.phone_number_2,
|
|
|
|
'company_email': admin.company_email,
|
|
|
|
'personal_email': admin.personal_email,
|
|
|
|
'address': admin.address,
|
|
|
|
'work_location': admin.work_location,
|
|
|
|
'admin_picture': admin_picture
|
|
|
|
}
|
|
|
|
return JsonResponse({'admin_data': admin_data})
|
|
|
|
|
|
|
|
|
|
|
|
def client_details(request):
|
|
|
|
return render(request, 'skyonnadmin/client_details.html')
|
|
|
|
|
|
|
|
|
|
|
|
def add_subclient(request):
|
|
|
|
admin_id = request.GET.get('admin_id', None)
|
|
|
|
clients = ClientDetails.objects.all()
|
|
|
|
return render(request, 'skyonnadmin/add_subclient.html', {'clients': clients, 'admin_id': admin_id})
|
|
|
|
|
|
|
|
|
|
|
|
def add_client(request):
|
|
|
|
admin_id = request.GET.get('admin_id', None)
|
|
|
|
print(admin_id)
|
|
|
|
clients = ClientDetails.objects.all()
|
|
|
|
return render(request, 'skyonnadmin/add_client.html', {'clients': clients, 'admin_id': admin_id})
|
|
|
|
|
|
|
|
|
|
|
|
def existing_client(request):
|
|
|
|
clients = ClientDetails.objects.all()
|
|
|
|
return render(request, 'skyonnadmin/existing_client.html', {'clients': clients})
|
|
|
|
|
|
|
|
def new_job_posting(request):
|
|
|
|
admin_id = request.GET.get('admin_id', None)
|
|
|
|
return render(request, 'skyonnadmin/new_job_posting.html', {'admin_id': admin_id})
|
|
|
|
|
|
|
|
def add_new_contact(request):
|
|
|
|
clients = ClientDetails.objects.all()
|
|
|
|
sub_clients = SubcompanyDetails.objects.all()
|
|
|
|
return render(request, 'skyonnadmin/add_new_contact.html',{'clients': clients,'sub_clients': sub_clients})
|
|
|
|
|
|
|
|
|
|
|
|
@csrf_exempt
|
|
|
|
def save_details(request):
|
|
|
|
if request.method == 'POST':
|
|
|
|
|
|
|
|
# Extract data from the first form
|
|
|
|
parent_company = request.POST.get('ParentCompany', '')
|
|
|
|
locationId = request.POST.get('Location_Id', '')
|
|
|
|
GST_No = request.POST.get('GSTNo', '')
|
|
|
|
address_1 = request.POST.get('Address_1', '')
|
|
|
|
state = request.POST.get('State', '')
|
|
|
|
# Street = request.POST.get('Street', '')
|
|
|
|
City = request.POST.get('City', '')
|
|
|
|
country = request.POST.get('country', '')
|
|
|
|
address_2 = request.POST.get('Address_2', '')
|
|
|
|
Pincode = request.POST.get('Pincode', '')
|
|
|
|
|
|
|
|
client_id = generate_client_id(parent_company)
|
|
|
|
print(client_id)
|
|
|
|
if not parent_company or not locationId or not GST_No or not address_1 or not state or not City or not country or not Pincode:
|
|
|
|
return JsonResponse({'status': 'error','message': 'Error while saving client.Please fill required fields'},
|
|
|
|
status=400)
|
|
|
|
# if ClientDetails.objects.filter(parent_company=parent_company.upper()).exists():
|
|
|
|
# return JsonResponse({'status': 'error','field': 'ParentCompany', 'message': 'Parent Company already exists'}, status=400)
|
|
|
|
# # Save data into the database
|
|
|
|
parent_company_proper = parent_company.title()
|
|
|
|
|
|
|
|
# Check for duplicate ParentCompany
|
|
|
|
if ClientDetails.objects.filter(parent_company=parent_company_proper).exists():
|
|
|
|
return JsonResponse(
|
|
|
|
{'status': 'error', 'field': 'ParentCompany', 'message': 'Parent Company already exists'}, status=400)
|
|
|
|
|
|
|
|
job_details = ClientDetails(
|
|
|
|
parent_company=parent_company_proper,
|
|
|
|
location_Id=locationId,
|
|
|
|
GST_No=GST_No,
|
|
|
|
address_1=address_1,
|
|
|
|
state=state,
|
|
|
|
# Street= Street,
|
|
|
|
City=City,
|
|
|
|
country=country,
|
|
|
|
address_2=address_2,
|
|
|
|
Pincode=Pincode,
|
|
|
|
client_id=client_id,
|
|
|
|
)
|
|
|
|
job_details.save()
|
|
|
|
admin_id = request.GET.get('admin_id', None)
|
|
|
|
print(admin_id)
|
|
|
|
return JsonResponse({'status': 'success', 'message': 'Client saved successfully.'})
|
|
|
|
else:
|
|
|
|
return HttpResponse('Invalid request method')
|
|
|
|
|
|
|
|
|
|
|
|
def check_parent_company(request):
|
|
|
|
if request.method == 'GET':
|
|
|
|
parent_company = request.GET.get('ParentCompany', '').strip().upper()
|
|
|
|
print(parent_company)
|
|
|
|
exists = ClientDetails.objects.filter(parent_company=parent_company).exists()
|
|
|
|
return JsonResponse({'exists': exists})
|
|
|
|
return JsonResponse({'error': 'Invalid request method'}, status=400)
|
|
|
|
|
|
|
|
def get_parentCompany(request):
|
|
|
|
clients = ClientDetails.objects.values('parent_company')
|
|
|
|
print(clients)
|
|
|
|
return JsonResponse(list(clients), safe=False)
|
|
|
|
|
|
|
|
def save_sublocation(request):
|
|
|
|
if request.method == 'POST':
|
|
|
|
parent_company = request.POST.get('ParentCompany', '')
|
|
|
|
department = request.POST.get('Department', '')
|
|
|
|
Location = request.POST.get('Location', '')
|
|
|
|
GST_No = request.POST.get('GSTNo', '')
|
|
|
|
address_1 = request.POST.get('Address_1', '')
|
|
|
|
address_2 = request.POST.get('Address_2', '')
|
|
|
|
# Street = request.POST.get('Street', '')
|
|
|
|
City = request.POST.get('City', '')
|
|
|
|
State = request.POST.get('State', '')
|
|
|
|
Pincode = request.POST.get('Pincode', '')
|
|
|
|
country = request.POST.get('country', '')
|
|
|
|
|
|
|
|
if not parent_company or not department or not Location or not GST_No or not address_1 or not State or not City or not country or not Pincode:
|
|
|
|
return JsonResponse({'status': 'error', 'message': 'Error while saving Sub_Location.Please fill required fields'},
|
|
|
|
status=400)
|
|
|
|
|
|
|
|
# Save data into the database
|
|
|
|
job_details = SublocationDetails(
|
|
|
|
parent_company=parent_company,
|
|
|
|
department= department,
|
|
|
|
Location=Location,
|
|
|
|
GST_No=GST_No,
|
|
|
|
address_1=address_1,
|
|
|
|
address_2=address_2,
|
|
|
|
# Street = Street,
|
|
|
|
City=City,
|
|
|
|
State=State,
|
|
|
|
Pincode=Pincode,
|
|
|
|
country=country, )
|
|
|
|
job_details.save()
|
|
|
|
admin_id = request.GET.get('admin_id', None)
|
|
|
|
print(admin_id)
|
|
|
|
return JsonResponse({'status': 'success', 'message': 'sublocation saved successfully.'})
|
|
|
|
else:
|
|
|
|
return JsonResponse({'status': 'error', 'message': 'Invalid request method'}, status=400)
|
|
|
|
|
|
|
|
def get_GSTNo(request):
|
|
|
|
if request.method == 'GET':
|
|
|
|
parent_company = request.GET.get('ParentCompany')
|
|
|
|
gst_no = ClientDetails.objects.filter(parent_company=parent_company).values('GST_No')
|
|
|
|
gst = list(gst_no)
|
|
|
|
print(gst)
|
|
|
|
return JsonResponse(gst[0],safe=False)
|
|
|
|
else:
|
|
|
|
return JsonResponse({'error': 'Invalid request'})
|
|
|
|
|
|
|
|
|
|
|
|
@csrf_exempt
|
|
|
|
def save_details_subcompany(request):
|
|
|
|
print("00came")
|
|
|
|
if request.method == 'POST':
|
|
|
|
# Extract data from the first form
|
|
|
|
parent_company = request.POST.get('ParentCompany', '')
|
|
|
|
sub_company = request.POST.get('SubCompany', '')
|
|
|
|
location_id = request.POST.get('Location_Id', '')
|
|
|
|
GST_No = request.POST.get('GSTNo', '')
|
|
|
|
address_1 = request.POST.get('Address_1', '')
|
|
|
|
address_2 = request.POST.get('Address_2', '')
|
|
|
|
# Street = request.POST.get('Street', '')
|
|
|
|
City = request.POST.get('City', '')
|
|
|
|
State = request.POST.get('State', '')
|
|
|
|
Pincode = request.POST.get('Pincode', '')
|
|
|
|
country = request.POST.get('country', '')
|
|
|
|
|
|
|
|
sub_client_id = generate_client_id(parent_company)
|
|
|
|
print(sub_client_id)
|
|
|
|
if not parent_company or not sub_company or not location_id or not address_1 or not State or not City or not country or not Pincode:
|
|
|
|
return JsonResponse({'status': 'error', 'message': 'Error while saving Sub_client.Please fill required fields'},
|
|
|
|
status=400)
|
|
|
|
if SubcompanyDetails.objects.filter(sub_company=sub_company.title()).exists():
|
|
|
|
return JsonResponse({'status': 'error','field': 'SubCompany', 'message': 'Sub_Company already exists'}, status=400)
|
|
|
|
# Save data into the database
|
|
|
|
job_details = SubcompanyDetails(
|
|
|
|
parent_company=parent_company,
|
|
|
|
sub_company=sub_company.title(),
|
|
|
|
location_id=location_id,
|
|
|
|
GST_No=GST_No ,
|
|
|
|
address_1=address_1,
|
|
|
|
address_2=address_2,
|
|
|
|
# Street = Street,
|
|
|
|
City = City,
|
|
|
|
State = State,
|
|
|
|
Pincode = Pincode,
|
|
|
|
country= country,
|
|
|
|
sub_client_id=sub_client_id,
|
|
|
|
|
|
|
|
)
|
|
|
|
job_details.save()
|
|
|
|
admin_id = request.GET.get('admin_id', None)
|
|
|
|
print(admin_id)
|
|
|
|
return JsonResponse({'status': 'success', 'message': 'subclient saved successfully.'})
|
|
|
|
|
|
|
|
else:
|
|
|
|
return JsonResponse({'status': 'error', 'message': 'Invalid request method'}, status=400)
|
|
|
|
|
|
|
|
def check_sub_company(request):
|
|
|
|
if request.method == 'GET':
|
|
|
|
sub_company = request.GET.get('SubCompany', '').strip().upper()
|
|
|
|
print(sub_company)
|
|
|
|
exists = SubcompanyDetails.objects.filter(sub_company=sub_company).exists()
|
|
|
|
return JsonResponse({'exists': exists})
|
|
|
|
return JsonResponse({'error': 'Invalid request method'}, status=400)
|
|
|
|
|
|
|
|
def get_combined_details(request):
|
|
|
|
parent_company = request.GET.get('parent_company')
|
|
|
|
location = request.GET.get('location')
|
|
|
|
|
|
|
|
# Fetch data from ClientDetails and SubcompanyDetails tables based on filters
|
|
|
|
client_details = ClientDetails.objects.filter(parent_company=parent_company, location=location)
|
|
|
|
subcompany_details = SubcompanyDetails.objects.filter(parent_company=parent_company, location=location)
|
|
|
|
|
|
|
|
# Combine data from both tables
|
|
|
|
combined_data = []
|
|
|
|
|
|
|
|
# Add client details to combined_data
|
|
|
|
for detail in client_details:
|
|
|
|
combined_data.append({
|
|
|
|
'parent_company': detail.parent_company,
|
|
|
|
'location': detail.location,
|
|
|
|
'department': detail.department,
|
|
|
|
'gst_no': detail.gst_no,
|
|
|
|
'address': detail.address,
|
|
|
|
'client_id': detail.client_id,
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
# Add subcompany details to combined_data
|
|
|
|
for detail in subcompany_details:
|
|
|
|
combined_data.append({
|
|
|
|
'parent_company': detail.parent_company,
|
|
|
|
'sub_company': detail.sub_company,
|
|
|
|
'location': detail.location,
|
|
|
|
# 'department': detail.department,
|
|
|
|
'gst_no': detail.gst_no,
|
|
|
|
'address': detail.address,
|
|
|
|
'client_id': detail.client_id,
|
|
|
|
|
|
|
|
})
|
|
|
|
print(combined_data)
|
|
|
|
return JsonResponse(combined_data, safe=False)
|
|
|
|
|
|
|
|
|
|
|
|
def get_locations(request):
|
|
|
|
print(0)
|
|
|
|
if request.method == 'GET' and 'parent_company' in request.GET:
|
|
|
|
print(1)
|
|
|
|
parent_company = request.GET.get('parent_company')
|
|
|
|
locations = SubcompanyDetails.objects.filter(parent_company=parent_company).values_list('location', flat=True)
|
|
|
|
serialized_data = json.dumps(list(locations), cls=DjangoJSONEncoder)
|
|
|
|
return JsonResponse(serialized_data, safe=False)
|
|
|
|
else:
|
|
|
|
return JsonResponse({'error': 'Invalid request'})
|
|
|
|
|
|
|
|
|
|
|
|
def generate_client_id(parent_company):
|
|
|
|
# Extract first 4 letters from parent_company and convert to uppercase
|
|
|
|
prefix = parent_company[:4].upper()
|
|
|
|
# Generate 4 random integers
|
|
|
|
suffix = ''.join(random.choices(string.digits, k=4))
|
|
|
|
# Concatenate prefix and suffix to form the client_id
|
|
|
|
client_id = prefix + suffix
|
|
|
|
return client_id
|
|
|
|
|
|
|
|
|
|
|
|
# def get_contacts(request):
|
|
|
|
# if request.method == 'GET':
|
|
|
|
# client = request.GET.get('Client')
|
|
|
|
# print(client)
|
|
|
|
# SPOC_Details = AddContact.objects.filter(Company=client).values('FirstName','Department')
|
|
|
|
#
|
|
|
|
# SPOC_Details_list = list(SPOC_Details)
|
|
|
|
# return JsonResponse(SPOC_Details_list, safe=False)
|
|
|
|
# else:
|
|
|
|
# return JsonResponse({'error': 'Invalid request'})
|
|
|
|
|
|
|
|
|
|
|
|
def add_locations(request):
|
|
|
|
locations_list = ['Hyderabad', 'Pune', 'Chennai', 'Mumbai', 'Cochin', 'Ahmedabad', 'Bangalore']
|
|
|
|
for location in locations_list:
|
|
|
|
try:
|
|
|
|
Locations.objects.get(location=location)
|
|
|
|
print(f"Location '{location}' already exists.")
|
|
|
|
except ObjectDoesNotExist:
|
|
|
|
Locations.objects.create(location=location)
|
|
|
|
print(f"Added location '{location}' to the database.")
|
|
|
|
|
|
|
|
|
|
|
|
def get_subclients(request):
|
|
|
|
if request.method == 'GET' and 'parent_company' in request.GET:
|
|
|
|
parent_company = request.GET['parent_company']
|
|
|
|
# Query SubcompanyDetails table to filter sub-clients by parent company
|
|
|
|
sub_clients = SubcompanyDetails.objects.filter(parent_company=parent_company).values_list('sub_company',
|
|
|
|
flat=True)
|
|
|
|
# Convert queryset to list
|
|
|
|
sub_clients_list = list(sub_clients)
|
|
|
|
return JsonResponse(sub_clients_list, safe=False)
|
|
|
|
else:
|
|
|
|
return JsonResponse({'error': 'Invalid request'})
|
|
|
|
|
|
|
|
|
|
|
|
def get_filtered_data(request):
|
|
|
|
if request.method == 'GET':
|
|
|
|
client = request.GET.get('client')
|
|
|
|
sub_client = request.GET.get('subClient')
|
|
|
|
|
|
|
|
client_details = ClientDetails.objects.filter(parent_company=client)
|
|
|
|
client_id = [data.client_id for data in client_details]
|
|
|
|
print(client_id)
|
|
|
|
# Filter SubcompanyDetails based on client and sub-client
|
|
|
|
if sub_client == 'All Sub Clients':
|
|
|
|
sub_company_details = SubcompanyDetails.objects.filter(parent_company=client)
|
|
|
|
else:
|
|
|
|
sub_company_details = SubcompanyDetails.objects.filter(parent_company=client, sub_company=sub_client)
|
|
|
|
sub_client_id=[data.sub_client_id for data in sub_company_details]
|
|
|
|
print(sub_client_id)
|
|
|
|
|
|
|
|
filtered_data = {
|
|
|
|
'client_details':list(client_details.values()),
|
|
|
|
'sub_company_details': list(sub_company_details.values())
|
|
|
|
}
|
|
|
|
|
|
|
|
# # Serialize the filtered data
|
|
|
|
serializer = DetailsSerializer(filtered_data)
|
|
|
|
print(serializer.data)
|
|
|
|
|
|
|
|
return JsonResponse(serializer.data, safe=False)
|
|
|
|
else:
|
|
|
|
return JsonResponse({'error': 'Invalid request method'}, status=400)
|
|
|
|
|
|
|
|
def save_new_entry(request):
|
|
|
|
if request.method == 'POST':
|
|
|
|
data = json.loads(request.body)
|
|
|
|
rowData = data.get('rowData')
|
|
|
|
department = data.get('department')
|
|
|
|
|
|
|
|
# Retrieve the SubcompanyDetails instance based on the department
|
|
|
|
subcompany_instance = get_object_or_404(SubcompanyDetails, department=department)
|
|
|
|
|
|
|
|
# Save the new contact data to the appropriate contact field
|
|
|
|
if subcompany_instance:
|
|
|
|
new_contact = Contact.objects.create(**rowData)
|
|
|
|
getattr(subcompany_instance, 'admin_contacts').add(new_contact)
|
|
|
|
return JsonResponse({'message': 'New entry saved successfully.'}, status=200)
|
|
|
|
else:
|
|
|
|
return JsonResponse({'message': f'No SubcompanyDetails instance found for department: {department}'}, status=404)
|
|
|
|
else:
|
|
|
|
return JsonResponse({'message': 'Invalid request method.'}, status=400)
|
|
|
|
|
|
|
|
def add_contact(request):
|
|
|
|
print("00came")
|
|
|
|
if request.method == 'POST':
|
|
|
|
# Extract data from the form
|
|
|
|
Company = request.POST.get('Company', '')
|
|
|
|
Sub_company = request.POST.get('Sub_Company') or Company
|
|
|
|
LastName = request.POST.get('LastName', '')
|
|
|
|
FirstName = request.POST.get('FirstName', '')
|
|
|
|
Department = request.POST.get('Department', '')
|
|
|
|
Designation = request.POST.get('Designation', '')
|
|
|
|
Phone_number = request.POST.get('Phone_number', '')
|
|
|
|
Email = request.POST.get('Email', '')
|
|
|
|
|
|
|
|
contact_id = generate_client_id(Company)
|
|
|
|
print(contact_id)
|
|
|
|
if not Company or not FirstName or not Department or not Designation or not Phone_number or not Email:
|
|
|
|
return JsonResponse({'status': 'error', 'message': 'Error while saving Sub_client.Please fill required fields'},
|
|
|
|
status=400)
|
|
|
|
|
|
|
|
# Save data into the database
|
|
|
|
add_contact = AddContact(
|
|
|
|
Company=Company,
|
|
|
|
Sub_company=Sub_company,
|
|
|
|
FirstName=FirstName,
|
|
|
|
LastName=LastName,
|
|
|
|
Department=Department,
|
|
|
|
Designation=Designation,
|
|
|
|
Phone_number=Phone_number,
|
|
|
|
Email=Email,
|
|
|
|
Contact_id=contact_id
|
|
|
|
)
|
|
|
|
add_contact.save()
|
|
|
|
|
|
|
|
admin_id = request.GET.get('admin_id', None)
|
|
|
|
print(admin_id)
|
|
|
|
|
|
|
|
return JsonResponse({'status': 'success', 'message': 'Contact saved successfully.'})
|
|
|
|
|
|
|
|
else:
|
|
|
|
return JsonResponse({'status': 'error', 'message': 'Invalid request method'}, status=400)
|
|
|
|
|
|
|
|
def validate_field(request):
|
|
|
|
if request.method == 'GET':
|
|
|
|
email = request.GET.get('Email')
|
|
|
|
phone_number = request.GET.get('Phone_number')
|
|
|
|
response = {
|
|
|
|
'exists': False
|
|
|
|
}
|
|
|
|
if email and AddContact.objects.filter(Email=email).exists():
|
|
|
|
response['exists'] = True
|
|
|
|
elif phone_number and AddContact.objects.filter(Phone_number=phone_number).exists():
|
|
|
|
response['exists'] = True
|
|
|
|
return JsonResponse(response)
|
|
|
|
|
|
|
|
|
|
|
|
def validate_cell_field(request):
|
|
|
|
if request.method == 'GET':
|
|
|
|
email = request.GET.get('Email')
|
|
|
|
phone_number = request.GET.get('Phone_number')
|
|
|
|
contact_id = request.GET.get('Contact_id')
|
|
|
|
print('contact_id:',contact_id)
|
|
|
|
|
|
|
|
response = {
|
|
|
|
'email_exists': False,
|
|
|
|
'phone_exists': False
|
|
|
|
}
|
|
|
|
if email:
|
|
|
|
existing_email_contact = AddContact.objects.filter(Email=email).first()
|
|
|
|
if existing_email_contact and existing_email_contact.Contact_id != contact_id:
|
|
|
|
response['email_exists'] = True
|
|
|
|
|
|
|
|
# Check for existing phone number but ignore if it's the same contact
|
|
|
|
if phone_number:
|
|
|
|
existing_phone_contact = AddContact.objects.filter(Phone_number=phone_number).first()
|
|
|
|
if existing_phone_contact and existing_phone_contact.Contact_id != contact_id:
|
|
|
|
response['phone_exists'] = True
|
|
|
|
|
|
|
|
return JsonResponse(response)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# def save_job_posting(request):
|
|
|
|
# if request.method == 'POST':
|
|
|
|
# # Extract data from the form
|
|
|
|
# Client = request.POST.get('Client', '')
|
|
|
|
# JobID = request.POST.get('JobID', '')
|
|
|
|
# Location = request.POST.get('Location', '')
|
|
|
|
# SPOC = request.POST.get('SPOC', '')
|
|
|
|
# SPOC2 = request.POST.get('SPOC2', '')
|
|
|
|
# StartDate = request.POST.get('StartDate', '')
|
|
|
|
# CloseDate = request.POST.get('CloseDate', '')
|
|
|
|
# BudgetMin = request.POST.get('BudgetMin', '')
|
|
|
|
# BudgetMax = request.POST.get('BudgetMax', '')
|
|
|
|
# Header = request.POST.get('Header', '')
|
|
|
|
# JobDescription = request.POST.get('JobDescription', '')
|
|
|
|
# Experience_in_Yrs = request.POST.get('Experience_in_Yrs', '')
|
|
|
|
# NoOfPosting = request.POST.get('NoOfPosting', '')
|
|
|
|
# Type = request.POST.get('Type', '')
|
|
|
|
# SpecialInstructions = request.POST.get('SpecialInstructions', '')
|
|
|
|
# JD = request.POST.get('JD', '' )
|
|
|
|
#
|
|
|
|
# jobposting = JobPosting(
|
|
|
|
# Client=Client,
|
|
|
|
# JobID=JobID,
|
|
|
|
# Location=Location,
|
|
|
|
# SPOC=SPOC,
|
|
|
|
# SPOC2=SPOC2,
|
|
|
|
# StartDate=StartDate,
|
|
|
|
# CloseDate=CloseDate,
|
|
|
|
# BudgetMin=BudgetMin,
|
|
|
|
# BudgetMax=BudgetMax,
|
|
|
|
# Header=Header,
|
|
|
|
# JobDescription=JobDescription,
|
|
|
|
# Experience_in_Yrs=Experience_in_Yrs,
|
|
|
|
# NoOfPosting=NoOfPosting,
|
|
|
|
# Type=Type,
|
|
|
|
# SpecialInstructions=SpecialInstructions,
|
|
|
|
# JD=JD,
|
|
|
|
# )
|
|
|
|
# jobposting.save()
|
|
|
|
# print(jobposting)
|
|
|
|
#
|
|
|
|
# admin_id = request.GET.get('admin_id', None)
|
|
|
|
# print(admin_id)
|
|
|
|
#
|
|
|
|
# return JsonResponse({'status': 'success', 'message': 'Job_posting saved successfully.'})
|
|
|
|
#
|
|
|
|
# else:
|
|
|
|
# return JsonResponse({'status': 'error', 'message': 'Invalid request method'}, status=400)
|
|
|
|
|
|
|
|
def get_team_details(request):
|
|
|
|
if request.method == 'GET':
|
|
|
|
client = request.GET.get('client')
|
|
|
|
sub_client = request.GET.get('subClient')
|
|
|
|
|
|
|
|
if not sub_client:
|
|
|
|
contacts = AddContact.objects.filter(Company=client, Sub_company='')
|
|
|
|
elif sub_client == 'All Sub Clients':
|
|
|
|
contacts = AddContact.objects.filter(Company=client)
|
|
|
|
else:
|
|
|
|
contacts = AddContact.objects.filter(Company=client, Sub_company=sub_client)
|
|
|
|
|
|
|
|
filtered_data = {
|
|
|
|
'contacts': list(contacts.values()),
|
|
|
|
}
|
|
|
|
# Return serialized data as JSON response
|
|
|
|
return JsonResponse(filtered_data, safe=False)
|
|
|
|
# return JsonResponse({"success": True, "message": "Contact added successfully."})
|
|
|
|
|
|
|
|
else:
|
|
|
|
return JsonResponse({'error': 'Invalid request method'}, status=400)
|
|
|
|
|
|
|
|
|
|
|
|
def get_department(request):
|
|
|
|
if request.method == 'GET':
|
|
|
|
department = request.GET.get('Department')
|
|
|
|
client = request.GET.get('client')
|
|
|
|
sub_client = request.GET.get('subClient')
|
|
|
|
|
|
|
|
if not sub_client:
|
|
|
|
departments = AddContact.objects.filter(Department=department, Company=client, Sub_company='').distinct()
|
|
|
|
elif sub_client == 'All Sub Clients':
|
|
|
|
departments = AddContact.objects.filter(Department=department, Company=client).distinct()
|
|
|
|
else:
|
|
|
|
departments = AddContact.objects.filter(Department=department, Company=client,
|
|
|
|
Sub_company=sub_client).distinct()
|
|
|
|
# Convert queryset to list
|
|
|
|
department_list = list(departments.values())
|
|
|
|
|
|
|
|
return JsonResponse(department_list, safe=False)
|
|
|
|
# return JsonResponse({"success": True, "message": "Contact added successfully."})
|
|
|
|
else:
|
|
|
|
return JsonResponse({'error': 'Invalid request method'}, status=400)
|
|
|
|
|
|
|
|
|
|
|
|
def get_SearchData(request):
|
|
|
|
if request.method == 'GET':
|
|
|
|
client = request.GET.get('client')
|
|
|
|
sub_client = request.GET.get('subClient')
|
|
|
|
searchKeyword = request.GET.get('searchKeyword')
|
|
|
|
|
|
|
|
query1 = Q()
|
|
|
|
query2 = Q()
|
|
|
|
query3 = Q()
|
|
|
|
|
|
|
|
if client:
|
|
|
|
query1 &= Q(Company__icontains=client)
|
|
|
|
query2 &= Q(parent_company__icontains=client)
|
|
|
|
query3 &= Q(parent_company__icontains=client)
|
|
|
|
|
|
|
|
if sub_client and sub_client != 'All Sub Clients':
|
|
|
|
query1 &= Q(Sub_company__icontains=sub_client)
|
|
|
|
query2 &= Q(parent_company__icontains=sub_client)
|
|
|
|
query3 &= Q(sub_company__icontains=sub_client)
|
|
|
|
|
|
|
|
if searchKeyword:
|
|
|
|
keywords = searchKeyword.split()
|
|
|
|
search_query1 = Q()
|
|
|
|
|
|
|
|
search_query1 |= (
|
|
|
|
Q(Sub_company__icontains=searchKeyword) |
|
|
|
|
Q(Company__icontains=searchKeyword) |
|
|
|
|
Q(FirstName__icontains=searchKeyword) |
|
|
|
|
Q(LastName__icontains=searchKeyword) |
|
|
|
|
Q(Designation__icontains=searchKeyword) |
|
|
|
|
Q(Department__icontains=searchKeyword) |
|
|
|
|
Q(Phone_number__icontains=searchKeyword) |
|
|
|
|
Q(Email__icontains=searchKeyword)
|
|
|
|
)
|
|
|
|
|
|
|
|
# Handle case for multiple words in keyword (e.g., "account department")
|
|
|
|
for word in keywords:
|
|
|
|
search_query1 |= (
|
|
|
|
Q(Sub_company__icontains=word) |
|
|
|
|
Q(Company__icontains=word) |
|
|
|
|
Q(FirstName__icontains=word) |
|
|
|
|
Q(LastName__icontains=word) |
|
|
|
|
Q(Designation__icontains=word) |
|
|
|
|
Q(Department__icontains=word) |
|
|
|
|
Q(Phone_number__icontains=word) |
|
|
|
|
Q(Email__icontains=word)
|
|
|
|
)
|
|
|
|
|
|
|
|
# Handle concatenated names (e.g., "JohnDoe")
|
|
|
|
if len(keywords) == 1: # Check for single-word input
|
|
|
|
for i in range(1, len(searchKeyword)):
|
|
|
|
possible_first_name = searchKeyword[:i]
|
|
|
|
possible_last_name = searchKeyword[i:]
|
|
|
|
search_query1 |= (
|
|
|
|
Q(FirstName__icontains=possible_first_name) &
|
|
|
|
Q(LastName__icontains=possible_last_name)
|
|
|
|
)
|
|
|
|
elif len(keywords) == 2: # If two parts exist, treat as FirstName and LastName
|
|
|
|
first_name, last_name = keywords
|
|
|
|
search_query1 |= (
|
|
|
|
Q(FirstName__icontains=first_name) & Q(LastName__icontains=last_name)
|
|
|
|
)
|
|
|
|
|
|
|
|
query1 &= search_query1
|
|
|
|
|
|
|
|
search_query2 = (
|
|
|
|
Q(parent_company__icontains=searchKeyword) | Q(GST_No__icontains=searchKeyword) |
|
|
|
|
Q(location_Id__icontains=searchKeyword))
|
|
|
|
query2 &= search_query2
|
|
|
|
|
|
|
|
search_query3 = (
|
|
|
|
Q(sub_company__icontains=searchKeyword) | Q(parent_company__icontains=searchKeyword) |
|
|
|
|
Q(GST_No__icontains=searchKeyword) | Q(location_id__icontains=searchKeyword))
|
|
|
|
query3 &= search_query3
|
|
|
|
|
|
|
|
contacts = AddContact.objects.filter(query1).values()
|
|
|
|
client_details = ClientDetails.objects.filter(query2).values()
|
|
|
|
sub_company_details = SubcompanyDetails.objects.filter(query3).values()
|
|
|
|
|
|
|
|
filtered_data = {
|
|
|
|
'contacts': list(contacts),
|
|
|
|
'client_details': list(client_details),
|
|
|
|
'sub_company_details': list(sub_company_details)
|
|
|
|
}
|
|
|
|
|
|
|
|
return JsonResponse(filtered_data, safe=False)
|
|
|
|
else:
|
|
|
|
return JsonResponse({'error': 'Invalid request method'}, status=400)
|
|
|
|
|
|
|
|
|
|
|
|
def edit_CompanyDetails(request):
|
|
|
|
if request.method == 'POST':
|
|
|
|
try:
|
|
|
|
data = json.loads(request.body)
|
|
|
|
id = data.get('client_id') or data.get('sub_client_id')
|
|
|
|
print(id)
|
|
|
|
|
|
|
|
if not id:
|
|
|
|
return JsonResponse({'error': 'ID parameter missing'}, status=400)
|
|
|
|
|
|
|
|
if 'client_id' in data:
|
|
|
|
client = ClientDetails.objects.filter(client_id=id).first()
|
|
|
|
if client:
|
|
|
|
client.parent_company = data.get('parent_company', client.parent_company)
|
|
|
|
client.GST_No = data.get('GST_No', client.GST_No)
|
|
|
|
client.location_Id = data.get('location_Id', client.location_Id)
|
|
|
|
client.address_1 = data.get('address_1', client.address_1)
|
|
|
|
client.address_2 = data.get('address_2', client.address_2)
|
|
|
|
client.City = data.get('City', client.City)
|
|
|
|
client.state = data.get('state', client.state)
|
|
|
|
client.Pincode = data.get('Pincode', client.Pincode)
|
|
|
|
client.country = data.get('country', client.country)
|
|
|
|
client.save()
|
|
|
|
print(client)
|
|
|
|
return JsonResponse({'message': 'Client details updated successfully.'}, status=200)
|
|
|
|
|
|
|
|
if 'sub_client_id' in data:
|
|
|
|
sub_client = SubcompanyDetails.objects.filter(sub_client_id=id).first()
|
|
|
|
if sub_client:
|
|
|
|
sub_client.parent_company = data.get('parent_company', sub_client.parent_company)
|
|
|
|
sub_client.sub_company = data.get('sub_company', sub_client.sub_company)
|
|
|
|
sub_client.GST_No = data.get('GST_No', sub_client.GST_No)
|
|
|
|
sub_client.location_id = data.get('location_id', sub_client.location_id)
|
|
|
|
sub_client.address_1 = data.get('address_1', sub_client.address_1)
|
|
|
|
sub_client.address_2 = data.get('address_2', sub_client.address_2)
|
|
|
|
sub_client.City = data.get('City', sub_client.City)
|
|
|
|
sub_client.State = data.get('State', sub_client.State)
|
|
|
|
sub_client.Pincode = data.get('Pincode', sub_client.Pincode)
|
|
|
|
sub_client.country = data.get('country', sub_client.country)
|
|
|
|
sub_client.save()
|
|
|
|
print(sub_client)
|
|
|
|
return JsonResponse({'message': 'Sub-client details updated successfully.'}, status=200)
|
|
|
|
|
|
|
|
return JsonResponse({'error': 'Company details not found.'}, status=404)
|
|
|
|
|
|
|
|
except json.JSONDecodeError:
|
|
|
|
return JsonResponse({'error': 'Invalid JSON'}, status=400)
|
|
|
|
except Exception as e:
|
|
|
|
return JsonResponse({'error': str(e)}, status=500)
|
|
|
|
|
|
|
|
return JsonResponse({'error': 'Invalid request method'}, status=405)
|
|
|
|
|
|
|
|
|
|
|
|
def delete_CompanyDetails(request):
|
|
|
|
if request.method != 'DELETE':
|
|
|
|
return JsonResponse({'error': 'Invalid HTTP method. Only DELETE is allowed.'}, status=405)
|
|
|
|
|
|
|
|
try:
|
|
|
|
data = json.loads(request.body)
|
|
|
|
client_id = data.get('client_id')
|
|
|
|
sub_client_id = data.get('sub_client_id')
|
|
|
|
parent_company = data.get('parent_company')
|
|
|
|
|
|
|
|
if sub_client_id:
|
|
|
|
# Delete only the specific subclient
|
|
|
|
sub_clients_deleted, _ = SubcompanyDetails.objects.filter(sub_client_id=sub_client_id).delete()
|
|
|
|
response = {
|
|
|
|
'message': 'Subclient deleted successfully.',
|
|
|
|
'sub_clients_deleted': sub_clients_deleted
|
|
|
|
}
|
|
|
|
return JsonResponse(response, status=200)
|
|
|
|
|
|
|
|
if client_id and parent_company:
|
|
|
|
# Delete related sub-clients and contacts
|
|
|
|
sub_clients_deleted, _ = SubcompanyDetails.objects.filter(parent_company=parent_company).delete()
|
|
|
|
contacts_deleted, _ = AddContact.objects.filter(Company=parent_company).delete()
|
|
|
|
|
|
|
|
# Delete the main client
|
|
|
|
client = ClientDetails.objects.get(client_id=client_id, parent_company=parent_company)
|
|
|
|
client.delete()
|
|
|
|
|
|
|
|
response = {
|
|
|
|
'message': 'Client and related data deleted successfully.',
|
|
|
|
'client_deleted': 1,
|
|
|
|
'sub_clients_deleted': sub_clients_deleted,
|
|
|
|
'contacts_deleted': contacts_deleted
|
|
|
|
}
|
|
|
|
return JsonResponse(response, status=200)
|
|
|
|
|
|
|
|
return JsonResponse({'error': 'Insufficient data provided to delete any record.'}, status=400)
|
|
|
|
|
|
|
|
except ClientDetails.DoesNotExist:
|
|
|
|
return JsonResponse({'error': 'Client with the given ID and Parent Company does not exist'}, status=404)
|
|
|
|
except Exception as e:
|
|
|
|
return JsonResponse({'error': f'An error occurred: {str(e)}'}, status=500)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@csrf_exempt
|
|
|
|
def edit_teamDetails(request):
|
|
|
|
if request.method == 'POST':
|
|
|
|
data = json.loads(request.body)
|
|
|
|
id = data.get('Contact_id', None)
|
|
|
|
print(id)
|
|
|
|
|
|
|
|
if id:
|
|
|
|
try:
|
|
|
|
contact = AddContact.objects.get(Contact_id=id)
|
|
|
|
print(contact)
|
|
|
|
|
|
|
|
contact.Company = data.get('Company', contact.Company)
|
|
|
|
contact.Sub_company = data.get('Sub_company', contact.Sub_company)
|
|
|
|
contact.FirstName = data.get('FirstName', contact.FirstName)
|
|
|
|
contact.LastName = data.get('LastName', contact.LastName)
|
|
|
|
contact.Department = data.get('Department', contact.Department)
|
|
|
|
contact.Designation = data.get('Designation', contact.Designation)
|
|
|
|
contact.Phone_number = data.get('Phone_number', contact.Phone_number)
|
|
|
|
contact.Email = data.get('Email', contact.Email)
|
|
|
|
contact.save()
|
|
|
|
print(contact)
|
|
|
|
return JsonResponse({'message': 'Contact updated successfully.'}, status=200)
|
|
|
|
except AddContact.DoesNotExist:
|
|
|
|
return JsonResponse({'error': 'Contact not found.'}, status=404)
|
|
|
|
except Exception as e:
|
|
|
|
return JsonResponse({'error': str(e)}, status=500)
|
|
|
|
else:
|
|
|
|
return JsonResponse({'error': 'Email not provided.'}, status=400)
|
|
|
|
else:
|
|
|
|
return JsonResponse({'error': 'Invalid request method.'}, status=405)
|
|
|
|
|
|
|
|
|
|
|
|
def delete_teamDetails(request):
|
|
|
|
try:
|
|
|
|
# Get the contact_id from the query parameters instead of the request body
|
|
|
|
contact_id = request.GET.get('Contact_id')
|
|
|
|
print('contact_id:', contact_id)
|
|
|
|
|
|
|
|
if contact_id is None:
|
|
|
|
return JsonResponse({'error': 'Contact ID not provided'}, status=400)
|
|
|
|
|
|
|
|
# Try to get the contact and delete it
|
|
|
|
contact = AddContact.objects.get(Contact_id=contact_id)
|
|
|
|
contact.delete()
|
|
|
|
|
|
|
|
return JsonResponse({'success': f'Contact with id {contact_id} deleted successfully'})
|
|
|
|
|
|
|
|
except AddContact.DoesNotExist:
|
|
|
|
return JsonResponse({'error': 'Contact does not exist'}, status=404)
|
|
|
|
|
|
|
|
except Exception as e:
|
|
|
|
# Log the error and return a 500 status
|
|
|
|
print(f'Error deleting contact: {e}')
|
|
|
|
return JsonResponse({'error': str(e)}, status=500)
|
|
|
|
|
|
|
|
|
|
|
|
def edit_internalTeam(request):
|
|
|
|
if request.method == 'POST':
|
|
|
|
data = json.loads(request.body)
|
|
|
|
email = data.get('Email1', None)
|
|
|
|
print(email)
|
|
|
|
|
|
|
|
if email:
|
|
|
|
try:
|
|
|
|
employee = InternalTeam.objects.get(Email1=email)
|
|
|
|
|
|
|
|
employee.FirstName = data.get('FirstName', employee.FirstName)
|
|
|
|
employee.LastName = data.get('LastName', employee.LastName)
|
|
|
|
employee.Designation = data.get('Designation', employee.Designation)
|
|
|
|
employee.Department = data.get('Department', employee.Department)
|
|
|
|
employee.PhoneNo1 = data.get('PhoneNo1', employee.PhoneNo1)
|
|
|
|
employee.LandNumber = data.get('LandNumber', employee.LandNumber)
|
|
|
|
employee.Email2 = data.get('Email2', employee.Email2)
|
|
|
|
employee.Level = data.get('Level', employee.Level)
|
|
|
|
employee.save()
|
|
|
|
print(employee)
|
|
|
|
return JsonResponse({'message': 'Internal Team updated successfully.'}, status=200)
|
|
|
|
except AddContact.DoesNotExist:
|
|
|
|
return JsonResponse({'error': 'Contact not found.'}, status=404)
|
|
|
|
except Exception as e:
|
|
|
|
return JsonResponse({'error': str(e)}, status=500)
|
|
|
|
else:
|
|
|
|
return JsonResponse({'error': 'Email not provided.'}, status=400)
|
|
|
|
else:
|
|
|
|
return JsonResponse({'error': 'Invalid request method.'}, status=405)
|
|
|
|
|
|
|
|
|
|
|
|
def delete_internalTeam(request):
|
|
|
|
try:
|
|
|
|
email = request.GET.get('Email1')
|
|
|
|
print(email)
|
|
|
|
|
|
|
|
employee = InternalTeam.objects.get(Email1=email)
|
|
|
|
print(employee)
|
|
|
|
employee.delete()
|
|
|
|
return JsonResponse({'success':f'Data with Email {email} deleted successfully'})
|
|
|
|
except InternalTeam.DoesNotExist:
|
|
|
|
return JsonResponse({'error': 'Employee does not exist'}, status=404)
|
|
|
|
|
|
|
|
except Exception as e:
|
|
|
|
# Log the error and return a 500 status
|
|
|
|
print(f'Error deleting Internal Team Details: {e}')
|
|
|
|
return JsonResponse({'error': str(e)}, status=500)
|
|
|
|
|
|
|
|
|
|
|
|
def print_internalTeam(request):
|
|
|
|
email = request.GET.get('Email1')
|
|
|
|
print(email)
|
|
|
|
|
|
|
|
if email:
|
|
|
|
try:
|
|
|
|
employee = InternalTeam.objects.get(Email1=email)
|
|
|
|
|
|
|
|
data = {
|
|
|
|
'FirstName': employee.FirstName,
|
|
|
|
'LastName': employee.LastName,
|
|
|
|
'Designation': employee.Designation,
|
|
|
|
'Department': employee.Department,
|
|
|
|
'PhoneNo1': employee.PhoneNo1,
|
|
|
|
'LandNumber': employee.LandNumber,
|
|
|
|
'Email1': employee.Email1,
|
|
|
|
'Email2': employee.Email2,
|
|
|
|
'Level': employee.Level
|
|
|
|
}
|
|
|
|
print(employee)
|
|
|
|
return JsonResponse(data, status=200)
|
|
|
|
except AddContact.DoesNotExist:
|
|
|
|
return JsonResponse({'error': 'Contact not found.'}, status=404)
|
|
|
|
except Exception as e:
|
|
|
|
return JsonResponse({'error': str(e)}, status=500)
|
|
|
|
else:
|
|
|
|
return JsonResponse({'error': 'Email not provided.'}, status=400)
|
|
|
|
|
|
|
|
|
|
|
|
def validate_existingEmployee(request):
|
|
|
|
if request.method == 'GET':
|
|
|
|
email1 = request.GET.get('Email1')
|
|
|
|
email2 = request.GET.get('Email2')
|
|
|
|
phone_number1 = request.GET.get('PhoneNo1')
|
|
|
|
phone_number2 = request.GET.get('PhoneNo2')
|
|
|
|
|
|
|
|
response = {
|
|
|
|
'email_exists': False,
|
|
|
|
'phone_exists': False,
|
|
|
|
|
|
|
|
}
|
|
|
|
if email2:
|
|
|
|
existing_phone_contact1 = InternalTeam.objects.filter(Email1=email2).first()
|
|
|
|
existing_phone_contact2 = InternalTeam.objects.filter(Email2=email2).first()
|
|
|
|
if (existing_phone_contact1 and existing_phone_contact1.Email1 != email1) or \
|
|
|
|
(existing_phone_contact2 and existing_phone_contact2.Email1 != email1):
|
|
|
|
response['email_exists'] = True
|
|
|
|
|
|
|
|
# Check for existing phone number but ignore if it's the same contact
|
|
|
|
if phone_number1:
|
|
|
|
existing_phone_contact1 = InternalTeam.objects.filter(PhoneNo1=phone_number1).first()
|
|
|
|
existing_phone_contact2 = InternalTeam.objects.filter(LandNumber=phone_number1).first()
|
|
|
|
if (existing_phone_contact1 and existing_phone_contact1.Email1 != email1) or \
|
|
|
|
(existing_phone_contact2 and existing_phone_contact2.Email1 != email1):
|
|
|
|
response['phone_exists'] = True
|
|
|
|
|
|
|
|
if phone_number2:
|
|
|
|
existing_phone_contact1 = InternalTeam.objects.filter(PhoneNo1=phone_number2).first()
|
|
|
|
existing_phone_contact2 = InternalTeam.objects.filter(LandNumber=phone_number2).first()
|
|
|
|
if (existing_phone_contact1 and existing_phone_contact1.Email1 != email1) or \
|
|
|
|
(existing_phone_contact2 and existing_phone_contact2.Email1 != email1):
|
|
|
|
response['phone_exists'] = True
|
|
|
|
|
|
|
|
return JsonResponse(response)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def Internal_team_details(request):
|
|
|
|
admin_id = request.GET.get('admin_id', None)
|
|
|
|
print(admin_id)
|
|
|
|
return render(request, 'skyonnadmin/Internal_team_details.html',{'admin_id': admin_id})
|
|
|
|
|
|
|
|
|
|
|
|
def save_Internal_team_Details(request):
|
|
|
|
if request.method == 'POST':
|
|
|
|
FirstName = request.POST.get('FirstName').strip()
|
|
|
|
LastName = request.POST.get('LastName')
|
|
|
|
Designation = request.POST.get('Designation')
|
|
|
|
Department = request.POST.get('Department')
|
|
|
|
Address_1 = request.POST.get('Address_1')
|
|
|
|
Address_2 = request.POST.get('Address_2')
|
|
|
|
City = request.POST.get('City')
|
|
|
|
State = request.POST.get('State')
|
|
|
|
Country = request.POST.get('Country')
|
|
|
|
Pincode = request.POST.get('Pincode')
|
|
|
|
PhoneNo1 = request.POST.get('PhoneNo1')
|
|
|
|
LandNumber = request.POST.get('LandNumber')
|
|
|
|
Email1 = request.POST.get('Email1')
|
|
|
|
Email2 = request.POST.get('Email2')
|
|
|
|
Level = request.POST.get('Level')
|
|
|
|
|
|
|
|
Login = Email1
|
|
|
|
Password = FirstName + '@123'
|
|
|
|
user_id = FirstName.upper()[:3] + PhoneNo1[:4]
|
|
|
|
|
|
|
|
internal_team = InternalTeam(
|
|
|
|
FirstName=FirstName,
|
|
|
|
LastName=LastName,
|
|
|
|
Designation=Designation,
|
|
|
|
Department=Department,
|
|
|
|
Address_1=Address_1,
|
|
|
|
Address_2=Address_2,
|
|
|
|
City=City,
|
|
|
|
State=State,
|
|
|
|
Pincode=Pincode,
|
|
|
|
Country=Country,
|
|
|
|
PhoneNo1=PhoneNo1,
|
|
|
|
LandNumber=LandNumber,
|
|
|
|
Email1=Email1,
|
|
|
|
Email2=Email2,
|
|
|
|
Level=Level,
|
|
|
|
Login=Login,
|
|
|
|
Password=Password,
|
|
|
|
user_id=user_id
|
|
|
|
)
|
|
|
|
internal_team.save()
|
|
|
|
|
|
|
|
# email_thread= threading.Thread(target=send_login_credentials, args=(FirstName, Login, Password, Email1))
|
|
|
|
# email_thread.start()
|
|
|
|
|
|
|
|
# Return JSON response
|
|
|
|
return JsonResponse({'status': 'success', 'message': 'Internal team details saved successfully.'})
|
|
|
|
else:
|
|
|
|
return HttpResponse('Invalid request method', status=405)
|
|
|
|
|
|
|
|
# def send_login_credentials(FirstName, Login, Password, Email1):
|
|
|
|
# subject = 'Your Login Credentials'
|
|
|
|
# message = f'Hi {FirstName}, \n\n Your Login Credentials are: \n Login_id : {Login} \n Password : {Password}'
|
|
|
|
# from_email = 'subramanyajithendra@gmail.com'
|
|
|
|
# recipient_list = [Email1]
|
|
|
|
# send_mail(subject, message, from_email, recipient_list)
|
|
|
|
|
|
|
|
|
|
|
|
def validate_internal_team(request):
|
|
|
|
if request.method == 'GET':
|
|
|
|
email1 = request.GET.get('Email1')
|
|
|
|
email2 = request.GET.get('Email2')
|
|
|
|
phone_number1 = request.GET.get('PhoneNo1')
|
|
|
|
phone_number2 = request.GET.get('LandNumber')
|
|
|
|
response = {
|
|
|
|
'exists': False
|
|
|
|
}
|
|
|
|
if email1 and (InternalTeam.objects.filter(Email1=email1).exists() or InternalTeam.objects.filter(Email2=email1).exists()):
|
|
|
|
response['exists'] = True
|
|
|
|
if email2 and (InternalTeam.objects.filter(Email1=email2).exists() or InternalTeam.objects.filter(Email2=email2).exists()):
|
|
|
|
response['exists'] = True
|
|
|
|
if phone_number1 and (InternalTeam.objects.filter(PhoneNo1=phone_number1).exists() or InternalTeam.objects.filter(LandNumber=phone_number1).exists()):
|
|
|
|
response['exists'] = True
|
|
|
|
elif phone_number2 and (InternalTeam.objects.filter(PhoneNo1=phone_number2).exists() or InternalTeam.objects.filter(LandNumber=phone_number2).exists()):
|
|
|
|
response['exists'] = True
|
|
|
|
return JsonResponse(response)
|
|
|
|
|
|
|
|
|
|
|
|
# def existing_employee(request):
|
|
|
|
# employees = InternalTeam.objects.all()
|
|
|
|
#
|
|
|
|
# employees_data = []
|
|
|
|
# for employee in employees:
|
|
|
|
# employees_data.append({
|
|
|
|
# 'FirstName': employee.FirstName,
|
|
|
|
# 'LastName': employee.LastName,
|
|
|
|
# 'Designation': employee.Designation,
|
|
|
|
# 'Department': employee.Department,
|
|
|
|
# 'Address_1': employee.Address_1,
|
|
|
|
# 'Address_2': employee.Address_2,
|
|
|
|
# 'City': employee.City,
|
|
|
|
# 'State': employee.State,
|
|
|
|
# 'Pincode': employee.Pincode,
|
|
|
|
# 'Country': employee.Country,
|
|
|
|
# 'PhoneNo1': employee.PhoneNo1,
|
|
|
|
# 'PhoneNo2': employee.PhoneNo2,
|
|
|
|
# 'Email1': employee.Email1,
|
|
|
|
# 'Email2': employee.Email2,
|
|
|
|
# 'Band': employee.Band
|
|
|
|
# })
|
|
|
|
#
|
|
|
|
# return JsonResponse({'employees': employees_data})
|
|
|
|
|
|
|
|
|
|
|
|
def get_row_count(request):
|
|
|
|
if request.method == 'POST' and request.FILES['excelFile']:
|
|
|
|
try:
|
|
|
|
excel_file = request.FILES['excelFile']
|
|
|
|
df = pd.read_excel(excel_file) # Requires pandas and openpyxl
|
|
|
|
row_count = len(df.index) # Count the rows in the DataFrame
|
|
|
|
return JsonResponse({'row_count': row_count})
|
|
|
|
except Exception as e:
|
|
|
|
return JsonResponse({'error': str(e)}, status=400)
|
|
|
|
return JsonResponse({'error': 'Invalid request'}, status=400)
|
|
|
|
|
|
|
|
def load_excel_data(request):
|
|
|
|
if request.method == 'POST' and request.FILES.get('excelFile'):
|
|
|
|
excel_file = request.FILES['excelFile']
|
|
|
|
data = pd.read_excel(excel_file)
|
|
|
|
|
|
|
|
required_columns = ['FirstName', 'LastName', 'Designation', 'Department', 'Address_1', 'City',
|
|
|
|
'State', 'Pincode', 'Country', 'PhoneNo1','LandNumber', 'Email1', 'Level']
|
|
|
|
|
|
|
|
data[['PhoneNo1', 'LandNumber']] = data[['PhoneNo1', 'LandNumber']].fillna('')
|
|
|
|
|
|
|
|
empty_fields = {}
|
|
|
|
|
|
|
|
for column in required_columns:
|
|
|
|
if column not in ['PhoneNo1','LandNumber'] and data[column].isnull().any():
|
|
|
|
empty_fields[column] = data[data[column].isnull()].index.tolist()
|
|
|
|
|
|
|
|
missing_contact = data[(data['PhoneNo1'] == '') & (data['LandNumber'] == '')].index.tolist()
|
|
|
|
|
|
|
|
if missing_contact:
|
|
|
|
empty_fields['Contact'] = missing_contact
|
|
|
|
|
|
|
|
if empty_fields:
|
|
|
|
return JsonResponse({'error': True,
|
|
|
|
'message': 'Some fields are empty in the provided Excel sheet.','empty_fields': empty_fields}, status=400)
|
|
|
|
|
|
|
|
valid_data = data[(data['PhoneNo1'] != '') | (data['LandNumber'] != '')]
|
|
|
|
print(valid_data)
|
|
|
|
|
|
|
|
return JsonResponse({'error': False,'data': valid_data.to_dict(orient='records')}, safe=False)
|
|
|
|
|
|
|
|
return JsonResponse({'error': True,'message': "No file uploaded"}, status=400)
|
|
|
|
|
|
|
|
|
|
|
|
def process_row(request):
|
|
|
|
if request.method == 'POST':
|
|
|
|
try:
|
|
|
|
row_data = json.load(request.body)
|
|
|
|
print(row_data)
|
|
|
|
|
|
|
|
FirstName = row_data.get('FirstName')
|
|
|
|
LastName = row_data.get('LastName')
|
|
|
|
Designation = row_data.get('Designation')
|
|
|
|
Department = row_data.get('Department')
|
|
|
|
Address_1 = row_data.get('Address_1')
|
|
|
|
Address_2 = row_data.get('Address_2')
|
|
|
|
City = row_data.get('City')
|
|
|
|
State = row_data.get('State')
|
|
|
|
Pincode = row_data.get('Pincode')
|
|
|
|
PhoneNo1 = row_data.get('PhoneNo1')
|
|
|
|
LandNumber = row_data.get('LandNumber')
|
|
|
|
Email1 = row_data.get('Email1')
|
|
|
|
Email2 = row_data.get('Email2')
|
|
|
|
Level = row_data.get('Level')
|
|
|
|
|
|
|
|
return JsonResponse({"message": "Row processed successfully", "data": row_data}, status=200)
|
|
|
|
|
|
|
|
except Exception as e:
|
|
|
|
return JsonResponse({"error": f"Failed to process row: {str(e)}"}, status=400)
|
|
|
|
|
|
|
|
return JsonResponse({"error": "Invalid request method"}, status=400)
|
|
|
|
|
|
|
|
|
|
|
|
def existing_employee(request):
|
|
|
|
employees = InternalTeam.objects.all()
|
|
|
|
|
|
|
|
employees_data = []
|
|
|
|
for employee in employees:
|
|
|
|
employees_data.append({
|
|
|
|
'FirstName': employee.FirstName,
|
|
|
|
'LastName': employee.LastName,
|
|
|
|
'Designation': employee.Designation,
|
|
|
|
'Department': employee.Department,
|
|
|
|
'PhoneNo1': employee.PhoneNo1,
|
|
|
|
'LandNumber': employee.LandNumber,
|
|
|
|
'Email1': employee.Email1,
|
|
|
|
'Email2': employee.Email2,
|
|
|
|
'Level': employee.Level
|
|
|
|
})
|
|
|
|
|
|
|
|
return JsonResponse({'employees': employees_data})
|
|
|
|
|
|
|
|
def get_employee(request):
|
|
|
|
if request.method == 'GET':
|
|
|
|
firstName = request.GET.get('firstName')
|
|
|
|
lastName = request.GET.get('lastName')
|
|
|
|
email = request.GET.get('Email1')
|
|
|
|
print('email:',email)
|
|
|
|
try:
|
|
|
|
|
|
|
|
emp_obj = InternalTeam.objects.filter((Q(FirstName=firstName) | Q(LastName=lastName)) & Q(Email1=email)).first()
|
|
|
|
emp_data = {
|
|
|
|
'FirstName': emp_obj.FirstName,
|
|
|
|
'LastName': emp_obj.LastName,
|
|
|
|
'Designation': emp_obj.Designation,
|
|
|
|
'Department': emp_obj.Department,
|
|
|
|
'Address_1': emp_obj.Address_1,
|
|
|
|
'Address_2': emp_obj.Address_2,
|
|
|
|
'City': emp_obj.City,
|
|
|
|
'State': emp_obj.State,
|
|
|
|
'Pincode': emp_obj.Pincode,
|
|
|
|
'Country': emp_obj.Country,
|
|
|
|
'PhoneNo1': emp_obj.PhoneNo1,
|
|
|
|
'LandNumber': emp_obj.LandNumber,
|
|
|
|
'Email1': emp_obj.Email1,
|
|
|
|
'Email2': emp_obj.Email2,
|
|
|
|
'Level': emp_obj.Level,
|
|
|
|
}
|
|
|
|
return JsonResponse(emp_data)
|
|
|
|
except InternalTeam.DoesNotExist:
|
|
|
|
return JsonResponse({'error': 'Client not found'}, status=404)
|
|
|
|
else:
|
|
|
|
return JsonResponse({'error': 'Invalid request method'}, status=400)
|