예제 #1
0
        public async Task <ActionResult> Register(vmRegister model)
        {
            if (ModelState.IsValid)
            {
                if (model.IsChecked)
                {
                    EComEntities db = new EComEntities();

                    var exist = db.Users.Where(a => a.UserName == model.UserName || a.Mobile == model.Mobile).FirstOrDefault();
                    if (exist != null)
                    {
                        if (exist.UserName == model.UserName)
                        {
                            ModelState.AddModelError("", "This username is taken.Please choose another one.");
                        }
                        else if (exist.Mobile == model.Mobile)
                        {
                            ModelState.AddModelError("", "This mobile is already registered.");
                        }
                        else if (exist.Email == model.Email)
                        {
                            ModelState.AddModelError("", "This email is already registered.");
                        }
                        return(View(model));
                    }

                    else
                    {
                        var user = new ApplicationUser()
                        {
                            UserName = model.UserName, Mobile = model.Mobile, Code = AccCoder.Encode(model.Password)
                        };
                        var result = await UserManager.CreateAsync(user, model.Password);


                        if (result.Succeeded)
                        {
                            SendEmail mail = new SendEmail();
                            //bool ds = mail.RegisterVarification(model.Email, user.VerificationCode, user.UserName);

                            //if (ds)
                            //{
                            //    return RedirectToAction("Verification", "Account", new { token = user.Id });
                            //   //return Verification(user.Id);
                            //}
                            //else
                            //{
                            //    ModelState.AddModelError("", "Mail sending failed.");
                            //}

                            string df = "ok";
                            if (df == "ok")
                            {
                                //return RedirectToAction("Verification", "Account", new { token = user.Id });
                                return(RedirectToAction("Login", "Account"));
                            }
                            else
                            {
                                ModelState.AddModelError("", df);
                            }

                            //await SignInAsync(user, isPersistent: false);
                            //return RedirectToAction("Index", "Home");
                        }
                        else
                        {
                            AddErrors(result);
                        }
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Please accept the User Agreement.");
                }
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
        // GET: /<controller>/
        public IActionResult Index()
        {
            var regModel = new vmRegister()
            {
                FirstName = "I AM ME"
            };

            var displayNames = AttributeExtensions.GetDataAnnotationAttribute <DisplayAttribute>(typeof(vmRegister))
                               .Select(x => x.Name).ToList();

            var type               = regModel.GetType();
            var properties         = type.GetProperties();
            var listOfRegisterInfo = new List <vmRegisterInfo>();

            for (var i = 0; i < properties.Count(); i++)
            {
                var property       = properties[i];
                var displayName    = AttributeExtensions.GetAttributeFrom <DisplayAttribute>(regModel, property.Name).Name;
                var requiredAttr   = AttributeExtensions.GetAttributeFrom <RequiredAttribute>(regModel, property.Name);
                var emailAttr      = AttributeExtensions.GetAttributeFrom <EmailAddressAttribute>(regModel, property.Name);
                var phoneAttr      = AttributeExtensions.GetAttributeFrom <PhoneAttribute>(regModel, property.Name);
                var regexAttr      = AttributeExtensions.GetAttributeFrom <RegularExpressionAttribute>(regModel, property.Name);
                var rangeAttr      = AttributeExtensions.GetAttributeFrom <RangeAttribute>(regModel, property.Name);
                var creditcardAttr = AttributeExtensions.GetAttributeFrom <CreditCardAttribute>(regModel, property.Name);

                var customAttributes = property.CustomAttributes.Where(x => !x.AttributeType.Name.Equals("DisplayAttribute")).ToList();

                var allAttributes = new List <Attribute>()
                {
                    requiredAttr, emailAttr, phoneAttr, regexAttr, rangeAttr, creditcardAttr
                }.Where(x => x != null).ToList();

                var allReactAttributes = new List <ReactCustomDataAnnotation>();
                for (var j = 0; j < allAttributes.Count; j++)
                {
                    var allAttribute    = allAttributes[j];
                    var customAttribute = customAttributes[j];

                    allReactAttributes.Add(new ReactCustomDataAnnotation()
                    {
                        AttributeType           = customAttribute.AttributeType.Name,
                        DataAnnotationAttribute = allAttribute
                    });
                }

                var info = new vmRegisterInfo()
                {
                    FieldName       = property.Name,
                    FieldValue      = property.GetValue(regModel, null),
                    DisplayName     = displayName,
                    DataAnnotations = allReactAttributes
                };

                listOfRegisterInfo.Add(info);
            }

            var model = new vmRegisterContainer()
            {
                AllPropertyAnnotation = listOfRegisterInfo
            };

            return(View(model));
        }