|
|
|
<!DOCTYPE html>
|
|
|
|
<html lang="en">
|
|
|
|
<head>
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
<title>Document</title>
|
|
|
|
</head>
|
|
|
|
<style>
|
|
|
|
.addSubclient{
|
|
|
|
body {
|
|
|
|
font-family: Arial, sans-serif;
|
|
|
|
overflow: hidden;
|
|
|
|
}
|
|
|
|
.container {
|
|
|
|
width: 65rem;
|
|
|
|
margin: auto;
|
|
|
|
padding: 20px;
|
|
|
|
border-radius: 10px;
|
|
|
|
overflow: hidden;
|
|
|
|
}
|
|
|
|
.two-col {
|
|
|
|
display: flex;
|
|
|
|
white-space: nowrap;
|
|
|
|
margin-left: 100px;
|
|
|
|
}
|
|
|
|
.three-col .col1,
|
|
|
|
.three-col .col2 {
|
|
|
|
flex: 0 0 22%;
|
|
|
|
}
|
|
|
|
.two-col .form-group {
|
|
|
|
margin-bottom: 15px;
|
|
|
|
}
|
|
|
|
.two-col input,
|
|
|
|
.two-col select {
|
|
|
|
width: calc(100% - 50px);
|
|
|
|
padding: 10px;
|
|
|
|
border-radius: 10px;
|
|
|
|
border: 1px solid black;
|
|
|
|
}
|
|
|
|
label.required::after {
|
|
|
|
content: "*";
|
|
|
|
color: red;
|
|
|
|
margin-left: 5px;
|
|
|
|
}
|
|
|
|
.form-group {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: row-reverse;
|
|
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
.form-group label {
|
|
|
|
margin-left: 10px;
|
|
|
|
}
|
|
|
|
#Address {
|
|
|
|
margin-left: 40px;
|
|
|
|
border-radius: 10px;
|
|
|
|
}
|
|
|
|
ul {
|
|
|
|
list-style-type: none;
|
|
|
|
padding: 0;
|
|
|
|
margin-bottom: 20px;
|
|
|
|
margin-left: 300px;
|
|
|
|
}
|
|
|
|
li {
|
|
|
|
float:left;
|
|
|
|
margin-bottom: 20px;
|
|
|
|
margin-left: -10px;
|
|
|
|
}
|
|
|
|
li a {
|
|
|
|
display: block;
|
|
|
|
color: black;
|
|
|
|
text-align: center;
|
|
|
|
padding: 1px;
|
|
|
|
text-decoration: underline;
|
|
|
|
margin-top: 20px;
|
|
|
|
margin-left: 60px;
|
|
|
|
}
|
|
|
|
a:hover {
|
|
|
|
color:red;
|
|
|
|
}
|
|
|
|
.container1 {
|
|
|
|
margin-left: 500px;
|
|
|
|
width: 900px;
|
|
|
|
}
|
|
|
|
.add p {
|
|
|
|
margin-left: 370px;
|
|
|
|
margin-top: 3px;
|
|
|
|
}
|
|
|
|
.add a {
|
|
|
|
text-decoration: none;
|
|
|
|
}
|
|
|
|
.container1 input[type="text"] {
|
|
|
|
width: calc(100% - 20px);
|
|
|
|
margin-right: 10px;
|
|
|
|
}
|
|
|
|
.add span {
|
|
|
|
display: inline-block;
|
|
|
|
width: 25px;
|
|
|
|
height: 25px;
|
|
|
|
border: 2px solid black;
|
|
|
|
border-radius: 50%;
|
|
|
|
text-align: center;
|
|
|
|
line-height: 30px;
|
|
|
|
margin-left: 430px;
|
|
|
|
color: black;
|
|
|
|
}
|
|
|
|
#jobPostingForm1{
|
|
|
|
margin-left: -130px;
|
|
|
|
}
|
|
|
|
#jobPostingForm{
|
|
|
|
margin-left: -130px;
|
|
|
|
}
|
|
|
|
.container1 .col2 {
|
|
|
|
margin-top: -1px;
|
|
|
|
#ParentCompany{
|
|
|
|
|
|
|
|
|
|
|
|
}}
|
|
|
|
</style>
|
|
|
|
<body>
|
|
|
|
<div class="addSubclient">
|
|
|
|
<div class="container" style="width:200%; margin-left:210px;">
|
|
|
|
<form id="addSubClientForm" action="{% url 'save-details-subcompany' %}?admin_id={{ admin_id }}" method="post">
|
|
|
|
{% csrf_token %}
|
|
|
|
<div class="two-col" style="width:70%; margin-left:100px;">
|
|
|
|
<div class="col1" style="width:18%;">
|
|
|
|
<div class="form-group" style="margin-left:40px" >
|
|
|
|
<select id="ParentCompany" name="ParentCompany" required tabindex="1" style="margin-left:-65px">
|
|
|
|
<option value="" tabindex="1" style="margin-left:-55px;, width: 100px">Select Client</option>
|
|
|
|
|
|
|
|
{% for client in clients %}
|
|
|
|
<option value="{{ client.parent_company }}">{{ client.parent_company }}</option>
|
|
|
|
{% endfor %}
|
|
|
|
</select>
|
|
|
|
<label for="ParentCompany" class="required" style="width: 200px; margin-left:-650px;"><b>Parent Company:</b></label>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="form-group" style="position: relative; width: 380px;">
|
|
|
|
<input type="text" id="GSTNo" name="GSTNo" style="width: 100%; padding-right: 60px;" placeholder="Parent_GST default" tabindex="3" oninput="this.value = this.value.toUpperCase()" disabled>
|
|
|
|
<label for="GSTNo" style="width: 200px; margin-left:-48px;"><b>Parent_GST No.</b></label>
|
|
|
|
<button type="button" id="changeButton" onclick="changeGST()" style="position: absolute; right: 10px; top: 50%; transform: translateY(-50%);">Change</button>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="form-group" style="margin-left:">
|
|
|
|
<input type="text" id="Address_1" name="Address_1" required placeholder="Address_1" tabindex="5" style= margin-left:-36px;">
|
|
|
|
<label for="Address_1" class="required" style="width: 200px; margin-left:-50px;"><b>Address_1:</b></label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group" >
|
|
|
|
<input type="text" id="City" name="City" required placeholder="City" tabindex="7" style= margin-left:-36px;">
|
|
|
|
<label for="City" class="required" style="width: 200px; margin-left:-50px;"><b>City:</b></label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
|
|
<input type="number" id="Pincode" name="Pincode" required placeholder="500090" tabindex="9" style="margin-left:-36px" oninput="if(this.value.length > 6) this.value = this.value.slice(0, 6);" pattern="\d{6}">
|
|
|
|
<label for="Pincode" class="required" style="width: 200px; margin-left:-50px;"><b>Pincode:</b></label>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="col2" style="width:20%">
|
|
|
|
<div class="form-group" >
|
|
|
|
<input type="text" id="SubCompany" name="SubCompany" style=" margin-left:1px; overflow-wrap: break-word;" required placeholder="Eg. oracle India" tabindex="2">
|
|
|
|
<label for="SubCompany" class="required" style="margin-left: 15px;"><b>Sub Company</b></label>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="form-group" style="margin-left:-60px">
|
|
|
|
<input type="text" id="Location_Id" name="Location_Id" required placeholder="Eg. bangalore" tabindex="4" style= margin-left:12px;" >
|
|
|
|
<label for="Location_Id" class="required" style="margin-left: 75px;"><b>Location_Id:</b></label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group" style="margin-left:-15px">
|
|
|
|
<input type="text" id="Address_2" name="Address_2" placeholder="optional" tabindex="6" style="margin-left: 33px;">
|
|
|
|
<label for="Address_2" style="margin-left: 28px;"><b>Address_2:</b></label>
|
|
|
|
</div>
|
|
|
|
<div class="form-group" style="margin-left:-15px">
|
|
|
|
<select id="State" name="State" style="margin-left: 65px;" required tabindex="8">
|
|
|
|
<option value="" selected disabled>Select State</option>
|
|
|
|
<option value="Andhra Pradesh">Andhra Pradesh</option>
|
|
|
|
<option value="Arunachal Pradesh">Arunachal Pradesh</option>
|
|
|
|
<option value="Assam">Assam</option>
|
|
|
|
<option value="Bihar">Bihar</option>
|
|
|
|
<option value="Chhattisgarh">Chhattisgarh</option>
|
|
|
|
<option value="Goa">Goa</option>
|
|
|
|
<option value="Gujarat">Gujarat</option>
|
|
|
|
<option value="Haryana">Haryana</option>
|
|
|
|
<option value="Himachal Pradesh">Himachal Pradesh</option>
|
|
|
|
<option value="Jharkhand">Jharkhand</option>
|
|
|
|
<option value="Karnataka">Karnataka</option>
|
|
|
|
<option value="Kerala">Kerala</option>
|
|
|
|
<option value="Madhya Pradesh">Madhya Pradesh</option>
|
|
|
|
<option value="Maharashtra">Maharashtra</option>
|
|
|
|
<option value="Manipur">Manipur</option>
|
|
|
|
<option value="Meghalaya">Meghalaya</option>
|
|
|
|
<option value="Mizoram">Mizoram</option>
|
|
|
|
<option value="Nagaland">Nagaland</option>
|
|
|
|
<option value="Odisha">Odisha</option>
|
|
|
|
<option value="Punjab">Punjab</option>
|
|
|
|
<option value="Rajasthan">Rajasthan</option>
|
|
|
|
<option value="Sikkim">Sikkim</option>
|
|
|
|
<option value="Tamil Nadu">Tamil Nadu</option>
|
|
|
|
<option value="Telangana">Telangana</option>
|
|
|
|
<option value="Tripura">Tripura</option>
|
|
|
|
<option value="Uttar Pradesh">Uttar Pradesh</option>
|
|
|
|
<option value="Uttarakhand">Uttarakhand</option>
|
|
|
|
<option value="West Bengal">West Bengal</option>
|
|
|
|
</select>
|
|
|
|
<label for="State" class="required" style="margin-left: 28px;"><b>State:</b></label>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="form-group" style="margin-left:-10px">
|
|
|
|
<input type="text" id="country" name="country" style="margin-left: 40px;" required placeholder="country" value="India" tabindex="10">
|
|
|
|
<label for="country" class="required" style="margin-left: 25px;"><b>Country:</b></label>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<button type="button" onclick="saveSubClient()" tabindex="11" style="border-radius: 5px; background-color:lightgreen; width: 100px; margin-left:400px; margin-top: 10px; padding: 5px; "> Save</button> </form>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<script>
|
|
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
|
|
var form = document.getElementById('secondForm');
|
|
|
|
form.addEventListener('submit', function(e) {
|
|
|
|
e.preventDefault(); // Prevent the default form submission
|
|
|
|
|
|
|
|
var formData = new FormData(form);
|
|
|
|
|
|
|
|
// AJAX request to the server
|
|
|
|
fetch("{% url 'save-details-subcompany' %}", {
|
|
|
|
method: 'POST',
|
|
|
|
body: formData,
|
|
|
|
headers: {
|
|
|
|
'X-CSRFToken': formData.get('csrfmiddlewaretoken') // Include CSRF token
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.then(response => response.json())
|
|
|
|
.then(data => {
|
|
|
|
console.log(data.message); // Log the success message
|
|
|
|
document.getElementById('successMessage').style.display = 'block'; // Show success message
|
|
|
|
form.reset(); // Reset the form fields
|
|
|
|
})
|
|
|
|
.catch(error => console.error('Error:', error));
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
function saveSubClient() {
|
|
|
|
const form = document.getElementById('addSubClientForm');
|
|
|
|
const requiredFields = form.querySelectorAll('input[required], select[required]');
|
|
|
|
|
|
|
|
let isValid = true;
|
|
|
|
|
|
|
|
// Clear any previous custom validation messages and reset border colors
|
|
|
|
requiredFields.forEach(field => {
|
|
|
|
field.setCustomValidity(''); // Clear previous validation message
|
|
|
|
field.style.borderColor = ''; // Reset border color
|
|
|
|
});
|
|
|
|
|
|
|
|
// Iterate over each required field to check if it has value
|
|
|
|
for (let field of requiredFields) {
|
|
|
|
if (!field.value.trim()) {
|
|
|
|
isValid = false;
|
|
|
|
|
|
|
|
// Highlight the empty field with a red border
|
|
|
|
field.style.borderColor = '';
|
|
|
|
|
|
|
|
// Set a custom validation message
|
|
|
|
field.setCustomValidity('Please fill out this field.');
|
|
|
|
|
|
|
|
// Show the validation message for this field
|
|
|
|
field.reportValidity();
|
|
|
|
|
|
|
|
// Focus the first invalid field
|
|
|
|
field.focus();
|
|
|
|
|
|
|
|
// Exit the loop after finding the first invalid field
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!isValid) {
|
|
|
|
// Prevent form submission if validation fails
|
|
|
|
console.log("Validation failed. Please fill out the required fields.");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Proceed with saving data if all fields are valid
|
|
|
|
const formData = new FormData(form);
|
|
|
|
const url = form.getAttribute('action');
|
|
|
|
|
|
|
|
console.log("Submitting form to:", url);
|
|
|
|
console.log("Form data:", [...formData.entries()]); // Log the form data
|
|
|
|
|
|
|
|
fetch(url, {
|
|
|
|
method: 'POST',
|
|
|
|
body: formData,
|
|
|
|
headers: {
|
|
|
|
'X-CSRFToken': '{{ csrf_token }}', // Assuming you have CSRF token available
|
|
|
|
},
|
|
|
|
})
|
|
|
|
.then(response => {
|
|
|
|
if (!response.ok) {
|
|
|
|
throw new Error('Network response was not ok');
|
|
|
|
}
|
|
|
|
return response.json();
|
|
|
|
})
|
|
|
|
.then(data => {
|
|
|
|
console.log('Success:', data);
|
|
|
|
alert('Client saved successfully.');
|
|
|
|
})
|
|
|
|
.catch(error => {
|
|
|
|
console.error('Error:', error);
|
|
|
|
alert('An error occurred while saving the job posting.');
|
|
|
|
});
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
</body>
|
|
|
|
</html>
|