public async Task <IHttpActionResult> ClickAd(string Id) { var db = IlevusDBContext.Create(); var filters = Builders <Ad> .Filter; var updates = Builders <Ad> .Update; var collection = db.GetAdsCollection(); var collectionReport = db.GetAdsReport(); var cBalance = db.GetAdsBalanceCollection(); var filtersBalance = Builders <AdBalance> .Filter; var updatesBalance = Builders <AdBalance> .Update; try { var rBalance = cBalance.Find(filtersBalance.Empty); var balance = rBalance.FirstOrDefault(); var _idBalance = balance.Id; var result = await collection.FindAsync(filters.Eq("Id", Id)); var ad = await result.FirstOrDefaultAsync(); if (ad == null) { return(NotFound()); } collection.UpdateOneAsync( filters.Eq("Id", Id), updates.Inc("Hits", 1) ); JToken token = JObject.Parse(IlevusDBContext.SystemDefinitions.definitions); CultureInfo culture = Thread.CurrentThread.CurrentCulture; var implemented = CultureHelper.GetImplementedCulture(culture.Name).Replace("-", "_"); cBalance.UpdateOne( filtersBalance.Eq("Id", _idBalance), updatesBalance.Set("Balance", balance.Balance - Convert.ToDouble(token.SelectToken("CostPerClick_" + implemented))) ); AdsReport adReport = new AdsReport() { ad_event = "click", ad_id = Id, cost = Convert.ToDouble(token.SelectToken("CostPerClick_" + implemented)), date = DateTime.Now }; collectionReport.InsertOne(adReport); return(Redirect(ad.Link)); } catch (Exception e) { return(InternalServerError(e)); } }
public async Task <IHttpActionResult> ViewAdImage(string Id, string Position = "desktop") { var db = IlevusDBContext.Create(); var filters = Builders <Ad> .Filter; var updates = Builders <Ad> .Update; var collection = db.GetAdsCollection(); var collectionReport = db.GetAdsReport(); var cBalance = db.GetAdsBalanceCollection(); var filtersBalance = Builders <AdBalance> .Filter; var updatesBalance = Builders <AdBalance> .Update; try { var rBalance = cBalance.Find(filtersBalance.Empty); var balance = rBalance.FirstOrDefault(); var _idBalance = balance.Id; var result = await collection.FindAsync(filters.Eq("Id", Id)); var ad = await result.FirstOrDefaultAsync(); if (ad == null) { return(NotFound()); } collection.UpdateOneAsync( filters.Eq("Id", Id), updates.Inc("Views", 1) ); JToken token = JObject.Parse(IlevusDBContext.SystemDefinitions.definitions); CultureInfo culture = Thread.CurrentThread.CurrentCulture; var implemented = CultureHelper.GetImplementedCulture(culture.Name).Replace("-", "_"); cBalance.UpdateOne( filtersBalance.Eq("Id", _idBalance), updatesBalance.Set("Balance", balance.Balance - Convert.ToDouble(token.SelectToken("CostPerView_" + implemented))) ); string url = token.SelectToken("UrlRetriviedAds").ToString(); url = (!url.EndsWith(@"/") ? url + "/" : url); AdsReport adReport = new AdsReport() { ad_event = "view", ad_id = Id, cost = Convert.ToDouble(token.SelectToken("CostPerView_" + implemented)), date = DateTime.Now }; collectionReport.InsertOne(adReport); if (Position == "desktop") { return(Redirect(url + ad.ImageDesktop)); } else if (Position == "mobile") { return(Redirect(url + ad.ImageMobile)); } else { return(Redirect(url + ad.ImageDesktop)); } } catch (Exception e) { return(InternalServerError(e)); } }