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; } }