using FluentScheduler;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Sevomin.Models.Helpers.ScheduledTasks
{
    public class NewApplication : ITask
    {
        public async void Execute()
        {
            var avalins = SevominDbContext.Current.DovominJobs.ToList().Where(dj => dj.ApplyDate.Date >= DateTime.UtcNow.AddDays(-2).Date).Select(a => a.Job.Avalin);

            foreach (var avalin in avalins.Distinct())
            {
                var applies = SevominDbContext.Current.DovominJobs.ToList().Where(dj => dj.Job.AvalinId == avalin.Id && dj.ApplyDate.Date == DateTime.UtcNow.AddDays(-2).Date);

                foreach (var apply in applies)
                {
                    SevominEmailer emailer = new SevominEmailer();
                    emailer.EmailType = EmailType.NewApplication;
                    emailer.Parameters.Add("avalin-name", avalin.DisplayName);
                    emailer.Parameters.Add("avalin-contact", string.IsNullOrWhiteSpace(apply.Job.ContactPersonName) ? "" : apply.Job.ContactPersonName);
                    emailer.Parameters.Add("dovomin-name", apply.Dovomin.DisplayName);

                    if (string.IsNullOrWhiteSpace(apply.Job.ContactPersonEMail))
                        await emailer.SendAsync(avalin.Email, "اعلام آمادگی جدید برای فرصت شغلی اعلام شده در سومین", true);
                    else
                    {
                        await emailer.SendAsync(avalin.Email, "اعلام آمادگی جدید برای فرصت شغلی اعلام شده در سومین", true);
                        await emailer.SendAsync(apply.Job.ContactPersonEMail, "اعلام آمادگی جدید برای فرصت شغلی اعلام شده در سومین", true);
                    }
                }
            }
        }
    }
}
