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("FogadooraKezdete"), FogadooraVege = f.Field("FogadooraVege"), NyomtatasiNev = f.Field("NyomtatasiNev"), EmailCim = f.Field("EmailCim"), EmailGuid = f.Field("EmailGuid"), TeremNev = f.Field("TeremNev"), IntezmenyNev = f.Field("IntezmenyNev"), IntezmenyCim = f.Field("IntezmenyCim"), IntezmenyFenntartoEmail = f.Field("IntezmenyFenntartoEmail"), IntezmenyUrl = string.Format(CommonResource.IntezmenyUrl, f.Field("IntezmenyAzon")), IntezmenyAzon = f.Field("IntezmenyAzon"), UserId = f.Field("UserId"), OsztalyCsoportNev = f.Field("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((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; } } }