2022-02-07 09:03:14 +00:00
|
|
|
//
|
|
|
|
// Copyright © 2020, 2021 Anticrm Platform Contributors.
|
2022-04-29 05:27:17 +00:00
|
|
|
// Copyright © 2022 Hardcore Engineering Inc.
|
2022-02-07 09:03:14 +00:00
|
|
|
//
|
|
|
|
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
|
|
|
|
// you may not use this file except in compliance with the License. You may
|
|
|
|
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
|
|
|
|
//
|
|
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
//
|
|
|
|
// See the License for the specific language governing permissions and
|
|
|
|
// limitations under the License.
|
|
|
|
//
|
|
|
|
|
2023-01-14 10:54:54 +00:00
|
|
|
import contact, { ChannelProvider, Employee, formatName } from '@hcengineering/contact'
|
2023-01-18 09:57:13 +00:00
|
|
|
import { Ref, Timestamp, toIdMap } from '@hcengineering/core'
|
2023-01-14 10:54:54 +00:00
|
|
|
import { createQuery, getClient } from '@hcengineering/presentation'
|
2022-02-07 09:03:14 +00:00
|
|
|
|
|
|
|
const client = getClient()
|
2022-04-29 05:27:17 +00:00
|
|
|
const channelProviders = client.findAll(contact.class.ChannelProvider, {})
|
2022-02-07 09:03:14 +00:00
|
|
|
|
|
|
|
export async function getChannelProviders (): Promise<Map<Ref<ChannelProvider>, ChannelProvider>> {
|
2022-04-29 05:27:17 +00:00
|
|
|
const cp = await channelProviders
|
2022-02-07 09:03:14 +00:00
|
|
|
const map = new Map<Ref<ChannelProvider>, ChannelProvider>()
|
|
|
|
for (const provider of cp) {
|
|
|
|
map.set(provider._id, provider)
|
|
|
|
}
|
|
|
|
return map
|
|
|
|
}
|
2022-05-12 07:05:26 +00:00
|
|
|
|
|
|
|
export function formatDate (dueDateMs: Timestamp): string {
|
|
|
|
return new Date(dueDateMs).toLocaleString('default', {
|
|
|
|
month: 'short',
|
|
|
|
day: 'numeric',
|
|
|
|
hour: '2-digit',
|
|
|
|
minute: '2-digit'
|
|
|
|
})
|
|
|
|
}
|
2023-01-14 10:54:54 +00:00
|
|
|
|
|
|
|
export async function employeeSort (value: Array<Ref<Employee>>): Promise<Array<Ref<Employee>>> {
|
|
|
|
return await new Promise((resolve) => {
|
|
|
|
const query = createQuery(true)
|
|
|
|
query.query(contact.class.Employee, { _id: { $in: value } }, (res) => {
|
2023-01-18 09:57:13 +00:00
|
|
|
const employees = toIdMap(res)
|
2023-01-14 10:54:54 +00:00
|
|
|
value.sort((a, b) => {
|
|
|
|
const employeeId1 = a as Ref<Employee> | null | undefined
|
|
|
|
const employeeId2 = b as Ref<Employee> | null | undefined
|
|
|
|
|
|
|
|
if (employeeId1 == null && employeeId2 != null) {
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
|
|
|
if (employeeId1 != null && employeeId2 == null) {
|
|
|
|
return -1
|
|
|
|
}
|
|
|
|
|
|
|
|
if (employeeId1 != null && employeeId2 != null) {
|
|
|
|
const name1 = formatName(employees.get(employeeId1)?.name ?? '')
|
|
|
|
const name2 = formatName(employees.get(employeeId2)?.name ?? '')
|
|
|
|
|
|
|
|
return name1.localeCompare(name2)
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0
|
|
|
|
})
|
|
|
|
resolve(value)
|
|
|
|
query.unsubscribe()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|