public async Task <string> DeleteMarkSessionAndDependantResources(
            string markSessionId
            )
        {
            var markSessionModel = await _markingServiceClient.GetMarkSessionById(markSessionId);

            await _markingServiceClient.UpdateMarkSessionType(
                markSessionId,
                MarkingServiceClient.MarkSessionTypeToBeDeleted
                );

            return(await _markSessionHandler.DeleteMarkSessionAndDependantResources(markSessionModel));
        }
        public async Task StartDeletionProcess(
            string markSessionId
            )
        {
            var isMarkSessionDeleted        = false;
            var taskExecutionDelayInSeconds = 1;
            var restartCount = 0;
            var stopwatch    = new Stopwatch();

            while (!isMarkSessionDeleted)
            {
                try
                {
                    _loggerService.LogBackgroundJobInfoEvent(
                        $"Deletion job for mark session with id: {markSessionId} will start in {taskExecutionDelayInSeconds} second/s, restart count: {restartCount}"
                        );
                    await Task.Delay(TimeSpan.FromSeconds(taskExecutionDelayInSeconds));

                    stopwatch.Start();

                    var markSessionModel = await _markingServiceClient.GetMarkSessionById(markSessionId);

                    await _dependantResourceHandler.DeleteDependantResourcesForMarkSession(markSessionModel);

                    await _markingServiceClient.DeleteEmptyMarkingSession(markSessionId);

                    stopwatch.Stop();
                    isMarkSessionDeleted = true;
                }
                catch (MarkSessionDoesNotExistException)
                {
                    stopwatch.Stop();
                    isMarkSessionDeleted = true;
                }
                catch (Exception e)
                {
                    stopwatch.Stop();
                    _loggerService.LogBackgroundJobErrorEvent(stopwatch.Elapsed.TotalSeconds, e);
                    taskExecutionDelayInSeconds = taskExecutionDelayInSeconds * 2 % MaxDelayForJobInSeconds;
                    restartCount++;
                }
            }

            _loggerService.LogBackgroundJobInfoEvent(
                stopwatch.Elapsed.TotalSeconds,
                $"Deletion job for mark session with id: {markSessionId} completed!"
                );
        }