public static List <Teknisyen_ViewServisIsEmirIslemIscilikler> Select_IsEmirIslem_Iscilikleri_View(decimal isEmirIslemId, decimal servisTeknisyenId)
        {
            List <Teknisyen_ViewServisIsEmirIslemIscilikler> list = R.Query <Teknisyen_ViewServisIsEmirIslemIscilikler>().Where(t => t.SERVISISEMIRISLEMID == isEmirIslemId).ToList();

            List <HareketUstBilgi>  isEmirIslem_UstHareketBilgileri  = HareketUstBilgi.Select_IsEmirIslem_UstHareketBilgileri(isEmirIslemId);
            List <TeknisyenHareket> isEmirIslem_TeknisyenHareketleri = TeknisyenHareket.Select_IsEmirIslem_TeknisyenHareketleri(isEmirIslemId);

            decimal servisId = isEmirIslem_UstHareketBilgileri.first().SERVISID;
            List <ServisGunMola> servis_gun_molalar = ServisGunMola.SelectServisGunMolalar(servisId);

            List <HareketNeden> nedenler = HareketNeden.Select_Nedenler();
            PuantajGunlugu      pg       = new PuantajGunlugu();

            pg.InitNedenler(nedenler);


            list.forEach(iscilik =>
            {
                List <HareketUstBilgi> iscilik_UstBilgileri          = isEmirIslem_UstHareketBilgileri.where (t => t.ISEMIRISLEMISCILIKID == iscilik.ID).toList();
                List <TeknisyenHareket> iscilik_TeknisyenHareketleri = null;
                List <TeknisyenHareket> servisTeknisyenHareketleri   = null;
                iscilik.TeknisyenIsDurumu = LocalHelpers.GetTeknisyenDurum(servisTeknisyenId, isEmirIslem_TeknisyenHareketleri, iscilik_UstBilgileri, out iscilik_TeknisyenHareketleri, out servisTeknisyenHareketleri);

                if (iscilik_UstBilgileri.isNotEmpty())
                {
                    iscilik.PlanlananSure = iscilik_UstBilgileri.Sum(t => t.PLANLANANSURE);
                }

                TeknisyenHareketDagilimSonuclari puantajSonuclari = Puantaj.GetPuantajSonuclari(iscilik_TeknisyenHareketleri, pg, servis_gun_molalar, nedenler);
                iscilik.CalisilanSure = puantajSonuclari.GetSonucSure(NedenFormati.NormalCalisma);
                iscilik.TeknisyenSure = puantajSonuclari.GetSonucSure(servisTeknisyenId, NedenFormati.NormalCalisma);
            });

            return(list);
        }
