init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
|
@ -0,0 +1,110 @@
|
|||
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.DataAccessManual.Interfaces;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Job.Tasks.Entities;
|
||||
using Kreta.Job.Tasks.Helpers.Utility;
|
||||
using Kreta.MessageBroker.Client.MobileNotification;
|
||||
using Kreta.Resources;
|
||||
using Newtonsoft.Json;
|
||||
using Serilog;
|
||||
using Serilog.Core.Enrichers;
|
||||
|
||||
namespace Kreta.Job.Tasks.Helpers.Notification
|
||||
{
|
||||
internal static class HazifeladatNotificationHelper
|
||||
{
|
||||
internal static void SendHazifeladatNotification(string connectionString)
|
||||
{
|
||||
var logger = Log.ForContext(new PropertyEnricher[] { new PropertyEnricher("LoggerId", Guid.NewGuid()) });
|
||||
try
|
||||
{
|
||||
logger.Information("SendHazifeladatNotification:Start");
|
||||
|
||||
Dal.ServiceSystemConnection.Run(connectionString, dalHandler =>
|
||||
{
|
||||
IDKT_FeladatDal dktFeladatDal = dalHandler.DKT_FeladatDal();
|
||||
DataSet hazifeladatok = dktFeladatDal.GetAllSchemaHazifeladatNotification();
|
||||
|
||||
logger.Information("GetAllSchemaHazifeladatNotification");
|
||||
|
||||
var hazifeladatList = new List<IdWithData>();
|
||||
foreach (DataRow row in hazifeladatok.Tables[0].Rows)
|
||||
{
|
||||
if (int.TryParse(row["ID"] == DBNull.Value ? string.Empty : row["ID"].ToString(), out int hazifeladatId))
|
||||
{
|
||||
hazifeladatList.Add(new IdWithData(hazifeladatId, row));
|
||||
}
|
||||
}
|
||||
|
||||
if (hazifeladatList.Count > 0)
|
||||
{
|
||||
dktFeladatDal.SetHazifeladatAsKikuldott(hazifeladatList.Select(x => x.Id).Distinct().ToList());
|
||||
|
||||
logger.Information("SetHazifeladatAsKikuldott");
|
||||
|
||||
var mobileNotificationMessages = new List<MobileNotificationMessage>();
|
||||
|
||||
hazifeladatList.ForEach(item => ProcessHazifeladatNotification(item.Data, item.Id, mobileNotificationMessages));
|
||||
|
||||
logger.Information($"ProcessHazifeladatNotification count: {mobileNotificationMessages.Count}");
|
||||
|
||||
if (mobileNotificationMessages.Count > 0)
|
||||
{
|
||||
MobileNotificationMessageHelper.PostStudentNotification(mobileNotificationMessages.ToArray());
|
||||
|
||||
logger.Information($"Hazifeladat PostStudentNotification");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
logger.Information("SendHazifeladatNotification:End");
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Fatal(ex, ex.GetType().FullName);
|
||||
}
|
||||
}
|
||||
|
||||
private static void ProcessHazifeladatNotification(DataRow row, int hazifeladatId, List<MobileNotificationMessage> mobileNotificationMessages)
|
||||
{
|
||||
if (int.TryParse(row["TanuloId"] == DBNull.Value ? string.Empty : row["TanuloId"].ToString(), out int tanuloId))
|
||||
{
|
||||
Guid.TryParse(row["IdpUniqueId"] == DBNull.Value ? string.Empty : row["IdpUniqueId"].ToString(), out Guid idpUniqueId);
|
||||
string instituteCode = row["IntezmenyAzonosito"] == DBNull.Value ? string.Empty : row["IntezmenyAzonosito"].ToString();
|
||||
string tanuloNev = row["TanuloNev"] == DBNull.Value ? string.Empty : row["TanuloNev"].ToString();
|
||||
string tantargyNev = row["TantargyNev"] == DBNull.Value ? string.Empty : row["TantargyNev"].ToString();
|
||||
int feladatTipusId = Convert.ToInt32(row["FeladatTipusId"]);
|
||||
int? xeropanBundleId = row["XeropanBundleId"] == DBNull.Value ? (int?)null : Convert.ToInt32(row["XeropanBundleId"]);
|
||||
DateTime feladatDatum = Convert.ToDateTime(row["Datum"]);
|
||||
string hetNapja = Extensions.GetHetnapja(feladatDatum, Convert.ToInt32(row["TanevId"]), instituteCode);
|
||||
int? oraSzam = row["OraSzam"] == DBNull.Value ? (int?)null : Convert.ToInt32(row["OraSzam"]);
|
||||
string idopont = oraSzam.HasValue ? $"{hetNapja} {oraSzam}. óra időpontra" : $"{hetNapja}i napra";
|
||||
|
||||
var dataObject = new { FeladatTipusId = feladatTipusId, FeladatDatum = feladatDatum.ToIso8601UtcString() };
|
||||
|
||||
// Azért szükséges ez a rész, mert ha egy napot a tanév rendjében tanítási napnak jelölök, akkor utána az órát
|
||||
// beteszi a t_orarendiora táblába ugyan azokkal az adatokkal csak más id-val hetirend-el érvényesség kezdetével végével,
|
||||
// ez viszont valid működés és az is, hogy lehet tenni tanítási napot mondjuk nem hétvégére, ennek kiküszöbölésére, hogy ne küldjön duplán push-t került ide ez a módosítás.
|
||||
if (!mobileNotificationMessages.Any(m => m.ItemId == hazifeladatId && m.UserId == tanuloId) &&
|
||||
(feladatTipusId != (int)FeladatTipusEnum.NyelviFeladat || feladatTipusId == (int)FeladatTipusEnum.NyelviFeladat && xeropanBundleId.HasValue))
|
||||
{
|
||||
mobileNotificationMessages.Add(MobileNotificationMessageHelper.CreateMessage(
|
||||
instituteCode,
|
||||
tanuloId,
|
||||
MobileNotificationMessageType.Homework,
|
||||
hazifeladatId,
|
||||
string.Format(NotificationResource.HaziFeladatNotificationMessage, tanuloNev, tantargyNev, feladatDatum.ToString("yyyy.MM.dd."), idopont),
|
||||
NotificationResource.HaziFeladatTitle,
|
||||
data: JsonConvert.SerializeObject(dataObject)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue