コード例 #1
0
        //public ActionResult Create([Bind(Include = "Id,Name,IdentificationId")] Customer customer)
        public async Task <ActionResult> Create(UserAndCustomerViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = String.Format("cus-{0}", model.User.UserName), Email = model.User.Email, CreationDate = DateTime.Today
                };

                var result = await UserManager.CreateAsync(user, model.User.Password);

                if (result.Succeeded)
                {
                    var RoleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(new ApplicationDbContext()));
                    var RoleName    = "Customer";

                    if (!RoleManager.RoleExists(RoleName))
                    {
                        RoleManager.Create(new IdentityRole(RoleName));
                        var userTemp = UserManager.FindByName(user.UserName);
                        if (!UserManager.IsInRole(userTemp.Id, RoleName))
                        {
                            UserManager.AddToRole(userTemp.Id, RoleName);
                        }
                    }
                    var customer = new Customer
                    {
                        Id               = user.UserName,
                        Name             = model.Customer.Name,
                        IdentificationId = model.Customer.IdentificationId,
                        StatusId         = 1,
                    };


                    db.Customers.Add(customer);
                    await db.SaveChangesAsync();

                    return(RedirectToAction("Index"));
                }
                AddErrors(result);
            }
            ViewBag.StatusId = new SelectList(db.Statuses, "Id", "Name", model.Customer.StatusId);
            return(View(model));
        }
コード例 #2
0
        public async Task <ActionResult> Register(UserAndCustomerViewModel model)
        {
            if (ModelState.IsValid)
            {
                var    user       = new ApplicationUser();
                string prefix     = "cus";
                bool   isEmployee = false;

                if (db.Employees.Count() == 0)
                {
                    prefix     = "adm";
                    isEmployee = true;
                }

                user = new ApplicationUser {
                    UserName = String.Format("{0}-{1}", prefix, model.User.UserName), Email = model.User.Email, CreationDate = DateTime.Today
                };


                var result = await UserManager.CreateAsync(user, model.User.Password);

                if (result.Succeeded)
                {
                    //var RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
                    //var RoleName = "Customer";

                    /*if (!RoleManager.RoleExists(RoleName)) {
                     *  RoleManager.Create(new IdentityRole(RoleName));
                     *  var userTemp = UserManager.FindByName(user.UserName);
                     *  if (!UserManager.IsInRole(userTemp.Id, RoleName))
                     *  {
                     *      UserManager.AddToRole(userTemp.Id, RoleName);
                     *  }
                     * }*/

                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                    var    userTemp = UserManager.FindByName(user.UserName);
                    string RoleName = "Customer";

                    if (isEmployee)
                    {
                        RoleName = "Admin";
                        var employee = new Employee
                        {
                            Id = user.UserName,
                            IdentificationId = model.Customer.IdentificationId,
                            Name             = model.Customer.Name,
                            Status           = model.Customer.Status,
                            StatusId         = 1,
                            DepartmentId     = 1,
                            PositionId       = 1
                        };
                        db.Employees.Add(employee);
                    }
                    else
                    {
                        var customer = new Customer {
                            Id   = user.UserName, IdentificationId = model.Customer.IdentificationId,
                            Name = model.Customer.Name, Status = model.Customer.Status, StatusId = 1
                        };
                        db.Customers.Add(customer);
                    }

                    if (!UserManager.IsInRole(userTemp.Id, RoleName))
                    {
                        UserManager.AddToRole(userTemp.Id, RoleName);
                    }

                    await db.SaveChangesAsync();

                    //var customer = new Customer { Id = user.UserName, IdentificationId = model.Customer.IdentificationId,
                    //  Name = model.Customer.Name, Status = model.Customer.Status, StatusId = 1 };



                    return(RedirectToAction("Index", "Home"));
                }

                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }