public async Task <object> Register([FromBody] RegisterEmployeeVM model)
        {
            var token = Request.Headers["Authorization"].ToString().Replace("Bearer ", "");

            if (!PatManagerVerify.CheckIfManager(token, context))
            {
                //if the user isn't a manager then quit the method. Only managers are able to hire new people
                return(null);
            }

            var user = new ApplicationUser
            {
                UserName = model.Email,
                Email    = model.Email
            };
            var result = await userManager.CreateAsync(user, model.Password);

            if (result.Succeeded)
            {
                //add the user to the role of employee straight after being added by the manager
                UserRoleRepo repo = new UserRoleRepo(service);
                await repo.AddUserRole(model.Email, "employee");

                //now add the user details
                UserRepo userRepo = new UserRepo(context, service);
                userRepo.AddUserDetails(user.Id, model.FirstName, model.LastName);

                //The user is never signed in when they are registered. As they are only ever registered through the manager
                //creating the new user
                //await signInManager.SignInAsync(user, false);
                return(await GenerateJwtToken(model.Email, user));
            }
            throw new ApplicationException("UNKNOWN_ERROR");
        }
        public async Task SeedDataAsync()
        {
            var users = context.Users;

            if (users.Count() > 0)
            {
                return;
            }

            string password = "******";

            var manager = new ApplicationUser
            {
                UserName = "******",
                Email    = "*****@*****.**"
            };
            var result = await userManager.CreateAsync(manager, password);

            if (result.Succeeded)
            {
                UserRoleRepo repo = new UserRoleRepo(service);
                await repo.AddUserRole(manager.Email, "Manager");

                UserRepo userRepo = new UserRepo(context, service);
                userRepo.AddUserDetails(manager.Id, "Default", "Manager");
            }

            var user1 = new ApplicationUser
            {
                UserName = "******",
                Email    = "*****@*****.**"
            };
            var result1 = await userManager.CreateAsync(user1, password);

            if (result1.Succeeded)
            {
                UserRoleRepo repo = new UserRoleRepo(service);
                await repo.AddUserRole(user1.Email, "Employee");

                UserRepo userRepo = new UserRepo(context, service);
                userRepo.AddUserDetails(user1.Id, "Jack", "Employee");
            }
            var user2 = new ApplicationUser
            {
                UserName = "******",
                Email    = "*****@*****.**"
            };
            var result2 = await userManager.CreateAsync(user2, password);

            if (result2.Succeeded)
            {
                UserRoleRepo repo = new UserRoleRepo(service);
                await repo.AddUserRole(user2.Email, "Employee");

                UserRepo userRepo = new UserRepo(context, service);
                userRepo.AddUserDetails(user2.Id, "Matthew", "Employee");
            }
            var user3 = new ApplicationUser
            {
                UserName = "******",
                Email    = "*****@*****.**"
            };
            var result3 = await userManager.CreateAsync(user3, password);

            if (result3.Succeeded)
            {
                UserRoleRepo repo = new UserRoleRepo(service);
                await repo.AddUserRole(user3.Email, "Employee");

                UserRepo userRepo = new UserRepo(context, service);
                userRepo.AddUserDetails(user3.Id, "Chris", "Employee");
            }
        }