Example #2
0
        public override object ExecuteReport(MethodReturn refMr = null)
        {
            List <SERVISTEKNISYEN_REPORT_DATA> servisTeknisyenler = R.Query <SERVISTEKNISYEN_REPORT_DATA>(refMr).Where(t => t.SERVISID == ServisId).ToList();
            //Tarih Aralığında Personelin Hareketlerini Bul
            List <TEKNISYENHAREKET> hareketler = R.Query <TEKNISYENHAREKET>(refMr).Where(t => t.GIRISTARIHI.Between(StartDate.startOfDay(), FinishDate.endOfDay()) && t.SERVISTEKNISYENID.In(servisTeknisyenler.select(tks => tks.ID)) && t.DURUM == YeniTeknisyenHareketDurum.Cikis).ToList();
            //Bu Hareketlerde Kullanılan İşEmirİşlemleri Çek
            List <Teknisyen_ViewServisIsEmirIslemIscilikler> iscilikler = Teknisyen_ViewServisIsEmirIslemIscilikler.SelectOverloadFromISLEMID(hareketler.select(t => t.ISEMIRISLEMID).Distinct().toList());

            PuantajGunlugu       pg = new PuantajGunlugu();
            List <ServisGunMola> servisGunMolalari = ServisGunMola.SelectServisGunMolalar(ServisId, refMr);
            List <HareketNeden>  hareketNedenler   = HareketNeden.Select_Nedenler();

            foreach (SERVISTEKNISYEN_REPORT_DATA servisTeknisyen in servisTeknisyenler)
            {
                var            teknisyenHareketler = hareketler.where (t => t.SERVISTEKNISYENID == servisTeknisyen.ID).orderBy(t => t.GIRISTARIHI).toList();
                List <decimal> teknisyenIslemIds   = teknisyenHareketler.select(t => t.ISEMIRISLEMID).Distinct().toList();
                var            teknisyenIscilikler = iscilikler.where (t => teknisyenIslemIds.contains(t.SERVISISEMIRISLEMID)).toList();

                servisTeknisyen.Faturalanan_Dakika = (int)teknisyenIscilikler.Sum(t => t.Iscilik_Dakika_Suresi);

                List <DateTime> tarihler = teknisyenHareketler.select(t => t.GIRISTARIHI.Date).Distinct().toList();
                foreach (var tarih in tarihler)
                {
                    var firstIn = teknisyenHareketler.where (t => t.GIRISTARIHI.Date == tarih).first().GIRISTARIHI;
                    var lastOut = teknisyenHareketler.where (t => t.GIRISTARIHI.Date == tarih).last().CIKISTARIHI;
                    servisTeknisyen.NetMevcudiyet_Dakika += (int)(lastOut - firstIn).TotalMinutes;
                }

                TEKNISYENHAREKET.DAGILIM_SONUCLARI hamPntjData = Puantaj.GetPuantajSonuclari(teknisyenHareketler, pg, servisGunMolalari, hareketNedenler);
                servisTeknisyen.FiiliCalisma_Dakika = hamPntjData.GetSonucSure(NedenFormati.NormalCalisma);
            }

            return(servisTeknisyenler);
        }
        public static List <Teknisyen_ViewServisIsEmirIslemler> Select_IsEmir_Islemler_View(decimal ownerIsEmirId, decimal servisTeknisyenId)
        {
            MethodReturn mr = new MethodReturn();

            List <Teknisyen_ViewServisIsEmirIslemler> servisIsEmirIslemler = R.Query <Teknisyen_ViewServisIsEmirIslemler>(mr).Where(t => t.SERVISISEMIRID == ownerIsEmirId).ToList();

            List <HareketUstBilgi>  isEmir_UstHareketBilgileri  = HareketUstBilgi.Select_IsEmir_UstHareketBilgileri(ownerIsEmirId, mr);
            List <TeknisyenHareket> isEmir_TeknisyenHareketleri = TeknisyenHareket.Select_IsEmir_TeknisyenHareketleri(ownerIsEmirId, mr);
            List <Teknisyen_ViewServisIsEmirIslemIscilikler> isEmir_Iscilikleri = Teknisyen_ViewServisIsEmirIslemIscilikler.Select_IsEmir_Iscilikleri(ownerIsEmirId);

            decimal servisId = isEmir_UstHareketBilgileri.first().SERVISID;

            List <ServisGunMola> servis_gun_molalar = ServisGunMola.SelectServisGunMolalar(servisId);

            List <HareketNeden> nedenler = HareketNeden.Select_Nedenler();
            PuantajGunlugu      pg       = new PuantajGunlugu();

            pg.InitNedenler(nedenler);

            servisIsEmirIslemler.forEach(islem =>
            {
                List <HareketUstBilgi> islem_UstBilgileri          = isEmir_UstHareketBilgileri.where (t => t.ISEMIRISLEMID == islem.ID).toList();
                List <TeknisyenHareket> islem_TeknisyenHareketleri = null;
                List <TeknisyenHareket> servisTeknisyenHareketleri = null;
                islem.TeknisyenIsDurumu = LocalHelpers.GetTeknisyenDurum(servisTeknisyenId, isEmir_TeknisyenHareketleri, islem_UstBilgileri, out islem_TeknisyenHareketleri, out servisTeknisyenHareketleri);;

                var iscilikler            = isEmir_Iscilikleri.where (t => t.SERVISISEMIRISLEMID == islem.ID).toList();
                islem.ToplamIscilikSayisi = iscilikler.count();

                if (islem_TeknisyenHareketleri.isNotEmpty())
                {
                    islem.CalisilanSure = servisTeknisyenHareketleri.Sum(t => t.CalismaDakika);
                }

                if (islem_UstBilgileri.isNotEmpty())
                {
                    islem.PlanlananSure = islem_UstBilgileri.Sum(t => t.PLANLANANSURE);
                }

                TeknisyenHareketDagilimSonuclari puantajSonuclari = Puantaj.GetPuantajSonuclari(islem_TeknisyenHareketleri, pg, servis_gun_molalar, nedenler);
                islem.CalisilanSure = puantajSonuclari.GetSonucSure(NedenFormati.NormalCalisma);
                islem.TeknisyenSure = puantajSonuclari.GetSonucSure(servisTeknisyenId, NedenFormati.NormalCalisma);
            });

            return(servisIsEmirIslemler);
        }
        public static List <Teknisyen_ViewServisIsEmirler> Select_Servis_IsEmirler_View(decimal servisId, decimal servisTeknisyenId)
        {
            MethodReturn mr = new MethodReturn();

            List <Teknisyen_ViewServisIsEmirler> servis_IsEmirleri = R.Query <Teknisyen_ViewServisIsEmirler>().Where(t => t.SERVISID == servisId && t.TEKNIKOLARAKTAMAMLA == 0).ToList();

            List <decimal> isEmirIds = servis_IsEmirleri.select(t => t.ID).ToList();

            List <HareketUstBilgi>  servis_UstHareketBilgileri  = HareketUstBilgi.Select_IsEmirler_UstHareketBilgileri(isEmirIds);
            List <TeknisyenHareket> servis_TeknisyenHareketleri = TeknisyenHareket.Select_IsEmirler_TeknisyenHareketleri(isEmirIds);
            List <Teknisyen_ViewServisIsEmirIslemler>        servis_IsEmirIslemleri         = Teknisyen_ViewServisIsEmirIslemler.Select_IsEmirler_Islemler(isEmirIds);
            List <Teknisyen_ViewServisIsEmirIslemIscilikler> servis_IsEmirIslem_Iscilikleri = Teknisyen_ViewServisIsEmirIslemIscilikler.Select_IsEmirler_Iscilikleri(isEmirIds);
            List <ServisGunMola> servis_Gun_Molalar = ServisGunMola.SelectServisGunMolalar(servisId);

            List <HareketNeden> nedenler = HareketNeden.Select_Nedenler();
            PuantajGunlugu      pg       = new PuantajGunlugu();

            pg.InitNedenler(nedenler);

            servis_IsEmirleri.forEach(isemir =>
            {
                List <HareketUstBilgi> isEmir_ustBilgileri          = servis_UstHareketBilgileri.Where(t => t.ISEMIRID == isemir.ID).toList();
                List <TeknisyenHareket> isEmir_TeknisyenHareketleri = null;
                List <TeknisyenHareket> servisTeknisyenHareketleri  = null;
                isemir.TeknisyenIsDurumu = LocalHelpers.GetTeknisyenDurum(servisTeknisyenId, servis_TeknisyenHareketleri, isEmir_ustBilgileri, out isEmir_TeknisyenHareketleri, out servisTeknisyenHareketleri);

                if (isEmir_TeknisyenHareketleri.isNotEmpty())
                {
                    isemir.IlkHareketTarihi = isEmir_TeknisyenHareketleri.Min(t => t.GIRISTARIHI);
                    isemir.SonHareketTarihi = isEmir_TeknisyenHareketleri.OrderByDescending(t => t.GIRISTARIHI).first().AktifCikisTarih;
                }

                if (isEmir_ustBilgileri.isNotEmpty())
                {
                    isemir.PlanlananSure = isEmir_ustBilgileri.Sum(t => t.PLANLANANSURE);
                }

                TeknisyenHareketDagilimSonuclari puantajSonuclari = Puantaj.GetPuantajSonuclari(isEmir_TeknisyenHareketleri, pg, servis_Gun_Molalar, nedenler);
                isemir.CalisilanSure = puantajSonuclari.GetSonucSure(NedenFormati.NormalCalisma);// isEmir_TeknisyenHareketleri.Sum(t => t.CalismaDakika);
                isemir.TeknisyenSure = puantajSonuclari.GetSonucSure(servisTeknisyenId, NedenFormati.NormalCalisma);
            });
            return(servis_IsEmirleri.orderByDesc(t => t.TeknisyenDurumResim).toList());
        }
