mirror of
https://github.com/hcengineering/platform.git
synced 2025-04-15 04:49:00 +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:",
|
||||
"UnchangeableType": "This type cannot be changed",
|
||||
"Request": "Request",
|
||||
"ExistingRequests": "There are already existing requests for set dates",
|
||||
"Staff": "Worker",
|
||||
"Member": "Member",
|
||||
"Members": "Members",
|
||||
|
@ -36,6 +36,7 @@
|
||||
"ChooseNewType": "Выберите новый тип:",
|
||||
"UnchangeableType": "Этот тип нельзя поменять",
|
||||
"Request": "Запрос",
|
||||
"ExistingRequests": "На данные даты уже существуют запросы",
|
||||
"Staff": "Работник",
|
||||
"Member": "Сотрудник",
|
||||
"Members": "Сотрудники",
|
||||
|
@ -21,14 +21,16 @@
|
||||
import { translate } from '@hcengineering/platform'
|
||||
import { Card, createQuery, getClient } from '@hcengineering/presentation'
|
||||
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 hr from '../plugin'
|
||||
import { getRequests } from '../utils'
|
||||
|
||||
export let staff: Staff
|
||||
export let date: Date
|
||||
export let readonly: boolean
|
||||
export let docQuery: DocumentQuery<Employee> | undefined
|
||||
export let employeeRequests: Map<Ref<Staff>, Request[]>
|
||||
|
||||
let description: string = ''
|
||||
let employee: Ref<Employee> = staff._id
|
||||
@ -77,13 +79,33 @@
|
||||
function typeSelected (_id: Ref<RequestType>): void {
|
||||
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>
|
||||
|
||||
<Card
|
||||
label={hr.string.CreateRequest}
|
||||
labelProps={{ type: typeLabel }}
|
||||
okAction={saveRequest}
|
||||
canSave={value !== undefined}
|
||||
canSave={value !== undefined && !notLimit}
|
||||
on:close={() => {
|
||||
dispatch('close')
|
||||
}}
|
||||
@ -138,4 +160,9 @@
|
||||
}}
|
||||
/>
|
||||
</svelte:fragment>
|
||||
<svelte:fragment slot="error">
|
||||
{#if notLimit}
|
||||
<Label label={hr.string.ExistingRequests} />
|
||||
{/if}
|
||||
</svelte:fragment>
|
||||
</Card>
|
||||
|
@ -69,6 +69,7 @@
|
||||
staff,
|
||||
date,
|
||||
readonly,
|
||||
employeeRequests,
|
||||
docQuery: { active: true, $search: editableList.join(' | ') }
|
||||
},
|
||||
eventToHTMLElement(e)
|
||||
@ -236,6 +237,7 @@
|
||||
<div class:worked={ww > 0} class="h-full w-full">
|
||||
{#if requests.length}
|
||||
<ScheduleRequests
|
||||
{employeeRequests}
|
||||
{departments}
|
||||
{requests}
|
||||
{editable}
|
||||
|
@ -40,6 +40,7 @@ export default mergeIds(hrId, hr, {
|
||||
ChooseNewType: '' as IntlString,
|
||||
UnchangeableType: '' as IntlString,
|
||||
CreateRequest: '' as IntlString,
|
||||
ExistingRequests: '' as IntlString,
|
||||
Today: '' as IntlString,
|
||||
NoEmployeesInDepartment: '' as IntlString,
|
||||
Summary: '' as IntlString,
|
||||
|
Loading…
Reference in New Issue
Block a user