setDeadline method

Future<void> setDeadline(
  1. int taskId,
  2. DateTime start,
  3. DateTime end
)

Sets a deadline for the given taskId.

Implementation

Future<void> setDeadline(int taskId, DateTime start, DateTime end) async {
  if (!state.hasData) {
    log('Cannot set deadline: No plan loaded.');

    return;
  }

  try {
    final deadline = PlanDeadline(
      id: taskId,
      start: start,
      end: end,
    );

    data(
      state.requireData.copyWith(
        deadlines: [
          ...state.requireData.deadlines.where((d) => d.id != taskId),
          deadline,
        ],
      ),
    );

    await _deadlines.setDeadline(
      _auth.state.requireData[Webservice.lb_planner_api],
      deadline,
    );

    log('Deadline set.');

    await captureEvent('deadline_set', properties: {'id': taskId, 'start': start, 'end': end});

    await _tasks.build(this);
    await build(this);
  } catch (e, st) {
    log('Failed to set deadline.', e, st);

    return;
  }
}