Example #5
0
        public static void CikisiYapilmamisHareketiKapat(decimal servisId, decimal servisTeknisyenId)
        {
            MethodReturn mr = new MethodReturn();

            using (var ap = SasonBaseApplicationPool.CreateMask)
            {
                TEKNISYENHAREKET oncekiHareket = R.Query <TEKNISYENHAREKET>(mr).First(t => t.SERVISID == servisId && t.SERVISTEKNISYENID == servisTeknisyenId && t.GIRISTARIHI < DateTime.Now.startOfDay() && t.DURUM == YeniTeknisyenHareketDurum.Giris);
                if (oncekiHareket.isNotNull())
                {
                    ServisGunMola servisGunMola = ServisGunMola.SelectServisGunMola(servisId, oncekiHareket.GIRISTARIHI.DayOfWeek, mr).createIsNull();
                    if (servisGunMola.BitisSaati == 0)
                    {
                        servisGunMola.BitisSaati = 1080;
                    }

                    //giriş tarihine ait çalışma gününün çıkış saati set edilecek
                    oncekiHareket.CIKISTARIHI           = oncekiHareket.GIRISTARIHI.startOfDay().AddMinutes(servisGunMola.BitisSaati);
                    oncekiHareket.CIKISNEDENID          = 21;
                    oncekiHareket.DURUM                 = YeniTeknisyenHareketDurum.Cikis;
                    oncekiHareket.EXTCSERVISTEKNISYENID = -1;//System User
                    oncekiHareket.Update();
                }
            }
        }
