예제 #1
0
        public async Task <OtpCode> CreateorUpdateOtpCodeAsync(string engagementAccount, string phoneNumber, string code, int expireTime)
        {
            using (var ctx = new OtpEntities(this.connectionString))
            {
                var otpCode = await ctx.OtpCodes.Where(f => f.EngagementAccount == engagementAccount && f.PhoneNumber == phoneNumber).SingleOrDefaultAsync();

                if (otpCode == null)
                {
                    otpCode = new OtpCode
                    {
                        PhoneNumber       = phoneNumber,
                        EngagementAccount = engagementAccount,
                        Code        = code,
                        CreatedTime = DateTime.UtcNow,
                        ExpiredTime = DateTime.UtcNow.AddSeconds(expireTime)
                    };
                    ctx.OtpCodes.Add(otpCode);
                }
                else
                {
                    otpCode.Code        = code;
                    otpCode.CreatedTime = DateTime.UtcNow;
                    otpCode.ExpiredTime = DateTime.UtcNow.AddSeconds(expireTime);
                }

                await ctx.SaveChangesAsync();

                return(otpCode);
            }
        }
예제 #2
0
        public async Task <IActionResult> Edit(string id, [Bind("Id,Code,CreatedBy,ModifiedBy,CreatedOn,ModifiedOn,Status,EmpId")] OtpCode otpCode)
        {
            if (id != otpCode.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(otpCode);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!OtpCodeExists(otpCode.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["EmpId"] = new SelectList(_context.Employee, "Emp_ID", "Emp_ID", otpCode.EmpId);
            return(View(otpCode));
        }
예제 #3
0
        private async Task <string> LoginProcess(string empId)
        {
            string code        = GenerateCode();
            var    otpEmpId    = "";
            var    hasOtpCodes = _context.OtpCode.Where(a => a.EmpId == empId).SingleOrDefault();

            if (hasOtpCodes == null)
            {
                OtpCode otpCodemodel = new OtpCode
                {
                    EmpId = empId,
                    Code  = code
                };
                var result = _context.OtpCode.Add(otpCodemodel);
                otpEmpId = result.Entity.EmpId;
            }
            else
            {
                hasOtpCodes.Status = Enums.Status.Active;
                otpEmpId           = UpdateOtpCode(hasOtpCodes, code);
            }

            await _context.SaveChangesAsync();

            return(code);
        }
예제 #4
0
        private string UpdateOtpCode(OtpCode hasOtpCodes, string code)
        {
            hasOtpCodes.Code = code;
            var result = _context.OtpCode.Update(hasOtpCodes);

            return(result.Entity.EmpId);
        }
예제 #5
0
        public async Task <IActionResult> Create([Bind("Id,Code,CreatedBy,ModifiedBy,CreatedOn,ModifiedOn,Status,EmpId")] OtpCode otpCode)
        {
            if (ModelState.IsValid)
            {
                _context.Add(otpCode);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["EmpId"] = new SelectList(_context.Employee, "Emp_ID", "Emp_ID", otpCode.EmpId);
            return(View(otpCode));
        }
예제 #6
0
        public async Task <OtpCode> GenerateCodeForeUser(AccountUser user)
        {
            Random  generator   = new Random();
            string  randomValue = generator.Next(0, 999999).ToString("D6");
            OtpCode otp         = new OtpCode
            {
                Code    = randomValue,
                UserId  = user.Id,
                Expires = DateTime.Now.AddMinutes(2)
            };

            _db.OtpCodes.Add(otp);
            await _emailService.SendEmailAsync(user.Email, otp.Code);

            await _db.SaveChangesAsync();

            return(otp);
        }