kreta/Kreta.DataAccessManual/DashboardUzenetDal.cs
2024-03-13 00:33:46 +01:00

380 lines
15 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using SDA.Kreta.Entities;
namespace Kreta.DataAccessManual
{
internal class DashboardUzenetDal : DataAccessBase, IDashboardUzenetDal
{
public DashboardUzenetDal(DalHandler handler) : base(handler)
{
}
#region BaseCRUD
public void Delete(IDashboardUzenet dto)
{
var entity = dto as DashboardUzenet;
entity.Delete(false);
DalHelper.Commit();
}
public void Delete(int id)
{
var entity = DashboardUzenet.GiveAnInstance();
entity.LoadByID(id);
entity.Delete();
DalHelper.Commit();
}
public IDashboardUzenet Get()
{
return DashboardUzenet.GiveAnInstance();
}
public IDashboardUzenet Get(int id)
{
var entity = DashboardUzenet.GiveAnInstance();
entity.LoadByID(id);
return entity;
}
public void Insert(IDashboardUzenet dto)
{
var entity = dto as DashboardUzenet;
entity.Insert();
dto.ID = entity.ID;
DalHelper.Commit();
}
public void Update(IDashboardUzenet dto)
{
var entity = dto as DashboardUzenet;
entity.Update();
DalHelper.Commit();
}
#endregion
public DataSet GetLoginDashboardUzenet()
{
var commandText = @"
SELECT TOP 1
d.C_CIM
,d.C_TARTALOM
FROM T_DASHBOARDUZENET d
WHERE d.TOROLT = 'F'
AND d.C_EGYEDIAZONOSITO = 'LOGINRENDSZERERTESITES'
AND d.C_ISADMIN = 'T'
";
return GetData(commandText);
}
public DataSet GetAdminDashboardUzenetDataSet(int felhasznaloId)
{
var parameters = new List<CommandParameter>
{ new CommandParameter("pFelhasznaloId", felhasznaloId) };
var commandText = @"
SELECT DISTINCT * FROM (
SELECT
d.C_CIM
,d.C_EGYEDIAZONOSITO
,IIF(d.C_KIEMELTIDOSZAKVEGE IS NOT NULL AND d.C_KIEMELTIDOSZAKVEGE>GETDATE(), 0, d.C_SORREND) as SORREND
,d.C_TARTALOM
,IIF(d.C_KIEMELTIDOSZAKVEGE IS NOT NULL AND d.C_KIEMELTIDOSZAKVEGE>GETDATE(), 4, d.C_DASHBOARDUZENETKATEGORIAID) as C_DASHBOARDUZENETKATEGORIAID
,d.C_KIEMELTIDOSZAKVEGE
FROM T_DASHBOARDUZENET d
WHERE d.TOROLT = 'F'
AND d.C_ISPOPUP = 'F'
AND d.C_ISINTEZMENYI = 'F'
AND d.C_ISFELHASZNALOI = 'F'
AND (d.C_ERVENYESSEGKEZDETE <= GETDATE() OR d.C_ERVENYESSEGKEZDETE IS NULL)
AND (d.C_ERVENYESSEGVEGE > GETDATE() OR d.C_ERVENYESSEGVEGE IS NULL)
AND d.C_ISADMIN = 'T'
UNION
SELECT
d.C_CIM
,d.C_EGYEDIAZONOSITO
,IIF(d.C_KIEMELTIDOSZAKVEGE IS NOT NULL AND d.C_KIEMELTIDOSZAKVEGE>GETDATE(), 0, d.C_SORREND) as SORREND
,COALESCE(di.C_TARTALOM, d.C_TARTALOM) AS C_TARTALOM
,IIF(d.C_KIEMELTIDOSZAKVEGE IS NOT NULL AND d.C_KIEMELTIDOSZAKVEGE>GETDATE(), 4, d.C_DASHBOARDUZENETKATEGORIAID) as C_DASHBOARDUZENETKATEGORIAID
,d.C_KIEMELTIDOSZAKVEGE
FROM T_DASHBOARDUZENET d
INNER JOIN T_DASHBOARDUZENETINTEZMENY di ON di.C_DASHBOARDUZENETID = d.ID AND di.TOROLT = 'F'
WHERE d.TOROLT = 'F'
AND d.C_ISPOPUP = 'F'
AND d.C_ISINTEZMENYI = 'T'
AND (d.C_ERVENYESSEGKEZDETE <= GETDATE() OR d.C_ERVENYESSEGKEZDETE IS NULL)
AND (d.C_ERVENYESSEGVEGE > GETDATE() OR d.C_ERVENYESSEGVEGE IS NULL)
AND d.C_ISADMIN = 'T'
UNION
SELECT
d.C_CIM
,d.C_EGYEDIAZONOSITO
,IIF(d.C_KIEMELTIDOSZAKVEGE IS NOT NULL AND d.C_KIEMELTIDOSZAKVEGE>GETDATE(), 0, d.C_SORREND) as SORREND
,d.C_TARTALOM AS C_TARTALOM
,IIF(d.C_KIEMELTIDOSZAKVEGE IS NOT NULL AND d.C_KIEMELTIDOSZAKVEGE>GETDATE(), 4, d.C_DASHBOARDUZENETKATEGORIAID) as C_DASHBOARDUZENETKATEGORIAID
,d.C_KIEMELTIDOSZAKVEGE
FROM T_DASHBOARDUZENET d
INNER JOIN T_DASHBOARDUZENETFELHASZNALO df ON df.C_DASHBOARDUZENETID = d.ID AND df.TOROLT = 'F'
WHERE d.TOROLT = 'F'
AND d.C_ISPOPUP = 'F'
AND d.C_ISFELHASZNALOI = 'T'
AND df.C_FELHASZNALOID = :pFelhasznaloId
AND (d.C_ERVENYESSEGKEZDETE <= GETDATE() OR d.C_ERVENYESSEGKEZDETE IS NULL)
AND (d.C_ERVENYESSEGVEGE > GETDATE() OR d.C_ERVENYESSEGVEGE IS NULL)
AND d.C_ISADMIN = 'T'
) AS x
ORDER BY x.SORREND
";
return GetData(commandText, parameters);
}
public DataSet GetTanarDashboardUzenetDataSet(int felhasznaloId)
{
var parameters = new List<CommandParameter>
{ new CommandParameter("pFelhasznaloId", felhasznaloId) };
var commandText = @"
SELECT DISTINCT * FROM (
SELECT
d.C_CIM
,d.C_EGYEDIAZONOSITO
,IIF(d.C_KIEMELTIDOSZAKVEGE IS NOT NULL AND d.C_KIEMELTIDOSZAKVEGE>GETDATE(), 0, d.C_SORREND) as SORREND
,d.C_TARTALOM
,IIF(d.C_KIEMELTIDOSZAKVEGE IS NOT NULL AND d.C_KIEMELTIDOSZAKVEGE>GETDATE(), 4, d.C_DASHBOARDUZENETKATEGORIAID) as C_DASHBOARDUZENETKATEGORIAID
,d.C_KIEMELTIDOSZAKVEGE
FROM T_DASHBOARDUZENET d
WHERE d.TOROLT = 'F'
AND d.C_ISPOPUP = 'F'
AND d.C_ISINTEZMENYI = 'F'
AND d.C_ISFELHASZNALOI = 'F'
AND (d.C_ERVENYESSEGKEZDETE <= GETDATE() OR d.C_ERVENYESSEGKEZDETE IS NULL)
AND (d.C_ERVENYESSEGVEGE > GETDATE() OR d.C_ERVENYESSEGVEGE IS NULL)
AND d.C_ISTANAR = 'T'
UNION
SELECT
d.C_CIM
,d.C_EGYEDIAZONOSITO
,IIF(d.C_KIEMELTIDOSZAKVEGE IS NOT NULL AND d.C_KIEMELTIDOSZAKVEGE>GETDATE(), 0, d.C_SORREND) as SORREND
,COALESCE(di.C_TARTALOM, d.C_TARTALOM) AS C_TARTALOM
,IIF(d.C_KIEMELTIDOSZAKVEGE IS NOT NULL AND d.C_KIEMELTIDOSZAKVEGE>GETDATE(), 4, d.C_DASHBOARDUZENETKATEGORIAID) as C_DASHBOARDUZENETKATEGORIAID
,d.C_KIEMELTIDOSZAKVEGE
FROM T_DASHBOARDUZENET d
INNER JOIN T_DASHBOARDUZENETINTEZMENY di ON di.C_DASHBOARDUZENETID = d.ID AND di.TOROLT = 'F'
WHERE d.TOROLT = 'F'
AND d.C_ISPOPUP = 'F'
AND d.C_ISINTEZMENYI = 'T'
AND (d.C_ERVENYESSEGKEZDETE <= GETDATE() OR d.C_ERVENYESSEGKEZDETE IS NULL)
AND (d.C_ERVENYESSEGVEGE > GETDATE() OR d.C_ERVENYESSEGVEGE IS NULL)
AND d.C_ISTANAR = 'T'
UNION
SELECT
d.C_CIM
,d.C_EGYEDIAZONOSITO
,IIF(d.C_KIEMELTIDOSZAKVEGE IS NOT NULL AND d.C_KIEMELTIDOSZAKVEGE>GETDATE(), 0, d.C_SORREND) as SORREND
,d.C_TARTALOM AS C_TARTALOM
,IIF(d.C_KIEMELTIDOSZAKVEGE IS NOT NULL AND d.C_KIEMELTIDOSZAKVEGE>GETDATE(), 4, d.C_DASHBOARDUZENETKATEGORIAID) as C_DASHBOARDUZENETKATEGORIAID
,d.C_KIEMELTIDOSZAKVEGE
FROM T_DASHBOARDUZENET d
INNER JOIN T_DASHBOARDUZENETFELHASZNALO df ON df.C_DASHBOARDUZENETID = d.ID AND df.TOROLT = 'F'
WHERE d.TOROLT = 'F'
AND d.C_ISPOPUP = 'F'
AND d.C_ISFELHASZNALOI = 'T'
AND df.C_FELHASZNALOID = :pFelhasznaloId
AND (d.C_ERVENYESSEGKEZDETE <= GETDATE() OR d.C_ERVENYESSEGKEZDETE IS NULL)
AND (d.C_ERVENYESSEGVEGE > GETDATE() OR d.C_ERVENYESSEGVEGE IS NULL)
AND d.C_ISTANAR = 'T'
) AS x
ORDER BY SORREND
";
return GetData(commandText, parameters);
}
public DataSet GetDashboardEgyediAzonositokByIntezmeny(int intezmenyId)
{
var parameters = new List<CommandParameter>
{ new CommandParameter("pIntezmenyId", intezmenyId) };
//FIXME: Ideiglenes megoldás csak! A T_BANK-ot ki kell majd váltani egy megfelelő (új) kapcsolótáblára!!!
var commandText = /*@"
SELECT d.C_EGYEDIAZONOSITO
FROM T_DASHBOARDUZENET d
INNER JOIN T_BANK_OSSZES tmp
INNER JOIN T_INTEZMENY i ON i.ID = tmp.C_INTEZMENYID
ON i.C_AZONOSITO = tmp.C_BANKNAME AND tmp.C_BANKNUMBER = 'LEPMODUL'
WHERE d.TOROLT = 'F'
AND d.C_ISPOPUP = 'F'
AND (d.C_ERVENYESSEGKEZDETE <= GETDATE() OR d.C_ERVENYESSEGKEZDETE IS NULL)
AND (d.C_ERVENYESSEGVEGE > GETDATE() OR d.C_ERVENYESSEGVEGE IS NULL)
AND d.C_EGYEDIAZONOSITO = 'LEPMODULNEMELERHETO'
AND i.ID = :pIntezmenyId
"*/"SELECT '' AS C_EGYEDIAZONOSITO";
return GetData(commandText, parameters);
}
public DataSet GetFeatureMaintenanceDashboardUzenet(string feature)
{
//Ha valamelyik feature-höz vagy oldalhoz kell "karbantartás" oldal,
//akkor azt a T_DASHBOARDUZENET táblába az alábbi mintájára kell felvenni:
string egyediAzonosito = string.Format("MAINTENANCE_{0}", feature.ToUpper());
var commandText = $@"
SELECT TOP 1
d.C_CIM
,d.C_TARTALOM
FROM T_DASHBOARDUZENET d
WHERE d.TOROLT = 'F'
AND d.C_ISPOPUP = 'F'
AND d.C_ISINTEZMENYI = 'T'
AND (d.C_ERVENYESSEGKEZDETE <= GETDATE() OR d.C_ERVENYESSEGKEZDETE IS NULL)
AND (d.C_ERVENYESSEGVEGE > GETDATE() OR d.C_ERVENYESSEGVEGE IS NULL)
AND d.C_EGYEDIAZONOSITO = '{egyediAzonosito}'
AND d.C_ISADMIN = 'T'
";
return GetData(commandText);
}
#region Dashboard Popup
public DataSet GetDashboardUzenetForPopup(int felhasznaloId, int? gondviseloId, int popupId, string egyediAzonosito)
{
var parameters = new List<CommandParameter>()
{
new CommandParameter("pFelhasznaloId", felhasznaloId),
new CommandParameter("pGondviseloId", gondviseloId ?? (object)DBNull.Value),
new CommandParameter("pPopupId", popupId),
new CommandParameter("pEgyediAzonosito", egyediAzonosito)
};
string gondviseloWhere = gondviseloId.HasValue ? " AND df.C_GONDVISELOID = :pGondviseloId" : " AND df.C_GONDVISELOID IS NULL";
var commandText = $@"
SELECT
df.ID
,d.C_EGYEDIAZONOSITO
,d.C_CIM
,d.C_TARTALOM
,d.C_DASHBOARDUZENETKATEGORIAID
,df.C_EGYEDIMUVELET
,df.C_MEGJELENITESEKSZAMA
,df.C_UTOLSOMEGTEKINTESIDEJE
FROM
T_DASHBOARDUZENETFELHASZNALO df
INNER JOIN T_DASHBOARDUZENET d ON d.ID = df.C_DASHBOARDUZENETID
WHERE
df.TOROLT = 'F' AND d.TOROLT = 'F'
AND d.C_ISPOPUP = 'T'
AND df.C_FELHASZNALOID = @pFelhasznaloId {gondviseloWhere}
AND df.ID = @pPopupId
AND d.C_EGYEDIAZONOSITO = @pEgyediAzonosito
";
return GetData(commandText, parameters);
}
public DataSet GetNextDashboardPopup(int felhasznaloId, int? gondviseloId, string[] displayedPopups)
{
var parameters = new List<CommandParameter>()
{
new CommandParameter("pFelhasznaloId", felhasznaloId),
new CommandParameter("pGondviseloId", gondviseloId ?? (object)DBNull.Value, SDA.DataProvider.SDADBType.Int)
};
string gondviseloWhere = gondviseloId.HasValue ? " AND df.C_GONDVISELOID = :pGondviseloId" : " AND df.C_GONDVISELOID IS NULL";
if (displayedPopups == null)
{
displayedPopups = new string[1] { "" };
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < displayedPopups.Length; i++)
{
string name = string.Format("pPopup{0}", i);
parameters.Add(new CommandParameter(name, displayedPopups[i]));
sb.AppendFormat("@{0},", name);
}
var commandText = $@"
SELECT TOP 1
df.ID
,d.C_EGYEDIAZONOSITO
FROM
T_DASHBOARDUZENETFELHASZNALO df
INNER JOIN T_FELHASZNALO f ON f.ID = df.C_FELHASZNALOID
INNER JOIN T_DASHBOARDUZENET d ON d.ID = df.C_DASHBOARDUZENETID
WHERE
df.TOROLT = 'F'
AND d.TOROLT = 'F' AND d.C_ISPOPUP = 'T'
AND df.C_MEGJELENITESEKSZAMA > 0
AND d.C_EGYEDIAZONOSITO NOT IN ({sb.ToString().TrimEnd(',')})
AND f.TOROLT = 'F'
AND f.ID = :pFelhasznaloId {gondviseloWhere}
AND (d.C_ERVENYESSEGKEZDETE IS NULL OR d.C_ERVENYESSEGKEZDETE < GETDATE())
AND (d.C_ERVENYESSEGVEGE IS NULL OR d.C_ERVENYESSEGVEGE > GETDATE())
";
return GetData(commandText, parameters);
}
public void UpdateDashboardPopupClose(int popupId)
{
var dufEntity = DashboardUzenetFelhasznalo.GiveAnInstance();
dufEntity.LoadEntityByID(popupId);
dufEntity.MegjelenitesekSzama--;
dufEntity.UtolsoMegtekintesIdeje = DateTime.Now;
dufEntity.Update();
DalHelper.Commit();
}
public void UpdateDashboardPopupConfirm(int popupId)
{
var dufEntity = DashboardUzenetFelhasznalo.GiveAnInstance();
dufEntity.LoadByID(popupId);
dufEntity.MegjelenitesekSzama = 0;
dufEntity.UtolsoMegtekintesIdeje = DateTime.Now;
dufEntity.Update();
DalHelper.Commit();
}
public string UpdateDashboardPopupNext(int popupId)
{
var dufEntity = DashboardUzenetFelhasznalo.GiveAnInstance();
dufEntity.LoadByID(popupId);
dufEntity.MegjelenitesekSzama = 0;
dufEntity.UtolsoMegtekintesIdeje = DateTime.Now;
dufEntity.Update();
DalHelper.Commit();
return dufEntity.EgyediMuvelet;
}
public DateTime GetKovTelepitesDatum()
{
var commandText = @"
SELECT
ISNULL(C_ERVENYESSEGKEZDETE, GETDATE()) as Datum
FROM T_DASHBOARDUZENET
WHERE
C_EGYEDIAZONOSITO = 'LOGINRENDSZERERTESITES'
";
return GetData(commandText).Tables[0].Rows[0].Field<DateTime>("Datum");
}
#endregion
}
}