Пример #1
0
        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));
            }
        }
Пример #2
0
        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));
            }
        }