mirror of
https://github.com/hcengineering/platform.git
synced 2025-04-24 09:16:43 +00:00
TSK-1066: don't allow creating requests if already exists for set days (#3053)
Signed-off-by: Vyacheslav Tumanov <me@slavatumanov.me>
This commit is contained in:
parent
34565c5890
commit
46933f1bd7
@ -36,6 +36,7 @@
|
|||||||
"ChooseNewType": "Choose new type:",
|
"ChooseNewType": "Choose new type:",
|
||||||
"UnchangeableType": "This type cannot be changed",
|
"UnchangeableType": "This type cannot be changed",
|
||||||
"Request": "Request",
|
"Request": "Request",
|
||||||
|
"ExistingRequests": "There are already existing requests for set dates",
|
||||||
"Staff": "Worker",
|
"Staff": "Worker",
|
||||||
"Member": "Member",
|
"Member": "Member",
|
||||||
"Members": "Members",
|
"Members": "Members",
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
"ChooseNewType": "Выберите новый тип:",
|
"ChooseNewType": "Выберите новый тип:",
|
||||||
"UnchangeableType": "Этот тип нельзя поменять",
|
"UnchangeableType": "Этот тип нельзя поменять",
|
||||||
"Request": "Запрос",
|
"Request": "Запрос",
|
||||||
|
"ExistingRequests": "На данные даты уже существуют запросы",
|
||||||
"Staff": "Работник",
|
"Staff": "Работник",
|
||||||
"Member": "Сотрудник",
|
"Member": "Сотрудник",
|
||||||
"Members": "Сотрудники",
|
"Members": "Сотрудники",
|
||||||
|
@ -21,14 +21,16 @@
|
|||||||
import { translate } from '@hcengineering/platform'
|
import { translate } from '@hcengineering/platform'
|
||||||
import { Card, createQuery, getClient } from '@hcengineering/presentation'
|
import { Card, createQuery, getClient } from '@hcengineering/presentation'
|
||||||
import { EmployeeBox } from '@hcengineering/contact-resources'
|
import { EmployeeBox } from '@hcengineering/contact-resources'
|
||||||
import ui, { Button, DateRangePresenter, DropdownLabelsIntl, IconAttachment } from '@hcengineering/ui'
|
import ui, { Button, DateRangePresenter, DropdownLabelsIntl, IconAttachment, Label } from '@hcengineering/ui'
|
||||||
import { createEventDispatcher } from 'svelte'
|
import { createEventDispatcher } from 'svelte'
|
||||||
import hr from '../plugin'
|
import hr from '../plugin'
|
||||||
|
import { getRequests } from '../utils'
|
||||||
|
|
||||||
export let staff: Staff
|
export let staff: Staff
|
||||||
export let date: Date
|
export let date: Date
|
||||||
export let readonly: boolean
|
export let readonly: boolean
|
||||||
export let docQuery: DocumentQuery<Employee> | undefined
|
export let docQuery: DocumentQuery<Employee> | undefined
|
||||||
|
export let employeeRequests: Map<Ref<Staff>, Request[]>
|
||||||
|
|
||||||
let description: string = ''
|
let description: string = ''
|
||||||
let employee: Ref<Employee> = staff._id
|
let employee: Ref<Employee> = staff._id
|
||||||
@ -77,13 +79,33 @@
|
|||||||
function typeSelected (_id: Ref<RequestType>): void {
|
function typeSelected (_id: Ref<RequestType>): void {
|
||||||
type = types.find((p) => p._id === _id)
|
type = types.find((p) => p._id === _id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function moreThanLimit (
|
||||||
|
employeeRequests: Map<Ref<Staff>, Request[]>,
|
||||||
|
staff: Staff,
|
||||||
|
startDate: Date,
|
||||||
|
endDate: Date,
|
||||||
|
type: RequestType | undefined
|
||||||
|
): boolean {
|
||||||
|
if (employeeRequests === undefined) return true
|
||||||
|
if (type === undefined) return true
|
||||||
|
const requests = getRequests(employeeRequests, startDate, endDate, staff._id)
|
||||||
|
return requests.length > 0
|
||||||
|
}
|
||||||
|
$: notLimit = moreThanLimit(
|
||||||
|
employeeRequests,
|
||||||
|
staff,
|
||||||
|
new Date(value),
|
||||||
|
new Date(new Date(dueDate).setHours(23, 59, 59, 999)),
|
||||||
|
type
|
||||||
|
)
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Card
|
<Card
|
||||||
label={hr.string.CreateRequest}
|
label={hr.string.CreateRequest}
|
||||||
labelProps={{ type: typeLabel }}
|
labelProps={{ type: typeLabel }}
|
||||||
okAction={saveRequest}
|
okAction={saveRequest}
|
||||||
canSave={value !== undefined}
|
canSave={value !== undefined && !notLimit}
|
||||||
on:close={() => {
|
on:close={() => {
|
||||||
dispatch('close')
|
dispatch('close')
|
||||||
}}
|
}}
|
||||||
@ -138,4 +160,9 @@
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</svelte:fragment>
|
</svelte:fragment>
|
||||||
|
<svelte:fragment slot="error">
|
||||||
|
{#if notLimit}
|
||||||
|
<Label label={hr.string.ExistingRequests} />
|
||||||
|
{/if}
|
||||||
|
</svelte:fragment>
|
||||||
</Card>
|
</Card>
|
||||||
|
@ -69,6 +69,7 @@
|
|||||||
staff,
|
staff,
|
||||||
date,
|
date,
|
||||||
readonly,
|
readonly,
|
||||||
|
employeeRequests,
|
||||||
docQuery: { active: true, $search: editableList.join(' | ') }
|
docQuery: { active: true, $search: editableList.join(' | ') }
|
||||||
},
|
},
|
||||||
eventToHTMLElement(e)
|
eventToHTMLElement(e)
|
||||||
@ -236,6 +237,7 @@
|
|||||||
<div class:worked={ww > 0} class="h-full w-full">
|
<div class:worked={ww > 0} class="h-full w-full">
|
||||||
{#if requests.length}
|
{#if requests.length}
|
||||||
<ScheduleRequests
|
<ScheduleRequests
|
||||||
|
{employeeRequests}
|
||||||
{departments}
|
{departments}
|
||||||
{requests}
|
{requests}
|
||||||
{editable}
|
{editable}
|
||||||
|
@ -40,6 +40,7 @@ export default mergeIds(hrId, hr, {
|
|||||||
ChooseNewType: '' as IntlString,
|
ChooseNewType: '' as IntlString,
|
||||||
UnchangeableType: '' as IntlString,
|
UnchangeableType: '' as IntlString,
|
||||||
CreateRequest: '' as IntlString,
|
CreateRequest: '' as IntlString,
|
||||||
|
ExistingRequests: '' as IntlString,
|
||||||
Today: '' as IntlString,
|
Today: '' as IntlString,
|
||||||
NoEmployeesInDepartment: '' as IntlString,
|
NoEmployeesInDepartment: '' as IntlString,
|
||||||
Summary: '' as IntlString,
|
Summary: '' as IntlString,
|
||||||
|
Loading…
Reference in New Issue
Block a user