public async Task <JsonResult> SignUp([FromBody] SignUpViewModel vm)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    // check if any values tracked in Auth0 have changed
                    var extId = await _authAdapter.SignUpUser(vm);

                    // save to our db now
                    var user = new AppUser()
                    {
                        FirstName   = vm.FirstName,
                        LastName    = vm.LastName,
                        Email       = vm.Email,
                        ExternalId  = extId,
                        AvatarUrl   = Avatars.GetAvatarUrl(vm.FirstName, vm.LastName, vm.Email),
                        IsDeleted   = false,
                        IsSuspended = false,
                        UserRoles   = new List <AppUserRole> {
                            new AppUserRole {
                                RoleId = 2
                            }
                        }                                                                    // default to free user
                    };

                    _userRepo.AddUser(user);
                    if (_userRepo.Base.SaveAll(User))
                    {
                        var newVm = user.ToViewModel();
                        Response.StatusCode = (int)HttpStatusCode.OK;
                        return(Json(newVm));
                    }
                    else
                    {
                        Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                        return(Json(MsgFactory.Error("Unable to save new user")));
                    }
                }

                else
                {
                    Response.StatusCode = (int)HttpStatusCode.BadRequest;
                    return(Json(MsgFactory.Error(ModelState)));
                }
            }
            catch (Exception ex)
            {
                Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                return(Json(MsgFactory.Error(ex)));
            }
        }