Example #6
0
        public override object ExecuteReport(MethodReturn refMr = null)
        {
            List <ReportData> reportDataSource = new List <ReportData>();

            HareketNedenContainer    nedenContainer           = new HareketNedenContainer(R.Query <HareketNeden>(refMr).ToList());
            List <HareketNeden>      nedenler                 = nedenContainer.ToList();
            ServisTeknisyenContainer servisTeknisyenContainer = null;

            if (ServisTeknisyenIds.isEmpty())
            {
                servisTeknisyenContainer = new ServisTeknisyenContainer(R.Query <ServisTeknisyen>(refMr).Where(t => t.SERVISID == ServisId).ToList());
            }
            else
            {
                servisTeknisyenContainer = new ServisTeknisyenContainer(R.Query <ServisTeknisyen>(refMr).Where(t => t.ID.In(ServisTeknisyenIds)).ToList());
            }

            TeknisyenHareketContainer <RptTeknisyenHareket> teknisyenHareketContainer = new TeknisyenHareketContainer <RptTeknisyenHareket>(R.Query <RptTeknisyenHareket>(refMr).Where(h => h.SERVISTEKNISYENID.In(servisTeknisyenContainer.select(t => t.ID))).ToList());

            IEnumerable <decimal>  ustBilgiIds        = teknisyenHareketContainer.select(t => t.THRKUSTBILGIID);
            List <HareketUstBilgi> hareketUstBilgiler = null;

            if (ustBilgiIds.isNotEmpty())
            {
                hareketUstBilgiler = R.Query <HareketUstBilgi>(refMr).Where(t => t.ID.In(ustBilgiIds)).ToList();
            }

            List <ServisGunMola> gunMolalar = ServisGunMola.SelectServisGunMolalar(ServisId, refMr);

            List <RptIsEmir> isEmirler = R.Query <RptIsEmir>(refMr).Where(t => t.SERVISID == ServisId && t.KAYITTARIH.Between(StartDate, FinishDate)).ToList();

            PuantajGunlugu pg = new PuantajGunlugu();

            servisTeknisyenContainer.forEach(st =>
            {
                teknisyenHareketContainer.GetTeknisyenHareketler(st.ID).forEach(hr =>
                {
                    HareketUstBilgi ustBilgi = hareketUstBilgiler.first(t => t.ID == hr.THRKUSTBILGIID);

                    ReportData reportData = new ReportData()
                    {
                        Teknisyen = st,
                        Hareket   = hr,
                        IsEmir    = isEmirler.first(t => t.ID == ustBilgi?.ISEMIRID),
                    };

                    reportData.IsEmirIslem        = reportData.IsEmir?.Islemler.first(t => t.ID == ustBilgi?.ISEMIRISLEMID);
                    reportData.IsEmirIslemIscilik = reportData.IsEmirIslem?.Iscilikler.first(t => t.ID == ustBilgi?.ISEMIRISLEMISCILIKID);

                    hr.GirisNeden = nedenContainer[hr.GIRISNEDENID];
                    hr.CikisNeden = nedenContainer[hr.CIKISNEDENID];

                    hr.PSonuc  = Puantaj.GetPuantajSonuclari(hr.MakeList(), pg, gunMolalar, nedenler);
                    hr.Calisma = hr.PSonuc.GetSonucSure(NedenFormati.NormalCalisma);

                    reportDataSource.add(reportData);
                });
            });

            CloseCustomAppPool();
            return(reportDataSource);
        }
