Пример #1
0
        public async Task <string> SendInvitesAsync(List <string> phoneNumbers, string message)
        {
            try
            {
                var todayInvites = await GetCountInvitationsAsync(4);

                if (todayInvites + phoneNumbers.Count > 128)
                {
                    return(GlobalConstants.ExceptionMessages.PhoneNumbers.PhoneNumbers128PerDayLimit);
                }


                var inviteMessage = InviteFactory.CreateMessage(message);
                var validResult   = _inviteMessageValidator.Validate(inviteMessage);

                if (!validResult.IsValid)
                {
                    return(validResult.Message);
                }

                var invites = phoneNumbers.Select(c => InviteFactory.CreateInvite(c, inviteMessage)).ToList();

                validResult = _inviteValidator.Validate(invites);
                if (!validResult.IsValid)
                {
                    return(validResult.Message);
                }

                var sendResult = await SendSmsInvitesAsync(invites);

                if (sendResult)
                {
                    await _inviteRepository.InsertCollectionAsync(invites);
                }

                return(GlobalConstants.SuccessMessage.MessagesSent);
            }
            catch (Exception e)
            {
                return($"{GlobalConstants.ExceptionMessages.Common.InternalError} {e.Message}.");
            }
        }