using System.Collections.Generic; using System.Data; using System.Linq; using Kreta.DataAccess.Interfaces; using Kreta.DataAccessManual.Interfaces; using Kreta.DataAccessManual.Util; using Kreta.Framework.Util; using SDA.Kreta.Entities; namespace Kreta.DataAccessManual { internal class KirKontenerDAL : DataAccessBase, IKirKontenerDAL { public KirKontenerDAL(DalHandler handler, GridParameters parameters) : base(handler, parameters) { } public KirKontenerDAL(DalHandler handler) : base(handler) { } public IKIRKontener Get() { return KIRKontener.GiveAnInstance(); } public IKIRKontener Get(int id) { var entity = KIRKontener.GiveAnInstance(); entity.LoadByID(id); return entity; } public IKIRKontener GetByFelhasznalo(int felhasznaloId, string intezmenyAzonosito, string kontenerId) { var felhasznaloEntity = Felhasznalo.GiveAnInstance(); felhasznaloEntity.LoadByID(felhasznaloId); KIRKontener kirKontenerEntityElement = felhasznaloEntity.KIRKontener .FirstOrDefault(x => x.IntezmenyAzonosito == intezmenyAzonosito && x.KontenerId == kontenerId && !x.Torolt); return kirKontenerEntityElement; } public void FullUpdate(IKIRKontener dto) { var entity = dto as KIRKontener; entity.FullUpdate(true); DalHelper.Commit(); } public void Update(IKIRKontener dto) { var entity = dto as KIRKontener; entity.FullUpdate(); DalHelper.Commit(); } public void Insert(IKIRKontener dto) { var entity = dto as KIRKontener; entity.Insert(true); dto.ID = entity.ID; DalHelper.Commit(); } public void Delete(int id) { var entity = KIRKontener.GiveAnInstance(); entity.LoadByID(id); entity.KIRKontenerElem.RemoveAll(); entity.KIRKontenerStatusz.RemoveAll(); entity.Delete(); DalHelper.Commit(); } public List GetFelhasznaloAktivKontenerId(int felhasznaloId, int intezmenyId, int tanevId) { var parameters = new List { new CommandParameter("pFelhasznaloId", felhasznaloId), new CommandParameter("pIntezmenyId", intezmenyId), new CommandParameter("pTanevId", tanevId) }; var query = @"SELECT KirKontener.C_KONTENERID ,MAX(KirKontenerStatusz.CREATED) FROM T_KIRKONTENER KirKontener LEFT JOIN T_KIRKONTENERSTATUSZ KirKontenerStatusz ON KirKontener.ID = KirKontenerStatusz.C_KIRKONTENERID AND KirKontenerStatusz.C_INTEZMENYID = KirKontener.C_INTEZMENYID AND KirKontenerStatusz.C_TANEVID = KirKontener.C_TANEVID AND KirKontenerStatusz.TOROLT = 'F' WHERE KirKontener.C_FELHASZNALOID = :pFelhasznaloId AND KirKontener.C_INTEZMENYID = :pIntezmenyId AND KirKontener.C_TANEVID = :pTanevId AND KirKontener.TOROLT = 'F' AND ( (KirKontenerStatusz.C_KOD IS NULL OR KirKontenerStatusz.C_KOD NOT IN ('2200', '2400', '2600', '2800', '3600')) AND KirKontener.C_VALASZKOD = 'OK') AND NOT EXISTS (SELECT 1 FROM T_KIRKONTENERELEMSTATUSZ KirKontenerElemStatusz INNER JOIN T_KIRKONTENERELEM KirKontenerElem ON KirKontenerElem.ID = KirKontenerElemStatusz.C_KIRKONTENERELEMID WHERE KirKontenerElem.C_KIRKONTENERID = KirKontener.ID) GROUP BY KirKontener.C_KONTENERID"; var ds = GetData(query, parameters); return ds.Tables[0] .AsEnumerable() .Select(x => x.Field("C_KONTENERID")) .ToList(); } } }