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); }
public void UpdateAdClicksStats(AdClicksStats adClicksStats) { if (adClicksStats == default) { throw new NullReferenceException($"Parameter {nameof(adClicksStats)} passed into {nameof(UpdateAdClicksStats)} is null."); } adsDBContext.AdClicksStats.Update(adClicksStats); }
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); }
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()); }