Example #7
0
        public override object ExecuteReport(MethodReturn refMr = null)
        {
            List <RptServisIsEmirlerInfo01> isEmirler           = null;
            List <RptServisTeknisyenInfo>   servisTeknisyenler  = null;
            List <HareketUstBilgi>          hareketUstBilgiler  = null;
            List <HareketNeden>             hareketNedenler     = null;
            List <TeknisyenHareket>         teknisyenHareketler = null;
            List <ServisGunMola>            servisGunMolalari   = null;

            PuantajGunlugu pg = new PuantajGunlugu();

            List <decimal> isEmirIdler = null;

            //ToplamGunHesapla();

            //isEmirler = R.Query<RptServisIsEmirlerInfo01>(refMr).Where(t => t.SERVISID == pServisId && t.KAYITTARIH.Between(pStart, pFinish) && t.TEKNIKOLARAKTAMAMLA == 1).ToList();
            isEmirler = R.Query <RptServisIsEmirlerInfo01>(refMr).Where(t => t.SERVISID == ServisId && t.KAYITTARIH.Between(StartDate, FinishDate)).ToList();
            if (refMr.ok())
            {
                isEmirIdler        = isEmirler.select(t => t.ID).toList();
                servisTeknisyenler = R.Query <RptServisTeknisyenInfo>(refMr).Where(t => t.SERVISID == ServisId).ToList();
            }
            if (refMr.ok())
            {
                hareketUstBilgiler = HareketUstBilgi.Select_IsEmirler_UstHareketBilgileri(isEmirIdler, refMr);
            }
            if (refMr.ok())
            {
                hareketNedenler = HareketNeden.Select_Nedenler();
            }
            if (refMr.ok())
            {
                servisGunMolalari = ServisGunMola.SelectServisGunMolalar(ServisId, refMr);
            }
            //if (refMr.ok())
            //    pg.InitNedenler(hareketNedenler);
            if (refMr.ok())
            {
                teknisyenHareketler = TeknisyenHareket.Select_IsEmirler_TeknisyenHareketleri(isEmirIdler, refMr);
            }

            decimal faturalananCarpan = 0.90m;
            decimal oran = 5;

            foreach (RptServisTeknisyenInfo teknisyenInfo in servisTeknisyenler)
            {
                oran += 0.6m;
                //faturalananCarpan += 0.01m;

                List <TeknisyenHareket> hareketler    = teknisyenHareketler.where (t => t.SERVISTEKNISYENID == teknisyenInfo.ID).ToList().orderBy(t => t.GIRISTARIHI).toList();
                List <decimal>          ustBilgiIdler = hareketler.select(t => t.THRKUSTBILGIID).toList();

                int toplamGun = hareketler.select(t => t.GIRISTARIHI.Date).Distinct().Count();

                List <HareketUstBilgi> ustBilgiler  = hareketUstBilgiler.where (t => ustBilgiIdler.contains(t.ID)).toList();
                List <decimal>         iscilikIdler = ustBilgiler.select(t => t.ISEMIRISLEMISCILIKID).toList();

                TeknisyenHareketDagilimSonuclari hamPntjData = Puantaj.GetPuantajSonuclari(hareketler, pg, servisGunMolalari, hareketNedenler);
                //teknisyenInfo.FiiliCalisma = hamPntjData.GetSonucSure(NedenFormati.NormalCalisma);
                teknisyenInfo.NetMevcudiyet = (gunlukNetCalismaSuresi * toplamGun) * 60;
                teknisyenInfo.FiiliCalisma  = teknisyenInfo.NetMevcudiyet.RemovePercent(oran).RoundToDecimals(0);

                teknisyenInfo.FaturalananDakika = (teknisyenInfo.FiiliCalisma * faturalananCarpan).RoundToDecimals(0);
                //List<Teknisyen_ViewServisIsEmirIslemIscilikler> iscilikler = Teknisyen_ViewServisIsEmirIslemIscilikler.SelectOverloadFromIDs(iscilikIdler);
                //if (iscilikler.isNotEmpty())
                //    teknisyenInfo.FaturalananDakika = iscilikler.Sum(t => t.Iscilik_Dakika_Suresi);
            }

            Toplam sonuc = new Toplam()
            {
                ToplamFaturalananDakika = servisTeknisyenler.Sum(t => t.FaturalananDakika),
                ToplamNetMevcudiyet     = servisTeknisyenler.Sum(t => t.NetMevcudiyet),
                ToplamFiiliCalisma      = servisTeknisyenler.Sum(t => t.FiiliCalisma),
            };

            servisTeknisyenler.forEach(servisTeknisyen =>
            {
                servisTeknisyen.Sonuc = sonuc;
            });

            CloseCustomAppPool();
            return(servisTeknisyenler);
        }
