53 lines
1.8 KiB
C#
53 lines
1.8 KiB
C#
|
using MailServer.Exceptions;
|
|||
|
using SMTPServer;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
|
|||
|
namespace MailServer
|
|||
|
{
|
|||
|
class DatabaseHelper
|
|||
|
{
|
|||
|
MysqlDB DBContext;
|
|||
|
public DatabaseHelper()
|
|||
|
{
|
|||
|
DBContext = new MysqlDB();
|
|||
|
DBContext.Database.EnsureCreatedAsync();
|
|||
|
}
|
|||
|
|
|||
|
public Folders GetInboxFromAccount(int accountid) => GetStandardFolderFromAccount(accountid, StandardFolders.INBOX);
|
|||
|
|
|||
|
public Folders GetStandardFolderFromAccount(int accountid, StandardFolders folder)
|
|||
|
{
|
|||
|
var res = DBContext.Folders.Where(x => x.AccountId.Equals(accountid) && x.StandardFolder.Equals(folder));
|
|||
|
if (res.Count() < 1) throw new NotFoundException("Folder for specified account not found", Exceptions.Type.FOLDER);
|
|||
|
return res.FirstOrDefault();
|
|||
|
}
|
|||
|
|
|||
|
public Accounts GetAccount(string name, string domain) => GetAccount(name, GetDomain(domain).Id);
|
|||
|
|
|||
|
public Accounts GetAccount(string name, int domain)
|
|||
|
{
|
|||
|
name = name.ToLower();
|
|||
|
var res = DBContext.Accounts.Where(x => x.Domain.Equals(domain) && x.Name.Equals(name));
|
|||
|
if (res.Count() < 1) throw new NotFoundException("no account found", Exceptions.Type.ACCOUNT);
|
|||
|
return res.FirstOrDefault();
|
|||
|
}
|
|||
|
|
|||
|
public Domains GetDomain(string domain)
|
|||
|
{
|
|||
|
domain = domain.ToLower();
|
|||
|
var res = DBContext.Domains.Where(x => x.Domain.Equals(domain));
|
|||
|
if (res.Count() < 1) throw new NotFoundException("no domain found", Exceptions.Type.DOMAIN);
|
|||
|
return res.FirstOrDefault();
|
|||
|
}
|
|||
|
|
|||
|
public void AddMail(Mails mail)
|
|||
|
{
|
|||
|
DBContext.Add(mail);
|
|||
|
DBContext.SaveChangesAsync();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|