Merge pull request #856 from pateljannat/jobs-applied
feat: job application count
This commit is contained in:
@@ -147,7 +147,7 @@ const sidebarSettings = createResource({
|
|||||||
Object.keys(data).forEach((key) => {
|
Object.keys(data).forEach((key) => {
|
||||||
if (!parseInt(data[key])) {
|
if (!parseInt(data[key])) {
|
||||||
sidebarLinks.value = sidebarLinks.value.filter(
|
sidebarLinks.value = sidebarLinks.value.filter(
|
||||||
(link) => link.label.toLowerCase() !== key
|
(link) => link.label.toLowerCase().split(' ').join('_') !== key
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -59,29 +59,41 @@
|
|||||||
:alt="job.data.company_name"
|
:alt="job.data.company_name"
|
||||||
/>
|
/>
|
||||||
<div>
|
<div>
|
||||||
<div class="text-2xl font-semibold mb-2">
|
<div class="text-2xl font-semibold mb-4">
|
||||||
{{ job.data.job_title }}
|
{{ job.data.job_title }}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div class="grid grid-cols-3 gap-8">
|
||||||
{{ __('posted by') }}
|
<div class="grid grid-cols-1 gap-2">
|
||||||
<span class="font-medium">{{ job.data.company_name }}</span>
|
<div class="flex items-center space-x-2">
|
||||||
{{ __('on') }}
|
<Building2 class="h-4 w-4 stroke-1.5" />
|
||||||
<span class="font-medium">{{
|
<span>{{ job.data.company_name }}</span>
|
||||||
dayjs(job.data.creation).format('DD MMM YYYY')
|
</div>
|
||||||
}}</span>
|
<div class="flex items-center space-x-2">
|
||||||
</div>
|
|
||||||
<div class="flex items-center mt-2">
|
|
||||||
<Badge :label="job.data.type" theme="green" size="lg" />
|
|
||||||
<Badge
|
|
||||||
:label="job.data.location"
|
|
||||||
theme="gray"
|
|
||||||
size="lg"
|
|
||||||
class="ml-4"
|
|
||||||
>
|
|
||||||
<template #prefix>
|
|
||||||
<MapPin class="h-4 w-4 stroke-1.5" />
|
<MapPin class="h-4 w-4 stroke-1.5" />
|
||||||
</template>
|
<span>{{ job.data.location }}</span>
|
||||||
</Badge>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="grid grid-cols-1 gap-2">
|
||||||
|
<div class="flex items-center space-x-2">
|
||||||
|
<ClipboardType class="h-4 w-4 stroke-1.5" />
|
||||||
|
<span>{{ job.data.type }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center space-x-2">
|
||||||
|
<SquareUserRound class="h-4 w-4 stroke-1.5" />
|
||||||
|
<span
|
||||||
|
>{{ applicationCount.data }}
|
||||||
|
{{ __('applications received') }}</span
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="grid grid-cols-1 h-fit">
|
||||||
|
<div class="flex items-center space-x-2">
|
||||||
|
<CalendarDays class="h-4 w-4 stroke-1.5" />
|
||||||
|
<span>{{
|
||||||
|
dayjs(job.data.creation).format('DD MMM YYYY')
|
||||||
|
}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -101,7 +113,15 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { Badge, Button, Breadcrumbs, createResource } from 'frappe-ui'
|
import { Badge, Button, Breadcrumbs, createResource } from 'frappe-ui'
|
||||||
import { inject, ref, onMounted } from 'vue'
|
import { inject, ref, onMounted } from 'vue'
|
||||||
import { MapPin, SendHorizonal, Pencil } from 'lucide-vue-next'
|
import {
|
||||||
|
MapPin,
|
||||||
|
SendHorizonal,
|
||||||
|
Pencil,
|
||||||
|
Building2,
|
||||||
|
CalendarDays,
|
||||||
|
ClipboardType,
|
||||||
|
SquareUserRound,
|
||||||
|
} from 'lucide-vue-next'
|
||||||
import JobApplicationModal from '@/components/Modals/JobApplicationModal.vue'
|
import JobApplicationModal from '@/components/Modals/JobApplicationModal.vue'
|
||||||
|
|
||||||
const user = inject('$user')
|
const user = inject('$user')
|
||||||
@@ -142,6 +162,19 @@ const jobApplication = createResource({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const applicationCount = createResource({
|
||||||
|
url: 'frappe.client.get_count',
|
||||||
|
makeParams(values) {
|
||||||
|
return {
|
||||||
|
doctype: 'LMS Job Application',
|
||||||
|
filters: {
|
||||||
|
job: job.data?.name,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
auto: true,
|
||||||
|
})
|
||||||
|
|
||||||
const openApplicationModal = () => {
|
const openApplicationModal = () => {
|
||||||
showApplicationModal.value = true
|
showApplicationModal.value = true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -111,7 +111,8 @@ doc_events = {
|
|||||||
scheduler_events = {
|
scheduler_events = {
|
||||||
"hourly": [
|
"hourly": [
|
||||||
"lms.lms.doctype.lms_certificate_request.lms_certificate_request.schedule_evals"
|
"lms.lms.doctype.lms_certificate_request.lms_certificate_request.schedule_evals"
|
||||||
]
|
],
|
||||||
|
"daily": ["lms.job.doctype.job_opportunity.job_opportunity.update_job_openings"],
|
||||||
}
|
}
|
||||||
|
|
||||||
fixtures = ["Custom Field", "Function", "Industry", "LMS Badge"]
|
fixtures = ["Custom Field", "Function", "Industry", "LMS Badge"]
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
from frappe.utils import get_link_to_form
|
from frappe.utils import get_link_to_form, add_months, getdate
|
||||||
from frappe.utils.user import get_system_managers
|
from frappe.utils.user import get_system_managers
|
||||||
|
|
||||||
from lms.lms.utils import validate_image
|
from lms.lms.utils import validate_image
|
||||||
@@ -19,6 +19,17 @@ class JobOpportunity(Document):
|
|||||||
frappe.utils.validate_url(self.company_website, True)
|
frappe.utils.validate_url(self.company_website, True)
|
||||||
|
|
||||||
|
|
||||||
|
def update_job_openings():
|
||||||
|
old_jobs = frappe.get_all(
|
||||||
|
"Job Opportunity",
|
||||||
|
filters={"status": "Open", "creation": ["<=", add_months(getdate(), -3)]},
|
||||||
|
pluck="name",
|
||||||
|
)
|
||||||
|
|
||||||
|
for job in old_jobs:
|
||||||
|
frappe.db.set_value("Job Opportunity", job, "status", "Closed")
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def report(job, reason):
|
def report(job, reason):
|
||||||
system_managers = get_system_managers(only_name=True)
|
system_managers = get_system_managers(only_name=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user