using System; using System.Collections.Generic; using System.Data; using System.Linq; using Kreta.Core.MessageBroker.Contract.MobileNotification; using Kreta.Core.MessageBroker.Contract.MobileNotification.Enum; using Kreta.DataAccessManual; using Kreta.Job.Tasks.Helpers.Utility; using Kreta.MessageBroker.Client.MobileNotification; using Kreta.Resources; using Serilog; using Serilog.Core.Enrichers; namespace Kreta.Job.Tasks.Helpers.Notification { internal static class MulasztasNotificationHelper { /// INFO @DevKornel: Mobil használja internal static void SendMulasztasNotification(string connectionString) { var logger = Log.ForContext(new PropertyEnricher[] { new PropertyEnricher("LoggerId", Guid.NewGuid()) }); try { logger.Information($"SendMulasztasNotification:Start"); Dal.ServiceSystemConnection.Run(connectionString, h => { var dal = h.MulasztasDal(); var entities = dal.GetAllSchemaMulasztasNotification(); logger.Information($"GetAllSchemaMulasztasNotification"); dal.SetMulasztasAsKikuldott(entities.Select(x => x.MulasztasId).Distinct()); List mobileNotificationMessagesList = new List(); MobileNotificationMessage[] mobileNotificationMessages = entities.Select(entity => MobileNotificationMessageHelper.CreateMessage( entity.IntezmenyAzonosito, entity.TanuloId, MobileNotificationMessageType.Absence, entity.MulasztasId, string.Format(NotificationResource.MulasztasNotificationMessage, entity.TanuloNev, entity.TantargyNev, entity.MulasztasDatuma.ToString("yyyy.MM.dd."), Extensions.GetHetnapja(entity.MulasztasDatuma, entity.TanevId, entity.IntezmenyAzonosito), entity.OraSorszama.HasValue ? " " + entity.OraSorszama.Value + ". óra időpontra" : "i napra"), NotificationResource.MulasztasTitle) ).ToArray(); logger.Information($"Mulasztas CreateMessage count: {mobileNotificationMessages.Length}"); if (mobileNotificationMessages.Length > 0) { MobileNotificationMessageHelper.PostStudentNotification(mobileNotificationMessages); logger.Information($"Mulasztas PostStudentNotification"); } }); logger.Information("SendMulasztasNotification:End"); } catch (Exception ex) { logger.Fatal(ex, ex.GetType().FullName); } } } }