public void ApplyChanges(RegisterModel model)
        {
            var myType = model.GetType();
            var props = new List<PropertyInfo>(myType.GetProperties());
            foreach (var prop in props)
            {
                if ((prop.Name.ToLower() == "id") || (prop.Name.ToLower() == "password")) 
                    continue;

                var pi = typeof(ApplicationUser).GetProperty(prop.Name);
                var piD = typeof(RegisterModel).GetProperty(prop.Name);

                if ((pi == null) || (piD == null))
                    continue;

                var val = piD.GetValue(model);
                pi.SetValue(this, val);
            }
        }
        public async Task<IHttpActionResult> GetProfile(string username)
        {
            if (User.Identity.GetUserName() != username)
                return Unauthorized();

            var user = await Task.Run(() => _userManager.FindByName(username));

            var result = new RegisterModel();
            result.RegisterModelFactory(user);

            return Ok(result);

        }
        public async Task<IHttpActionResult> GetProfile()
        {
            var user = await _userManager.FindByNameAsync(User.Identity.GetUserName());

            if (user == null)
            {
                return NotFound();
            }

            var result = new RegisterModel();
            result.RegisterModelFactory(user);

            return Ok(result);
        }
        public async Task<IHttpActionResult> Register(RegisterModel model)
        {
            var user = new ApplicationUser();
            user.ApplyChanges(model);

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

            if (result.Succeeded)
            {
                return Ok("Registered");
            }

            var errors = result.Errors.Aggregate("", (current, error) => $"{current}\r\n{error}");

            return BadRequest(errors);
        }