Esempio n. 1
0
 public async Task InsertAdClicksStatsAsync(AdClicksStats adClicksStats)
 {
     if (adClicksStats == default)
     {
         throw new NullReferenceException($"Parameter {nameof(adClicksStats)} passed into {nameof(InsertAdClicksStatsAsync)} is null.");
     }
     await adsDBContext.AddAsync(adClicksStats);
 }
Esempio n. 2
0
        public void UpdateAdClicksStats(AdClicksStats adClicksStats)
        {
            if (adClicksStats == default)
            {
                throw new NullReferenceException($"Parameter {nameof(adClicksStats)} passed into {nameof(UpdateAdClicksStats)} is null.");
            }

            adsDBContext.AdClicksStats.Update(adClicksStats);
        }
Esempio n. 3
0
        public async Task <AdClicksStats> GetAdClicksStatsAsync(int adId, DateTime date)
        {
            AdClicksStats adClicksStats = await adsDBContext.AdClicksStats.FirstOrDefaultAsync(t => t.AdId == adId && t.Date.Date == date.Date);

            if (adClicksStats == default)
            {
                throw new NullReferenceException($"{nameof(AdClicksStats)} with {nameof(adId)} = {adId} and {nameof(date)} = {date.Date} not exist.");
            }

            return(adClicksStats);
        }
Esempio n. 4
0
        public async Task <IActionResult> AdClickReport(string projectid, string adid)
        {
            if (!ExternalIdPassedGuidValidation(projectid))
            {
                return(StatusCode(StatusCodes.Status400BadRequest, $"Invalid {nameof(projectid)}."));
            }

            if (!ExternalIdPassedGuidValidation(adid))
            {
                return(StatusCode(StatusCodes.Status400BadRequest, $"Invalid {nameof(adid)}."));
            }

            try
            {
                if (!await ProjectExists(projectid))
                {
                    return(StatusCode(StatusCodes.Status400BadRequest, "Unknown project."));
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status400BadRequest, ex));
            }

            try
            {
                if (!await adsRepository.AdExistsAsync(adid))
                {
                    return(StatusCode(StatusCodes.Status400BadRequest, "Unknown ad."));
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status400BadRequest, ex));
            }

            Ad ad;

            try
            {
                ad = await adsRepository.GetAdAsync(adid);
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message));
            }

            DateTime date = DateTime.UtcNow.Date;

            try
            {
                bool adClicksStatsExists = await adsRepository.AdClicksStatsExistsAsync(ad.Id, date);

                if (!adClicksStatsExists)
                {
                    AdClicksStats adClicksStats = new AdClicksStats()
                    {
                        AdId   = ad.Id,
                        Date   = date,
                        Number = 1
                    };
                    await adsRepository.InsertAdClicksStatsAsync(adClicksStats);
                }
                else
                {
                    AdClicksStats adClicksStats = await adsRepository.GetAdClicksStatsAsync(ad.Id, date);

                    adClicksStats.Number++;
                }
                await adsRepository.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message));
            }

            return(Ok());
        }