public List <YapimciOyunYorumModel> GetYapimciOyunYorumlar(YapimciOyunYorumFilterModel filter = null)
        {
            var yapimciQuery = _db.Set <Yapimci>().AsQueryable();
            var oyunQuery    = _db.Set <Oyun>().AsQueryable();
            var yorumQuery   = _db.Set <Yorum>().AsQueryable();
            var query        = from yapimci in yapimciQuery
                               join oyun in oyunQuery
                               on yapimci.Id equals oyun.YapimciId
                               join yorum in yorumQuery
                               on oyun.Id equals yorum.OyunId
                               orderby yapimci.Adi, oyun.Adi, yorum.YorumcuAdi
                select new YapimciOyunYorumModel()
            {
                Id              = yapimci.Id,
                YapimciAdi      = yapimci.Adi,
                OyunAdi         = oyun.Adi,
                OyunPuani       = oyun.Puani,
                OyunTarihi      = oyun.Tarihi,
                YorumcuAdi      = yorum.YorumcuAdi,
                YorumAciklamasi = yorum.Aciklamasi,
                YorumTarihi     = yorum.Tarihi
            };

            if (filter != null)
            {
                if (filter.YapimciId.HasValue)
                {
                    query = query.Where(q => q.Id == filter.YapimciId);
                }
                if (!string.IsNullOrWhiteSpace(filter.OyunAdi))
                {
                    query = query.Where(q => q.OyunAdi.ToLower().Contains(filter.OyunAdi.ToLower().Trim()));
                }
                if (filter.OyunBaslangicTarihi.HasValue)
                {
                    query = query.Where(q => q.OyunTarihi >= filter.OyunBaslangicTarihi.Value);
                }
                if (filter.OyunBitisTarihi.HasValue)
                {
                    query = query.Where(q => q.OyunTarihi <= filter.OyunBitisTarihi.Value);
                }
                if (filter.OyunBaslangicPuani.HasValue)
                {
                    query = query.Where(q => q.OyunPuani >= filter.OyunBaslangicPuani.Value);
                }
                if (filter.OyunBitisPuani.HasValue)
                {
                    query = query.Where(q => q.OyunPuani <= filter.OyunBitisPuani.Value);
                }
                if (!string.IsNullOrWhiteSpace(filter.YorumcuAdi))
                {
                    query = query.Where(q => q.YorumcuAdi.ToLower().Contains(filter.YorumcuAdi.ToLower().Trim()));
                }
            }
            return(query.ToList());
        }
        public IActionResult YorumcuAdinaGoreGetir(string yorumcuAdi)
        {
            var filter = new YapimciOyunYorumFilterModel()
            {
                YorumcuAdi = yorumcuAdi
            };
            var list = _yapimciOyunYorumService.GetYapimciOyunYorumlar(filter);

            return(Ok(list));
        }
        public IActionResult OyunTarihineGoreGetir(DateTime?oyunBaslangicTarihi, DateTime?oyunBitisTarihi)
        {
            var filter = new YapimciOyunYorumFilterModel()
            {
                OyunBaslangicTarihi = oyunBaslangicTarihi,
                OyunBitisTarihi     = oyunBitisTarihi
            };
            var list = _yapimciOyunYorumService.GetYapimciOyunYorumlar(filter);

            return(Ok(list));
        }
        public IActionResult YapimciAdiOyunPuaninaGoreGetir(string yapimciAdi, double?oyunBaslangicPuani, double?oyunBitisPuani)
        {
            var filter = new YapimciOyunYorumFilterModel()
            {
                YapimciAdi         = yapimciAdi,
                OyunBaslangicPuani = oyunBaslangicPuani,
                OyunBitisPuani     = oyunBitisPuani
            };
            var list = _yapimciOyunYorumService.GetYapimciOyunYorumlar(filter);

            return(Ok(list));
        }
        public IActionResult YapimciOyunAdiPuaniniGetir([FromODataUri] int key)
        {
            var filter = new YapimciOyunYorumFilterModel()
            {
                YapimciId = key
            };
            var result = _yapimciOyunYorumService.GetYapimciOyunYorumlar(filter).FirstOrDefault();

            if (result == null)
            {
                return(NotFound());
            }
            return(Ok($"Yapımcı: {result.YapimciAdi}, Oyun: {result.OyunAdi}, Puan: {result.OyunPuani}"));
        }
        public IActionResult TumYapimciOyunYorumlariniGetir(YapimciOyunYorumFilterModel filter)
        {
            var list = _yapimciOyunYorumService.GetYapimciOyunYorumlar(filter);

            return(Ok(list));
        }