You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcp-csc-ui/src/api/call-forwarding.js

245 lines
5.6 KiB

import {
del,
get,
getList, patchReplace, post, putMinimal
} from 'src/api/common'
import {
v4
} from 'uuid'
import _ from 'lodash'
import { showGlobalError } from 'src/helpers/ui'
export async function cfLoadMappings (subscriberId) {
return get({
resource: 'cfmappings',
resourceId: subscriberId
})
}
export async function cfLoadDestinationSets (subscriberId) {
return getList({
resource: 'cfdestinationsets',
all: true,
params: (subscriberId) ? { subscriber_id: subscriberId } : {}
})
}
export async function cfLoadSourceSets (subscriberId) {
return getList({
resource: 'cfsourcesets',
params: (subscriberId) ? { subscriber_id: subscriberId } : {}
})
}
export async function cfLoadTimeSets (subscriberId) {
return getList({
resource: 'cftimesets',
params: (subscriberId) ? { subscriber_id: subscriberId } : {}
})
}
export async function cfLoadMappingsFull (subscriberId) {
return await Promise.all([
cfLoadMappings(subscriberId),
cfLoadDestinationSets(),
cfLoadSourceSets(),
cfLoadTimeSets()
])
}
export async function cfCreateDestinationSet (payload) {
return post({
resource: 'cfdestinationsets',
body: payload
})
}
export async function cfDeleteDestinationSet (id) {
return del({
resource: 'cfdestinationsets',
resourceId: id
})
}
export async function cfCreateSourceSet (id, payload) {
const sources = []
payload.numbers.forEach((number) => {
sources.push({
source: number
})
})
try {
const res = await post({
resource: 'cfsourcesets',
body: {
name: payload.name,
subscriber_id: id,
is_regex: true,
sources: sources,
mode: payload.mode
}
})
if (!_.isString(res)) {
return res.id + ''
} else {
return res
}
} catch (e) {
showGlobalError(e)
}
}
export async function cfUpdateSourceSet (id, payload) {
const sources = []
payload.numbers.forEach((number) => {
sources.push({
source: number
})
})
return putMinimal({
resource: 'cfsourcesets',
resourceId: payload.id,
body: {
name: payload.name,
subscriber_id: id,
is_regex: true,
sources: sources,
mode: payload.mode
}
})
}
export async function cfDeleteSourceSet (id) {
return del({
resource: 'cfsourcesets',
resourceId: id
})
}
export async function cfCreateTimeSetDate (subscriberId, date) {
return post({
resource: 'cftimesets',
body: {
subscriber_id: subscriberId,
name: 'csc-date-exact-' + v4(),
times: [
{
minute: null,
month: date.month,
hour: null,
mday: date.date,
year: date.year,
wday: null
}
]
}
})
}
export async function cfUpdateTimeSetDate (timeSetId, date) {
return patchReplace({
resource: 'cftimesets',
resourceId: timeSetId,
fieldPath: 'times',
value: [
{
minute: null,
month: date.month,
hour: null,
mday: date.date,
year: date.year,
wday: null
}
]
})
}
export async function cfDeleteTimeSet (timesetId) {
return del({
resource: 'cftimesets',
resourceId: timesetId
})
}
export async function cfCreateTimeSetDateRange (subscriberId, times) {
return post({
resource: 'cftimesets',
body: {
subscriber_id: subscriberId,
name: 'csc-date-range-' + v4(),
times: times
}
})
}
export async function cfUpdateTimeSetDateRange (timeSetId, times) {
return patchReplace({
resource: 'cftimesets',
resourceId: timeSetId,
fieldPath: 'times',
value: times
})
}
export async function cfCreateTimeSetWeekdays (subscriberId, weekdays) {
const times = []
weekdays.forEach((weekday) => {
times.push({
minute: null,
month: null,
hour: null,
mday: null,
year: null,
wday: weekday
})
})
return post({
resource: 'cftimesets',
body: {
subscriber_id: subscriberId,
name: 'csc-weekdays-' + v4(),
times: times
}
})
}
export async function cfUpdateTimeSetWeekdays (timeSetId, weekdays) {
const times = []
weekdays.forEach((weekday) => {
times.push({
minute: null,
month: null,
hour: null,
mday: null,
year: null,
wday: weekday
})
})
return patchReplace({
resource: 'cftimesets',
resourceId: timeSetId,
fieldPath: 'times',
value: times
})
}
export async function cfCreateOfficeHours (subscriberId, times) {
return post({
resource: 'cftimesets',
body: {
subscriber_id: subscriberId,
name: 'csc-office-hours-' + v4(),
times: times
}
})
}
export async function cfUpdateOfficeHours (timeSetId, times) {
return patchReplace({
resource: 'cftimesets',
resourceId: timeSetId,
fieldPath: 'times',
value: times
})
}