Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
        }