Example #1
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (this.ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.UserName, Email = model.Email
                };
                var result = await this.UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    await this.SignInManager.SignInAsync(user, false, false);

                    var profile = new ClientUserProfile
                    {
                        Id          = user.Id,
                        UserName    = user.UserName,
                        Postfix     = user.UserName,
                        CreatedTime = DateTime.UtcNow
                    };

                    var cuser = new ClientUser(profile);
                    cuser.UserFilter          = new CustomerFilters();
                    cuser.UserFilter.UserName = cuser.Name;
                    var filter = new Filter {
                        Name = "Keywords", Value = cuser.Name
                    };
                    var filterList = new FilterList();
                    filterList.Filters.Add(filter);
                    cuser.UserFilter.UserFilterListCollection.Add(filterList);

                    /*
                     * var customFilter = new CustomerFilters();
                     * customFilter.UserName = string.Empty;
                     * var cfilter = new Filter { Name = "Keywords", Value = string.Empty };
                     * var cfilterList = new FilterList();
                     * cfilterList.Filters.Add(cfilter);
                     * customFilter.UserFilterListCollection.Add(cfilterList);
                     *
                     * cuser.CompetitorFilter.Add(customFilter);
                     */

                    var affected = ProfileHelper.UpdateClientUser(cuser);
                    if (affected > 0)
                    {
                        var syncManager = new DataSyncManager();
                        syncManager.BuildUserTables(cuser.GetProfile().Postfix);
                    }

                    //var syncManager = new DataSyncManager(cuser);
                    //syncManager.CreateTablesForClientUser();

                    // For more information on how to enable account confirmation and password reset please visit http://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>");

                    return(this.RedirectToAction("Index", "Home"));
                }
                this.AddErrors(result);
            }

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