public async Task <IEmailVerificationCode> GetActualCode(string email, string partnerId)
        {
            var priorityCode =
                await _priorityCodesStorage.GetTopRecordAsync(
                    EmailVerificationCodeEntity.GeneratePartitionKey(email, partnerId));

            if (priorityCode == null || priorityCode.ExpirationDate < DateTime.UtcNow)
            {
                return(await _tableStorage.GetTopRecordAsync(
                           EmailVerificationCodeEntity.GeneratePartitionKey(email, partnerId)));
            }

            return(priorityCode);
        }
        public EmailVerificationCodeEntity CreateEmailVerificationCode(string email, string partnerId = null,
                                                                       bool generateRealCode          = true, int codeLength = 4)
        {
            var creationDt = _dateTimeProvider.GetDateTime();
            var entity     = new EmailVerificationCodeEntity
            {
                RowKey           = EmailVerificationCodeEntity.GenerateRowKey(creationDt),
                PartitionKey     = EmailVerificationCodeEntity.GeneratePartitionKey(email, partnerId),
                Code             = _randomValueGenerator.GetCode(codeLength, generateRealCode),
                CreationDateTime = creationDt
            };

            return(entity);
        }
        public EmailVerificationPriorityCodeEntity CreateEmailVerificationPriorityCode(string email, string partnerId,
                                                                                       DateTime expirationDt, int codeLength = 4)
        {
            var creationDt = _dateTimeProvider.GetDateTime();

            var entity = new EmailVerificationPriorityCodeEntity
            {
                RowKey           = EmailVerificationCodeEntity.GenerateRowKey(creationDt),
                PartitionKey     = EmailVerificationCodeEntity.GeneratePartitionKey(email, partnerId),
                Code             = _randomValueGenerator.GetCode(codeLength, true),
                CreationDateTime = creationDt,
                ExpirationDate   = expirationDt
            };

            return(entity);
        }
        private static async Task DeleteCodesInRepository <T>(string email, string partnerId,
                                                              INoSQLTableStorage <T> storage) where T : ITableEntity, new()
        {
            var batchOperation   = new TableBatchOperation();
            var entitiesToDelete =
                (await storage.GetDataAsync(EmailVerificationCodeEntity.GeneratePartitionKey(email, partnerId)))
                .ToArray();

            if (entitiesToDelete.Any())
            {
                foreach (var e in entitiesToDelete)
                {
                    batchOperation.Delete(e);
                }
                await storage.DoBatchAsync(batchOperation);
            }
        }
Exemple #5
0
        public async Task <IVerificationCode> CreateOrUpdateAsync(string adminId, string verificationCode)
        {
            var entity =
                EmailVerificationCodeEntity.Create(adminId, verificationCode, _verificationLinkExpirePeriod);

            using (var context = _contextFactory.CreateDataContext())
            {
                await context.EmailVerificationCodes.AddAsync(entity);

                try
                {
                    await context.SaveChangesAsync();
                }
                catch (DbUpdateException e)
                {
                    if (e.InnerException is SqlException sqlException &&
                        sqlException.Number == MsSqlErrorCodes.PrimaryKeyConstraintViolation)
                    {
                        context.EmailVerificationCodes.Update(entity);

                        await context.SaveChangesAsync();
                    }
Exemple #6
0
        public async Task <IVerificationCode> CreateOrUpdateAsync(string customerId, string verificationCode)
        {
            var entity =
                EmailVerificationCodeEntity.Create(customerId, verificationCode, _verificationEmailExpirePeriod);

            using (var context = _contextFactory.CreateDataContext())
            {
                await context.EmailVerificationCodes.AddAsync(entity);

                try
                {
                    await context.SaveChangesAsync();
                }
                catch (DbUpdateException e)
                {
                    if (e.InnerException is PostgresException sqlException &&
                        sqlException.SqlState == PostgresErrorCodes.UniqueViolation)
                    {
                        context.EmailVerificationCodes.Update(entity);

                        await context.SaveChangesAsync();
                    }