Merge pull request #856 from pateljannat/jobs-applied

feat: job application count
This commit is contained in:
Jannat Patel
2024-06-05 13:56:57 +05:30
committed by GitHub
5 changed files with 92 additions and 3359 deletions

View File

@@ -147,7 +147,7 @@ const sidebarSettings = createResource({
Object.keys(data).forEach((key) => {
if (!parseInt(data[key])) {
sidebarLinks.value = sidebarLinks.value.filter(
(link) => link.label.toLowerCase() !== key
(link) => link.label.toLowerCase().split(' ').join('_') !== key
)
}
})

View File

@@ -59,29 +59,41 @@
:alt="job.data.company_name"
/>
<div>
<div class="text-2xl font-semibold mb-2">
<div class="text-2xl font-semibold mb-4">
{{ job.data.job_title }}
</div>
<div>
{{ __('posted by') }}
<span class="font-medium">{{ job.data.company_name }}</span>
{{ __('on') }}
<span class="font-medium">{{
dayjs(job.data.creation).format('DD MMM YYYY')
}}</span>
</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>
<div class="grid grid-cols-3 gap-8">
<div class="grid grid-cols-1 gap-2">
<div class="flex items-center space-x-2">
<Building2 class="h-4 w-4 stroke-1.5" />
<span>{{ job.data.company_name }}</span>
</div>
<div class="flex items-center space-x-2">
<MapPin class="h-4 w-4 stroke-1.5" />
</template>
</Badge>
<span>{{ job.data.location }}</span>
</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>
@@ -101,7 +113,15 @@
<script setup>
import { Badge, Button, Breadcrumbs, createResource } from 'frappe-ui'
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'
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 = () => {
showApplicationModal.value = true
}

View File

@@ -111,7 +111,8 @@ doc_events = {
scheduler_events = {
"hourly": [
"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"]

View File

@@ -4,7 +4,7 @@
import frappe
from frappe import _
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 lms.lms.utils import validate_image
@@ -19,6 +19,17 @@ class JobOpportunity(Document):
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()
def report(job, reason):
system_managers = get_system_managers(only_name=True)

3358
yarn.lock

File diff suppressed because it is too large Load Diff