public async Task <OperationDetails> Create(UserDTO item)
        {
            try
            {
                if (item.Name == "" || item.Name == null || item.Email == "" ||
                    item.Email == null || item.Password == "" || item.Password == null)
                {
                    return(new OperationDetails(false, "Wrong input data"));
                }

                Console.WriteLine($"{item.Email} - {item.Password}");

                ApplicationUser user = database.UserStore.FindByName(item.Email);
                if (user != null)
                {
                    return(new OperationDetails(false, "Already exists", "Email"));
                }

                var hasher = new PasswordHasher();
                user = new ApplicationUser {
                    Email           = item.Email,
                    UserName        = item.Email,
                    Id              = new IdGenerator().Generate(),
                    Role            = "User",
                    NormalizedEmail = item.Email.ToUpper(),
                    PasswordHash    = hasher.GetHash(item.Password)
                };



                UserProfile profile = new UserProfile
                {
                    Id              = user.Id,
                    Bio             = item.Bio,
                    Photo           = Convert.FromBase64String(item.Photo),
                    Name            = item.Name,
                    ApplicationUser = user
                };


                user.UserProfile = profile;
                await database.UserStore.CreateAsync(user);

                await database.UserProfiles.CreateAsync(profile);

                await database.Commit();

                hasher.Dispose();

                ApplicationUser user2 = database.UserStore.FindByName(item.Email);
                if (user2 == null)
                {
                    System.Console.WriteLine("Failed");
                }

                var claims = new List <Claim>
                {
                    new Claim(ClaimsIdentity.DefaultNameClaimType, user.Email),
                    new Claim(ClaimsIdentity.DefaultRoleClaimType, user.Role),
                };

                var token = TokenCreator.Create(claims);

                Console.WriteLine($"Created new user: {item.Name}");

                return(new OperationDetails(true, "Successfully created", null, new { token, userId = user.Id }));
            }
            catch (Exception e)
            {
                return(new OperationDetails(false, e.Message));
            }
        }