{"version":3,"file":"static/js/209.1b44b096.chunk.js","mappings":"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","sources":["entities/calendar.ts","services/api/calendar.ts"],"sourcesContent":["import Moment from 'moment';\r\nimport { IServiceIntervalRequest, IServiceArriveTimeRequest } from './service';\r\n\r\nexport const enum CalendarType {\r\n Classic = 1,\r\n Timetable = 2\r\n}\r\n\r\nexport interface IInterval {\r\n Start: string,\r\n End: string,\r\n Reserved?: boolean,\r\n}\r\n\r\nexport interface IDateInterval {\r\n Date: string;\r\n Intervals: IInterval[];\r\n}\r\n\r\nexport interface IDateIntervalByCalendar {\r\n Intervals: IDateInterval[],\r\n CalendarId: number,\r\n DayStart: string,\r\n DayEnd: string\r\n}\r\n\r\nexport interface ICalendarBase {\r\n Id: number;\r\n Name: string;\r\n Type: CalendarType;\r\n}\r\n\r\nexport const enum TimeTableViewType {\r\n AgendaDay,\r\n BasicDay,\r\n AgendaWeek,\r\n BasicWeek,\r\n Month\r\n}\r\n\r\nexport const enum ClassicViewType {\r\n DateAndTime,\r\n Calendar\r\n}\r\n\r\nexport interface ICalendar extends ICalendarBase {\r\n WeeksForward: number;\r\n ConcurrentNum: number;\r\n DayStart: string;\r\n DayEnd: string;\r\n MinTimeModify: number;\r\n MinTimeReserve: number;\r\n Readonly: boolean;\r\n ShortDescription: string | null;\r\n Description: string | null;\r\n PictureLink: string | null;\r\n GoogleCalendarName?: string;\r\n WeekendDisabled: boolean;\r\n UserViewSlotMinutes: number;\r\n ClassicCustomerViewType: ClassicViewType;\r\n DefaultCustomerView: TimeTableViewType;\r\n IsTimeSelectDropDown: boolean;\r\n HideSeatCount: boolean;\r\n PhoneNumber?: string;\r\n}\r\n\r\nexport interface ICalendarIntervals {\r\n Intervals: IDateInterval[];\r\n MinTimeReserve: number\r\n}\r\n\r\nexport interface ICalendarIntervalRequest extends IServiceIntervalRequest {\r\n calendarId: number;\r\n}\r\nexport interface ICalendarAllIntervalRequest {\r\n calendarIds: string[];\r\n startDate: string;\r\n endDate: string;\r\n personCount?: number;\r\n}\r\n\r\nexport interface ICalendarArriveTimeRequest extends IServiceArriveTimeRequest {\r\n calendarId: number;\r\n}\r\n\r\nexport const randomCalendarItem: ICalendar = {\r\n Id: 0,\r\n Name: 'Mindegy',\r\n WeeksForward: 0,\r\n ConcurrentNum: 0,\r\n Readonly: false,\r\n Type: 0,\r\n DayStart: '08:00',\r\n DayEnd: '20:00',\r\n Description: '',\r\n ShortDescription: '',\r\n MinTimeModify: 0,\r\n MinTimeReserve: 0,\r\n PictureLink: '',\r\n WeekendDisabled: false,\r\n UserViewSlotMinutes: 60,\r\n ClassicCustomerViewType: ClassicViewType.DateAndTime,\r\n DefaultCustomerView: TimeTableViewType.Month,\r\n IsTimeSelectDropDown: false,\r\n HideSeatCount: false\r\n};\r\n\r\nexport const isRandomCalendar = (calendarId: number): boolean => {\r\n return calendarId === 0;\r\n}\r\n\r\nexport const isAppointmentCalendar = (calendar?: ICalendar): boolean => {\r\n if (!calendar) {\r\n return false;\r\n }\r\n return calendar.ClassicCustomerViewType === ClassicViewType.Calendar;\r\n}\r\n\r\nexport const getCalendarMaxDate = (weeksForward: number): string => {\r\n return Moment().add(weeksForward, 'weeks').endOf('week').toISOString()\r\n}","import fetcher from '../fetcher';\r\nimport { ICalendar, IDateInterval, ICalendarIntervals, ICalendarIntervalRequest, CalendarType, ICalendarArriveTimeRequest, ICalendarAllIntervalRequest, IDateIntervalByCalendar } from './../../entities/calendar';\r\nimport { IDTO, IResponseDto } from './../../entities/common';\r\nimport { handleError } from './errorHandler';\r\n\r\nexport const getCalendars = (): Promise => {\r\n return fetcher.get>('/Calendars/WithDetails')\r\n .then(respJson => respJson.Data || [])\r\n};\r\n\r\nexport const getCalendarById = (calendarId?: number): Promise => {\r\n return fetcher.get>(`/Calendars/${calendarId}`)\r\n .then((respJson) => respJson.Data);\r\n};\r\n\r\nexport const getCalendarsByService = (id: number): Promise => {\r\n return fetcher.get>(`/Services/${id}/Calendars/WithDetails`)\r\n .then(respJson => respJson.Data.filter(calendar => calendar.Type !== CalendarType.Timetable) || [], () => []);\r\n};\r\n\r\nexport const getCalendarFirstFreeSlot = (calendarId: number, serviceId?: number): Promise => {\r\n const params = serviceId ?\r\n '?' + new URLSearchParams({\r\n ServiceId: '' + serviceId,\r\n }).toString() : ''\r\n return fetcher.get>(`/Calendars/${calendarId}/FirstFreeSlot${params}`)\r\n .then((respJson) => respJson.Data || '')\r\n .catch(() => '');\r\n};\r\n\r\nexport const getCalendarDaysWithFreeIntervals =\r\n (request: ICalendarIntervalRequest): Promise => {\r\n return fetcher.post>(`/Calendars/${request.calendarId}/DaysWithFreeIntervals`, request)\r\n .then(response => {\r\n return response.Data\r\n }, (errorDto: IResponseDto) => {\r\n return Promise.reject(handleError(errorDto));\r\n });\r\n };\r\n\r\n/**\r\n * Fetch free appointment time intervals on a given day or in a set of days\r\n * @property startDate - Single day or first in a set of days\r\n * @property [endDate] - Last in a set days\r\n */\r\nexport const getCalendarFreeIntervals =\r\n (request: ICalendarIntervalRequest): Promise => {\r\n request.endDate = request.endDate || request.startDate\r\n\r\n return fetcher.post>(`/Calendars/${request.calendarId}/FreeIntervals`, request)\r\n .then(response => {\r\n return response.Data.Intervals\r\n }, (errorDto: IResponseDto) => {\r\n return Promise.reject(handleError(errorDto));\r\n });\r\n }\r\n\r\nexport const getCalendarAllIntervals =\r\n (request: ICalendarAllIntervalRequest): Promise => {\r\n request.endDate = request.endDate || request.startDate;\r\n const calendarIdsParam = new URLSearchParams(\r\n request.calendarIds.map(s => ['calendarIds', s]));\r\n\r\n const params = new URLSearchParams({\r\n StartDate: request.startDate,\r\n EndDate: request.endDate,\r\n UseSlotMinutes: false.toString()\r\n });\r\n\r\n const queryString = '?' + params.toString() + '&' + calendarIdsParam.toString();\r\n\r\n return fetcher.get>(`/Calendars/AllIntervals${queryString}`)\r\n .then(response => {\r\n return response.Data\r\n }, (errorDto: IResponseDto) => {\r\n return Promise.reject(handleError(errorDto));\r\n });\r\n }\r\n\r\nexport const getCalendarArriveTimes =\r\n (request: ICalendarArriveTimeRequest): Promise => {\r\n const params = \r\n '?' + new URLSearchParams({\r\n ServiceId: '' + request.serviceId,\r\n Date: request.startDate\r\n }).toString()\r\n\r\n return fetcher.get>(`/Calendars/${request.calendarId}/ArrivalTimes${params}`)\r\n .then(response => {\r\n return response.Data\r\n }, (errorDto: IResponseDto) => {\r\n return Promise.reject(handleError(errorDto));\r\n });\r\n }\r\n\r\nexport const googleSyncByCalendar = (calendarId: number): Promise => {\r\n return fetcher.post(`/Calendars/${calendarId}/GoogleSync`, {});\r\n}\r\n\r\nexport const googleSyncAll = (): Promise => {\r\n return fetcher.post(`/Calendars/GoogleSync`, {});\r\n}"],"names":["CalendarType","TimeTableViewType","ClassicViewType","randomCalendarItem","Id","Name","WeeksForward","ConcurrentNum","Readonly","Type","DayStart","DayEnd","Description","ShortDescription","MinTimeModify","MinTimeReserve","PictureLink","WeekendDisabled","UserViewSlotMinutes","ClassicCustomerViewType","DateAndTime","DefaultCustomerView","Month","IsTimeSelectDropDown","HideSeatCount","isRandomCalendar","calendarId","isAppointmentCalendar","calendar","Calendar","getCalendarMaxDate","weeksForward","add","endOf","toISOString","getCalendars","get","then","respJson","Data","getCalendarById","getCalendarsByService","id","filter","Timetable","getCalendarFirstFreeSlot","serviceId","params","URLSearchParams","ServiceId","toString","catch","getCalendarDaysWithFreeIntervals","request","post","response","errorDto","Promise","reject","getCalendarFreeIntervals","endDate","startDate","Intervals","getCalendarAllIntervals","calendarIdsParam","calendarIds","map","s","queryString","StartDate","EndDate","UseSlotMinutes","getCalendarArriveTimes","Date","googleSyncByCalendar","googleSyncAll"],"sourceRoot":""}