chore: changes

This commit is contained in:
mahyargdz
2025-07-09 16:59:26 +03:30
parent 092abd2895
commit 784f168e8c
6 changed files with 120 additions and 31 deletions
+67 -19
View File
@@ -3,7 +3,6 @@ import { firstValueFrom } from "rxjs";
import { EmailMessage } from "../../../common/enums/message.enum";
import { MailServerService } from "../../mail-server/services/mail-server.service";
import { UsersService } from "../../users/services/users.service";
import { MessageListQueryDto, SearchMessagesQueryDto } from "../DTO/email-query.dto";
import { SendEmailDto } from "../DTO/send-email.dto";
@@ -13,12 +12,12 @@ export class EmailService {
constructor(
private readonly mailServerService: MailServerService,
private readonly userService: UsersService,
// private readonly userService: UsersService,
) {}
//########################################################
async sendEmail(userId: string, sendEmailDto: SendEmailDto) {
const userEmailId = await this.userService.getUserEmailIdFromId(userId);
async sendEmail(userEmailId: string, sendEmailDto: SendEmailDto) {
// const userEmailId = await this.userService.getUserEmailIdFromId(userId);
this.logger.log(`Sending email from user ${userEmailId} to ${sendEmailDto.to.map((t) => t.address).join(", ")}`);
@@ -87,13 +86,15 @@ export class EmailService {
this.logger.log(`Listing messages in mailbox ${inboxId} for user: ${userId}`);
try {
const response = await firstValueFrom(this.mailServerService.messages.listMessages(userId, inboxId, query));
const { results, total: count } = await firstValueFrom(this.mailServerService.messages.listMessages(userId, inboxId, query));
this.logger.log(`Found ${response.results.length} messages in mailbox ${inboxId} for user: ${userId}`);
this.logger.log(`Found ${count} messages in mailbox ${inboxId} for user: ${userId}`);
return {
message: EmailMessage.MESSAGES_LISTED_SUCCESSFULLY,
...response,
results,
count,
paginate: true,
};
} catch (error) {
this.logger.error(
@@ -104,17 +105,17 @@ export class EmailService {
}
//########################################################
async getMessage(userId: string, mailboxId: string, messageId: number) {
this.logger.log(`Getting message ${messageId} from mailbox ${mailboxId} for user: ${userId}`);
async getMessage(userId: string, inboxId: string, messageId: number) {
this.logger.log(`Getting message ${messageId} from inbox ${inboxId} for user: ${userId}`);
try {
const response = await firstValueFrom(this.mailServerService.messages.getMessage(userId, mailboxId, messageId));
await this.markMessageAsSeen(userId, inboxId, messageId);
const message = await firstValueFrom(this.mailServerService.messages.getMessage(userId, inboxId, messageId));
this.logger.log(`Retrieved message ${messageId} for user: ${userId}`);
return {
message: EmailMessage.MESSAGE_RETRIEVED_SUCCESSFULLY,
...response,
message,
};
} catch (error) {
this.logger.error(`Failed to get message ${messageId} for user ${userId}: ${error instanceof Error ? error.message : "Unknown error"}`);
@@ -123,21 +124,68 @@ export class EmailService {
}
//########################################################
async deleteMessage(userId: string, mailboxId: string, messageId: number) {
this.logger.log(`Deleting message ${messageId} from mailbox ${mailboxId} for user: ${userId}`);
async deleteMessage(userId: string, inboxId: string, messageId: number) {
try {
const response = await firstValueFrom(this.mailServerService.messages.deleteMessage(userId, mailboxId, messageId));
this.logger.log(`Deleted message ${messageId} for user: ${userId}`);
const result = await firstValueFrom(this.mailServerService.messages.deleteMessage(userId, inboxId, messageId));
return {
success: true,
message: EmailMessage.MESSAGE_DELETED_SUCCESSFULLY,
...response,
result,
};
} catch (error) {
this.logger.error(`Failed to delete message ${messageId} for user ${userId}: ${error instanceof Error ? error.message : "Unknown error"}`);
throw error;
}
}
//==============================================
async markMessageAsSeen(userId: string, inboxId: string, messageId: number) {
try {
const result = await firstValueFrom(this.mailServerService.messages.updateMessage(userId, inboxId, messageId, { seen: true }));
return {
success: true,
message: EmailMessage.MESSAGE_MARKED_AS_SEEN_SUCCESSFULLY,
data: result,
};
} catch (error) {
this.logger.error(
`Failed to mark message ${messageId} as seen for user ${userId}: ${error instanceof Error ? error.message : "Unknown error"}`,
);
throw error;
}
}
//==============================================
async getSentMessages(userId: string, sentId: string, query: MessageListQueryDto) {
try {
const result = await firstValueFrom(this.mailServerService.messages.listMessages(userId, sentId, query));
return {
success: true,
message: EmailMessage.SENT_MESSAGES_RETRIEVED_SUCCESSFULLY,
data: result,
};
} catch (error) {
this.logger.error(`Failed to get sent messages for user ${userId}: ${error instanceof Error ? error.message : "Unknown error"}`);
throw error;
}
}
//==============================================
async getTrashMessages(userId: string, trashId: string, query: MessageListQueryDto) {
try {
const result = await firstValueFrom(this.mailServerService.messages.listMessages(userId, trashId, query));
return {
success: true,
message: EmailMessage.TRASH_MESSAGES_RETRIEVED_SUCCESSFULLY,
data: result,
};
} catch (error) {
this.logger.error(`Failed to get trash messages for user ${userId}: ${error instanceof Error ? error.message : "Unknown error"}`);
throw error;
}
}
}