public async Task <OyunApiModel> GetOyunAsync(int id) { OyunApiModel oyunApiModel = null; var oyunResult = await _httpClient.GetAsync(_oyunApiUrl + "(" + id + ")?$expand=yapimci"); if (oyunResult.IsSuccessStatusCode) { string oyunJson = await oyunResult.Content.ReadAsStringAsync(); oyunApiModel = JsonSerializer.Deserialize <OyunApiModel>(oyunJson, _jsonSerializerOptions); if (oyunApiModel != null) { oyunApiModel.Oyunlar = oyunApiModel.Oyunlar.Select(o => new OyunModel() { Id = o.Id, Adi = o.Adi, Puani = o.Puani, PuaniText = o.Puani.ToString(new CultureInfo("tr")), Tarihi = o.Tarihi, TarihiText = o.Tarihi.ToString("dd.MM.yyyy", new CultureInfo("tr")), YapimciId = o.YapimciId, YapimciIdText = o.YapimciId.ToString(), Yapimci = o.Yapimci }).ToList(); // OData servisinden bize Where ile filtrelenmiş bir IQueryable döndüğü için önce List'e dönüştürüp sonra listedeki ilk kaydı Oyun'a set ediyoruz. oyunApiModel.Oyun = oyunApiModel.Oyunlar.FirstOrDefault(); } } return(oyunApiModel); }
public async Task <OyunApiModel> GetOyunlarAsync() { OyunApiModel oyunApiModel = null; var oyunResult = await _httpClient.GetAsync(_oyunApiUrl + "?$orderby=adi asc"); if (oyunResult.IsSuccessStatusCode) { string oyunJson = await oyunResult.Content.ReadAsStringAsync(); oyunApiModel = JsonSerializer.Deserialize <OyunApiModel>(oyunJson, _jsonSerializerOptions); if (oyunApiModel != null) { oyunApiModel.Oyunlar = oyunApiModel.Oyunlar.Select(o => new OyunModel() { Id = o.Id, Adi = o.Adi, Puani = o.Puani, PuaniText = o.Puani.ToString(new CultureInfo("tr")), Tarihi = o.Tarihi, TarihiText = o.Tarihi.ToString("dd.MM.yyyy", new CultureInfo("tr")), YapimciId = o.YapimciId, YapimciIdText = o.YapimciId.ToString(), Yapimci = o.Yapimci }).ToList(); } } return(oyunApiModel); }
public async Task <OyunApiModel> GetOyunlarAsync(OyunFilterModel filtre, PageModel sayfa, OrderModel sira) { OyunApiModel oyunApiModel = null; string orderByQueryString = "$orderby="; if (!string.IsNullOrWhiteSpace(sira.Expression)) { switch (sira.Expression) { case "Oyun Adı": orderByQueryString += sira.DirectionAscending ? "adi asc" : "adi desc"; break; case "Oyun Tarihi": orderByQueryString += sira.DirectionAscending ? "tarihi asc" : "tarihi desc"; break; case "Oyun Puanı": orderByQueryString += sira.DirectionAscending ? "puani asc" : "puani desc"; break; default: orderByQueryString += sira.DirectionAscending ? "yapimci/adi asc" : "yapimci/adi desc"; break; } } // sorgu sonucunda tüm sonuçları getirebilmek ve and ile aşağıdaki filtreleri ekleyebilmek için 1 = 1 yazıyoruz string filtreQueryString = "$filter=1 eq 1"; if (!string.IsNullOrWhiteSpace(filtre.Adi)) { filtreQueryString = filtreQueryString + " and contains(tolower(adi), trim(tolower('" + filtre.Adi + "')))"; } if (!string.IsNullOrWhiteSpace(filtre.YapimciIdText)) { filtreQueryString = filtreQueryString + " and yapimciid eq " + filtre.YapimciIdText; } if (!string.IsNullOrWhiteSpace(filtre.BaslangicPuaniText)) { filtreQueryString = filtreQueryString + " and puani ge " + filtre.BaslangicPuaniText; } if (!string.IsNullOrWhiteSpace(filtre.BitisPuaniText)) { filtreQueryString = filtreQueryString + " and puani le " + filtre.BitisPuaniText; } if (!string.IsNullOrWhiteSpace(filtre.BaslangicTarihiText)) { DateTime baslangicTarihi = DateTime.ParseExact(filtre.BaslangicTarihiText + " 00:00:00", "dd.MM.yyyy HH:mm:ss", CultureInfo.InvariantCulture); string baslangicTarihiText = baslangicTarihi.ToString("yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture); filtreQueryString = filtreQueryString + " and tarihi ge " + baslangicTarihiText; } if (!string.IsNullOrWhiteSpace(filtre.BitisTarihiText)) { DateTime bitisTarihi = DateTime.ParseExact(filtre.BitisTarihiText + " 23:59:59", "dd.MM.yyyy HH:mm:ss", CultureInfo.InvariantCulture); string bitisTarihiText = bitisTarihi.ToString("yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture); filtreQueryString = filtreQueryString + " and tarihi le " + bitisTarihiText; } var oyunCountResult = await _httpClient.GetAsync(_oyunApiUrl + "/$count?" + filtreQueryString); if (oyunCountResult.IsSuccessStatusCode) { int oyunCount = Convert.ToInt32(await oyunCountResult.Content.ReadAsStringAsync()); sayfa = new PageModel(oyunCount, sayfa.RecordsPerPageCount, sayfa.PageNumber); string skipTakeQueryString = "$skip=" + sayfa.Skip + "&$top=" + sayfa.Take; var oyunResult = await _httpClient.GetAsync(_oyunApiUrl + "?$count=true&$expand=yapimci" + "&" + orderByQueryString + "&" + filtreQueryString + "&" + skipTakeQueryString); if (oyunResult.IsSuccessStatusCode) { string oyunJson = await oyunResult.Content.ReadAsStringAsync(); oyunApiModel = JsonSerializer.Deserialize <OyunApiModel>(oyunJson, _jsonSerializerOptions); if (oyunApiModel != null) { oyunApiModel.Oyunlar = oyunApiModel.Oyunlar.Select(o => new OyunModel() { Id = o.Id, Adi = o.Adi, Puani = o.Puani, PuaniText = o.Puani.ToString(new CultureInfo("tr")), Tarihi = o.Tarihi, TarihiText = o.Tarihi.ToString("dd.MM.yyyy", new CultureInfo("tr")), YapimciId = o.YapimciId, YapimciIdText = o.YapimciId.ToString(), Yapimci = o.Yapimci }).ToList(); oyunApiModel.Filtre = filtre; oyunApiModel.Sayfa = sayfa; oyunApiModel.Sira = sira; } } } return(oyunApiModel); }