ilios/frontend

View on GitHub
packages/frontend/app/components/school-session-type-manager.js

Summary

Maintainability
A
0 mins
Test Coverage
import Component from '@glimmer/component';
import { service } from '@ember/service';
import { dropTask, restartableTask } from 'ember-concurrency';
import { tracked } from '@glimmer/tracking';

export default class SchoolSessionTypeManagerComponent extends Component {
  @service store;
  @tracked readonlySessionType;

  load = restartableTask(async () => {
    const { title, calendarColor, assessment, active: isActive } = this.args.sessionType;
    const assessmentOption = await this.args.sessionType.assessmentOption;
    const selectedAssessmentOptionId = assessmentOption?.id;
    const firstAamcMethod = await this.args.sessionType.firstAamcMethod;
    const selectedAamcMethodId = firstAamcMethod?.id;
    this.readonlySessionType = {
      title,
      calendarColor,
      assessment,
      selectedAssessmentOptionId,
      selectedAamcMethodId,
      isActive,
    };
  });

  save = dropTask(
    async (title, calendarColor, assessment, assessmentOption, aamcMethod, isActive) => {
      const aamcMethods = aamcMethod ? [aamcMethod] : [];
      this.args.sessionType.setProperties({
        title,
        calendarColor,
        assessment,
        assessmentOption,
        aamcMethods,
        active: isActive,
      });

      await this.args.sessionType.save();
      this.args.close();
    },
  );
}