public async Task Handle(Activity activity, IUrlHelper urlHelper)
        {
            var editForm = GetEditForm(activity);

            var offset          = activity.GetOffset();
            var date            = DateTimeOffset.Parse(editForm.PlannedDrawTimeLocalDate);
            var time            = DateTimeOffset.Parse(editForm.PlannedDrawTimeLocalTime);
            var plannedDrawTime = new DateTimeOffset(date.Year, date.Month, date.Day, time.Hour, time.Minute, time.Second, 0, offset).ToUniversalTime();

            var channelData = activity.GetChannelData <TeamsChannelData>();
            var isGroupChat = channelData.Channel == null;
            var teamId      = isGroupChat ? string.Empty : channelData.Team.Id;
            var channelId   = isGroupChat ? activity.Conversation.Id : channelData.Channel.Id;
            var competition = await _competitionService.CreateActiveCompetition(
                activity.ServiceUrl,
                Guid.Parse(channelData.Tenant.Id),
                teamId,
                channelId,
                plannedDrawTime,
                activity.Locale,
                offset.TotalHours,
                editForm.Gift,
                editForm.GiftImageUrl,
                int.Parse(editForm.WinnerCount),
                activity.From.Name,
                activity.From.AadObjectId);

            var mainActivity = _activityBuilder.CreateMainActivity(competition);

            using (var botClient = _botClientFactory.CreateBotClient(activity.ServiceUrl))
            {
                var mainMessage = await botClient.SendToConversationAsync(mainActivity);

                await _competitionService.UpdateMainActivity(competition.Id, mainMessage.Id);
            }

            await _timerService.AddScheduledHttpRequest(
                competition.PlannedDrawTime,
                "POST",
                urlHelper.Action(nameof(CompetitionsController.DrawForCompetition), "Competitions", new { competitionId = competition.Id }));
        }