public async Task RegisterByManagerInvite() { using (var db = new CMSContext()) { var user = await db.Users.SingleOrDefaultAsync(u => u.Email == Dto.Email); // User already exists if (user != null) { throw new Exception("User with this email already exists!"); } var invite = await db.CompanyManagementInvites.SingleOrDefaultAsync(i => i.CompanyId == Dto.CompanyId && i.Email == Dto.Email.Trim()); // Invite doesn't exist if (invite != null) { throw new Exception("Invite for this company does not exist for this email!"); } byte[] passwordHash, passwordSalt; PasswordService.CreatePasswordHash(Dto.Password, out passwordHash, out passwordSalt); user = new Domain.Entities.User() { Id = Guid.NewGuid(), Email = Dto.Email, PasswordHash = passwordHash, PasswordSalt = passwordSalt, UserType = UserType.Management, FullName = Dto.FirstName + " " + Dto.LastName, FirstName = Dto.FirstName, LastName = Dto.LastName, ShortName = (Dto.FirstName.ToCharArray().First().ToString() + Dto.LastName.ToCharArray().First().ToString()).ToUpper(), DefaultCompanyId = invite.CompanyId, }; var companyManagement = new Domain.Entities.CompanyManagement() { Id = Guid.NewGuid(), CompanyId = invite.CompanyId, UserId = user.Id, IsAdmin = invite.IsInviteForAdmin, CreatedOn = DateTime.UtcNow, CreatedBy = user.Id }; db.Users.Add(user); db.CompanyManagements.Add(companyManagement); await db.SaveChangesAsync(); } }
public async Task Register() { using (var db = new CMSContext()) { var user = await db.Users.SingleOrDefaultAsync(u => u.Email == Dto.Email); // User already exists if (user != null) { throw new Exception("User with this email already exists!"); } byte[] passwordHash, passwordSalt; PasswordService.CreatePasswordHash(Dto.Password, out passwordHash, out passwordSalt); user = new Domain.Entities.User() { Id = Guid.NewGuid(), Email = Dto.Email, PasswordHash = passwordHash, PasswordSalt = passwordSalt, UserType = Dto.IsCandidateLogin ? UserType.Candidate : UserType.Management, FullName = Dto.FirstName + " " + Dto.LastName, FirstName = Dto.FirstName, LastName = Dto.LastName, ShortName = (Dto.FirstName.ToCharArray().First().ToString() + Dto.LastName.ToCharArray().First().ToString()).ToUpper(), // TODO: Add Default company when getting invite for company Manager }; if (!Dto.IsCandidateLogin) { var company = new Domain.Entities.Company() { Id = Guid.NewGuid(), Name = Dto.CompanyName, CreatedOn = DateTime.UtcNow, CreatedBy = user.Id }; var companyManagement = new Domain.Entities.CompanyManagement() { Id = Guid.NewGuid(), CompanyId = company.Id, UserId = user.Id, IsAdmin = true, CreatedOn = DateTime.UtcNow, CreatedBy = user.Id }; user.DefaultCompanyId = company.Id; db.Users.Add(user); db.Companies.Add(company); db.CompanyManagements.Add(companyManagement); } else { db.Users.Add(user); } await db.SaveChangesAsync(); } }