summaryrefslogtreecommitdiff
path: root/src/management/mail.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/management/mail.cpp')
-rw-r--r--src/management/mail.cpp31
1 files changed, 17 insertions, 14 deletions
diff --git a/src/management/mail.cpp b/src/management/mail.cpp
index ac8d58f..87ebb51 100644
--- a/src/management/mail.cpp
+++ b/src/management/mail.cpp
@@ -7,16 +7,18 @@ namespace smtp::manage
//
//Constructors
//
+
Mail::Mail( file::Mail const& file_reader )
- : mFileReader( file_reader )
+ : mFileReader( file_reader )
+ , mMails( mFileReader.Read() )
{
- mMails = mFileReader.Read();
}
//
//Public methods
//
+
MailsSet Mail::GetMailToSend() const
{
return mMails;
@@ -26,27 +28,21 @@ namespace smtp::manage
{
auto merged_mails = GetMergedMails( mails_to_add );
- auto result = mFileReader.Write( merged_mails );
- mMails = mFileReader.Read();
- return result;
+ return RefreshMails( mails_to_add );
}
bool Mail::DeleteMailToSend( MailsSet const& mail_to_send )
{
auto mails_to_delete = GetItersectionMails( mail_to_send );
auto result_set_after_delete = GetMailsAfterDelete( mails_to_delete );
- auto result_of_delete = mFileReader.Write( result_set_after_delete );
- if( result_of_delete )
- {
- mMails = result_set_after_delete;
- }
- return result_of_delete;
+ return RefreshMails( mails_to_delete );
}
//
//Private methods
//
+
MailsSet Mail::GetMergedMails( MailsSet const& mails_to_add )
{
MailsSet result;
@@ -69,7 +65,7 @@ namespace smtp::manage
mMails.sort();
std::set_intersection( mMails.cbegin(), mMails.cend(),
sorted_mail_to_send.cbegin(), sorted_mail_to_send.cend(),
- std::back_inserter( result ));
+ std::back_inserter( result ) );
return result;
}
@@ -80,6 +76,13 @@ namespace smtp::manage
{
result.remove( element_to_delete );
}
- return result;
- }
+ return result;
+ }
+
+ bool Mail::RefreshMails( MailsSet const& new_mails )
+ {
+ auto result = mFileReader.Write( new_mails );
+ mMails = mFileReader.Read();
+ return result;
+ }
}