Example #8
0
        public override object ExecuteReport(MethodReturn refMr = null)
        {
            List <ReportData> reportDataSource = new List <ReportData>();

            PuantajGunlugu           pg                       = new PuantajGunlugu();
            List <ServisGunMola>     gunMolalar               = ServisGunMola.SelectServisGunMolalar(ServisId, refMr);
            HareketNedenContainer    nedenContainer           = new HareketNedenContainer(R.Query <HareketNeden>(refMr).ToList());
            List <HareketNeden>      nedenler                 = nedenContainer.ToList();
            ServisTeknisyenContainer servisTeknisyenContainer = null;

            if (ServisTeknisyenIds.isEmpty())
            {
                servisTeknisyenContainer = new ServisTeknisyenContainer(R.Query <ServisTeknisyen>(refMr).Where(t => t.SERVISID == ServisId).ToList());
            }
            else
            {
                servisTeknisyenContainer = new ServisTeknisyenContainer(R.Query <ServisTeknisyen>(refMr).Where(t => t.ID.In(ServisTeknisyenIds)).ToList());
            }

            List <RptIsEmir>       isEmirler          = R.Query <RptIsEmir>(refMr).Where(t => t.SERVISID == ServisId && t.KAYITTARIH.Between(StartDate, FinishDate)).ToList();
            List <HareketUstBilgi> hareketUstBilgiler = HareketUstBilgi.Select_UstBilgiler_FromBig_IsEmirIds(isEmirler.select(i => i.ID));
            TeknisyenHareketContainer <RptTeknisyenHareket> teknisyenHareketContainer = new TeknisyenHareketContainer <RptTeknisyenHareket>(RptTeknisyenHareket.Select_From_UstBilgi_Ids <RptTeknisyenHareket>(hareketUstBilgiler.select(u => u.ID)).ToList());

            isEmirler.forEach(isEmir =>
            {
                isEmir.Islemler.forEach(islem =>
                {
                    islem.Iscilikler.forEach(iscilik =>
                    {
                        HareketUstBilgi ustBilgi = hareketUstBilgiler.first(t => t.ISEMIRISLEMISCILIKID == iscilik.ID);
                        if (ustBilgi.isNotNull())
                        {
                            teknisyenHareketContainer.GetUstBilgiHareketler(ustBilgi.ID).forEach(hr =>
                            {
                                ServisTeknisyen servisTeknisyen = servisTeknisyenContainer[hr.SERVISTEKNISYENID];
                                if (servisTeknisyen.isNotNull())
                                {
                                    ReportData reportData = new ReportData()
                                    {
                                        Teknisyen          = servisTeknisyen,
                                        Hareket            = hr,
                                        IsEmir             = isEmir,
                                        IsEmirIslem        = islem,
                                        IsEmirIslemIscilik = iscilik
                                    };

                                    hr.GirisNeden = nedenContainer[hr.GIRISNEDENID];
                                    hr.CikisNeden = nedenContainer[hr.CIKISNEDENID];

                                    hr.PSonuc  = Puantaj.GetPuantajSonuclari(hr.MakeList(), pg, gunMolalar, nedenler);
                                    hr.Calisma = hr.PSonuc.GetSonucSure(NedenFormati.NormalCalisma);

                                    reportDataSource.add(reportData);
                                }
                            });
                        }
                    });
                });
            });

            CloseCustomAppPool();
            return(reportDataSource);
        }
        public override object ExecuteReport(MethodReturn refMr = null)
        {
            List <ReportData> reportDataSource = new List <ReportData>();

            HareketNedenContainer    nedenContainer           = new HareketNedenContainer(R.Query <HareketNeden>(refMr).ToList());
            List <HareketNeden>      nedenler                 = nedenContainer.ToList();
            ServisTeknisyenContainer servisTeknisyenContainer = new ServisTeknisyenContainer(R.Query <ServisTeknisyen>(refMr).Where(t => t.SERVISID == ServisId).ToList());
            List <ServisGunMola>     gunMolalar               = ServisGunMola.SelectServisGunMolalar(ServisId, refMr);
            List <RptIsEmir>         isEmirler                = null;

            List <HareketUstBilgi> hareketUstBilgiler = null;

            TeknisyenHareketContainer <RptTeknisyenHareket> teknisyenHareketContainer = null;

            List <TModel01> sonHareketler = AppPool.EbaTestConnector.CreateQuery(@"
                    select
                        stek.id servisteknisyenid,thrk.sonhareketid, UB.ID USTBILGIID, UB.ISEMIRID, UB.ISEMIRISLEMID, UB.ISEMIRISLEMISCILIKID
                    from (select id, teknisyenid from servisteknisyenler where servisid = {servisId}) stek
                    left join (
                        select
                            servisteknisyenid,
                            max(id) sonHareketId
                        from
                            tteknisyenhrk
                        group by servisteknisyenid
                    ) thrk on THRK.SERVISTEKNISYENID = stek.id
                    left join tteknisyenhrk hrk2 on hrk2.id = thrk.sonhareketid
                    left join thrkustbilgi ub on ub.id = HRK2.THRKUSTBILGIID
                ")
                                            .Parameter("servisId", ServisId)
                                            .GetDataTable(refMr).ToModels <TModel01>();

            //.Select(t => new {
            //        TEKNISYENID = t.ColumnValue<decimal>("SERVISTEKNISYENID"),
            //        SONHAREKETID = t.ColumnValue<decimal>("SONHAREKETID"),
            //        USTBILGIID = t.ColumnValue<decimal>("USTBILGIID"),
            //        ISEMIRID = t.ColumnValue<decimal>("ISEMIRID"),
            //        ISEMIRISLEMID = t.ColumnValue<decimal>("ISEMIRISLEMID"),
            //        ISEMIRISLEMISCILIKID = t.ColumnValue<decimal>("ISEMIRISLEMISCILIKID")
            //});

            if (sonHareketler.isNotEmpty())
            {
                teknisyenHareketContainer = new TeknisyenHareketContainer <RptTeknisyenHareket>(R.Query <RptTeknisyenHareket>(refMr).Where(h => h.ID.In(sonHareketler.select(sh => sh.SONHAREKETID))).ToList());
                isEmirler          = R.Query <RptIsEmir>(refMr).Where(t => t.ID.In(sonHareketler.select(sh => sh.ISEMIRID))).ToList();
                hareketUstBilgiler = R.Query <HareketUstBilgi>(refMr).Where(t => t.ID.In(sonHareketler.select(sh => sh.USTBILGIID))).ToList();
            }

            PuantajGunlugu pg = new PuantajGunlugu();

            servisTeknisyenContainer.forEach(st =>
            {
                teknisyenHareketContainer.GetTeknisyenHareketler(st.ID).forEach(hr =>
                {
                    HareketUstBilgi ustBilgi = hareketUstBilgiler.first(t => t.ID == hr.THRKUSTBILGIID);

                    ReportData reportData = new ReportData()
                    {
                        Teknisyen = st,
                        Hareket   = hr,
                        IsEmir    = isEmirler.first(t => t.ID == ustBilgi?.ISEMIRID),
                    };

                    reportData.IsEmirIslem        = reportData.IsEmir?.Islemler.first(t => t.ID == ustBilgi?.ISEMIRISLEMID);
                    reportData.IsEmirIslemIscilik = reportData.IsEmirIslem?.Iscilikler.first(t => t.ID == ustBilgi?.ISEMIRISLEMISCILIKID);

                    hr.GirisNeden = nedenContainer[hr.GIRISNEDENID];
                    hr.CikisNeden = nedenContainer[hr.CIKISNEDENID];

                    hr.PSonuc  = Puantaj.GetPuantajSonuclari(hr.MakeList(), pg, gunMolalar, nedenler);
                    hr.Calisma = hr.PSonuc.GetSonucSure(NedenFormati.NormalCalisma);

                    reportDataSource.add(reportData);
                });
            });

            CloseCustomAppPool();
            return(reportDataSource);
        }