addMapping method

Future<void> addMapping({
  1. required int slotId,
  2. required CourseToSlot mapping,
})

Adds a mapping to the slot with the given slotId.

Implementation

Future<void> addMapping({required int slotId, required CourseToSlot mapping}) async {
  if (!state.hasData) {
    log('Cannot add mapping: No data');
    return;
  }

  log('Adding mapping $mapping to slot $slotId');

  try {
    data(
      state.requireData.map((s) {
        if (s.id == slotId) {
          return s.copyWith(mappings: [...s.mappings, mapping]);
        }
        return s;
      }).toList(),
    );

    await _datasource.addSlotMapping(
      token: _auth.state.requireData.pick(Webservice.lb_planner_api),
      mapping: mapping,
    );

    log('Added mapping $mapping to slot $slotId');
  } catch (e, s) {
    log('Failed to add mapping $mapping to slot $slotId', e, s);
  }
}