using System.Collections.Generic; using System.Data; using System.Linq; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.HelperClasses; using Kreta.Core; using Kreta.Core.ConnectionType; using Kreta.DataAccessManual; using SDA.Kreta.Entities; namespace Kreta.BusinessLogic.Helpers { public class GondviseloHelper : LogicBase { #region Constructors public GondviseloHelper(IConnectionType connectionType) : base(connectionType) { } #endregion Constructors public List GetGondviseloCoList() { DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.Gondviselo().GetGondviseloDataSet(TanevId)); var gondviseloItemCoList = new List(); foreach (DataRow dataRow in dataSet.Tables[0].Rows) { GondviseloItemCo gondviseloItemCo; int gondviseloId = SDAConvert.ToInt32(dataRow["Id"]); //NOTE: Csak akkor adunk hozzá új gondviselőt a listához, ha még nincs a listában, különben a már benne lévővel dolgozunk tovább! // Erre azért van szükség, mert a left join-ok miatt többször visszajöhet! if (gondviseloItemCoList.All(x => x.Id != gondviseloId)) { gondviseloItemCo = new GondviseloItemCo(dataRow, TanevId); gondviseloItemCoList.Add(gondviseloItemCo); } else { gondviseloItemCo = gondviseloItemCoList.Single(x => x.Id == gondviseloId); } int? cimId = SDAConvert.ToNullableInt32(dataRow["CimId"]); //NOTE: Csak akkor adjuk hozzá a gondviselőhöz az címet, ha az létezik és még nincs hozzáadva korábban! // Erre azért van szükség, mert a left join-ok miatt többször visszajöhet! if (cimId.IsEntityId() && gondviseloItemCo.CimList.All(x => x.Id != cimId.Value)) { var cimItemCo = new CimItemCo(gondviseloItemCo, dataRow); gondviseloItemCo.CimList.Add(cimItemCo); } int? emailId = SDAConvert.ToNullableInt32(dataRow["EmailId"]); //NOTE: Csak akkor adjuk hozzá a gondviselőhöz az email-t, ha az létezik és még nincs hozzáadva korábban! // Erre azért van szükség, mert a left join-ok miatt többször visszajöhet! if (emailId.IsEntityId() && gondviseloItemCo.EmailList.All(x => x.Id != emailId.Value)) { var emailItemCo = new EmailItemCo(gondviseloItemCo, dataRow); gondviseloItemCo.EmailList.Add(emailItemCo); } int? telefonId = SDAConvert.ToNullableInt32(dataRow["TelefonId"]); //NOTE: Csak akkor adjuk hozzá a gondviselőhöz az telefont, ha az létezik és még nincs hozzáadva korábban! // Erre azért van szükség, mert a left join-ok miatt többször visszajöhet! if (telefonId.IsEntityId() && gondviseloItemCo.TelefonList.All(x => x.Id != telefonId.Value)) { var telefonItemCo = new TelefonItemCo(gondviseloItemCo, dataRow); gondviseloItemCo.TelefonList.Add(telefonItemCo); } } return gondviseloItemCoList; } public List GetTanuloGonviseloiItemCoList(int tanuloId) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var gonviselokDs = h.Tanulo().GetGondviselok(tanuloId, TanevId); var gondviseloItemCoList = new List(); foreach (DataRow dataRow in gonviselokDs.Tables[0].Rows) { gondviseloItemCoList.Add(GondviseloItemCo.ConvertToGondviseloItemCoFromTanuloDalGetGondviselok(dataRow)); } return gondviseloItemCoList; }); } public bool IsCsokkentettGondviselo(int gondviseloId) { return Dal.CustomConnection.Run(ConnectionType, (h) => { return h.Felhasznalo().IsCsokkentettGondviselo(gondviseloId, IntezmenyId, TanevId); }); } public bool HasTanuloTorvenyesGondviselo(int tanuloId) { var tanuloGondviseloje = GetTanuloGonviseloiItemCoList(tanuloId); return tanuloGondviseloje.Any(t => t.IsTorvenyesKepviselo); } public Felhasznalo4TAdatokCo GetGondviselo4TAdatok(int gondviseloId) { return Dal.CustomConnection.Run(ConnectionType, (h) => { return (Gondviselo)h.Gondviselo().Get(gondviseloId); }); } /// INFO: Mobil használja public void SaveGondviselo4TAdatok(int gondviseloId, Felhasznalo4TAdatokCo co) { Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.Gondviselo(); var gondviselo = dal.Get(gondviseloId); gondviselo.AnyjaUtonev = co.AnyjaUtonev.ReplaceMultipleSpacesAndTrim(); gondviselo.AnyjaVezeteknev = co.AnyjaVezeteknev.ReplaceMultipleSpacesAndTrim(); gondviselo.Elotag = Extensions.NameExtensions.CleanElotag(co.Elotag); gondviselo.SzuletesiDatum = co.SzuletesiDatum; gondviselo.SzuletesiHely = co.SzuletesiHely.ReplaceMultipleSpacesAndTrim(); gondviselo.SzuletesiUtonev = co.SzuletesiUtonev.ReplaceMultipleSpacesAndTrim(); gondviselo.SzuletesiVezeteknev = co.SzuletesiVezeteknev.ReplaceMultipleSpacesAndTrim(); gondviselo.Utonev = co.Utonev.ReplaceMultipleSpacesAndTrim(); gondviselo.Vezeteknev = co.Vezeteknev.ReplaceMultipleSpacesAndTrim(); gondviselo.Nev = Extensions.NameExtensions.GetNevSorrendben("F", gondviselo.Elotag, gondviselo.Vezeteknev, gondviselo.Utonev); dal.Update(gondviselo); }); } public bool IsGondviseloTanuloinakEvfolyamTipusaLetezik(int gondviseloId, IEnumerable evfolyamTipusIdList) { return Dal.CustomConnection.Run(ConnectionType, (h) => { return h.Gondviselo().IsGondviseloTanuloinakEvfolyamTipusaLetezik(gondviseloId, IntezmenyId, TanevId, evfolyamTipusIdList); }); } } }