private void createInquiry(Entities.MailMessage convertedMessage)
{
if (convertedMessage.Sender.Role == PersonRole.Client &&
!repository.Query<Inquiry>(x => x.Source)
.Select(x => x.Source)
.Any(convertedMessage.SameMessagePredicate))
{
var receiver = convertedMessage.Receivers.First();
var ownerPerson = repository.Query<User>(x => x.Teams, x => x.RelatedPerson).FirstOrDefault(x => x.RelatedPerson.Id == receiver.Id);
if (ownerPerson != null)
{
var inquiry = repository.Query<Inquiry>(x => x.Client, x => x.Owner)
.FirstOrDefault(
x =>
x.Client.Id == convertedMessage.Sender.Id && x.Owner.Id == ownerPerson.CurrentTeam.Id &&
!x.Archived);
if (inquiry == null)
{
var newInquiry = inquiryFactory.CreateInquiry(convertedMessage);
newInquiry.Owner = ownerPerson.CurrentTeam;
repository.Save(newInquiry);
}
else
{
inquiry.ReferenceDate = null;
repository.Save(inquiry);
}
}
}
}