{"version":3,"file":"xxmachina-components-services-forms-schedule.mjs","sources":["../../../../../packages/@xxmachina/components/src/lib/services/forms/schedule/schedule.service.ts","../../../../../packages/@xxmachina/components/src/lib/services/forms/schedule/xxmachina-components-services-forms-schedule.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { Schedule } from '@xxmachina/common/domain/models';\nimport dayjs from 'dayjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ScheduleService {\n  protected fb = inject(FormBuilder);\n\n  buildScheduleForm({\n    id = null as unknown as string,\n    calendarId = 'primary',\n    name = '',\n    startAt = dayjs('2023-12-16'),\n    endAt = startAt.add(1, 'hours'),\n    url = '',\n  }: Partial<Schedule> = {}) {\n    return this.fb.group({\n      id: [id],\n      calendarId: [calendarId],\n      name: [name],\n      startAt: [startAt],\n      endAt: [endAt],\n      url: [url],\n    });\n  }\n\n  build() {\n    return this.fb.group({\n      dateRange: this.fb.group({\n        start: [dayjs()],\n        end: [dayjs().add(1, 'month')],\n      }),\n      timeRange: this.fb.group({\n        start: ['13:00'],\n        end: ['20:00'],\n      }),\n      title: [''],\n      events: this.fb.array<FormGroup<{\n        startAt: FormControl<dayjs.Dayjs>,\n        endAt: FormControl<dayjs.Dayjs>,\n      }>>([]),\n      message: [''],\n    });\n  }\n\n  getSchedulesForm(form: ReturnType<typeof this['build']>): FormArray {\n    return form.get(['events']) as FormArray;\n  }\n\n  getSchedules(form: ReturnType<typeof this['build']>): Schedule[] {\n    return this.getSchedulesForm(form).value.map((schedule: any) => Schedule.from({...schedule}));\n  }\n\n  addSchedule(form: ReturnType<typeof this['build']>, schedule: Schedule) {\n    this.rebuildSchedulesForm(form, sortSchedules([...this.getSchedules(form), schedule]));\n  }\n\n  removeAt(form: ReturnType<typeof this['build']>, index: number) {\n    const scheduleForm = this.getSchedulesForm(form);\n    scheduleForm.removeAt(index);\n  }\n\n  removeAllSchedules(form: ReturnType<typeof this['build']>) {\n    const scheduleForm = this.getSchedulesForm(form);\n    while (scheduleForm.length) scheduleForm.removeAt(0);\n  }\n\n  rebuildSchedulesForm(form: ReturnType<typeof this['build']>, schedules: Schedule[]) {\n    this.removeAllSchedules(form);\n    const scheduleForm = this.getSchedulesForm(form);\n    for (const schedule of schedules) scheduleForm.push(this.buildScheduleForm(schedule));\n  }\n}\n\nfunction sortSchedules(schedules: Schedule[]): Schedule[] {\n  return schedules.sort((a, b) => a.startAt.diff(b.startAt));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAQa,eAAe,CAAA;AAChB,IAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;AAElC,IAAA,iBAAiB,CAAC,EAChB,EAAE,GAAG,IAAyB,EAC9B,UAAU,GAAG,SAAS,EACtB,IAAI,GAAG,EAAE,EACT,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,EAC7B,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAC/B,GAAG,GAAG,EAAE,MACa,EAAE,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACnB,EAAE,EAAE,CAAC,EAAE,CAAC;YACR,UAAU,EAAE,CAAC,UAAU,CAAC;YACxB,IAAI,EAAE,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,CAAC,OAAO,CAAC;YAClB,KAAK,EAAE,CAAC,KAAK,CAAC;YACd,GAAG,EAAE,CAAC,GAAG,CAAC;AACX,SAAA,CAAC;IACJ;IAEA,KAAK,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACnB,YAAA,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACvB,gBAAA,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;gBAChB,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;aAC/B,CAAC;AACF,YAAA,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;gBACvB,KAAK,EAAE,CAAC,OAAO,CAAC;gBAChB,GAAG,EAAE,CAAC,OAAO,CAAC;aACf,CAAC;YACF,KAAK,EAAE,CAAC,EAAE,CAAC;YACX,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAGjB,EAAE,CAAC;YACP,OAAO,EAAE,CAAC,EAAE,CAAC;AACd,SAAA,CAAC;IACJ;AAEA,IAAA,gBAAgB,CAAC,IAAsC,EAAA;QACrD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAc;IAC1C;AAEA,IAAA,YAAY,CAAC,IAAsC,EAAA;QACjD,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAC,GAAG,QAAQ,EAAC,CAAC,CAAC;IAC/F;IAEA,WAAW,CAAC,IAAsC,EAAE,QAAkB,EAAA;QACpE,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxF;IAEA,QAAQ,CAAC,IAAsC,EAAE,KAAa,EAAA;QAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAChD,QAAA,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC9B;AAEA,IAAA,kBAAkB,CAAC,IAAsC,EAAA;QACvD,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAChD,OAAO,YAAY,CAAC,MAAM;AAAE,YAAA,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtD;IAEA,oBAAoB,CAAC,IAAsC,EAAE,SAAqB,EAAA;AAChF,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAChD,KAAK,MAAM,QAAQ,IAAI,SAAS;YAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACvF;uGAlEW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA;;2FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;AAsED,SAAS,aAAa,CAAC,SAAqB,EAAA;IAC1C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC5D;;AC/EA;;AAEG;;;;"}