public void Post([FromBody]string value) { // Parts received separated by , // PageUrl -- The Url of the page being reported [0] // SrcUrl -- The SrcUrl of any Image being reported [1] // LinkUrl -- The Url of any link that is being reported [2] // SelectionText -- Any Text that is being reported [3..n] try { if (value != null) { // Get the Reported values and Hashes of them string pu = GetPageUrl(value); string pageUrlHash = GetSHA512(pu); string pageUrl = Security.Encrypt(pu, pageUrlHash); string srcUrl = Security.Encrypt(GetSrcUrl(value), pageUrlHash); //string pageUrl = pu; //string srcUrl = GetSrcUrl(value); string srcUrlHash = null; if (!string.IsNullOrEmpty(srcUrl)) srcUrlHash = GetSHA512(srcUrl); string lulu = GetLinkUrl(value); string linkUrlHash = null; if (!string.IsNullOrEmpty(lulu)) linkUrlHash = GetSHA512(lulu); string linkUrl = Security.Encrypt(lulu, linkUrlHash); //string linkUrl = lulu; string stst = GetSelectionText(value); string selectionTextHash = null; if (!string.IsNullOrEmpty(stst)) selectionTextHash = GetSHA512(stst); string selectionText = Security.Encrypt(stst, selectionTextHash); //string selectionText = stst; ReportItEntities rie = new ReportItEntities(); rie.Database.Connection.Open(); // Connect to the Database // Generate our tables EUReported eur = new EUReported(); SrcUrl su = new SrcUrl(); ReportedSrcUrl rsu = new ReportedSrcUrl(); LinkUrl lu = new LinkUrl(); ReportedLinkUrl rlu = new ReportedLinkUrl(); SelectionText st = new SelectionText(); ReportedSelectedText rst = new ReportedSelectedText(); if (!string.IsNullOrEmpty(pageUrl)) { GenerateReportedSrcsTables(pageUrl, pageUrlHash, srcUrl, srcUrlHash, rie, su, rsu); GenerateReportedLinksTables(pageUrl, pageUrlHash, linkUrl, linkUrlHash, rie, lu, rlu); GenerateReportedSelectedTextTables(pageUrl, pageUrlHash, selectionText, selectionTextHash, rie, st, rst); } else { //Just drop out the bottom -no PageUrl == nothing to process } rie.Database.Connection.Close(); } // return "Nothing received"; } catch (Exception) { // return ex.InnerException.ToString(); } }
private void GenerateReportedSrcsTables(string pageUrl, string pageUrlHash, string srcUrl, string srcUrlHash, ReportItEntities rie, SrcUrl su, ReportedSrcUrl rsu) { if (!string.IsNullOrEmpty(srcUrl)) { // Does the pageUrl exist? // Does the srcUrl exist? // Do they both exist in the ReportedSrcUrls table? They should be it is nice to have a sanity check EUReported puRecord = GetPageUrlRecord(rie, pageUrlHash); if (puRecord == null) { // The page record has never been created // Create Page Record puRecord = new EUReported(); puRecord.Count = 1; puRecord.PageUrl = pageUrl; puRecord.PageUrlHash = pageUrlHash; puRecord.Processed = false; puRecord.CreatedOn = DateTime.UtcNow; puRecord.UpdatedOn = DateTime.UtcNow; rie.EUReporteds.Add(puRecord); } else { // The page record has been created - update count puRecord.Count = puRecord.Count + 1; puRecord.UpdatedOn = DateTime.UtcNow; } // Ok now check to see if the SrcUrl exists su = GetSourceUrlRecord(rie, srcUrlHash); if (su == null) { // The SrcUrl record has never been created // Create SrcUrl record su = new SrcUrl(); su.Count = 1; su.Processed = false; su.SrcUrl1 = srcUrl; su.SrcUrlHash = srcUrlHash; su.CreatedOn = DateTime.UtcNow; su.UpdatedOn = DateTime.UtcNow; rie.SrcUrls.Add(su); } else { // The srcUrl record has been created - update count su.Count = su.Count + 1; su.UpdatedOn = DateTime.UtcNow; } // Ok Now the Sanity Check to make sure that the Many to Many table is correctly populated if (!ReportedSrcUrlsExists(rie, pageUrlHash, srcUrlHash)) { rsu.PageUrlHash = pageUrlHash; rsu.SrcUrlHash = srcUrlHash; rie.ReportedSrcUrls.Add(rsu); } rie.SaveChanges(); } }