public async Task<ApiJsonResult> Register(RegisterEmployerParam registerEmployerParam)
 {
     try {
         await new AccountManager().RegisterEmployer(registerEmployerParam);
         return new ApiJsonResult { Success = true };
     }
     catch (Exception ex) {
         return ProcessException(ex);
     }
 }
        public async Task<bool> RegisterEmployer(RegisterEmployerParam registerEmployerParam)
        {
            if (!Utils.IsEmail(registerEmployerParam.Email))
            {
                throw new UserException(ErrorCode.EMAIL_INVALID.ToString());
            }

            using (AppDbContext context = new AppDbContext())
            {
                if (await context.Users.AnyAsync(p => p.Email == registerEmployerParam.Email))
                {
                    throw new UserException(ErrorCode.EMAIL_IN_USED.ToString());
                }

                Random generator = new Random();
                string password = generator.Next(100000, 999999).ToString();

                User user = new User
                {
                    Id = Guid.NewGuid(),
                    Email = registerEmployerParam.Email,
                    Password = UtilsCryptography.GenerateBCryptHash(password),
                    AccountType = AccountType.Email,
                    UserType = UserType.Employer,
                    RegisteredDateUtc = DateTime.UtcNow,
                    IsActivated = true,
                    ConfirmationCode = ""
                };
                context.Users.Add(user);

                Employer employer = new Employer
                {
                    CompanyName = registerEmployerParam.CompanyName,
                    CompanyRegistrationNumber = registerEmployerParam.CompanyRegistrationNumber,
                    ContactName = registerEmployerParam.ContactName,
                    PhoneNumber = registerEmployerParam.ContactNumber,
                    NatureOfBusiness = registerEmployerParam.NaturalOfBusiness,
                    OverView = registerEmployerParam.Message,
                    CreatedDateUtc = DateTime.UtcNow,
                    UpdatedDateUtc = DateTime.UtcNow,
                    UserId = user.Id,
                };
                context.Employers.Add(employer);

                await context.SaveChangesAsync();
                await EmailDelivery.SendEmployerRegisterCompleted(registerEmployerParam.Email, password);

                return true;
            }
        }