Changeset 22439d3 for iknow-api/Services/Implementations
- Timestamp:
- 12/09/25 13:21:49 (10 months ago)
- Branches:
- master
- Children:
- 2d64b2e
- Parents:
- bb656bc
- File:
-
- 1 edited
-
iknow-api/Services/Implementations/AuthService.cs (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
iknow-api/Services/Implementations/AuthService.cs
rbb656bc r22439d3 8 8 using iknow_api.Repositories; 9 9 using Microsoft.IdentityModel.Tokens; 10 using iknow_api.Data; 11 using Microsoft.EntityFrameworkCore; 10 12 11 13 namespace iknow_api.Services … … 17 19 private readonly IRefreshTokenService _refreshTokenService; 18 20 private readonly IConfiguration _configuration; 21 private readonly AppDbContext _context; 19 22 20 public AuthService(IUserRepository userRepository, IConfiguration configuration 21 , IRefreshTokenService refreshTokenService, IRefreshTokenRepository refreshTokenRepository) 23 public AuthService(IUserRepository userRepository, IConfiguration configuration, 24 IRefreshTokenService refreshTokenService, IRefreshTokenRepository refreshTokenRepository, 25 AppDbContext context) 22 26 { 23 27 _userRepository = userRepository; … … 25 29 _refreshTokenService = refreshTokenService; 26 30 _refreshTokenRepository = refreshTokenRepository; 31 _context = context; 27 32 } 28 33 … … 44 49 throw new InvalidOperationException("User with this email already exists"); 45 50 46 var user = new User 51 // Use a transaction to ensure all entities are saved together 52 using var transaction = await _context.Database.BeginTransactionAsync(); 53 try 47 54 { 48 Name = registerDto.Name, 49 Surname = registerDto.Surname, 50 Index = registerDto.Index, 51 Email = registerDto.Email, 52 PasswordHash = BCrypt.Net.BCrypt.HashPassword(registerDto.Password), 53 Bday = DateTime.SpecifyKind(registerDto.Bday, DateTimeKind.Utc), 54 CreatedAt = DateTime.UtcNow, 55 Role = (Models.UserRole)registerDto.Role, 56 EMBG = registerDto.EMBG 57 }; 55 var user = new User 56 { 57 Name = registerDto.Name, 58 Surname = registerDto.Surname, 59 Index = registerDto.Index, 60 Email = registerDto.Email, 61 PasswordHash = BCrypt.Net.BCrypt.HashPassword(registerDto.Password), 62 Bday = DateTime.SpecifyKind(registerDto.Bday, DateTimeKind.Utc), 63 CreatedAt = DateTime.UtcNow, 64 Role = (Models.UserRole)registerDto.Role, 65 EMBG = registerDto.EMBG 66 }; 58 67 59 await _userRepository.AddUserAsync(user); 60 int userId = user.Id; 61 var contactInfo = new ContactInfo 68 _context.User.Add(user); 69 await _context.SaveChangesAsync(); 70 71 int userId = user.Id; 72 73 var contactInfo = new ContactInfo 74 { 75 UserId = userId, 76 city = registerDto.city, 77 address = registerDto.address, 78 municipality = registerDto.municipality, 79 phoneNumber = registerDto.phoneNumber, 80 microsoftEmail = registerDto.microsoftEmail 81 }; 82 83 var enrollmentInfo = new EnrollmentInfo 84 { 85 UserId = userId, 86 enrollmentYear = registerDto.enrollmentYear, 87 quota = (Models.Quota)registerDto.quotaType, 88 MajorId = registerDto.majorType 89 }; 90 91 var highSchool = new HighSchool 92 { 93 UserId = userId, 94 GPA = registerDto.gpa, 95 tip = (Models.type)registerDto.tip 96 }; 97 98 _context.ContactInfo.Add(contactInfo); 99 _context.EnrollmentInfo.Add(enrollmentInfo); 100 _context.HighSchool.Add(highSchool); 101 102 // Save all related entities in a single transaction 103 await _context.SaveChangesAsync(); 104 await transaction.CommitAsync(); 105 106 return true; 107 } 108 catch 62 109 { 63 UserId = userId, 64 city = registerDto.city, 65 address = registerDto.address, 66 municipality = registerDto.municipality, 67 phoneNumber = registerDto.phoneNumber, 68 microsoftEmail = registerDto.microsoftEmail 69 }; 70 await _userRepository.AddContactAsync(contactInfo); 71 var enrollmentInfo = new EnrollmentInfo 72 { 73 UserId = userId, 74 enrollmentYear = registerDto.enrollmentYear, 75 quota = (Models.Quota)registerDto.quotaType, 76 MajorId = registerDto.majorType 77 }; 78 await _userRepository.AddEnrollmentAsync(enrollmentInfo); 79 await _userRepository.AddHighSchoolAsync(new HighSchool 80 { 81 UserId = userId, 82 GPA = registerDto.gpa, 83 tip = (Models.type)registerDto.tip 84 }); 85 return true; 110 await transaction.RollbackAsync(); 111 throw; 112 } 86 113 } 87 114 … … 99 126 if (loginDto.GenerateRefreshToken) 100 127 { 101 int userid = _userRepository.GetUserByUsernameAsync(loginDto.Email).Id; 102 result.RefreshToken = await _refreshTokenService.GenerateRefreshToken(userid); 128 result.RefreshToken = await _refreshTokenService.GenerateRefreshToken(user.Id); 103 129 } 104 130
Note:
See TracChangeset
for help on using the changeset viewer.
