Fix email v2

This commit is contained in:
aditya.chandel
2025-10-15 23:10:55 -06:00
parent ffb4bb815a
commit c8a9075afb
3 changed files with 11 additions and 5 deletions

View File

@@ -26,5 +26,7 @@ public interface EmailProviderV2Repository extends JpaRepository<EmailProviderV2
@Query("SELECT e FROM EmailProviderV2Entity e WHERE e.shared = true AND e.userId IN (SELECT u.id FROM BookLoreUserEntity u WHERE u.permissions.permissionAdmin = true)")
List<EmailProviderV2Entity> findAllBySharedTrueAndAdmin();
}
@Query("SELECT e FROM EmailProviderV2Entity e WHERE e.id = :id AND e.shared = true AND e.userId IN (SELECT u.id FROM BookLoreUserEntity u WHERE u.permissions.permissionAdmin = true)")
Optional<EmailProviderV2Entity> findSharedProviderById(@Param("id") Long id);
}

View File

@@ -49,7 +49,11 @@ public class SendEmailV2Service {
public void emailBook(SendBookByEmailRequest request) {
BookLoreUser user = authenticationService.getAuthenticatedUser();
EmailProviderV2Entity emailProvider = emailProviderRepository.findByIdAndUserId(request.getProviderId(), user.getId()).orElseThrow(() -> ApiError.EMAIL_PROVIDER_NOT_FOUND.createException(request.getProviderId()));
EmailProviderV2Entity emailProvider = emailProviderRepository.findByIdAndUserId(request.getProviderId(), user.getId())
.orElseGet(() ->
emailProviderRepository.findSharedProviderById(request.getProviderId())
.orElseThrow(() -> ApiError.EMAIL_PROVIDER_NOT_FOUND.createException(request.getProviderId()))
);
BookEntity book = bookRepository.findById(request.getBookId()).orElseThrow(() -> ApiError.BOOK_NOT_FOUND.createException(request.getBookId()));
EmailRecipientV2Entity emailRecipient = emailRecipientRepository.findByIdAndUserId(request.getRecipientId(), user.getId()).orElseThrow(() -> ApiError.EMAIL_RECIPIENT_NOT_FOUND.createException(request.getRecipientId()));
sendEmailInVirtualThread(emailProvider, emailRecipient.getEmail(), book);

View File

@@ -8,15 +8,15 @@ import {Observable} from 'rxjs';
})
export class EmailService {
private readonly apiUrl = `${API_CONFIG.BASE_URL}/api/v1/emails`;
private readonly apiUrl = `${API_CONFIG.BASE_URL}/api/v2/email`;
private http = inject(HttpClient);
emailBook(request: { bookId: number, providerId: number, recipientId: number }): Observable<void> {
return this.http.post<void>(`${this.apiUrl}/send-book`, request);
return this.http.post<void>(`${this.apiUrl}/book`, request);
}
emailBookQuick(bookId: number): Observable<void> {
return this.http.post<void>(`${this.apiUrl}/send-book/${bookId}`, {});
return this.http.post<void>(`${this.apiUrl}/book/${bookId}`, {});
}
}