103 lines
4.9 KiB
C#
103 lines
4.9 KiB
C#
using System;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Xml;
|
|
using Hangfire;
|
|
using Kreta.Core;
|
|
using Kreta.DataAccessManual;
|
|
using Kreta.DataAccessManual.Interfaces;
|
|
using Kreta.Framework;
|
|
using Kreta.Job.Tasks.Core;
|
|
using Kreta.Job.Tasks.Core.Models;
|
|
using Kreta.Resources;
|
|
|
|
namespace Kreta.Job.Tasks.Helpers.Email
|
|
{
|
|
internal static class KozelgoFogadooraMailHelper
|
|
{
|
|
internal static void SendKozelgoFogadooraMail(string connectionString)
|
|
{
|
|
Dal.ServiceSystemConnection.Run(connectionString, h =>
|
|
{
|
|
var fogadooraDal = h.Fogadoora();
|
|
try
|
|
{
|
|
var kozelgoFogadoorak = fogadooraDal.GetKozelgoFogadoorak().Tables[0].AsEnumerable().Select(f => new
|
|
{
|
|
FogadooraKezdete = f.Field<DateTime>("FogadooraKezdete"),
|
|
FogadooraVege = f.Field<DateTime>("FogadooraVege"),
|
|
NyomtatasiNev = f.Field<string>("NyomtatasiNev"),
|
|
EmailCim = f.Field<string>("EmailCim"),
|
|
EmailGuid = f.Field<Guid?>("EmailGuid"),
|
|
TeremNev = f.Field<string>("TeremNev"),
|
|
IntezmenyNev = f.Field<string>("IntezmenyNev"),
|
|
IntezmenyCim = f.Field<string>("IntezmenyCim"),
|
|
IntezmenyFenntartoEmail = f.Field<string>("IntezmenyFenntartoEmail"),
|
|
IntezmenyUrl = string.Format(CommonResource.IntezmenyUrl, f.Field<string>("IntezmenyAzon")),
|
|
IntezmenyAzon = f.Field<string>("IntezmenyAzon"),
|
|
UserId = f.Field<int>("UserId"),
|
|
OsztalyCsoportNev = f.Field<string>("OsztalyCsoportNev")
|
|
});
|
|
|
|
foreach (var kozelgoFogadoora in kozelgoFogadoorak.Where(f => f.EmailCim.IsValidEmail()))
|
|
{
|
|
if (GetProfileData(h, kozelgoFogadoora.UserId, "FogadooraEmlekeztetoEmailJelentkezes"))
|
|
{
|
|
var datum = kozelgoFogadoora.FogadooraKezdete.ToString(Kreta.Core.Constants.ToStringPattern.HungarianDate);
|
|
var idopont = string.Format("{0} - {1}",
|
|
kozelgoFogadoora.FogadooraKezdete.ToString(Kreta.Core.Constants.ToStringPattern.HungarianDateTimeWithoutSeconds),
|
|
kozelgoFogadoora.FogadooraVege.ToString(Kreta.Core.Constants.ToStringPattern.HungarianDateTimeWithoutSeconds));
|
|
|
|
var subject = string.Format(EmailResource.KozelgoFogadooraTargy, datum, kozelgoFogadoora.OsztalyCsoportNev, kozelgoFogadoora.NyomtatasiNev);
|
|
var message = string.Format(EmailResource.KozelgoFogadooraTartalom,
|
|
kozelgoFogadoora.NyomtatasiNev,
|
|
idopont,
|
|
kozelgoFogadoora.TeremNev,
|
|
kozelgoFogadoora.NyomtatasiNev,
|
|
kozelgoFogadoora.IntezmenyUrl,
|
|
kozelgoFogadoora.IntezmenyNev,
|
|
kozelgoFogadoora.IntezmenyCim,
|
|
kozelgoFogadoora.OsztalyCsoportNev
|
|
);
|
|
|
|
var emailModel = new EmailModel(kozelgoFogadoora.IntezmenyAzon, kozelgoFogadoora.EmailGuid)
|
|
{
|
|
TargetEmail = kozelgoFogadoora.EmailCim,
|
|
Subject = subject,
|
|
Message = message
|
|
+ string.Format(CommonResource.TevesCimzett, kozelgoFogadoora.IntezmenyFenntartoEmail)
|
|
+ Environment.NewLine
|
|
+ string.Format(CommonResource.IntezmenyNevEsUrlLink, kozelgoFogadoora.IntezmenyNev, kozelgoFogadoora.IntezmenyUrl)
|
|
};
|
|
|
|
BackgroundJob.Enqueue<IEmailJob>((email) => email.SendMailAsync(emailModel));
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
SDAServer.Instance.Logger.ExceptionThrown(ex);
|
|
}
|
|
});
|
|
}
|
|
|
|
private static bool GetProfileData(IDalHandler h, int felhasznaloId, string profileTipus)
|
|
{
|
|
var dal = h.Fogadoora(null);
|
|
var profileXml = dal.GetProfileData(felhasznaloId);
|
|
|
|
if (string.IsNullOrWhiteSpace(profileXml))
|
|
{
|
|
return true;
|
|
}
|
|
|
|
XmlDocument xDoc = new XmlDocument();
|
|
xDoc.LoadXml(profileXml);
|
|
XmlNode node = xDoc.SelectSingleNode("UserProfile/" + profileTipus);
|
|
if (node == null)
|
|
return true;
|
|
|
|
return (bool.TryParse(node.InnerText, out bool result)) && result;
|
|
}
|
|
}
|
|
}
|