Spaces:
Running
Running
Upload 53 files
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .gitattributes +3 -0
- DOCUMENTATION.md +9 -0
- assets/background1.jpg +0 -0
- assets/background2.jpg +0 -0
- assets/background3.jpg +0 -0
- assets/bgmain.gif +3 -0
- assets/comments.png +0 -0
- assets/hand.png +0 -0
- assets/shrug.png +0 -0
- assets/speech-bubble.gif +0 -0
- bot/20240210_194619.jpg +3 -0
- bot/data.js +30 -0
- bot/downloadIcon.svg +1 -0
- bot/favicon.ico +0 -0
- bot/github.svg +1 -0
- bot/gmail.svg +1 -0
- bot/icons8-close.svg +1 -0
- bot/index.html +52 -0
- bot/index.py +0 -0
- bot/instagram.svg +1 -0
- bot/linkedin.svg +1 -0
- bot/pdf.png +0 -0
- bot/phone.svg +1 -0
- bot/php/admin.php +91 -0
- bot/php/create_update_schedule.php +43 -0
- bot/php/delete_schedule_link.php +33 -0
- bot/php/get_applications.php +29 -0
- bot/php/get_link.php +30 -0
- bot/php/get_schedule.php +47 -0
- bot/php/save_applicant_info.php +54 -0
- bot/replies.json +28 -0
- bot/script.js +393 -0
- bot/scripts.js +309 -0
- bot/sentmessage.mp3 +0 -0
- bot/style.css +504 -0
- bot/swl.sql +13 -0
- bot/telegram.svg +1 -0
- bot/update_status.php +33 -0
- bot/whatsapp.svg +1 -0
- content.js +69 -0
- form.html +91 -0
- index.html +54 -0
- projects,md +30 -0
- scripts.js +66 -0
- styles.css +370 -0
- tokyo.gif +0 -0
- tokyo.webp +0 -0
- v/m/asset/background.gif +3 -0
- v/m/asset/comments.png +0 -0
- v/m/content.js +54 -0
.gitattributes
CHANGED
@@ -33,3 +33,6 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
+
assets/bgmain.gif filter=lfs diff=lfs merge=lfs -text
|
37 |
+
bot/20240210_194619.jpg filter=lfs diff=lfs merge=lfs -text
|
38 |
+
v/m/asset/background.gif filter=lfs diff=lfs merge=lfs -text
|
DOCUMENTATION.md
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
To ensure that all the modules are installed globally or on your project. Just run the following.
|
2 |
+
|
3 |
+
pip install
|
4 |
+
|
5 |
+
pip install
|
6 |
+
|
7 |
+
pip install
|
8 |
+
|
9 |
+
pip install
|
assets/background1.jpg
ADDED
![]() |
assets/background2.jpg
ADDED
![]() |
assets/background3.jpg
ADDED
![]() |
assets/bgmain.gif
ADDED
![]() |
Git LFS Details
|
assets/comments.png
ADDED
![]() |
assets/hand.png
ADDED
![]() |
assets/shrug.png
ADDED
![]() |
assets/speech-bubble.gif
ADDED
![]() |
bot/20240210_194619.jpg
ADDED
![]() |
Git LFS Details
|
bot/data.js
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var audio = new Audio('sentmessage.mp3');
|
2 |
+
var contactAngelo = "<div class='social'> <a target='_blank' href='tel:+639670971677'> <div class='socialItem' id='call'><img class='socialItemI' src='phone.svg'/><label class='number'></label></label></div> </a> <a href='mailto:[email protected]'> <div class='socialItem'><img class='socialItemI' src='gmail.svg' alt=''></div> </a> <a target='_blank' href='https://github.com/angeloqq03'> <div class='socialItem'><img class='socialItemI' src='github.svg' alt=''></div> </a> <a target='_blank' href='https://wa.me/639670971677'> <div class='socialItem'><img class='socialItemI' src='whatsapp.svg' alt=''>";
|
3 |
+
|
4 |
+
var addressString = "<iframe src='https://www.google.com/maps/place/Teresa,+Rizal/@14.564381,121.2249255,14z/data=!3m1!4b1!4m6!3m5!1s0x3397c064d31895b3:0x65a006a4044b8b23!8m2!3d14.5596491!4d121.2225713!16s%2Fg%2F11fyxbpxh8?entry=ttu' frameborder='0' />";
|
5 |
+
|
6 |
+
const $ = {
|
7 |
+
a:[],
|
8 |
+
|
9 |
+
selector:{
|
10 |
+
selector1:['selector here with options']
|
11 |
+
}
|
12 |
+
}
|
13 |
+
|
14 |
+
const conversation = {
|
15 |
+
stage: 0,
|
16 |
+
applicantInfo: {
|
17 |
+
firstName: "",
|
18 |
+
lastName: "",
|
19 |
+
middleName: "",
|
20 |
+
age: "",
|
21 |
+
email: "",
|
22 |
+
phoneNumber: "",
|
23 |
+
address: "",
|
24 |
+
code: ""
|
25 |
+
}
|
26 |
+
};
|
27 |
+
$.a.push(6);
|
28 |
+
$.a.push(1);
|
29 |
+
$.a.push()
|
30 |
+
console.log($.a);
|
bot/downloadIcon.svg
ADDED
|
bot/favicon.ico
ADDED
|
bot/github.svg
ADDED
|
bot/gmail.svg
ADDED
|
bot/icons8-close.svg
ADDED
|
bot/index.html
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html lang="en" width="80%" height="80%">
|
3 |
+
|
4 |
+
<head>
|
5 |
+
<meta charset="UTF-8">
|
6 |
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
7 |
+
<link rel="stylesheet" href="style.css">
|
8 |
+
<script src="script.js"></script>
|
9 |
+
<script src="data.js"></script>
|
10 |
+
<title>Developer | Angelo Collins </title>
|
11 |
+
</head>
|
12 |
+
<body onload="startFunction()" >
|
13 |
+
<nav>
|
14 |
+
<div class="navbar">
|
15 |
+
<img class="dpimg" onclick="openFullScreenDP()" src="20240210_194619.jpg" alt="">
|
16 |
+
<div class="personalInfo">
|
17 |
+
<label id="name">Angelo Collins</label>
|
18 |
+
<label id="lastseen">last seen today at 3:24 pms</label>
|
19 |
+
</div>
|
20 |
+
</div>
|
21 |
+
</nav>
|
22 |
+
<div class="scrollable" id="myScrollable">
|
23 |
+
<div class="fullScreenDP" id="fullScreenDP">
|
24 |
+
<div class="insideDP">
|
25 |
+
<img class="dp" src="" alt="">
|
26 |
+
<svg class="closeBTN" onclick="closeFullDP()" xmlns="http://www.w3.org/2000/svg" width="64px"
|
27 |
+
viewBox="0 0 512 512" height="64px">
|
28 |
+
<path class="btnColor" fill="#E04F5F"
|
29 |
+
d="M504.1,256C504.1,119,393,7.9,256,7.9C119,7.9,7.9,119,7.9,256C7.9,393,119,504.1,256,504.1C393,504.1,504.1,393,504.1,256z" />
|
30 |
+
<path fill="#FFF"
|
31 |
+
d="M285,256l72.5-84.2c7.9-9.2,6.9-23-2.3-31c-9.2-7.9-23-6.9-30.9,2.3L256,222.4l-68.2-79.2c-7.9-9.2-21.8-10.2-31-2.3c-9.2,7.9-10.2,21.8-2.3,31L227,256l-72.5,84.2c-7.9,9.2-6.9,23,2.3,31c4.1,3.6,9.2,5.3,14.3,5.3c6.2,0,12.3-2.6,16.6-7.6l68.2-79.2l68.2,79.2c4.3,5,10.5,7.6,16.6,7.6c5.1,0,10.2-1.7,14.3-5.3c9.2-7.9,10.2-21.8,2.3-31L285,256z" />
|
32 |
+
</svg>
|
33 |
+
</div>
|
34 |
+
</div>
|
35 |
+
<div id="chatting" class="chatting">
|
36 |
+
<ul id="listUL">
|
37 |
+
</ul>
|
38 |
+
</div>
|
39 |
+
</div>
|
40 |
+
<footer>
|
41 |
+
<div class="sendBar">
|
42 |
+
<input id="inputMSG" onkeypress="isEnter(event)" type="text" placeholder="Type a message" autofocus>
|
43 |
+
<svg onclick="sendMsg()" viewBox="0 0 24 24" width="24" height="24" class="">
|
44 |
+
<path fill="currentColor"
|
45 |
+
d="M1.101 21.757 23.8 12.028 1.101 2.3l.011 7.912 13.623 1.816-13.623 1.817-.011 7.912z"></path>
|
46 |
+
</svg>
|
47 |
+
</div>
|
48 |
+
</footer>
|
49 |
+
|
50 |
+
</body>
|
51 |
+
|
52 |
+
</html>
|
bot/index.py
ADDED
File without changes
|
bot/instagram.svg
ADDED
|
bot/linkedin.svg
ADDED
|
bot/pdf.png
ADDED
![]() |
bot/phone.svg
ADDED
|
bot/php/admin.php
ADDED
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html lang="en">
|
3 |
+
<head>
|
4 |
+
<meta charset="UTF-8">
|
5 |
+
<title>Admin Panel</title>
|
6 |
+
</head>
|
7 |
+
<body>
|
8 |
+
<h1>Admin Panel</h1>
|
9 |
+
|
10 |
+
<!-- Form to Add Schedule and Link -->
|
11 |
+
<h2>Add Schedule and Link for Applicant</h2>
|
12 |
+
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="POST">
|
13 |
+
<label for="applicant_code">Applicant Code:</label>
|
14 |
+
<input type="text" id="applicant_code" name="applicant_code" required><br><br>
|
15 |
+
|
16 |
+
<label for="schedule_date">Schedule Date:</label>
|
17 |
+
<input type="date" id="schedule_date" name="schedule_date" required><br><br>
|
18 |
+
|
19 |
+
<label for="link">Link:</label>
|
20 |
+
<input type="text" id="link" name="link" required><br><br>
|
21 |
+
|
22 |
+
<input type="submit" name="submit" value="Add Schedule and Link">
|
23 |
+
</form>
|
24 |
+
|
25 |
+
<hr>
|
26 |
+
|
27 |
+
<!-- Display Existing Schedules and Links -->
|
28 |
+
<h2>Existing Schedules and Links</h2>
|
29 |
+
<table border="1">
|
30 |
+
<tr>
|
31 |
+
<th>Applicant Code</th>
|
32 |
+
<th>Schedule Date</th>
|
33 |
+
<th>Link</th>
|
34 |
+
<th>Action</th>
|
35 |
+
</tr>
|
36 |
+
<?php
|
37 |
+
// Database Connection
|
38 |
+
$servername = "localhost";
|
39 |
+
$username = "root";
|
40 |
+
$password = "";
|
41 |
+
$dbname = "angelol";
|
42 |
+
|
43 |
+
// Create connection
|
44 |
+
$conn = new mysqli($servername, $username, $password, $dbname);
|
45 |
+
|
46 |
+
// Check connection
|
47 |
+
if ($conn->connect_error) {
|
48 |
+
die("Connection failed: " . $conn->connect_error);
|
49 |
+
}
|
50 |
+
|
51 |
+
// If form is submitted, add new schedule and link
|
52 |
+
if(isset($_POST['submit'])) {
|
53 |
+
$applicantCode = $_POST['applicant_code'];
|
54 |
+
$scheduleDate = $_POST['schedule_date'];
|
55 |
+
$link = $_POST['link'];
|
56 |
+
|
57 |
+
// SQL to insert data into applicant_schedule table
|
58 |
+
$sql = "INSERT INTO applicant_schedule (applicant_code, schedule_date, link)
|
59 |
+
VALUES ('$applicantCode', '$scheduleDate', '$link')";
|
60 |
+
|
61 |
+
if ($conn->query($sql) === TRUE) {
|
62 |
+
// Data inserted successfully
|
63 |
+
echo "<script>alert('New schedule and link added successfully');</script>";
|
64 |
+
} else {
|
65 |
+
// Error inserting data
|
66 |
+
echo "Error: " . $sql . "<br>" . $conn->error;
|
67 |
+
}
|
68 |
+
}
|
69 |
+
|
70 |
+
// SQL to retrieve schedules and links
|
71 |
+
$sql = "SELECT * FROM applicant_schedule";
|
72 |
+
$result = $conn->query($sql);
|
73 |
+
|
74 |
+
if ($result->num_rows > 0) {
|
75 |
+
// Output data of each row
|
76 |
+
while($row = $result->fetch_assoc()) {
|
77 |
+
echo "<tr>";
|
78 |
+
echo "<td>" . $row["applicant_code"] . "</td>";
|
79 |
+
echo "<td>" . $row["schedule_date"] . "</td>";
|
80 |
+
echo "<td>" . $row["link"] . "</td>";
|
81 |
+
echo "<td><a href='delete_schedule_link.php?id=" . $row["id"] . "'>Delete</a></td>";
|
82 |
+
echo "</tr>";
|
83 |
+
}
|
84 |
+
} else {
|
85 |
+
echo "<tr><td colspan='4'>No schedules and links found</td></tr>";
|
86 |
+
}
|
87 |
+
$conn->close();
|
88 |
+
?>
|
89 |
+
</table>
|
90 |
+
</body>
|
91 |
+
</html>
|
bot/php/create_update_schedule.php
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Database Connection
|
3 |
+
$servername = "localhost";
|
4 |
+
$username = "root";
|
5 |
+
$password = "";
|
6 |
+
$dbname = "angelol";
|
7 |
+
|
8 |
+
// Create connection
|
9 |
+
$conn = new mysqli($servername, $username, $password, $dbname);
|
10 |
+
|
11 |
+
// Check connection
|
12 |
+
if ($conn->connect_error) {
|
13 |
+
die("Connection failed: " . $conn->connect_error);
|
14 |
+
}
|
15 |
+
|
16 |
+
$applicantCode = $_POST['applicant_code'];
|
17 |
+
$scheduleDate = $_POST['schedule_date'];
|
18 |
+
$link = $_POST['link'];
|
19 |
+
|
20 |
+
// Check if applicant code already exists
|
21 |
+
$sql_check = "SELECT * FROM applicant_schedule WHERE applicant_code = '$applicantCode'";
|
22 |
+
$result_check = $conn->query($sql_check);
|
23 |
+
|
24 |
+
if ($result_check->num_rows > 0) {
|
25 |
+
// Update existing record
|
26 |
+
$sql_update = "UPDATE applicant_schedule SET schedule_date = '$scheduleDate', link = '$link' WHERE applicant_code = '$applicantCode'";
|
27 |
+
if ($conn->query($sql_update) === TRUE) {
|
28 |
+
echo "Record updated successfully";
|
29 |
+
} else {
|
30 |
+
echo "Error updating record: " . $conn->error;
|
31 |
+
}
|
32 |
+
} else {
|
33 |
+
// Insert new record
|
34 |
+
$sql_insert = "INSERT INTO applicant_schedule (applicant_code, schedule_date, link) VALUES ('$applicantCode', '$scheduleDate', '$link')";
|
35 |
+
if ($conn->query($sql_insert) === TRUE) {
|
36 |
+
echo "New record created successfully";
|
37 |
+
} else {
|
38 |
+
echo "Error: " . $sql_insert . "<br>" . $conn->error;
|
39 |
+
}
|
40 |
+
}
|
41 |
+
|
42 |
+
$conn->close();
|
43 |
+
?>
|
bot/php/delete_schedule_link.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Database Connection
|
3 |
+
$servername = "localhost";
|
4 |
+
$username = "root";
|
5 |
+
$password = "";
|
6 |
+
$dbname = "angelol";
|
7 |
+
|
8 |
+
// Create connection
|
9 |
+
$conn = new mysqli($servername, $username, $password, $dbname);
|
10 |
+
|
11 |
+
// Check connection
|
12 |
+
if ($conn->connect_error) {
|
13 |
+
die("Connection failed: " . $conn->connect_error);
|
14 |
+
}
|
15 |
+
|
16 |
+
// Check if ID is set and valid
|
17 |
+
if (isset($_POST['id']) && is_numeric($_POST['id'])) {
|
18 |
+
$id = $_POST['id'];
|
19 |
+
|
20 |
+
// SQL to delete schedule
|
21 |
+
$sql = "DELETE FROM applicant_schedule WHERE id = $id";
|
22 |
+
|
23 |
+
if ($conn->query($sql) === TRUE) {
|
24 |
+
echo "Schedule deleted successfully";
|
25 |
+
} else {
|
26 |
+
echo "Error deleting schedule: " . $conn->error;
|
27 |
+
}
|
28 |
+
} else {
|
29 |
+
echo "Invalid ID";
|
30 |
+
}
|
31 |
+
|
32 |
+
$conn->close();
|
33 |
+
?>
|
bot/php/get_applications.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Connect to your database
|
3 |
+
$servername = "localhost";
|
4 |
+
$username = "root";
|
5 |
+
$password = "";
|
6 |
+
$dbname = "angelol";
|
7 |
+
|
8 |
+
$conn = new mysqli($servername, $username, $password, $dbname);
|
9 |
+
if ($conn->connect_error) {
|
10 |
+
die("Connection failed: " . $conn->connect_error);
|
11 |
+
}
|
12 |
+
|
13 |
+
// Query to get all applications
|
14 |
+
$sql = "SELECT * FROM applications";
|
15 |
+
$result = $conn->query($sql);
|
16 |
+
|
17 |
+
$applications = array();
|
18 |
+
if ($result->num_rows > 0) {
|
19 |
+
while ($row = $result->fetch_assoc()) {
|
20 |
+
$applications[] = $row;
|
21 |
+
}
|
22 |
+
}
|
23 |
+
|
24 |
+
$conn->close();
|
25 |
+
|
26 |
+
// Return applications as JSON
|
27 |
+
header('Content-Type: application/json');
|
28 |
+
echo json_encode($applications);
|
29 |
+
?>
|
bot/php/get_link.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Connect to your database
|
3 |
+
$servername = "localhost";
|
4 |
+
$username = "your_username";
|
5 |
+
$password = "your_password";
|
6 |
+
$dbname = "your_database";
|
7 |
+
|
8 |
+
$conn = new mysqli($servername, $username, $password, $dbname);
|
9 |
+
if ($conn->connect_error) {
|
10 |
+
die("Connection failed: " . $conn->connect_error);
|
11 |
+
}
|
12 |
+
|
13 |
+
// Get code from POST request
|
14 |
+
$code = $_POST['code'];
|
15 |
+
|
16 |
+
// Query to get link based on code
|
17 |
+
$sql = "SELECT link FROM applications WHERE code='$code'";
|
18 |
+
$result = $conn->query($sql);
|
19 |
+
|
20 |
+
$link = "";
|
21 |
+
if ($result->num_rows > 0) {
|
22 |
+
$row = $result->fetch_assoc();
|
23 |
+
$link = $row['link'];
|
24 |
+
}
|
25 |
+
|
26 |
+
$conn->close();
|
27 |
+
|
28 |
+
// Return link
|
29 |
+
echo $link;
|
30 |
+
?>
|
bot/php/get_schedule.php
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Database Connection
|
4 |
+
$servername = "localhost";
|
5 |
+
$username = "root";
|
6 |
+
$password = "";
|
7 |
+
$dbname = "angelol";
|
8 |
+
|
9 |
+
// Create connection
|
10 |
+
$conn = new mysqli($servername, $username, $password, $dbname);
|
11 |
+
|
12 |
+
// Check connection
|
13 |
+
if ($conn->connect_error) {
|
14 |
+
die("Connection failed: " . $conn->connect_error);
|
15 |
+
}
|
16 |
+
|
17 |
+
// Assume $code is retrieved from POST data
|
18 |
+
$code = $_POST['code'];
|
19 |
+
|
20 |
+
// SQL to retrieve schedule date and link based on code
|
21 |
+
$sql = "SELECT schedule_date, interview_link FROM interview_schedules WHERE applicant_code = '$code'";
|
22 |
+
|
23 |
+
$result = $conn->query($sql);
|
24 |
+
|
25 |
+
if ($result->num_rows > 0) {
|
26 |
+
$row = $result->fetch_assoc();
|
27 |
+
$scheduleDate = $row["schedule_date"];
|
28 |
+
$link = $row["interview_link"];
|
29 |
+
|
30 |
+
$response = array(
|
31 |
+
"success" => true,
|
32 |
+
"scheduleDate" => $scheduleDate,
|
33 |
+
"link" => $link
|
34 |
+
);
|
35 |
+
} else {
|
36 |
+
$response = array(
|
37 |
+
"success" => false,
|
38 |
+
"message" => "No schedule found for the provided code"
|
39 |
+
);
|
40 |
+
}
|
41 |
+
|
42 |
+
$conn->close();
|
43 |
+
|
44 |
+
header('Content-Type: application/json');
|
45 |
+
echo json_encode($response);
|
46 |
+
|
47 |
+
?>
|
bot/php/save_applicant_info.php
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Database Connection
|
4 |
+
$servername = "localhost";
|
5 |
+
$username = "root";
|
6 |
+
$password = "root";
|
7 |
+
$dbname = "angelol";
|
8 |
+
|
9 |
+
// Create connection
|
10 |
+
$conn = new mysqli($servername, $username, $password, $dbname);
|
11 |
+
|
12 |
+
// Check connection
|
13 |
+
if ($conn->connect_error) {
|
14 |
+
die("Connection failed: " . $conn->connect_error);
|
15 |
+
}
|
16 |
+
|
17 |
+
// Get applicant data from POST
|
18 |
+
$firstName = $_POST['firstName'];
|
19 |
+
$lastName = $_POST['lastName'];
|
20 |
+
$middleName = $_POST['middleName'];
|
21 |
+
$age = $_POST['age'];
|
22 |
+
$email = $_POST['email'];
|
23 |
+
$phoneNumber = $_POST['phoneNumber'];
|
24 |
+
$address = $_POST['address'];
|
25 |
+
|
26 |
+
// Function to generate unique 12-character alphanumeric code
|
27 |
+
function generateCode() {
|
28 |
+
$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
29 |
+
$result = '';
|
30 |
+
$charactersLength = strlen($characters);
|
31 |
+
for ($i = 0; $i < 12; $i++) {
|
32 |
+
$result .= $characters[rand(0, $charactersLength - 1)];
|
33 |
+
}
|
34 |
+
return $result;
|
35 |
+
}
|
36 |
+
|
37 |
+
// Generate unique code
|
38 |
+
$applicantCode = generateCode();
|
39 |
+
|
40 |
+
// SQL to insert data into applicants table
|
41 |
+
$sql = "INSERT INTO applicants (first_name, last_name, middle_name, age, email, phone_number, address, code, status)
|
42 |
+
VALUES ('$firstName', '$lastName', '$middleName', '$age', '$email', '$phoneNumber', '$address', '$applicantCode', 'Active')";
|
43 |
+
|
44 |
+
if ($conn->query($sql) === TRUE) {
|
45 |
+
// Data inserted successfully
|
46 |
+
echo "Thank you! Your application has been submitted. To track the status of your application, here is a unique code: A-" . $applicantCode . ". Just send this format to check: A-" . $applicantCode;
|
47 |
+
} else {
|
48 |
+
// Error inserting data
|
49 |
+
echo "Error: " . $sql . "<br>" . $conn->error;
|
50 |
+
}
|
51 |
+
|
52 |
+
$conn->close();
|
53 |
+
|
54 |
+
?>
|
bot/replies.json
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"a":"",
|
3 |
+
"b":"",
|
4 |
+
"d":"",
|
5 |
+
"e":"",
|
6 |
+
"f":"",
|
7 |
+
"g":"",
|
8 |
+
"h":"",
|
9 |
+
"i":"",
|
10 |
+
"j":"",
|
11 |
+
"k":"",
|
12 |
+
"l":"",
|
13 |
+
"m":"",
|
14 |
+
"n":"",
|
15 |
+
"o":"",
|
16 |
+
"p":"",
|
17 |
+
"q":"",
|
18 |
+
"r":"",
|
19 |
+
"s":"",
|
20 |
+
"t":"",
|
21 |
+
"u":"",
|
22 |
+
"v":"",
|
23 |
+
"w":"",
|
24 |
+
"x":"",
|
25 |
+
"y":"",
|
26 |
+
"z":"",
|
27 |
+
"help":"<h1 onload='asax()'> Hello </h1>"
|
28 |
+
}
|
bot/script.js
ADDED
@@ -0,0 +1,393 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* OSCAR ANGELO COLLINS RIVERA @ 2024 */
|
2 |
+
console.log('OSCAR ANGELO COLLINS RIVERA','Angelo Collins on facebook');
|
3 |
+
|
4 |
+
|
5 |
+
var audio = new Audio('sentmessage.mp3');
|
6 |
+
var contactAngelo = "<div class='social'> <a target='_blank' href='tel:+639670971677'> <div class='socialItem' id='call'><img class='socialItemI' src='phone.svg'/><label class='number'></label></label></div> </a> <a href='mailto:[email protected]'> <div class='socialItem'><img class='socialItemI' src='gmail.svg' alt=''></div> </a> <a target='_blank' href='https://github.com/angeloqq03'> <div class='socialItem'><img class='socialItemI' src='github.svg' alt=''></div> </a> <a target='_blank' href='https://wa.me/639670971677'> <div class='socialItem'><img class='socialItemI' src='whatsapp.svg' alt=''>";
|
7 |
+
|
8 |
+
var addressString = "<iframe src='https://www.google.com/maps/place/Teresa,+Rizal/@14.564381,121.2249255,14z/data=!3m1!4b1!4m6!3m5!1s0x3397c064d31895b3:0x65a006a4044b8b23!8m2!3d14.5596491!4d121.2225713!16s%2Fg%2F11fyxbpxh8?entry=ttu' frameborder='0' />";
|
9 |
+
|
10 |
+
const $ = {
|
11 |
+
a:[],
|
12 |
+
|
13 |
+
selector:{
|
14 |
+
selector1:['selector here with options']
|
15 |
+
}
|
16 |
+
}
|
17 |
+
|
18 |
+
|
19 |
+
const conversation = {
|
20 |
+
stage: 0,
|
21 |
+
applicantInfo: {
|
22 |
+
firstName: "",
|
23 |
+
lastName: "",
|
24 |
+
middleName: "",
|
25 |
+
age: "",
|
26 |
+
email: "",
|
27 |
+
phoneNumber: "",
|
28 |
+
address: "",
|
29 |
+
code: ""
|
30 |
+
}
|
31 |
+
};
|
32 |
+
|
33 |
+
// Define a global variable to store the fetched replies
|
34 |
+
let replies = {};
|
35 |
+
|
36 |
+
|
37 |
+
setTimeout(() => {
|
38 |
+
repp(`
|
39 |
+
<h1>Hello</h1><br/>
|
40 |
+
<select class="select-start" id="select-start" onchange="started()">
|
41 |
+
<option> SELECT </option>
|
42 |
+
<option value="Services">Services</option>
|
43 |
+
<option> </option>
|
44 |
+
<option> </option>
|
45 |
+
</select>
|
46 |
+
`)
|
47 |
+
}, 1200);
|
48 |
+
|
49 |
+
|
50 |
+
const started = (selector) => {
|
51 |
+
selector = document.getElementById('select-start');
|
52 |
+
|
53 |
+
switch (selector.value) {
|
54 |
+
case "Services":
|
55 |
+
repp(`
|
56 |
+
<iframe class="ifrmm" src="/form.html" frameborder="0"/>
|
57 |
+
`)
|
58 |
+
break;
|
59 |
+
|
60 |
+
default:
|
61 |
+
break;
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
|
66 |
+
// Function to fetch replies from JSON file
|
67 |
+
function fetchReplies() {
|
68 |
+
fetch('replies.json')
|
69 |
+
.then(response => response.json())
|
70 |
+
.then(data => {
|
71 |
+
replies = data;
|
72 |
+
})
|
73 |
+
.catch(error => {
|
74 |
+
console.error('Error fetching replies:', error);
|
75 |
+
});
|
76 |
+
}
|
77 |
+
|
78 |
+
// Call fetchReplies() to load replies when the script starts
|
79 |
+
fetchReplies();
|
80 |
+
|
81 |
+
// Function to set last seen time
|
82 |
+
function setLastSeen() {
|
83 |
+
var date = new Date();
|
84 |
+
var lastSeen = document.getElementById("lastseen");
|
85 |
+
lastSeen.innerText = "last seen today at " + date.getHours() + ":" + date.getMinutes()
|
86 |
+
}
|
87 |
+
|
88 |
+
// Function to close full-screen display picture
|
89 |
+
function closeFullDP() {
|
90 |
+
var x = document.getElementById("fullScreenDP");
|
91 |
+
if (x.style.display === 'flex') {
|
92 |
+
x.style.display = 'none';
|
93 |
+
} else {
|
94 |
+
x.style.display = 'flex';
|
95 |
+
}
|
96 |
+
}
|
97 |
+
|
98 |
+
// Function to open full-screen display picture
|
99 |
+
function openFullScreenDP() {
|
100 |
+
var x = document.getElementById("fullScreenDP");
|
101 |
+
if (x.style.display === 'flex') {
|
102 |
+
x.style.display = 'none';
|
103 |
+
} else {
|
104 |
+
x.style.display = 'flex';
|
105 |
+
}
|
106 |
+
}
|
107 |
+
|
108 |
+
// Function to check if enter key is pressed
|
109 |
+
function isEnter(event) {
|
110 |
+
if (event.keyCode == 13) {
|
111 |
+
sendMsg();
|
112 |
+
}
|
113 |
+
}
|
114 |
+
|
115 |
+
// Function to send message
|
116 |
+
function sendMsg() {
|
117 |
+
var input = document.getElementById("inputMSG");
|
118 |
+
var ti = input.value;
|
119 |
+
if (input.value == "") {
|
120 |
+
return;
|
121 |
+
}
|
122 |
+
var date = new Date();
|
123 |
+
var myLI = document.createElement("li");
|
124 |
+
var myDiv = document.createElement("div");
|
125 |
+
var crDiv = document.createElement("div");
|
126 |
+
var dateLabel = document.createElement("label");
|
127 |
+
dateLabel.innerText = date.getHours() + ":" + date.getMinutes();
|
128 |
+
myDiv.setAttribute("class", "sent");
|
129 |
+
crDiv.setAttribute("class", "green");
|
130 |
+
crDiv.innerText = input.value;
|
131 |
+
myDiv.appendChild(crDiv);
|
132 |
+
myLI.appendChild(myDiv);
|
133 |
+
crDiv.appendChild(dateLabel);
|
134 |
+
document.getElementById("listUL").appendChild(myLI);
|
135 |
+
var s = document.getElementById("chatting");
|
136 |
+
s.scrollTop = s.scrollHeight;
|
137 |
+
setTimeout(function () { wNreply(ti) }, 2000);
|
138 |
+
input.value = "";
|
139 |
+
playSound();
|
140 |
+
}
|
141 |
+
|
142 |
+
// Function to generate unique code
|
143 |
+
function generateUniqueCode() {
|
144 |
+
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
145 |
+
var code = '';
|
146 |
+
for (var i = 0; i < 12; i++) {
|
147 |
+
code += characters.charAt(Math.floor(Math.random() * characters.length));
|
148 |
+
}
|
149 |
+
return code;
|
150 |
+
}
|
151 |
+
|
152 |
+
// Function to play sent message sound
|
153 |
+
function playSound() {
|
154 |
+
audio.play();
|
155 |
+
}
|
156 |
+
|
157 |
+
// Function to send response
|
158 |
+
function sendResponse() {
|
159 |
+
setTimeout(setLastSeen, 2000);
|
160 |
+
var date = new Date();
|
161 |
+
var myLI = document.createElement("li");
|
162 |
+
var myDiv = document.createElement("div");
|
163 |
+
var crDiv = document.createElement("div");
|
164 |
+
var dateLabel = document.createElement("label");
|
165 |
+
dateLabel.innerText = date.getHours() + ":" + date.getMinutes();
|
166 |
+
myDiv.setAttribute("class", "received");
|
167 |
+
crDiv.setAttribute("class", "grey");
|
168 |
+
dateLabel.setAttribute("class", "dateLabel");
|
169 |
+
crDiv.innerText = "";
|
170 |
+
myDiv.appendChild(crDiv);
|
171 |
+
myLI.appendChild(myDiv);
|
172 |
+
crDiv.appendChild(dateLabel);
|
173 |
+
document.getElementById("listUL").appendChild(myLI);
|
174 |
+
var s = document.getElementById("chatting");
|
175 |
+
s.scrollTop = s.scrollHeight;
|
176 |
+
playSound();
|
177 |
+
}
|
178 |
+
|
179 |
+
|
180 |
+
|
181 |
+
// Function to process user input and reply
|
182 |
+
function wNreply(inputText) {
|
183 |
+
var lastSeen = document.getElementById("lastseen");
|
184 |
+
lastSeen.innerText = "typing...";
|
185 |
+
var name = "";
|
186 |
+
|
187 |
+
|
188 |
+
|
189 |
+
let user = inputText.toLowerCase();
|
190 |
+
|
191 |
+
if (user.includes("my name is")) {
|
192 |
+
name = inputText.substring(inputText.indexOf("is") + 2);
|
193 |
+
if (name.toLowerCase().includes(name)) {
|
194 |
+
repp("Ohh! That's my name too" + name);
|
195 |
+
return
|
196 |
+
}
|
197 |
+
inputText = "input";
|
198 |
+
} else if (user.includes("gusto") || user.includes('applying')) {
|
199 |
+
repp("Im glad that you're interested for a Customer Service Representative Position. To get started, please enter your first name.");
|
200 |
+
conversation.stage = 1;
|
201 |
+
return;
|
202 |
+
} else if (user.includes('fb')) {
|
203 |
+
repp(DATA.form.form1);
|
204 |
+
return;
|
205 |
+
} else if (user.startsWith('a-')) {
|
206 |
+
checkApplicationStatus(user.substr(2)); // Extract the code after "A-"
|
207 |
+
return;
|
208 |
+
}
|
209 |
+
|
210 |
+
switch (user.trim()) {
|
211 |
+
case "help":
|
212 |
+
repp("help");
|
213 |
+
break;
|
214 |
+
case "resume":
|
215 |
+
repp(resumeString);
|
216 |
+
break;
|
217 |
+
case "intro":
|
218 |
+
repp("intro");
|
219 |
+
break;
|
220 |
+
case "i want to apply":
|
221 |
+
case "applicant":
|
222 |
+
case "apply":
|
223 |
+
case "applying for customer service position":
|
224 |
+
repp("To get started, please type your first name.");
|
225 |
+
conversation.stage = 1;
|
226 |
+
break;
|
227 |
+
case "clear":
|
228 |
+
clearChat();
|
229 |
+
break;
|
230 |
+
case "time":
|
231 |
+
var date = new Date();
|
232 |
+
repp("Current time is " + date.getHours() + ":" + date.getMinutes());
|
233 |
+
break;
|
234 |
+
case "date":
|
235 |
+
var date = new Date();
|
236 |
+
repp("Current date is " + date.getDate() + "/" + date.getMonth() + "/" + date.getFullYear());
|
237 |
+
break;
|
238 |
+
default:
|
239 |
+
if (conversation.stage > 0) {
|
240 |
+
// Handle collecting applicant information
|
241 |
+
processApplicantInfo(user.trim());
|
242 |
+
} else {
|
243 |
+
repp('Im quite not sure I understand that. You can try other term for that or just type "help" to see the other available commands.');
|
244 |
+
}
|
245 |
+
break;
|
246 |
+
}
|
247 |
+
|
248 |
+
}
|
249 |
+
|
250 |
+
// Function to process applicant information
|
251 |
+
function processApplicantInfo(input) {
|
252 |
+
switch (conversation.stage) {
|
253 |
+
|
254 |
+
case 1:
|
255 |
+
conversation.applicantInfo.firstName = input;
|
256 |
+
conversation.stage = 2;
|
257 |
+
repp("Next, please type your last name.");
|
258 |
+
break;
|
259 |
+
case 2:
|
260 |
+
conversation.applicantInfo.lastName = input;
|
261 |
+
conversation.stage = 3;
|
262 |
+
repp("Please provide your middle name (if any), or type 'none'.");
|
263 |
+
break;
|
264 |
+
case 3:
|
265 |
+
if (input.toLowerCase() === "none") {
|
266 |
+
conversation.applicantInfo.middleName = "None";
|
267 |
+
} else {
|
268 |
+
conversation.applicantInfo.middleName = input;
|
269 |
+
}
|
270 |
+
conversation.stage = 4;
|
271 |
+
repp("What is your age?");
|
272 |
+
break;
|
273 |
+
case 4:
|
274 |
+
conversation.applicantInfo.age = input;
|
275 |
+
conversation.stage = 5;
|
276 |
+
repp("Please enter your email address.");
|
277 |
+
break;
|
278 |
+
case 5:
|
279 |
+
conversation.applicantInfo.email = input;
|
280 |
+
conversation.stage = 6;
|
281 |
+
repp("Next, please provide your phone number.");
|
282 |
+
break;
|
283 |
+
case 6:
|
284 |
+
conversation.applicantInfo.phoneNumber = input;
|
285 |
+
conversation.stage = 7;
|
286 |
+
repp("Finally, type your present address.");
|
287 |
+
break;
|
288 |
+
case 7:
|
289 |
+
conversation.applicantInfo.address = input;
|
290 |
+
conversation.applicantInfo.code = generateUniqueCode();
|
291 |
+
saveApplicantInfo(conversation.applicantInfo); // Call a function to save this information to the database
|
292 |
+
conversation.stage = 0; // Reset the conversation stage
|
293 |
+
repp("Thank you! Your application has been submitted. To track the status of your application, here is a unique code: A-" + conversation.applicantInfo.code + ". Just send 'A-" + conversation.applicantInfo.code + "' to check.");
|
294 |
+
break;
|
295 |
+
default:
|
296 |
+
repp("I'm sorry, I didn't understand that.");
|
297 |
+
break;
|
298 |
+
}
|
299 |
+
}
|
300 |
+
|
301 |
+
// Function to clear chat
|
302 |
+
function clearChat() {
|
303 |
+
document.getElementById("listUL").innerHTML = "";
|
304 |
+
wNreply('intro');
|
305 |
+
}
|
306 |
+
|
307 |
+
// Function to fetch replies from JSON file
|
308 |
+
function repp(textKey) {
|
309 |
+
setTimeout(setLastSeen, 2000);
|
310 |
+
var date = new Date();
|
311 |
+
var myLI = document.createElement("li");
|
312 |
+
var myDiv = document.createElement("div");
|
313 |
+
var crDiv = document.createElement("div");
|
314 |
+
var dateLabel = document.createElement("label");
|
315 |
+
dateLabel.setAttribute("id", "sentlabel");
|
316 |
+
dateLabel.id = "sentlabel";
|
317 |
+
dateLabel.innerText = date.getHours() + ":" + date.getMinutes();
|
318 |
+
myDiv.setAttribute("class", "received");
|
319 |
+
crDiv.setAttribute("class", "grey");
|
320 |
+
|
321 |
+
// Check if the textKey exists in fetched replies, otherwise use the textKey itself
|
322 |
+
const replyText = replies[textKey] ? replies[textKey] : textKey;
|
323 |
+
|
324 |
+
crDiv.innerHTML = replyText;
|
325 |
+
myDiv.appendChild(crDiv);
|
326 |
+
myLI.appendChild(myDiv);
|
327 |
+
crDiv.appendChild(dateLabel);
|
328 |
+
document.getElementById("listUL").appendChild(myLI);
|
329 |
+
var s = document.getElementById("chatting");
|
330 |
+
s.scrollTop = s.scrollHeight;
|
331 |
+
playSound();
|
332 |
+
}
|
333 |
+
|
334 |
+
// Function to save applicant information
|
335 |
+
function saveApplicantInfo(applicantInfo) {
|
336 |
+
var xhr = new XMLHttpRequest();
|
337 |
+
xhr.open("POST", "save_applicant_info.php", true);
|
338 |
+
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
339 |
+
xhr.onreadystatechange = function() {
|
340 |
+
if (xhr.readyState === 4 && xhr.status === 200) {
|
341 |
+
console.log(xhr.responseText); // Log server response
|
342 |
+
}
|
343 |
+
};
|
344 |
+
var data = "firstName=" + encodeURIComponent(applicantInfo.firstName) +
|
345 |
+
"&lastName=" + encodeURIComponent(applicantInfo.lastName) +
|
346 |
+
"&middleName=" + encodeURIComponent(applicantInfo.middleName) +
|
347 |
+
"&age=" + encodeURIComponent(applicantInfo.age) +
|
348 |
+
"&email=" + encodeURIComponent(applicantInfo.email) +
|
349 |
+
"&phoneNumber=" + encodeURIComponent(applicantInfo.phoneNumber) +
|
350 |
+
"&address=" + encodeURIComponent(applicantInfo.address) +
|
351 |
+
"&code=" + encodeURIComponent(applicantInfo.code);
|
352 |
+
xhr.send(data);
|
353 |
+
}
|
354 |
+
|
355 |
+
// Function to check application status
|
356 |
+
function checkApplicationStatus(code) {
|
357 |
+
repp("Checking application status for code: " + code);
|
358 |
+
|
359 |
+
var xhr = new XMLHttpRequest();
|
360 |
+
xhr.open("POST", "get_interview_schedule.php", true);
|
361 |
+
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
362 |
+
xhr.onreadystatechange = function() {
|
363 |
+
if (xhr.readyState === 4 && xhr.status === 200) {
|
364 |
+
var response = JSON.parse(xhr.responseText);
|
365 |
+
if (response.success) {
|
366 |
+
var scheduleDate = response.scheduleDate;
|
367 |
+
var link = response.link;
|
368 |
+
repp("Your application is currently scheduled for an Initial Interview on " + scheduleDate + ". Click here for more details: " + link);
|
369 |
+
} else {
|
370 |
+
repp("No schedule found for the provided code.");
|
371 |
+
}
|
372 |
+
}
|
373 |
+
};
|
374 |
+
xhr.send("code=" + encodeURIComponent(code));
|
375 |
+
}
|
376 |
+
|
377 |
+
// Function to get interview schedule
|
378 |
+
function getInterviewSchedule(code, callback) {
|
379 |
+
var xhr = new XMLHttpRequest();
|
380 |
+
xhr.open("POST", "get_schedule.php", true);
|
381 |
+
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
382 |
+
xhr.onreadystatechange = function() {
|
383 |
+
if (xhr.readyState === 4 && xhr.status === 200) {
|
384 |
+
var response = JSON.parse(xhr.responseText);
|
385 |
+
if (response.success) {
|
386 |
+
callback(response.scheduleDate, response.link);
|
387 |
+
} else {
|
388 |
+
callback(null, null);
|
389 |
+
}
|
390 |
+
}
|
391 |
+
};
|
392 |
+
xhr.send("code=" + encodeURIComponent(code));
|
393 |
+
}
|
bot/scripts.js
ADDED
@@ -0,0 +1,309 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var audio = new Audio('sentmessage.mp3');
|
2 |
+
var contactAngelo = "<div class='social'> <a target='_blank' href='tel:+639670971677'> <div class='socialItem' id='call'><img class='socialItemI' src='phone.svg'/><label class='number'></label></label></div> </a> <a href='mailto:[email protected]'> <div class='socialItem'><img class='socialItemI' src='gmail.svg' alt=''></div> </a> <a target='_blank' href='https://github.com/angeloqq03'> <div class='socialItem'><img class='socialItemI' src='github.svg' alt=''></div> </a> <a target='_blank' href='https://wa.me/639670971677'> <div class='socialItem'><img class='socialItemI' src='whatsapp.svg' alt=''>";
|
3 |
+
|
4 |
+
var addressString = "";
|
5 |
+
|
6 |
+
const DATA = {
|
7 |
+
goverment:{
|
8 |
+
psa:{
|
9 |
+
a:["Click the link to proceed on <a href='psa.com'>Philippines Statistics Authority </a>"]
|
10 |
+
}
|
11 |
+
},
|
12 |
+
|
13 |
+
social:{
|
14 |
+
facebook:[],
|
15 |
+
},
|
16 |
+
|
17 |
+
form:{
|
18 |
+
form1:[''],
|
19 |
+
},
|
20 |
+
|
21 |
+
selector:{
|
22 |
+
selector1:['selector here with options']
|
23 |
+
}
|
24 |
+
}
|
25 |
+
|
26 |
+
const conversation = {
|
27 |
+
stage: 0,
|
28 |
+
applicantInfo: {
|
29 |
+
firstName: "",
|
30 |
+
lastName: "",
|
31 |
+
middleName: "",
|
32 |
+
age: "",
|
33 |
+
email: "",
|
34 |
+
phoneNumber: "",
|
35 |
+
address: "",
|
36 |
+
code: ""
|
37 |
+
}
|
38 |
+
};
|
39 |
+
|
40 |
+
function startFunction() {
|
41 |
+
setLastSeen();
|
42 |
+
wNreply("intro");
|
43 |
+
}
|
44 |
+
|
45 |
+
function setLastSeen() {
|
46 |
+
var date = new Date();
|
47 |
+
var lastSeen = document.getElementById("lastseen");
|
48 |
+
lastSeen.innerText = "last seen today at " + date.getHours() + ":" + date.getMinutes()
|
49 |
+
}
|
50 |
+
|
51 |
+
function closeFullDP() {
|
52 |
+
var x = document.getElementById("fullScreenDP");
|
53 |
+
if (x.style.display === 'flex') {
|
54 |
+
x.style.display = 'none';
|
55 |
+
} else {
|
56 |
+
x.style.display = 'flex';
|
57 |
+
}
|
58 |
+
}
|
59 |
+
|
60 |
+
function openFullScreenDP() {
|
61 |
+
var x = document.getElementById("fullScreenDP");
|
62 |
+
if (x.style.display === 'flex') {
|
63 |
+
x.style.display = 'none';
|
64 |
+
} else {
|
65 |
+
x.style.display = 'flex';
|
66 |
+
}
|
67 |
+
}
|
68 |
+
|
69 |
+
function isEnter(event) {
|
70 |
+
if (event.keyCode == 13) {
|
71 |
+
sendMsg();
|
72 |
+
}
|
73 |
+
}
|
74 |
+
|
75 |
+
function sendMsg() {
|
76 |
+
var input = document.getElementById("inputMSG");
|
77 |
+
var ti = input.value;
|
78 |
+
if (input.value == "") {
|
79 |
+
return;
|
80 |
+
}
|
81 |
+
var date = new Date();
|
82 |
+
var myLI = document.createElement("li");
|
83 |
+
var myDiv = document.createElement("div");
|
84 |
+
var crDiv = document.createElement("div");
|
85 |
+
var dateLabel = document.createElement("label");
|
86 |
+
dateLabel.innerText = date.getHours() + ":" + date.getMinutes();
|
87 |
+
myDiv.setAttribute("class", "sent");
|
88 |
+
crDiv.setAttribute("class", "green");
|
89 |
+
dateLabel.setAttribute("class", "dateLabel");
|
90 |
+
crDiv.innerText = input.value;
|
91 |
+
myDiv.appendChild(crDiv);
|
92 |
+
myLI.appendChild(myDiv);
|
93 |
+
crDiv.appendChild(dateLabel);
|
94 |
+
document.getElementById("listUL").appendChild(myLI);
|
95 |
+
var s = document.getElementById("chatting");
|
96 |
+
s.scrollTop = s.scrollHeight;
|
97 |
+
setTimeout(function () { wNreply(ti) }, 1500);
|
98 |
+
input.value = "";
|
99 |
+
playSound();
|
100 |
+
}
|
101 |
+
|
102 |
+
function wNreply(inputText) {
|
103 |
+
var lastSeen = document.getElementById("lastseen");
|
104 |
+
lastSeen.innerText = "typing...";
|
105 |
+
var name = "";
|
106 |
+
|
107 |
+
let user = inputText.toLowerCase();
|
108 |
+
|
109 |
+
if (user.includes("my name is")) {
|
110 |
+
name = inputText.substring(inputText.indexOf("is") + 2);
|
111 |
+
if (name.toLowerCase().includes("angelo")) {
|
112 |
+
sendTextMessage("Ohh! That's my name too");
|
113 |
+
|
114 |
+
}
|
115 |
+
inputText = "input";
|
116 |
+
} else if (user.includes("gusto")||user.includes('applying')) {
|
117 |
+
sendTextMessage("Im glad that you're interedted for a Customer Service Representative Position. To get started, please enter your first name."),conversation.stage = 0;
|
118 |
+
return;
|
119 |
+
} else if (user.includes('fb')) {
|
120 |
+
sendTextMessage(DATA.form.form1);
|
121 |
+
return;
|
122 |
+
} else if ("") {
|
123 |
+
alert('&@');
|
124 |
+
}
|
125 |
+
|
126 |
+
switch (user.trim()) {
|
127 |
+
case "help":
|
128 |
+
sendTextMessage("<span class='sk'>You may send the following basic keywords<br>e.g<br><span class='bold'>'Apply'</span> - for applicants. <br><span class='bold'>'Interested'</span> - to know more about the process of application. <br><span class='bold'>'Newbie'</span> - if you are new in the world of Customer Service. <br><span class='bold'>'Contact'</span> - reach out to me personally. <br><span class='bold'>'FAQ's</span> - to see the most frequently asked questions about BPO Industry<br><span class='bold'>'Clear'</span> - to clear conversation<br><br> - Or you can just ask me anything that is Customer Service Related.<br>");
|
129 |
+
break;
|
130 |
+
case "resume":
|
131 |
+
sendTextMessage(resumeString);
|
132 |
+
break;
|
133 |
+
case "intro":
|
134 |
+
sendTextMessage("Hi There! <br> <br> I'm ACBA, Angelo Collins Bot Assistant. I am here to assist you.<br><br>Whether you're a newbie, or with experience. I will guide and assist you throughout the process.<br><br>You may send the keyword ''Help'' to know more.");
|
135 |
+
break;
|
136 |
+
case "i want to apply":
|
137 |
+
case "applicant":
|
138 |
+
case "apply":
|
139 |
+
case "applying for customer service position":
|
140 |
+
sendTextMessage("To get started, please type your first name.");
|
141 |
+
conversation.stage = 1;
|
142 |
+
break;
|
143 |
+
case "clear":
|
144 |
+
clearChat();
|
145 |
+
break;
|
146 |
+
case "time":
|
147 |
+
var date = new Date();
|
148 |
+
sendTextMessage("Current time is " + date.getHours() + ":" + date.getMinutes());
|
149 |
+
break;
|
150 |
+
case "date":
|
151 |
+
var date = new Date();
|
152 |
+
sendTextMessage("Current date is " + date.getDate() + "/" + date.getMonth() + "/" + date.getFullYear());
|
153 |
+
break;
|
154 |
+
default:
|
155 |
+
if (conversation.stage > 0) {
|
156 |
+
// Handle collecting applicant information
|
157 |
+
processApplicantInfo(user.trim());
|
158 |
+
} else if (user.includes("status of a-")) {
|
159 |
+
var code = user.split("a-")[1].toUpperCase();
|
160 |
+
checkApplicationStatus(code);
|
161 |
+
} else {
|
162 |
+
sendTextMessage('Im quite not sure I understand that. You can try other term for that or just type "help" to see the other available commands.');
|
163 |
+
}
|
164 |
+
break;
|
165 |
+
}
|
166 |
+
}
|
167 |
+
|
168 |
+
function processApplicantInfo(input) {
|
169 |
+
switch (conversation.stage) {
|
170 |
+
|
171 |
+
case 1:
|
172 |
+
conversation.applicantInfo.firstName = input;
|
173 |
+
conversation.stage = 2;
|
174 |
+
sendTextMessage("Next, please type your last name.");
|
175 |
+
break;
|
176 |
+
case 2:
|
177 |
+
conversation.applicantInfo.lastName = input;
|
178 |
+
conversation.stage = 3;
|
179 |
+
sendTextMessage("Please provide your middle name (if any), or type 'none'.");
|
180 |
+
break;
|
181 |
+
case 3:
|
182 |
+
if (input.toLowerCase() === "none") {
|
183 |
+
conversation.applicantInfo.middleName = "None";
|
184 |
+
} else {
|
185 |
+
conversation.applicantInfo.middleName = input;
|
186 |
+
}
|
187 |
+
conversation.stage = 4;
|
188 |
+
sendTextMessage("What is your age?");
|
189 |
+
break;
|
190 |
+
case 4:
|
191 |
+
conversation.applicantInfo.age = input;
|
192 |
+
conversation.stage = 5;
|
193 |
+
sendTextMessage("Please enter your email address.");
|
194 |
+
break;
|
195 |
+
case 5:
|
196 |
+
conversation.applicantInfo.email = input;
|
197 |
+
conversation.stage = 6;
|
198 |
+
sendTextMessage("Next, please provide your phone number.");
|
199 |
+
break;
|
200 |
+
case 6:
|
201 |
+
conversation.applicantInfo.phoneNumber = input;
|
202 |
+
conversation.stage = 7;
|
203 |
+
sendTextMessage("Finally, type your present address.");
|
204 |
+
break;
|
205 |
+
case 7:
|
206 |
+
conversation.applicantInfo.address = input;
|
207 |
+
conversation.stage = 8;
|
208 |
+
saveApplicantInfo(conversation.applicantInfo); // Call a function to save this information to the database
|
209 |
+
break;
|
210 |
+
case 8:
|
211 |
+
conversation.applicantInfo.code = generateCode(); // Generate and assign unique code
|
212 |
+
sendTextMessage(`Thank you! Your application has been submitted. To track the status of your application, here is your unique code: A-${conversation.applicantInfo.code}. Just send "Status of A-${conversation.applicantInfo.code}" to check.`);
|
213 |
+
conversation.stage = 0; // Reset the conversation stage
|
214 |
+
break;
|
215 |
+
default:
|
216 |
+
sendTextMessage("I'm sorry, I didn't understand that.");
|
217 |
+
break;
|
218 |
+
}
|
219 |
+
}
|
220 |
+
|
221 |
+
function clearChat() {
|
222 |
+
document.getElementById("listUL").innerHTML = "";
|
223 |
+
wNreply('intro');
|
224 |
+
}
|
225 |
+
|
226 |
+
function sendTextMessage(textToSend) {
|
227 |
+
setTimeout(setLastSeen, 1000);
|
228 |
+
var date = new Date();
|
229 |
+
var myLI = document.createElement("li");
|
230 |
+
var myDiv = document.createElement("div");
|
231 |
+
var crDiv = document.createElement("div");
|
232 |
+
var dateLabel = document.createElement("label");
|
233 |
+
dateLabel.setAttribute("id", "sentlabel");
|
234 |
+
dateLabel.id = "sentlabel";
|
235 |
+
dateLabel.innerText = date.getHours() + ":" + date.getMinutes();
|
236 |
+
myDiv.setAttribute("class", "received");
|
237 |
+
crDiv.setAttribute("class", "grey");
|
238 |
+
crDiv.innerHTML = textToSend;
|
239 |
+
myDiv.appendChild(crDiv);
|
240 |
+
myLI.appendChild(myDiv);
|
241 |
+
crDiv.appendChild(dateLabel);
|
242 |
+
document.getElementById("listUL").appendChild(myLI);
|
243 |
+
var s = document.getElementById("chatting");
|
244 |
+
s.scrollTop = s.scrollHeight;
|
245 |
+
playSound();
|
246 |
+
}
|
247 |
+
|
248 |
+
function generateCode() {
|
249 |
+
// Generate a unique 12-character alphanumeric code
|
250 |
+
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
251 |
+
var code = '';
|
252 |
+
for (var i = 0; i < 12; i++) {
|
253 |
+
code += characters.charAt(Math.floor(Math.random() * characters.length));
|
254 |
+
}
|
255 |
+
return code;
|
256 |
+
}
|
257 |
+
|
258 |
+
function checkApplicationStatus(code) {
|
259 |
+
sendTextMessage("Checking application status...");
|
260 |
+
|
261 |
+
// Assume fetching status from server for the given code
|
262 |
+
var status = "Active";
|
263 |
+
var schedule = getInterviewSchedule(code);
|
264 |
+
|
265 |
+
switch (status) {
|
266 |
+
case "Active":
|
267 |
+
sendTextMessage(`Your application is currently Active and waiting for the initial interview on ${schedule}.`);
|
268 |
+
break;
|
269 |
+
case "Reviewed":
|
270 |
+
sendTextMessage("Your application is under review.");
|
271 |
+
break;
|
272 |
+
case "Initial Interview":
|
273 |
+
sendTextMessage(`Your application is scheduled for an Initial Interview on ${schedule}.`);
|
274 |
+
break;
|
275 |
+
case "Assessment":
|
276 |
+
sendTextMessage("Your application is currently in the Assessment stage.");
|
277 |
+
break;
|
278 |
+
case "Final Interview":
|
279 |
+
sendTextMessage(`Your application is scheduled for a Final Interview on ${schedule}.`);
|
280 |
+
break;
|
281 |
+
case "Passed":
|
282 |
+
sendTextMessage("Congratulations! Your application has passed all stages.");
|
283 |
+
break;
|
284 |
+
default:
|
285 |
+
sendTextMessage("No applications found with status: " + status);
|
286 |
+
break;
|
287 |
+
}
|
288 |
+
}
|
289 |
+
|
290 |
+
function getInterviewSchedule(code) {
|
291 |
+
let xhr = new XMLHttpRequest();
|
292 |
+
xhr.open("POST", "get_schedule.php", false);
|
293 |
+
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
294 |
+
xhr.send("code=" + encodeURIComponent(code));
|
295 |
+
|
296 |
+
if (xhr.readyState === 4 && xhr.status === 200) {
|
297 |
+
return xhr.responseText;
|
298 |
+
} else {
|
299 |
+
return "No schedule available";
|
300 |
+
}
|
301 |
+
return "Interview schedule not found";
|
302 |
+
}
|
303 |
+
|
304 |
+
function saveApplicantInfo(applicantInfo) {
|
305 |
+
// Simulate saving applicant info to the database
|
306 |
+
// You can implement the server-side script to handle this
|
307 |
+
console.log("Saving applicant info to database:", applicantInfo);
|
308 |
+
}
|
309 |
+
|
bot/sentmessage.mp3
ADDED
Binary file (9.19 kB). View file
|
|
bot/style.css
ADDED
@@ -0,0 +1,504 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
* {
|
2 |
+
padding: 0;
|
3 |
+
margin: 0;
|
4 |
+
font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
|
5 |
+
}
|
6 |
+
|
7 |
+
body {
|
8 |
+
margin: 0 auto;
|
9 |
+
background-color: #1b1b1b;
|
10 |
+
background-size: unset;
|
11 |
+
background-repeat: repeat;
|
12 |
+
height: 100dvh;
|
13 |
+
box-sizing: border-box;
|
14 |
+
scrollbar-width: 0px;
|
15 |
+
}
|
16 |
+
|
17 |
+
body::-webkit-scrollbar{
|
18 |
+
display:none;
|
19 |
+
}
|
20 |
+
|
21 |
+
nav {
|
22 |
+
display: flex;
|
23 |
+
height: 6%;
|
24 |
+
background-color: #202c33;
|
25 |
+
}
|
26 |
+
|
27 |
+
.navbar {
|
28 |
+
width: 100%;
|
29 |
+
display: flex;
|
30 |
+
background-color: #202c33;
|
31 |
+
}
|
32 |
+
|
33 |
+
.dpimg {
|
34 |
+
cursor: pointer;
|
35 |
+
border-radius: 100%;
|
36 |
+
width: 5%;
|
37 |
+
height: 5%;
|
38 |
+
height: auto;
|
39 |
+
margin: auto 0px;
|
40 |
+
margin-left: 10px;
|
41 |
+
}
|
42 |
+
|
43 |
+
.navbar .personalInfo {
|
44 |
+
line-height: 100%;
|
45 |
+
display: flex;
|
46 |
+
flex-direction: column;
|
47 |
+
margin: auto 0px;
|
48 |
+
margin-left: 2%;
|
49 |
+
}
|
50 |
+
|
51 |
+
.personalInfo #name {
|
52 |
+
color: #e9edef;
|
53 |
+
margin-bottom: 4px;
|
54 |
+
}
|
55 |
+
|
56 |
+
.personalInfo #lastseen {
|
57 |
+
color: #8696a0;
|
58 |
+
font-size: small;
|
59 |
+
}
|
60 |
+
|
61 |
+
.scrollable {
|
62 |
+
overflow-y: scroll;
|
63 |
+
color: #fff;
|
64 |
+
display: flex;
|
65 |
+
height: 88%;
|
66 |
+
flex-direction: column;
|
67 |
+
background-color: ivory;
|
68 |
+
align-items: flex-end;
|
69 |
+
position: relative;
|
70 |
+
-ms-overflow-style: none;
|
71 |
+
scrollbar-width: none;
|
72 |
+
position: relative;
|
73 |
+
box-sizing: border-box;
|
74 |
+
background: #003e33;
|
75 |
+
|
76 |
+
}
|
77 |
+
|
78 |
+
.scrollable::-webkit-scrollbar{
|
79 |
+
display: none;
|
80 |
+
}
|
81 |
+
|
82 |
+
.scrollable .chatting {
|
83 |
+
overflow-y: scroll;
|
84 |
+
-ms-overflow-style: none;
|
85 |
+
scrollbar-width: none;
|
86 |
+
position: relative;
|
87 |
+
word-wrap: break-word;
|
88 |
+
height: 100%;
|
89 |
+
width: 100%;
|
90 |
+
box-sizing: border-box;
|
91 |
+
|
92 |
+
}
|
93 |
+
|
94 |
+
.scrollable .chatting::-webkit-scrollbar {
|
95 |
+
display: none;
|
96 |
+
}
|
97 |
+
|
98 |
+
#listUL {
|
99 |
+
overflow-y: hidden;
|
100 |
+
position: static;
|
101 |
+
width: 100%;
|
102 |
+
bottom: 0;
|
103 |
+
list-style-type: none;
|
104 |
+
display: flex;
|
105 |
+
flex-direction: column;
|
106 |
+
box-sizing: border-box;
|
107 |
+
|
108 |
+
}
|
109 |
+
|
110 |
+
#listUL li {
|
111 |
+
width: 100%;
|
112 |
+
text-decoration: none;
|
113 |
+
flex-direction: row-reverse;
|
114 |
+
}
|
115 |
+
|
116 |
+
.sent {
|
117 |
+
text-align: end;
|
118 |
+
float: right;
|
119 |
+
width: auto;
|
120 |
+
max-width: 45%;
|
121 |
+
}
|
122 |
+
|
123 |
+
.green {
|
124 |
+
margin: 5px;
|
125 |
+
text-align: end;
|
126 |
+
width: max-content;
|
127 |
+
max-width: 90dvw;
|
128 |
+
padding: 10px;
|
129 |
+
background-color: #005c4b;
|
130 |
+
border-radius: 15px 15px 0px;
|
131 |
+
box-sizing: border-box;
|
132 |
+
animation: fade-in 0.7s ease;
|
133 |
+
}
|
134 |
+
|
135 |
+
|
136 |
+
|
137 |
+
.green::-webkit-scrollbar{
|
138 |
+
display: none;
|
139 |
+
}
|
140 |
+
.green::-webkit-scrollbar-track{
|
141 |
+
display: none;
|
142 |
+
}
|
143 |
+
#sentlabel {
|
144 |
+
color: #94bab3;
|
145 |
+
display: block;
|
146 |
+
text-align: end;
|
147 |
+
font-size: x-small;
|
148 |
+
}
|
149 |
+
|
150 |
+
.recieved {
|
151 |
+
float: left;
|
152 |
+
width: 45%;
|
153 |
+
max-width: 45%;
|
154 |
+
}
|
155 |
+
|
156 |
+
.grey {
|
157 |
+
max-width: 90dvw;
|
158 |
+
margin: 5px;
|
159 |
+
text-align: start;
|
160 |
+
width: max-content;
|
161 |
+
padding: 12px;
|
162 |
+
background-color: #202c33;
|
163 |
+
border-radius: 0px 15px 15px;
|
164 |
+
box-sizing: border-box;
|
165 |
+
max-height: 90dvh;
|
166 |
+
animation: slide-in-left 0.2s ease;
|
167 |
+
}
|
168 |
+
|
169 |
+
@keyframes slide-in-left{
|
170 |
+
from{
|
171 |
+
transform: translate3d(-100%, 0, 0);
|
172 |
+
visibility: visible;
|
173 |
+
}
|
174 |
+
to{
|
175 |
+
transform: translate3d(0, 0, 0);
|
176 |
+
}
|
177 |
+
}
|
178 |
+
@keyframes fade-in{
|
179 |
+
from{
|
180 |
+
opacity: 0;
|
181 |
+
}
|
182 |
+
to{
|
183 |
+
opacity: 1;
|
184 |
+
}
|
185 |
+
}
|
186 |
+
|
187 |
+
/* iframe messages */
|
188 |
+
.ifrmm{
|
189 |
+
width: 84dvw;
|
190 |
+
border: 4px solid rgb(201, 201, 201);
|
191 |
+
overflow: hidden;
|
192 |
+
height: 58dvh;
|
193 |
+
}
|
194 |
+
|
195 |
+
|
196 |
+
|
197 |
+
.ifrmm::-webkit-scrollbar{
|
198 |
+
display: none;
|
199 |
+
}
|
200 |
+
|
201 |
+
.grey .mapview {
|
202 |
+
margin: auto;
|
203 |
+
display: flex;
|
204 |
+
padding: 5px;
|
205 |
+
box-sizing: border-box;
|
206 |
+
}
|
207 |
+
|
208 |
+
.add address {
|
209 |
+
margin-top: 10px;
|
210 |
+
padding-left: 15px;
|
211 |
+
}
|
212 |
+
|
213 |
+
.map {
|
214 |
+
margin: auto;
|
215 |
+
width: 100%;
|
216 |
+
border-radius: 10px;
|
217 |
+
box-sizing: border-box;
|
218 |
+
|
219 |
+
}
|
220 |
+
|
221 |
+
.dateLabel {
|
222 |
+
color: #94bab3;
|
223 |
+
display: block;
|
224 |
+
text-align: end;
|
225 |
+
font-size: x-small;
|
226 |
+
}
|
227 |
+
|
228 |
+
.sk .bold {
|
229 |
+
color: rgba(219, 154, 33, 0.822);
|
230 |
+
}
|
231 |
+
|
232 |
+
.resumeThumbnail {
|
233 |
+
width: 100%;
|
234 |
+
border-radius: 10px 10px 0px 0px;
|
235 |
+
}
|
236 |
+
|
237 |
+
.downloadSpace {
|
238 |
+
background-color: #1d282f;
|
239 |
+
display: flex;
|
240 |
+
width: 100%;
|
241 |
+
}
|
242 |
+
|
243 |
+
.downloadSpace .pdfname {
|
244 |
+
display: flex;
|
245 |
+
width: 100%;
|
246 |
+
}
|
247 |
+
|
248 |
+
.pdfname label {
|
249 |
+
margin: auto 0px;
|
250 |
+
}
|
251 |
+
|
252 |
+
.downloadSpace img {
|
253 |
+
width: 30px;
|
254 |
+
cursor: pointer;
|
255 |
+
margin: 5px;
|
256 |
+
}
|
257 |
+
|
258 |
+
.bold {
|
259 |
+
font-weight: bold;
|
260 |
+
}
|
261 |
+
|
262 |
+
.alink {
|
263 |
+
color: goldenrod;
|
264 |
+
transition: all 600ms ease;
|
265 |
+
text-decoration: none;
|
266 |
+
}
|
267 |
+
|
268 |
+
.alink:hover {
|
269 |
+
text-decoration: none;
|
270 |
+
color: green;
|
271 |
+
}
|
272 |
+
|
273 |
+
.social {
|
274 |
+
padding: 10px;
|
275 |
+
}
|
276 |
+
|
277 |
+
.social .socialItem {
|
278 |
+
width: 100%;
|
279 |
+
border-radius: 10px;
|
280 |
+
background-color: lightsalmon;
|
281 |
+
cursor: pointer;
|
282 |
+
display: flex;
|
283 |
+
margin-bottom: 10px;
|
284 |
+
transition: all 500ms ease-in-out;
|
285 |
+
}
|
286 |
+
|
287 |
+
.social .socialItemI {
|
288 |
+
margin: auto;
|
289 |
+
padding: 10px;
|
290 |
+
flex-direction: column;
|
291 |
+
}
|
292 |
+
|
293 |
+
.social .socialItem:hover {
|
294 |
+
background-color: rgba(58, 170, 58, 0.863);
|
295 |
+
}
|
296 |
+
|
297 |
+
#call {
|
298 |
+
flex-direction: column;
|
299 |
+
text-align: center;
|
300 |
+
}
|
301 |
+
|
302 |
+
.number {
|
303 |
+
display: none;
|
304 |
+
}
|
305 |
+
|
306 |
+
.scrollable .fullScreenDP {
|
307 |
+
transition: all 700ms ease-in-out;
|
308 |
+
position: absolute;
|
309 |
+
width: 100%;
|
310 |
+
height: 100%;
|
311 |
+
display: none;
|
312 |
+
flex-direction: column;
|
313 |
+
background-color: #2f2f2fec;
|
314 |
+
z-index: 1000;
|
315 |
+
}
|
316 |
+
|
317 |
+
.scrollable .fullScreenDP .insideDP {
|
318 |
+
display: flex;
|
319 |
+
margin: auto;
|
320 |
+
scrollbar-width: 0px;
|
321 |
+
box-sizing: border-box;
|
322 |
+
|
323 |
+
}
|
324 |
+
|
325 |
+
|
326 |
+
.closeBTN {
|
327 |
+
width: 30px;
|
328 |
+
height: 30px;
|
329 |
+
display: block;
|
330 |
+
position: absolute;
|
331 |
+
margin-left: 6%;
|
332 |
+
margin-top: 5px;
|
333 |
+
cursor: pointer;
|
334 |
+
}
|
335 |
+
|
336 |
+
.btnColor {
|
337 |
+
fill: rgba(0, 0, 0, 0.692);
|
338 |
+
transition: all 400ms ease-in-out;
|
339 |
+
}
|
340 |
+
|
341 |
+
.closeBTN:hover .btnColor {
|
342 |
+
fill: red;
|
343 |
+
}
|
344 |
+
|
345 |
+
.scrollable .fullScreenDP .insideDP .dp {
|
346 |
+
width: 90%;
|
347 |
+
margin: auto;
|
348 |
+
border-radius: 10px;
|
349 |
+
}
|
350 |
+
|
351 |
+
footer {
|
352 |
+
position: relative;
|
353 |
+
left: 0;
|
354 |
+
bottom: 0;
|
355 |
+
width: 100%;
|
356 |
+
color: white;
|
357 |
+
text-align: center;
|
358 |
+
height: auto;
|
359 |
+
background-color: #202c33;
|
360 |
+
text-align: center;
|
361 |
+
}
|
362 |
+
|
363 |
+
.sendBar {
|
364 |
+
display: flex;
|
365 |
+
height: 100%;
|
366 |
+
width: 100%;
|
367 |
+
margin: auto;
|
368 |
+
}
|
369 |
+
|
370 |
+
.sendBar svg {
|
371 |
+
margin: auto;
|
372 |
+
height: 40%;
|
373 |
+
min-height: 40%;
|
374 |
+
}
|
375 |
+
|
376 |
+
.sendBar input[type='text'] {
|
377 |
+
margin: auto;
|
378 |
+
margin: 5px;
|
379 |
+
border-radius: 10px;
|
380 |
+
padding: 10px;
|
381 |
+
color: #fff;
|
382 |
+
float: left;
|
383 |
+
width: 80%;
|
384 |
+
height: 100%;
|
385 |
+
outline-color: transparent;
|
386 |
+
accent-color: transparent;
|
387 |
+
background-color: #2a3942;
|
388 |
+
outline: none;
|
389 |
+
border-color: transparent;
|
390 |
+
}
|
391 |
+
|
392 |
+
.sendBar input[type='text']::placeholder {
|
393 |
+
color: #8696a0;
|
394 |
+
opacity: 1;
|
395 |
+
}
|
396 |
+
|
397 |
+
.sendBar input[type='text']:-ms-input-placeholder {
|
398 |
+
color: #8696a0;
|
399 |
+
}
|
400 |
+
|
401 |
+
.sendBar input[type='text']::-ms-input-placeholder {
|
402 |
+
color: #8696a0;
|
403 |
+
}
|
404 |
+
|
405 |
+
/* Updated styles for the form */
|
406 |
+
.grey form,
|
407 |
+
.green form {
|
408 |
+
margin: 0;
|
409 |
+
padding: 10px;
|
410 |
+
width: auto;
|
411 |
+
max-width: 80%;
|
412 |
+
background-color: #202c33;
|
413 |
+
border-radius: 10px;
|
414 |
+
box-sizing: border-box;
|
415 |
+
}
|
416 |
+
|
417 |
+
.grey form input,
|
418 |
+
.green form input {
|
419 |
+
width: 100%;
|
420 |
+
padding: 8px;
|
421 |
+
margin-bottom: 8px;
|
422 |
+
border-radius: 5px;
|
423 |
+
border: 1px solid #ccc;
|
424 |
+
box-sizing: border-box;
|
425 |
+
}
|
426 |
+
|
427 |
+
.grey form button,
|
428 |
+
.green form button {
|
429 |
+
width: 100%;
|
430 |
+
padding: 8px;
|
431 |
+
border: none;
|
432 |
+
border-radius: 5px;
|
433 |
+
background-color: #005c4b;
|
434 |
+
color: #fff;
|
435 |
+
cursor: pointer;
|
436 |
+
box-sizing: border-box;
|
437 |
+
|
438 |
+
}
|
439 |
+
|
440 |
+
.grey form button:hover,
|
441 |
+
.green form button:hover {
|
442 |
+
background-color: #003e33;
|
443 |
+
}
|
444 |
+
|
445 |
+
@media screen and (min-width: 1024px) {
|
446 |
+
body {
|
447 |
+
margin: auto;
|
448 |
+
width: 50vw;
|
449 |
+
box-sizing: border-box;
|
450 |
+
|
451 |
+
}
|
452 |
+
|
453 |
+
.sendBar {
|
454 |
+
width: 85%;
|
455 |
+
}
|
456 |
+
|
457 |
+
.scrollable {
|
458 |
+
-ms-overflow-style: none;
|
459 |
+
scrollbar-width: none;
|
460 |
+
position: relative;
|
461 |
+
overflow: hidden;
|
462 |
+
}
|
463 |
+
|
464 |
+
.scrollable .fullScreenDP {
|
465 |
+
display: none;
|
466 |
+
width: 100%;
|
467 |
+
height: 100%;
|
468 |
+
overflow-y: scroll;
|
469 |
+
}
|
470 |
+
|
471 |
+
.scrollable .fullScreenDP .insideDP {
|
472 |
+
display: flex;
|
473 |
+
width: 70%;
|
474 |
+
}
|
475 |
+
|
476 |
+
.scrollable .fullScreenDP .dp {
|
477 |
+
width: 50%;
|
478 |
+
margin: auto;
|
479 |
+
}
|
480 |
+
|
481 |
+
.scrollable .closeBTN {
|
482 |
+
margin-top: 15px;
|
483 |
+
}
|
484 |
+
|
485 |
+
#call:hover .number {
|
486 |
+
display: block;
|
487 |
+
height: auto;
|
488 |
+
}
|
489 |
+
}
|
490 |
+
|
491 |
+
.select-start{
|
492 |
+
padding: 10px;
|
493 |
+
font-weight: 900;
|
494 |
+
font-family: Arial, Helvetica, sans-serif;
|
495 |
+
background-color: brown;
|
496 |
+
color: wheat;
|
497 |
+
}
|
498 |
+
|
499 |
+
.select-start option{
|
500 |
+
font-family: Arial, Helvetica, sans-serif;
|
501 |
+
font-weight: 900;
|
502 |
+
background-color: brown;
|
503 |
+
position: fixed;
|
504 |
+
}
|
bot/swl.sql
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
CREATE TABLE applicants (
|
2 |
+
id INT AUTO_INCREMENT PRIMARY KEY,
|
3 |
+
firstName VARCHAR(255) NOT NULL,
|
4 |
+
lastName VARCHAR(255) NOT NULL,
|
5 |
+
middleName VARCHAR(255),
|
6 |
+
age INT,
|
7 |
+
email VARCHAR(255) NOT NULL,
|
8 |
+
phoneNumber VARCHAR(20) NOT NULL,
|
9 |
+
address TEXT,
|
10 |
+
code VARCHAR(20) NOT NULL,
|
11 |
+
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
12 |
+
status ENUM('active', 'reviewed', 'initial_interview', 'assessment', 'final_interview', 'passed') DEFAULT 'active'
|
13 |
+
);
|
bot/telegram.svg
ADDED
|
bot/update_status.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Establish connection to MySQL$servername = "localhost";
|
4 |
+
$username = "username";
|
5 |
+
$password = "password";
|
6 |
+
$dbname = "your_database";
|
7 |
+
|
8 |
+
// Create connection
|
9 |
+
$conn = new mysqli($servername, $username, $password, $dbname);
|
10 |
+
|
11 |
+
// Check connection
|
12 |
+
if ($conn->connect_error) {
|
13 |
+
die("Connection failed: " . $conn->connect_error);
|
14 |
+
}
|
15 |
+
|
16 |
+
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
17 |
+
$applicant_code = $_POST["applicant_code"];
|
18 |
+
$status = $_POST["status"];
|
19 |
+
$schedule = $_POST["schedule"];
|
20 |
+
|
21 |
+
// Update status in applicants table
|
22 |
+
$update_query = "UPDATE applicants SET status = '$status' WHERE code = '$applicant_code'";
|
23 |
+
mysqli_query($conn, $update_query);
|
24 |
+
|
25 |
+
// Update interview schedule in interviews table
|
26 |
+
$insert_query = "INSERT INTO interviews (code, schedule) VALUES ('$applicant_code', '$schedule')";
|
27 |
+
mysqli_query($conn, $insert_query);
|
28 |
+
|
29 |
+
// Redirect back to admin panel
|
30 |
+
header("Location: admin_panel.php");
|
31 |
+
exit();
|
32 |
+
}
|
33 |
+
?>
|
bot/whatsapp.svg
ADDED
|
content.js
ADDED
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
const start = () => {
|
2 |
+
const elems = [];
|
3 |
+
const ids = [];
|
4 |
+
const datasets = () => {
|
5 |
+
const data = () => {
|
6 |
+
// pushing
|
7 |
+
ids.push(document.getElementById('home'), document.getElementById('search'),document.getElementById(''));
|
8 |
+
elems.push();
|
9 |
+
|
10 |
+
console.log(ids);
|
11 |
+
|
12 |
+
// end of data
|
13 |
+
}
|
14 |
+
data();
|
15 |
+
// end of datasets
|
16 |
+
}
|
17 |
+
|
18 |
+
datasets();
|
19 |
+
}
|
20 |
+
|
21 |
+
function searchh(){
|
22 |
+
const val = document.getElementById('search').value;
|
23 |
+
|
24 |
+
if (val.includes('chat')){
|
25 |
+
|
26 |
+
if(val.includes('bot')){
|
27 |
+
alert('chat bot search met')
|
28 |
+
return;
|
29 |
+
}
|
30 |
+
if (val.includes('system')) {
|
31 |
+
alert('chat system search met')
|
32 |
+
return;
|
33 |
+
}
|
34 |
+
return;
|
35 |
+
} else if(val.includes('blog')){
|
36 |
+
if (val.includes('')) {
|
37 |
+
return;
|
38 |
+
}
|
39 |
+
} else if(val.includes('system')){
|
40 |
+
if (val.includes('order')) {
|
41 |
+
alert('order system search met');
|
42 |
+
return
|
43 |
+
}
|
44 |
+
if (val.includes('transport')) {
|
45 |
+
alert('transport system search met');
|
46 |
+
return
|
47 |
+
}
|
48 |
+
if (val.includes('school')) {
|
49 |
+
alert('school system search met');
|
50 |
+
return
|
51 |
+
}
|
52 |
+
if (val.includes('complete')) {
|
53 |
+
alert('complete system search met');
|
54 |
+
return
|
55 |
+
}
|
56 |
+
return
|
57 |
+
} else if(val.includes('files')){
|
58 |
+
alert('files met');
|
59 |
+
return;
|
60 |
+
} else if (val.includes('niczip')){
|
61 |
+
location.assign('nic.zip');
|
62 |
+
return;
|
63 |
+
} else {
|
64 |
+
alert('try again')
|
65 |
+
}
|
66 |
+
|
67 |
+
}
|
68 |
+
|
69 |
+
start();
|
form.html
ADDED
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<html lang="en">
|
2 |
+
<head>
|
3 |
+
<meta charset="UTF-8">
|
4 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
5 |
+
<meta http-equiv="X-UA-Compatible" content="IE=7">
|
6 |
+
<style>
|
7 |
+
|
8 |
+
*{
|
9 |
+
font-family: 'Trebuchet MS';
|
10 |
+
}
|
11 |
+
body::-webkit-scrollbar{
|
12 |
+
display:none;
|
13 |
+
}
|
14 |
+
body{
|
15 |
+
width: auto;
|
16 |
+
max-width: 100dvw;
|
17 |
+
background: rgba(0, 0, 0, 0.218);
|
18 |
+
color: cyan;
|
19 |
+
margin: 0px auto;
|
20 |
+
box-sizing: border-box;
|
21 |
+
height: 80dvh;
|
22 |
+
}
|
23 |
+
|
24 |
+
#logsec{
|
25 |
+
display: flex;
|
26 |
+
flex-direction: column;
|
27 |
+
text-align: center;
|
28 |
+
justify-content: center;
|
29 |
+
height: 80dvh;
|
30 |
+
animation: fade-in 1s ease;
|
31 |
+
}
|
32 |
+
|
33 |
+
#full_name , #password{
|
34 |
+
margin-top: 12px;
|
35 |
+
border-radius: 8px;
|
36 |
+
padding: 6px;
|
37 |
+
background: black;
|
38 |
+
color: lavender;
|
39 |
+
font-size: 11pt;
|
40 |
+
}
|
41 |
+
|
42 |
+
#full_name::placeholder{
|
43 |
+
color: wheat;
|
44 |
+
font-size: 12pt;
|
45 |
+
}
|
46 |
+
|
47 |
+
#password::placeholder{
|
48 |
+
color: wheat;
|
49 |
+
font-size: 12pt;
|
50 |
+
}
|
51 |
+
|
52 |
+
#logsec label{
|
53 |
+
font-size: 13pt;
|
54 |
+
font-weight: 400;
|
55 |
+
}
|
56 |
+
|
57 |
+
@keyframes fade-in{
|
58 |
+
from{
|
59 |
+
opacity: 0;
|
60 |
+
}
|
61 |
+
to{
|
62 |
+
opacity: 1;
|
63 |
+
}
|
64 |
+
}
|
65 |
+
</style>
|
66 |
+
</head>
|
67 |
+
<body id="logsec">
|
68 |
+
<div>
|
69 |
+
<label for="full_name">Login, or create an account with our chatbot!</label><br>
|
70 |
+
<input type="text" name="full_name" id="full_name" placeholder="Enter username..."><br>
|
71 |
+
<input type="password" name="password" id="password" placeholder="Enter username..." required><br>
|
72 |
+
<span id="datas"></span><br>
|
73 |
+
<p id="showpw" onclick="showpw()">Show password.</p>
|
74 |
+
<button id="submit" onclick="form_submit()">SUBMIT </button>
|
75 |
+
</div>
|
76 |
+
<script>
|
77 |
+
const f_name = document.getElementById('full_name');
|
78 |
+
const data_s = document.getElementById('datas');
|
79 |
+
|
80 |
+
function form_submit(z) {
|
81 |
+
z = f_name.value;
|
82 |
+
|
83 |
+
setTimeout(() => {
|
84 |
+
data_s.innerHTML =`<br> ${z}`;
|
85 |
+
}, 2000);
|
86 |
+
|
87 |
+
}
|
88 |
+
|
89 |
+
</script>
|
90 |
+
</body>
|
91 |
+
</html>
|
index.html
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html lang="en">
|
3 |
+
<head>
|
4 |
+
<meta charset="UTF-8">
|
5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6 |
+
<title>Ok Softwares And Web Development</title>
|
7 |
+
|
8 |
+
<link rel="stylesheet" href="styles.css">
|
9 |
+
</head>
|
10 |
+
<body>
|
11 |
+
<div class="container" id="container">
|
12 |
+
|
13 |
+
<nav class="navbar">
|
14 |
+
<div class="burger">☰</div>
|
15 |
+
<ul class="nav-links">
|
16 |
+
<li><a onclick="home()">Home</a></li>
|
17 |
+
<li><a onclick="hosting()">Hosting Services</a></li>
|
18 |
+
<li><a onclick="chatbots()">Chatbots</a></li>
|
19 |
+
<li><a onclick="systems()">Systems</a></li>
|
20 |
+
<li><a onclick="softwares()">Softwares</a></li>
|
21 |
+
<li><a onclick="contact()">Contact</a></li>
|
22 |
+
</ul>
|
23 |
+
</nav>
|
24 |
+
|
25 |
+
<div class="main-content" id="main-content">
|
26 |
+
|
27 |
+
<section id="home" class="intro-section">
|
28 |
+
<div class="searchie">
|
29 |
+
<input type="search" name="search" id="search" placeholder="Search projects...">
|
30 |
+
<button type="button" id="btn-search" onclick="searchh()"> 🔍 </button>
|
31 |
+
</div>
|
32 |
+
<h1>Welcome</h1><h1>to</h1><h1>OK Softwares & Web Development</h1>
|
33 |
+
|
34 |
+
</section>
|
35 |
+
|
36 |
+
<footer class="footer">
|
37 |
+
|
38 |
+
<p>© 2024 OK Softwares & Web Development. All Rights Reserved.</p>
|
39 |
+
</footer>
|
40 |
+
</div>
|
41 |
+
</div>
|
42 |
+
<div class="chatbot-bubble">
|
43 |
+
<p class="pup" id="pup">Need assistance?</p>
|
44 |
+
<img src="assets/shrug.png" alt="Chatbot">
|
45 |
+
</div>
|
46 |
+
|
47 |
+
<div class="chatbot-window">
|
48 |
+
<button class="chatbot-close">Close</button>
|
49 |
+
<iframe src="bot/index.html" frameborder="0"></iframe>
|
50 |
+
</div>
|
51 |
+
<script src="scripts.js"></script>
|
52 |
+
<script src="content.js"></script>
|
53 |
+
</body>
|
54 |
+
</html>
|
projects,md
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
1. Portfolio Website
|
2 |
+
Description: Create a personal portfolio showcasing your skills, projects, resume, and contact information.
|
3 |
+
Tech Stack: HTML, CSS, JavaScript (Optional: React, Vue.js, or Angular for interactivity)
|
4 |
+
2. Blogging Platform
|
5 |
+
Description: Develop a platform where users can create, edit, and publish blog posts with comments and categories.
|
6 |
+
Tech Stack: MERN Stack (MongoDB, Express.js, React, Node.js)
|
7 |
+
3. E-commerce Website
|
8 |
+
Description: Build an online store with product listings, cart functionality, checkout, and payment integration.
|
9 |
+
Tech Stack: MEAN Stack (MongoDB, Express.js, Angular, Node.js) or MERN Stack
|
10 |
+
4. Task Management App
|
11 |
+
Description: Create an application for managing tasks, setting priorities, due dates, and user authentication.
|
12 |
+
Tech Stack: Django (Python), React/Vue.js, PostgreSQL
|
13 |
+
5. Event Management System
|
14 |
+
Description: Develop a platform for organizing events, RSVPs, ticketing, and event details.
|
15 |
+
Tech Stack: Ruby on Rails, React, PostgreSQL
|
16 |
+
6. Online Learning Platform
|
17 |
+
Description: Build a website where users can enroll in courses, watch videos, and track their progress.
|
18 |
+
Tech Stack: Laravel (PHP), Vue.js, MySQL
|
19 |
+
7. Real Estate Listings Website
|
20 |
+
Description: Create a platform for real estate listings with property details, images, search filters, and contact forms.
|
21 |
+
Tech Stack: ASP.NET Core, React, SQL Server
|
22 |
+
8. Recipe Sharing App
|
23 |
+
Description: Develop an application where users can share recipes, rate them, add ingredients, and save favorites.
|
24 |
+
Tech Stack: Flask (Python), React, SQLite
|
25 |
+
9. Social Media Dashboard
|
26 |
+
Description: Build a dashboard that aggregates social media feeds, analytics, and scheduling tools.
|
27 |
+
Tech Stack: Node.js, React, MongoDB
|
28 |
+
10. Fitness Tracker
|
29 |
+
Description: Create a platform where users can log workouts, track progress, set goals, and view statistics.
|
30 |
+
Tech Stack: Firebase (NoSQL), React Native (for mobile app), Redux
|
scripts.js
ADDED
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// Set different background images for different screen sizes
|
2 |
+
function setBodyBackground() {
|
3 |
+
const body = document.querySelector('body');
|
4 |
+
const mobileBg = 'url("assets/background2.jpg") no-repeat center center/cover';
|
5 |
+
const tabletBg = 'url("assets/background1.jpg") no-repeat center center/cover';
|
6 |
+
|
7 |
+
const screenWidth = window.innerWidth;
|
8 |
+
|
9 |
+
if (screenWidth < 768) {
|
10 |
+
body.style.background = mobileBg;
|
11 |
+
location.replace('v/m/index.html');
|
12 |
+
|
13 |
+
} else if (screenWidth >= 768 && screenWidth < 992) {
|
14 |
+
body.style.background = tabletBg;
|
15 |
+
|
16 |
+
} else {
|
17 |
+
body.style.background = 'url("assets/bgmain.gif") no-repeat center center/cover'; // Reset background for desktop
|
18 |
+
body.style.transform = ''; // Reset rotation for desktop
|
19 |
+
}
|
20 |
+
}
|
21 |
+
|
22 |
+
// Call the function initially and on window resize
|
23 |
+
setBodyBackground();
|
24 |
+
|
25 |
+
window.addEventListener('resize', setBodyBackground);
|
26 |
+
|
27 |
+
// Navbar Toggle
|
28 |
+
const burger = document.querySelector('.burger');
|
29 |
+
const navLinks = document.querySelector('.nav-links');
|
30 |
+
const navLinksList = document.querySelectorAll('.nav-links li');
|
31 |
+
|
32 |
+
burger.addEventListener('click', () => {
|
33 |
+
navLinks.classList.toggle('active');
|
34 |
+
burger.classList.toggle('active');
|
35 |
+
|
36 |
+
// Close navLinks when a link is clicked
|
37 |
+
navLinksList.forEach((link) => {
|
38 |
+
link.addEventListener('click', () => {
|
39 |
+
navLinks.classList.remove('active');
|
40 |
+
burger.classList.remove('active');
|
41 |
+
});
|
42 |
+
});
|
43 |
+
});
|
44 |
+
|
45 |
+
// Chatbot Window
|
46 |
+
const chatbotBubble = document.querySelector('.chatbot-bubble');
|
47 |
+
const chatbotWindow = document.querySelector('.chatbot-window');
|
48 |
+
const chatbotCloseBtn = document.querySelector('.chatbot-close');
|
49 |
+
chatbotCloseBtn.style.display = 'none';
|
50 |
+
chatbotBubble.addEventListener('click', () => {
|
51 |
+
chatbotWindow.style.display = 'block';
|
52 |
+
chatbotWindow.style.animation = 'sasa 0.5s';
|
53 |
+
chatbotBubble.style.display = 'none';
|
54 |
+
setTimeout(() => {
|
55 |
+
chatbotCloseBtn.style.display = 'block';
|
56 |
+
}, 600);
|
57 |
+
});
|
58 |
+
|
59 |
+
chatbotCloseBtn.addEventListener('click', () => {
|
60 |
+
chatbotWindow.style.animation = 'asas 0.5s';
|
61 |
+
chatbotBubble.style.display = 'block';
|
62 |
+
chatbotCloseBtn.style.display = 'none';
|
63 |
+
setTimeout(() => {
|
64 |
+
chatbotWindow.style.display = 'none';
|
65 |
+
}, 500);
|
66 |
+
});
|
styles.css
ADDED
@@ -0,0 +1,370 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* Resetting default margin and padding */
|
2 |
+
* {
|
3 |
+
margin: 0;
|
4 |
+
padding: 0;
|
5 |
+
box-sizing: border-box;
|
6 |
+
}
|
7 |
+
|
8 |
+
root::-webkit-scrollbar{
|
9 |
+
display:none;
|
10 |
+
}
|
11 |
+
|
12 |
+
body {
|
13 |
+
font-family: Arial, sans-serif;
|
14 |
+
margin: 0;
|
15 |
+
}
|
16 |
+
|
17 |
+
body::-webkit-scrollbar{
|
18 |
+
display: none;
|
19 |
+
}
|
20 |
+
|
21 |
+
.container {
|
22 |
+
position: relative;
|
23 |
+
}
|
24 |
+
|
25 |
+
.navbar {
|
26 |
+
position: fixed;
|
27 |
+
top: 0;
|
28 |
+
left: 0;
|
29 |
+
width: 100%;
|
30 |
+
background-color: rgba(0, 0, 0, 0.8); /* Semi-transparent background */
|
31 |
+
backdrop-filter: blur(10px); /* Adding blur effect */
|
32 |
+
z-index: 1000;
|
33 |
+
padding: 20px;
|
34 |
+
}
|
35 |
+
|
36 |
+
.nav-links {
|
37 |
+
display: flex;
|
38 |
+
justify-content: center;
|
39 |
+
list-style: none;
|
40 |
+
padding: 0;
|
41 |
+
}
|
42 |
+
|
43 |
+
.nav-links li {
|
44 |
+
margin: 0 15px;
|
45 |
+
}
|
46 |
+
|
47 |
+
.nav-links li a {
|
48 |
+
color: #fff;
|
49 |
+
text-decoration: none;
|
50 |
+
padding: 10px 15px;
|
51 |
+
display: block;
|
52 |
+
transition: all 0.6s ease-in-out;
|
53 |
+
}
|
54 |
+
|
55 |
+
.nav-links li a:hover {
|
56 |
+
color: #ffc107;
|
57 |
+
transform: translateY(4px) scale(1.225) rotateX(360deg);
|
58 |
+
background-color: #007bff;
|
59 |
+
border-radius: 10px 30px 10px 30px;
|
60 |
+
}
|
61 |
+
|
62 |
+
.burger {
|
63 |
+
display: none;
|
64 |
+
cursor: pointer;
|
65 |
+
}
|
66 |
+
|
67 |
+
.main-content {
|
68 |
+
padding-top: 80px; /* Adjust according to navbar height */
|
69 |
+
}
|
70 |
+
|
71 |
+
.intro-section {
|
72 |
+
text-align: center;
|
73 |
+
display: flex;
|
74 |
+
flex-direction: column;
|
75 |
+
justify-content: center;
|
76 |
+
align-items: center;
|
77 |
+
height: 100vh;
|
78 |
+
padding: 20px;
|
79 |
+
margin-top: -100px;
|
80 |
+
}
|
81 |
+
|
82 |
+
.intro-section #search{
|
83 |
+
padding: 14px;
|
84 |
+
background: rgba(0, 0, 0, 0.3);
|
85 |
+
border-radius: 4px;
|
86 |
+
color: whitesmoke;
|
87 |
+
font-size: 12pt;
|
88 |
+
transition: all 0.3s ease;
|
89 |
+
}
|
90 |
+
|
91 |
+
#search:focus{
|
92 |
+
background-color: lavender;
|
93 |
+
color: black;
|
94 |
+
}
|
95 |
+
|
96 |
+
|
97 |
+
#btn-search{
|
98 |
+
border: none;
|
99 |
+
background: none;
|
100 |
+
font-size: 20pt;
|
101 |
+
margin-left: 10px;
|
102 |
+
}
|
103 |
+
|
104 |
+
.searchie{
|
105 |
+
display: flex;
|
106 |
+
flex-direction: row;
|
107 |
+
margin-top: -70px;
|
108 |
+
margin-bottom: 50px;
|
109 |
+
}
|
110 |
+
|
111 |
+
#search::placeholder{
|
112 |
+
font-size:13pt;
|
113 |
+
}
|
114 |
+
|
115 |
+
.intro-section h1{
|
116 |
+
font-size: 32pt;
|
117 |
+
|
118 |
+
}
|
119 |
+
|
120 |
+
.intro-section h1:first-child{
|
121 |
+
color: red;
|
122 |
+
}
|
123 |
+
|
124 |
+
.intro-section h1, .intro-section h2, .intro-section h3 {
|
125 |
+
margin: 10px 0;
|
126 |
+
}
|
127 |
+
|
128 |
+
.intro-section p {
|
129 |
+
margin: 20px 0;
|
130 |
+
}
|
131 |
+
|
132 |
+
.learn-more-btn {
|
133 |
+
display: inline-block;
|
134 |
+
padding: 10px 20px;
|
135 |
+
background-color: #007bff;
|
136 |
+
color: #fff;
|
137 |
+
text-decoration: none;
|
138 |
+
border-radius: 5px;
|
139 |
+
transition: background-color 0.3s;
|
140 |
+
}
|
141 |
+
|
142 |
+
.learn-more-btn:hover {
|
143 |
+
background-color: #0056b3;
|
144 |
+
}
|
145 |
+
|
146 |
+
.services-section {
|
147 |
+
display: none;
|
148 |
+
padding: 20px;
|
149 |
+
}
|
150 |
+
|
151 |
+
.services-list {
|
152 |
+
display: flex;
|
153 |
+
flex-wrap: wrap;
|
154 |
+
justify-content: center;
|
155 |
+
}
|
156 |
+
|
157 |
+
.card {
|
158 |
+
width: 250px;
|
159 |
+
background: #fff;
|
160 |
+
padding: 20px;
|
161 |
+
margin: 10px;
|
162 |
+
border-radius: 5px;
|
163 |
+
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
|
164 |
+
transition: transform 0.3s;
|
165 |
+
}
|
166 |
+
|
167 |
+
.card:hover {
|
168 |
+
transform: translateY(-5px);
|
169 |
+
}
|
170 |
+
|
171 |
+
.card h4 {
|
172 |
+
margin: 0 0 10px;
|
173 |
+
color: #333;
|
174 |
+
}
|
175 |
+
|
176 |
+
.card p {
|
177 |
+
margin: 0;
|
178 |
+
color: #666;
|
179 |
+
}
|
180 |
+
|
181 |
+
.footer {
|
182 |
+
position: fixed;
|
183 |
+
bottom: 0px;
|
184 |
+
max-width: 4000px;
|
185 |
+
width: 100%;
|
186 |
+
text-align: center;
|
187 |
+
padding: 20px;
|
188 |
+
background-color: #333;
|
189 |
+
color: #fff;
|
190 |
+
}
|
191 |
+
|
192 |
+
.chatbot-bubble {
|
193 |
+
position: fixed;
|
194 |
+
bottom: 30px;
|
195 |
+
right: 40px;
|
196 |
+
background: transparent;
|
197 |
+
color: #fff;
|
198 |
+
width: 60px;
|
199 |
+
height: 60px;
|
200 |
+
border-radius: 50%;
|
201 |
+
display: flex;
|
202 |
+
justify-content: center;
|
203 |
+
align-items: center;
|
204 |
+
cursor: pointer;
|
205 |
+
z-index: 1000;
|
206 |
+
transition: background-color 0.3s;
|
207 |
+
}
|
208 |
+
|
209 |
+
.pup{
|
210 |
+
position: fixed;
|
211 |
+
bottom: 88px;
|
212 |
+
right: 20px;
|
213 |
+
animation: pupe 1s infinite alternate;
|
214 |
+
text-shadow: 0px 0px 12px rgba(0, 0, 0, 0.8);
|
215 |
+
font-size: 13pt;
|
216 |
+
font-weight: 400;
|
217 |
+
}
|
218 |
+
|
219 |
+
@keyframes pupe {
|
220 |
+
from{
|
221 |
+
transform: translateY(0px);
|
222 |
+
} to {
|
223 |
+
transform: translateY(-20px);
|
224 |
+
}
|
225 |
+
}
|
226 |
+
|
227 |
+
.chatbot-bubble img {
|
228 |
+
width: 60px;
|
229 |
+
height: 60px;
|
230 |
+
border-radius: 50%;
|
231 |
+
background-blend-mode:screen;
|
232 |
+
}
|
233 |
+
|
234 |
+
.chatbot-window iframe::-webkit-scrollbar{
|
235 |
+
display: none;
|
236 |
+
}
|
237 |
+
|
238 |
+
.chatbot-window {
|
239 |
+
position: fixed;
|
240 |
+
bottom: 30px;
|
241 |
+
right: 40px;
|
242 |
+
width: 30dvw;
|
243 |
+
height: 80dvh;
|
244 |
+
border: none;
|
245 |
+
background-color: #fff;
|
246 |
+
z-index: 999;
|
247 |
+
border-radius: 10px;
|
248 |
+
|
249 |
+
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
|
250 |
+
display: none;
|
251 |
+
|
252 |
+
}
|
253 |
+
|
254 |
+
.chatbot-window iframe {
|
255 |
+
width: 30dvw;
|
256 |
+
height: 100%;
|
257 |
+
border: none;
|
258 |
+
}
|
259 |
+
|
260 |
+
@keyframes sasa {
|
261 |
+
from{
|
262 |
+
width: 0px;
|
263 |
+
height: 0px;
|
264 |
+
}
|
265 |
+
|
266 |
+
to {
|
267 |
+
width: 400px;
|
268 |
+
height: 600px;
|
269 |
+
}
|
270 |
+
}
|
271 |
+
|
272 |
+
@keyframes asas {
|
273 |
+
from{
|
274 |
+
width: 400px;
|
275 |
+
height: 600px;
|
276 |
+
|
277 |
+
}
|
278 |
+
|
279 |
+
to {
|
280 |
+
width: 0px;
|
281 |
+
height: 0px;
|
282 |
+
}
|
283 |
+
}
|
284 |
+
|
285 |
+
@media (max-width: 768px) {
|
286 |
+
.burger {
|
287 |
+
display: block;
|
288 |
+
position: absolute;
|
289 |
+
top: 20px;
|
290 |
+
right: 20px;
|
291 |
+
color: #fff;
|
292 |
+
font-size: 24px;
|
293 |
+
}
|
294 |
+
|
295 |
+
.nav-links {
|
296 |
+
display: none;
|
297 |
+
flex-direction: column;
|
298 |
+
position: absolute;
|
299 |
+
top: 60px;
|
300 |
+
left: 0;
|
301 |
+
width: 100%;
|
302 |
+
background-color: rgba(0, 0, 0, 0.8);
|
303 |
+
backdrop-filter: blur(10px);
|
304 |
+
padding: 20px;
|
305 |
+
}
|
306 |
+
|
307 |
+
.nav-links.active {
|
308 |
+
display: flex;
|
309 |
+
}
|
310 |
+
|
311 |
+
.nav-links li {
|
312 |
+
margin: 10px 0;
|
313 |
+
}
|
314 |
+
|
315 |
+
.main-content {
|
316 |
+
padding-top: 140px; /* Adjust according to navbar height */
|
317 |
+
}
|
318 |
+
|
319 |
+
.chatbot-bubble {
|
320 |
+
bottom: 80px;
|
321 |
+
right: 20px;
|
322 |
+
}
|
323 |
+
|
324 |
+
.chatbot-window {
|
325 |
+
width: calc(100% - 40px);
|
326 |
+
height: calc(100% - 100px);
|
327 |
+
bottom: 80px;
|
328 |
+
}
|
329 |
+
}
|
330 |
+
|
331 |
+
.spinny{
|
332 |
+
border-top-color: cyan;
|
333 |
+
width:70px;
|
334 |
+
height:70px;
|
335 |
+
border-radius:50%;
|
336 |
+
border: double 6px black;
|
337 |
+
animation: spinny linear infinite 2s;
|
338 |
+
}
|
339 |
+
|
340 |
+
@keyframes spinny {
|
341 |
+
from{
|
342 |
+
transform: rotate(0deg);border-top-color: cyan;
|
343 |
+
} to {
|
344 |
+
transform: rotate(360deg);border-top-color: cyan;
|
345 |
+
}
|
346 |
+
}
|
347 |
+
|
348 |
+
.chatbot-close{
|
349 |
+
display: block;
|
350 |
+
right: 50px;
|
351 |
+
top: 165px;
|
352 |
+
position: fixed;
|
353 |
+
font-size: 14pt;
|
354 |
+
font-weight: 100;
|
355 |
+
color: red;
|
356 |
+
background: none;
|
357 |
+
border:none;
|
358 |
+
font-family: 'Trebuchet MS';
|
359 |
+
transition: 0.4s all ease;
|
360 |
+
}
|
361 |
+
|
362 |
+
.chatbot-close:hover{
|
363 |
+
scale: 1.195;
|
364 |
+
color: rgb(197, 32, 32);
|
365 |
+
transform: translateX( -10px);
|
366 |
+
background: wheat;
|
367 |
+
border-radius: 10px;
|
368 |
+
padding: 4px;
|
369 |
+
}
|
370 |
+
|
tokyo.gif
ADDED
![]() |
tokyo.webp
ADDED
![]() |
v/m/asset/background.gif
ADDED
![]() |
Git LFS Details
|
v/m/asset/comments.png
ADDED
![]() |
v/m/content.js
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
const start = () => {
|
2 |
+
const elems = [];
|
3 |
+
const ids = [];
|
4 |
+
const datasets = () => {
|
5 |
+
const data = () => {
|
6 |
+
// pushing
|
7 |
+
ids.push(document.getElementById('home'), document.getElementById('search'));
|
8 |
+
console.log(ids);
|
9 |
+
// end of data
|
10 |
+
}
|
11 |
+
data();
|
12 |
+
// end of datasets
|
13 |
+
}
|
14 |
+
|
15 |
+
datasets();
|
16 |
+
}
|
17 |
+
const val = document.getElementById('search').value;
|
18 |
+
|
19 |
+
function searchh(){
|
20 |
+
|
21 |
+
// Used switch statements for generic searching.
|
22 |
+
switch (val) {
|
23 |
+
case "":
|
24 |
+
alert('Invalid input, try again.');
|
25 |
+
break;
|
26 |
+
|
27 |
+
default:
|
28 |
+
alert('No found projects.')
|
29 |
+
break;
|
30 |
+
};
|
31 |
+
|
32 |
+
// String methods for more logical handling of search.
|
33 |
+
|
34 |
+
if (val.includes('chat')){
|
35 |
+
if(val.includes('bot')){
|
36 |
+
alert('chat bot search met')
|
37 |
+
}
|
38 |
+
if (val.includes('system')) {
|
39 |
+
alert('chat system search met')
|
40 |
+
}
|
41 |
+
|
42 |
+
} else if(val.includes('')){
|
43 |
+
|
44 |
+
} else if(val.includes('')){
|
45 |
+
|
46 |
+
} else if(val.includes('')){
|
47 |
+
|
48 |
+
} else {
|
49 |
+
alert('Please try again');
|
50 |
+
}
|
51 |
+
|
52 |
+
}
|
53 |
+
|
54 |
+
start();
|