public async Task <SecretSantaEvent> CreateSecretSantaEvent(int groupId, int year, ulong?createdById) { try { var ssEvent = new SecretSantaEvent { SecretSantaGroupId = groupId, Year = year, CreatedById = createdById }; var content = new StringContent(JsonConvert.SerializeObject(ssEvent), Encoding.UTF8, "application/json"); var response = await _client.PostAsync($"secretsanta/group/{groupId}/event", content); if (!response.IsSuccessStatusCode) { var errorMessageString = await response.Content.ReadAsStringAsync(); var errorMessage = JsonConvert.DeserializeObject <BrobotServiceError>(errorMessageString); throw new BrobotServiceException((int)response.StatusCode, errorMessage.Message, $"Failed to create event for group {groupId}, year {year}"); } var responseString = await response.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <SecretSantaEvent>(responseString)); } catch (BrobotServiceException) { throw; } catch (Exception ex) { _logger.LogError(ex, $"Failed to create event for group {groupId}, year {year}"); throw new BrobotServiceException($"Failed to create event for group {groupId}, year {year}", ex); } }
public override async Task ExecuteAsync(Message message, TelegramBotClient client) { var chatId = message.Chat.Id; await client.SendChatActionAsync(chatId, ChatAction.Typing); using (TelegramChatContext db = new TelegramChatContext()) { try { var events = db.Events; var _event = await events.FirstOrDefaultAsync(x => x.HostChatId == chatId); if (_event == null) { SecretSantaEvent secretSantaEvent = new SecretSantaEvent(chatId); if (events.Where(x => x.InviteKey.Equals(secretSantaEvent.InviteKey)).Any()) { secretSantaEvent.GenerateInviteKey(); } db.Events.Add(secretSantaEvent); await db.SaveChangesAsync(); await client.SendTextMessageAsync(chatId, "You can fill optional fields or/and generate invitation using command /generate."); } else { await client.SendTextMessageAsync(chatId, "You are already registered. You can fill optional fields or/and generate invitation."); } } catch (Exception e) { Debug.WriteLine($"{nameof(RegisterCommand)}:{e.Message}"); if (e.InnerException != null) { Debug.WriteLine(e.InnerException.Message); } } } await Registration.SetStageAsync(message, client, RegStage.SelectOption); await RegistrationStatus.Execute(message, client); }