public HttpResponseMessage ReportUsage(Usage data) { if (data == null) { throw new HttpResponseException(new HttpResponseMessage { StatusCode = HttpStatusCode.BadRequest, Content = new StringContent("No usage data provided") }); } try { data.IPAddress = RequestHelpers.GetClientIpAddress(Request); _context.AddUsage(data); } catch (Exception e) { throw new HttpResponseException(new HttpResponseMessage { StatusCode = HttpStatusCode.InternalServerError, Content = new StringContent(e.Message) }); } return new HttpResponseMessage(HttpStatusCode.OK); }
public void AddUsage(Usage data) { if (Usages.Any(x => x.Alias == data.Alias)) { var record = Usages.Where(x => x.Alias == data.Alias).OrderByDescending(x => x.TickTime).First(); var lastTickTime = record == null ? DateTime.MinValue : record.TickTime; var currentTickTime = DateTime.Now; var diff = currentTickTime.Subtract(lastTickTime); if (!(diff.TotalMinutes >= 60)) return; Usages.Add(data); } else { Usages.Add(data); } SaveChanges(); }