public bool RegisterEmailCodeCombination(string Email)
        {
            var db = UserCodeDbContext.getInstance().getItemDb();

            var code = new UserCode();

            code.Email        = Email;
            code.Key          = "" + GenerateRandomNo();
            code.RegisteredAt = DateTime.Now;

            db.Add(code);
            UserCodeDbContext.getInstance().db.SaveChanges();

            var mailbody = string.Format(
                "Dear {0}, <br/><br/>" +
                "<p>Here is your registration verification code: {1}</p>" +
                "<p>Geminis CMS Team</p>",
                code.Email,
                code.Key
                );

            var subject = string.Format(
                "[Geminis] Registration Verification Code"
                );



            EmailHelper.SendEmail(new List <string> {
                code.Email
            }, mailbody, subject);

            return(true);
        }
        public bool VerifyEmailCodeCombination(string Email, string Code)
        {
            var db     = UserCodeDbContext.getInstance().db;
            var itemDb = UserCodeDbContext.getInstance().getItemDb();

            // find existing non-completed code with correct email + code combination
            // if exists , then complete it, and return true
            // otherwise return false

            var codes = itemDb.Where(c => c.Email == Email && c.Key == Code).ToList();

            if (codes.Count <= 0)
            {
                return(false);
            }
            foreach (var code in codes)
            {
                //if (code.isExpired())
                //{
                //    continue;
                //}

                if (code.Completed)
                {
                    continue;
                }


                db.Entry(code).State = EntityState.Modified;
                code.Completed       = true;
                db.SaveChanges();

                return(true);
            }

            return(false);
        }