public async Task <ReviewEntity> CreateAsync(ReviewEntity review, string authorUserName) { var user = await UnitOfWork.UserProfileRepository.GetAsync(x => x.UserName.ToLower() == authorUserName.ToLower() && x.IsDeleted == false); var userID = user.Single().Id; var existingReview = await UnitOfWork.ReviewRepository .GetAsync(x => x.MovieId == review.MovieId && x.AuthorId == userID) .ConfigureAwait(false); if (existingReview.Any()) { throw new EntityAlreadyExistException(); } var result = await UnitOfWork.ReviewRepository.CreateAsync(review with { AuthorId = userID }).ConfigureAwait(false); return(result); }
public async Task <IActionResult> EditReview(int?id) { if (id == null) { return(NotFound()); } ReviewEntity reviewEntity = await _context.Reviews .Include(g => g.Document) .Include(u => u.User) .FirstOrDefaultAsync(g => g.Id == id); if (reviewEntity == null) { return(NotFound()); } ReviewViewModel model = _converterHelper.ToReviewViewModel(reviewEntity); return(View(model)); }
public string TestUpdate() { SetConnectionString(); MovieEntity entity = new MovieEntity(); var rand = new Random((int)DateTimeOffset.UtcNow.Ticks); entity.RowKey = entity.MovieId = Guid.NewGuid().ToString(); entity.ReviewIds = string.Format("{0},{1}", Math.Abs(rand.Next()), Math.Abs(rand.Next())); entity.AggregateRating = Math.Abs(rand.Next(10)).ToString(); entity.Directors = string.Format("Gabbar_{0}", rand.Next()); entity.HotOrNot = (Math.Abs(rand.Next()) % 2) == 1 ? true : false; entity.MusicDirectors = string.Format("Rahman_{0}", Math.Abs(rand.Next())); entity.Name = string.Format("aashique {0}", rand.Next()); entity.Producers = string.Format("sippy_{0}", rand.Next()); entity.Actors = string.Format("sahruuk_{0}", rand.Next()); var reviewIds = entity.GetReviewIds(); var reviewList = new List <ReviewEntity>(); foreach (var reviewId in reviewIds) { var reviewEntity = new ReviewEntity(); reviewEntity.ReviewId = reviewEntity.RowKey = reviewId; reviewEntity.Review = string.Format("This is review number {0}", reviewId); reviewEntity.ReviewerName = string.Format("khan_{0}", rand.Next()); reviewEntity.ReviewerRating = rand.Next(10); reviewEntity.SystemRating = rand.Next(10); reviewList.Add(reviewEntity); } var tableMgr = new TableManager(); tableMgr.UpdateMovieById(entity); tableMgr.UpdateReviewsById(reviewList); return(string.Format("Created movie id {0}", entity.MovieId)); }
public async Task <IActionResult> DeleteReview(int?id) { if (id == null) { return(NotFound()); } ReviewEntity reviewEntity = await _context.Reviews .Include(g => g.Document) .Include(u => u.User) .FirstOrDefaultAsync(m => m.Id == id); if (reviewEntity == null) { return(NotFound()); } _context.Reviews.Remove(reviewEntity); await _context.SaveChangesAsync(); return(RedirectToAction($"{nameof(Details)}/{reviewEntity.Document.Id}")); }
private ReviewEntity PopulateReviewDetails(string html, string affiliation) { ReviewEntity re = new ReviewEntity(); HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); htmlDoc.OptionFixNestedTags = true; htmlDoc.LoadHtml(html); if (htmlDoc.DocumentNode != null) { HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body"); if (bodyNode == null) { Console.WriteLine("body node is null"); } else { var headerNode = helper.GetElementWithAttribute(bodyNode, "div", "class", "story_wid"); var reviewerName = helper.GetElementWithAttribute(headerNode, "span", "class", "sty_agn"); HtmlNode node = reviewerName.Element("a"); var reviewName = node == null ? reviewerName.InnerHtml : node.InnerText; var reviewContent = helper.GetElementWithAttribute(headerNode, "div", "class", "sty_txt"); var review = reviewContent.InnerText; re.RowKey = re.ReviewId = Guid.NewGuid().ToString(); re.Affiliation = affiliation.Trim(); re.Review = review.Trim(); re.ReviewerName = reviewName.Trim(); re.ReviewerRating = string.Empty; re.MyScore = string.Empty; re.JsonString = string.Empty; return(re); } } return(null); }
public ActionResult GetEstimatedById([FromRoute] decimal id) { var query = from d in _context.D_REVIEWS where d.REVIEW_ID == id select d; if (!query.Any()) { return(Ok(new Result { Status = 404, Message = string.Empty, Data = null })); } D_REVIEW estimation = query.Single(); List <ReviewEntity> entityList = new List <ReviewEntity>(); ReviewEntity result = new ReviewEntity(); result.reviewId = estimation.REVIEW_ID; result.contactId = estimation.CONTACT_ID; result.reviewUserId = estimation.REVIEW_USER_ID; result.reviewModeUser = estimation.REVIEW_MODE_USER; result.reviewDate = estimation.REVIEW_DATE; result.score = estimation.SCORE; result.comment = estimation.COMMENT; return(Ok(new Result { Status = 200, Message = string.Empty, Data = result })); }
public bool SaveReview(ReviewEntity review) { return((_connection.Table <ReviewEntity>().FirstOrDefault(x => x.Id == review.Id) == null ? _connection.Insert(review) : _connection.Update(review)) != -1); }
public string TestUpdate() { SetConnectionString(); MovieEntity entity = new MovieEntity(); var rand = new Random((int)DateTimeOffset.UtcNow.Ticks); #region commented code /*entity.RowKey = entity.MovieId = Guid.NewGuid().ToString(); * entity.Stats = string.Format("{0},{1}", Math.Abs(rand.Next()), Math.Abs(rand.Next())); * entity.Songs = Math.Abs(rand.Next(10)).ToString(); * entity.Ratings = string.Format("Gabbar_{0}", rand.Next()); * entity.Trailers = string.Format("Traler_{0}", rand.Next()); * entity.Casts = string.Format("Rahman_{0}", Math.Abs(rand.Next())); * entity.Name = string.Format("aashique {0}", rand.Next()); * entity.Synopsis = string.Format("sippy_{0}", rand.Next()); * entity.Posters = @"{""height"" : 300,""width"" : 200,""url"" : ""test""}"; * entity.Month = "March"; * entity.Year = "2014";*/ #endregion entity.RowKey = entity.MovieId = Guid.NewGuid().ToString(); entity.Stats = @"[{""budget"" : ""30,000"",""boxoffice"": ""50000""}]";; entity.Songs = @"[{""name"" : ""chaiyya chaiyya"",""url"" : ""songtest""}, {""name"" : ""chaiyya chaiyya"",""url"" : ""songtest""}]"; entity.Ratings = @"[{""system"" : 5,""critic"" : 6,""hot"" : ""no""}]"; entity.Trailers = @"[{""name"" : ""best movie"",""url"" : ""songtest""}, {""name"" : ""chaiyya chaiyya"",""url"" : ""songtest""}]"; entity.Casts = @"[{""name"" : ""ben affleck"",""charactername"" : ""mickey"",""image"" : {""height"" : 300,""width"": 200,""url"" : ""test""},""role"" : ""producer""}, {""name"" : ""jerry afflect"",""charactername"" : ""mouse"",""image"" : {""height"" : 300,""width"" : 200,""url"" : ""test""},""role"" : ""actor""}]"; entity.Pictures = @"[{""caption"" : ""test caption"",""image"" : {""height"" : 300,""width"" : 200,""url"" : ""test""}}]"; entity.Name = string.Format("aashique {0}", rand.Next()); entity.Synopsis = "this is a brilliant scary movie"; entity.Posters = @"[{""height"" : 300,""width"" : 200,""url"" : ""test""}]"; entity.Genre = "Action"; entity.Month = "March"; entity.Year = "2014"; //var reviewIds = entity.GetReviewIds(); var reviewIds = new List <string>() { Math.Abs(rand.Next()).ToString(), Math.Abs(rand.Next()).ToString() }; var reviewList = new List <ReviewEntity>(); foreach (var reviewId in reviewIds) { var reviewEntity = new ReviewEntity(); reviewEntity.ReviewId = reviewEntity.RowKey = reviewId; reviewEntity.MovieId = entity.MovieId; reviewEntity.Review = string.Format("This is review number {0}", reviewId); reviewEntity.ReviewerName = string.Format("khan_{0}", rand.Next()); reviewEntity.ReviewerRating = rand.Next(10); reviewEntity.SystemRating = rand.Next(10); reviewEntity.Hot = false; reviewEntity.OutLink = "this is a link"; reviewEntity.Affiliation = @"[{""name"" : ""Yahoo"", ""link"" : ""http://in.yahoo.com/?p=us"", ""reviewlink"" : ""http://in.movies.yahoo.com/blogs/movie-reviews/yahoo-movies-review-gunday-124034093.html"", ""logoimage"" : ""Images/Yahoo_Logo.png""},{""name"" : ""Hidustan Times"", ""link"" : ""http://www.hindustantimes.com"", ""reviewlink"" : ""http://www.hindustantimes.com/entertainment/reviews/movie-review-by-rashid-irani-dallas-buyers-club-is-a-must-watch/article1-1189520.aspx"", ""logoimage"" : ""Images/hindustan-times.jpg""}]"; reviewList.Add(reviewEntity); } var tableMgr = new TableManager(); tableMgr.UpdateMovieById(entity); tableMgr.UpdateReviewsById(reviewList); return(string.Format("Created movie id {0}", entity.MovieId)); }
public ActionResult GetEstimationByPartner([FromRoute] decimal id) { DefineEntity define = Utility.GetDefineValue(Constant.COMMENT_NUMBER_MAX); List <ReviewEntity> entityList = new List <ReviewEntity>(); M_USER user = _context.M_USERS.FirstOrDefault(x => x.USER_ID == id); List <D_REVIEW> estimationList = new List <D_REVIEW>(); var query = from d in _context.D_REVIEWS join c in _context.V_CONTACT_INFOS on d.CONTACT_ID equals c.CONTACT_ID where c.WORKER_ID == id && d.REVIEW_MODE_USER == (int)Mode.Hirer orderby d.REVIEW_DATE descending select d; if (!query.Any()) { return(Ok(new Result { Status = 200, Message = string.Empty, Data = null })); } estimationList = query.ToList(); foreach (D_REVIEW estimation in estimationList) { ReviewEntity entity = new ReviewEntity(); entity.reviewId = estimation.REVIEW_ID; entity.contactId = estimation.CONTACT_ID; entity.reviewUserId = estimation.REVIEW_USER_ID; entity.reviewModeUser = estimation.REVIEW_MODE_USER; entity.reviewDate = estimation.REVIEW_DATE; entity.score = estimation.SCORE; entity.comment = estimation.COMMENT; var queryName = from d in _context.M_USERS where d.USER_ID == estimation.REVIEW_USER_ID select d.NAME; if (queryName.Any()) { entity.reviewUserName = queryName.Single(); } entityList.Add(entity); if (entityList.Count == int.Parse(define.value)) { break; } } return(Ok(new Result { Status = 200, Message = string.Empty, Data = entityList })); }
public ReviewEntity PopulateReviewDetail(string html, string affiliation) { ReviewEntity re = new ReviewEntity(); HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); htmlDoc.OptionFixNestedTags = true; htmlDoc.LoadHtml(html); if (htmlDoc.DocumentNode != null) { HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body"); if (bodyNode == null) { Console.WriteLine("Body is empty"); } else { try { // Rating var ratingNode = helper.GetElementWithAttribute(bodyNode, "div", "class", "story-rating"); var imageContainer = ratingNode.Element("span"); var ratingImages = imageContainer.Elements("img"); int rate = 0; foreach (var rateImage in ratingImages) { HtmlAttribute src = rateImage.Attributes["src"]; if (src != null) { if (src.Value.Contains("star-one-1")) { rate += 1; } #region Commented Code /*else if (src.Value.Contains("star-no-1")) * { * // We don't need to add any rating because its 0 * } * else * { * // This case could be 0.5 but not sure how it appears on review page. * // Need to wait for same for other movie reviews * }*/ #endregion } } rate = rate * 2; // Reviewer var reviewerNode = helper.GetElementWithAttribute(bodyNode, "div", "class", "editor"); var reviewerName = reviewerNode.Element("a");//, "class", "fn"); var reviewName = reviewerName == null ? string.Empty : reviewerName.InnerText; // Review Text var reviewBody = helper.GetElementWithAttribute(bodyNode, "div", "class", "main-body-content"); var reviewText = reviewBody == null ? string.Empty : reviewBody.InnerText; re.RowKey = re.ReviewId = Guid.NewGuid().ToString(); re.Affiliation = affiliation.Trim(); re.Review = reviewText.Replace("'", "'").Trim(); re.ReviewerName = reviewName.Trim(); re.ReviewerRating = rate.ToString(); re.MyScore = string.Empty; re.JsonString = string.Empty; return(re); } catch (Exception) { // Log an exception } } } return(null); }
public ReviewCreatedEvent(ReviewEntity review) { Review = review; }
public ReviewEntity PopulateReviewDetail(string html, string affiliation) { ReviewEntity re = new ReviewEntity(); string rating = string.Empty; HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); htmlDoc.OptionFixNestedTags = true; htmlDoc.LoadHtml(html); if (htmlDoc.DocumentNode != null) { HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body"); if (bodyNode == null) { Console.WriteLine("Body is empty"); } else { var headerNode = helper.GetElementWithAttribute(bodyNode, "h1", "class", "pageheading"); //var reviewerNode = helper.GetElementWithAttribute(bodyNode, "div", "class", "blbox"); // var reviewerMiddleNode = helper.GetElementWithAttribute(reviewerNode, "div", "class", "blbox"); var reviewerName = helper.GetElementWithAttribute(bodyNode, "p", "class", "authorname"); HtmlNode node = reviewerName.Element("a"); var reviewName = node == null ? reviewerName.InnerHtml : node.InnerText; var reviewContentNode = helper.GetElementWithAttribute(bodyNode, "div", "class", "content-story"); HtmlNodeCollection nodes = reviewContentNode.SelectNodes("p"); var review = string.Empty; var reviewerRating = string.Empty; foreach (var ratingNode in nodes) { review += ratingNode.InnerText; if (ratingNode.InnerText.ToLower().Contains("rating")) { try { //string count = ratingNode.InnerText.Contains("*"); int rate = 0; rating = ratingNode.InnerText.Replace("Rating:", "").Trim(); if (ratingNode.InnerText.ToLower().Contains("*")) { rate = review.Count(s => s == '*'); } //rating = rating.Remove(rating.Length - 1); rating = (rate * 2).ToString(); } catch (Exception) { } } } re.RowKey = re.ReviewId = Guid.NewGuid().ToString(); re.Affiliation = affiliation.Trim(); re.Review = review.Replace("'", "'").Trim(); re.ReviewerName = reviewName.Trim(); re.ReviewerRating = rating; re.MyScore = string.Empty; re.JsonString = string.Empty; return(re); } } return(null); }
private ReviewEntity PopulateReviewDetails(string html, string affiliation) { ReviewEntity re = new ReviewEntity(); HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); htmlDoc.OptionFixNestedTags = true; htmlDoc.LoadHtml(html); if (htmlDoc.DocumentNode != null) { HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body"); if (bodyNode == null) { Console.WriteLine("body node is null"); } else { var headerNode = helper.GetElementWithAttribute(bodyNode, "div", "id", "celeb_article_postview_tab"); var reviewrName = helper.GetElementWithAttribute(headerNode, "div", "class", "m9090"); var reviewName = reviewrName.InnerText; // Clean up the review name - It has lots of scrape values along with name if (!string.IsNullOrEmpty(reviewName)) { reviewName = reviewName.Replace(" ", " ").Replace("By", "").Trim(); int nameLength = reviewName.IndexOf(","); if (nameLength > 1) { reviewName = reviewName.Substring(0, nameLength); } } var ratingNode = helper.GetElementWithAttribute(reviewrName, "img", "width", "93"); var rating = ratingNode.Attributes["title"] != null ? ratingNode.Attributes["title"].Value : string.Empty; float multipliedRating = 0; float.TryParse(rating, out multipliedRating); if (multipliedRating > 0) { // All other rating are based out of 10 where as Filmfare is out of 5. rating = (multipliedRating * 2).ToString(); } var reviewContent = helper.GetElementWithAttribute(headerNode, "div", "class", " mfl mmb31 mfnt12 minline malignjus mmr18"); var review = reviewContent.InnerText; re.Affiliation = affiliation; re.RowKey = re.ReviewId = Guid.NewGuid().ToString(); re.Review = review.Trim(); re.ReviewerName = reviewName.Trim(); re.ReviewerRating = rating.ToString(); re.MyScore = string.Empty; re.JsonString = string.Empty; return(re); } } return(null); }
private void CrawlfromXML(string xmlData, string movieName) { if (string.IsNullOrEmpty(xmlData)) { return; } Crawler.MovieCrawler movieCrawler = new Crawler.MovieCrawler(); JavaScriptSerializer json = new JavaScriptSerializer(); try { XmlDocument xdoc = new XmlDocument(); #region Movie Crawler xdoc.LoadXml(xmlData); var movies = xdoc.SelectNodes("Movies/Month/Movie"); if (movies == null) { return; } foreach (XmlNode movie in movies) { // Check movie name, we just need to crawl single movie and not all the movies present in XML file for current month if (movie.Attributes["name"].Value.ToLower() != movieName.ToLower()) { continue; } if (movie.Attributes["link"] != null && !string.IsNullOrEmpty(movie.Attributes["link"].Value)) { try { List <string> critics = new List <string>(); #region Crawl Movie MovieEntity mov = movieCrawler.Crawl(movie.Attributes["link"].Value); TableManager tblMgr = new TableManager(); // Save the crawled content because in case of new movies, it fails tblMgr.UpdateMovieById(mov); string posterUrl = string.Empty; if (movie.Attributes["santaposterlink"] != null && !string.IsNullOrEmpty(movie.Attributes["santaposterlink"].Value)) { XMLMovieProperties prop = new XMLMovieProperties(); prop.SantaPosterLink = movie.Attributes["santaposterlink"].Value; prop.MovieName = mov.UniqueName; CrawlPosters(json.Serialize(prop)); } // Crawl Songs from Saavn if (string.IsNullOrEmpty(mov.RowKey) || string.IsNullOrEmpty(mov.MovieId)) { continue; } tblMgr.UpdateMovieById(mov); #endregion #region Crawl Movie Reviews #region Crawler try { BollywoodHungamaReviews bh = new BollywoodHungamaReviews(); HindustanTimesReviews ht = new HindustanTimesReviews(); FilmfareReviews ff = new FilmfareReviews(); CnnIbn cibn = new CnnIbn(); BoxOfficeIndia boi = new BoxOfficeIndia(); Dna dna = new Dna(); FirstPost fp = new FirstPost(); IndianExpress ie = new IndianExpress(); KomalNahta kn = new KomalNahta(); MidDay md = new MidDay(); Ndtv ndtv = new Ndtv(); Rajasen rs = new Rajasen(); Rediff rdf = new Rediff(); Telegraph tg = new Telegraph(); TheHindu th = new TheHindu(); TimesOfIndia toi = new TimesOfIndia(); AnupamaChopra ac = new AnupamaChopra(); MumbaiMirror mm = new MumbaiMirror(); var reviews = movie.SelectNodes("Review"); List <ReviewEntity> reviewList = tblMgr.GetReviewByMovieId(mov.MovieId); foreach (XmlNode review in reviews) { ReviewEntity duplicateRE = reviewList.Find(r => r.Affiliation == review.Attributes["name"].Value); if (duplicateRE != null) { // We found the duplicate, skip this review to crawl continue; } ReviewEntity re = new ReviewEntity(); string reviewLink = review.Attributes["link"].Value; switch (review.Attributes["name"].Value.Trim()) { case "BollywoodHungama": case "Bollywood Hungama": re = bh.Crawl(reviewLink, review.Attributes["name"].Value); break; case "Hindustan Times": re = ht.Crawl(reviewLink, review.Attributes["name"].Value); break; case "Filmfare": re = ff.Crawl(reviewLink, review.Attributes["name"].Value); break; case "CNN IBN": case "CNNIBN": re = cibn.Crawl(reviewLink, review.Attributes["name"].Value); break; case "Box Office India": re = boi.Crawl(reviewLink, review.Attributes["name"].Value); break; case "DNA": re = dna.Crawl(reviewLink, review.Attributes["name"].Value); break; case "FirstPost": re = fp.Crawl(reviewLink, review.Attributes["name"].Value); break; case "Indian Express": re = ie.Crawl(reviewLink, review.Attributes["name"].Value); break; case "Komal Nahta's Blog": re = kn.Crawl(reviewLink, review.Attributes["name"].Value); break; case "Mid Day": case "MidDay": re = md.Crawl(reviewLink, review.Attributes["name"].Value); break; case "NDTV": re = ndtv.Crawl(reviewLink, review.Attributes["name"].Value); break; case "rajasen.com": re = rs.Crawl(reviewLink, review.Attributes["name"].Value); break; case "Rediff": re = rdf.Crawl(reviewLink, review.Attributes["name"].Value); break; case "Telegraph": re = tg.Crawl(reviewLink, review.Attributes["name"].Value); break; case "The Hindu": re = th.Crawl(reviewLink, review.Attributes["name"].Value); break; case "Times of India": re = toi.Crawl(reviewLink, review.Attributes["name"].Value); break; case "anupamachopra.com": re = ac.Crawl(reviewLink, review.Attributes["name"].Value); break; case "Mumbai Mirror": re = mm.Crawl(reviewLink, review.Attributes["name"].Value); break; } if (re == null) { continue; } critics.Add(re.ReviewerName); // update the IDs - Movie Id, Reviewer Id etc. string reviewerId = ReviewCrawler.SetReviewer(re.ReviewerName, review.Attributes["name"].Value); //re.RowKey = re.ReviewId = new Guid().ToString(); re.ReviewerId = reviewerId; re.MovieId = mov.MovieId; re.OutLink = reviewLink; tblMgr.UpdateReviewById(re); } } catch (Exception) { } #endregion #endregion #region Lucene Search Index List <APIRole.UDT.Cast> casts = json.Deserialize(mov.Cast, typeof(List <APIRole.UDT.Cast>)) as List <APIRole.UDT.Cast>; List <String> posters = json.Deserialize(mov.Posters, typeof(List <String>)) as List <String>; List <String> actors = new List <string>(); if (casts != null) { foreach (var actor in casts) { // actor, director, music, producer string role = actor.role.ToLower(); string characterName = string.IsNullOrEmpty(actor.charactername) ? string.Empty : actor.charactername; // Check if artist is already present in the list for some other role. // If yes, skip it. Also if the actor name is missing then skip the artist if (actors.Contains(actor.name) || string.IsNullOrEmpty(actor.name) || actor.name == "null") { continue; } // If we want to showcase main artists and not all, keep the following switch... case. switch (role) { case "actor": actors.Add(actor.name); break; case "producer": // some times producer are listed as line producer etc. // We are not interested in those artists as of now?! Hence skipping it if (characterName == role) { actors.Add(actor.name); } break; case "music": case "director": // Main music director and movie director does not have associated character name. // Where as other side directors have associated character name as associate director, assitant director. // Skipping such cases. if (string.IsNullOrEmpty(characterName)) { actors.Add(actor.name); } break; } // If we want to showcase all the technicians //actors.Add(actor.name); } } if (posters != null && posters.Count > 0) { posterUrl = posters[posters.Count - 1]; } // include reviewer & their affiliation in index file MovieSearchData movieSearchIndex = new MovieSearchData(); movieSearchIndex.Id = mov.RowKey; movieSearchIndex.Title = mov.Name; movieSearchIndex.Type = mov.Genre; movieSearchIndex.TitleImageURL = posterUrl; movieSearchIndex.UniqueName = mov.UniqueName; movieSearchIndex.Description = json.Serialize(actors); movieSearchIndex.Critics = json.Serialize(critics); movieSearchIndex.Link = mov.UniqueName; LuceneSearch.AddUpdateLuceneIndex(movieSearchIndex); #endregion } catch (Exception) { Debug.WriteLine("Error while crawling movie - " + movie.Attributes["link"].Value); } } } #endregion } catch (Exception ex) { Debug.WriteLine("Exception: {0}", ex); throw; } }
private ReviewEntity PopulateReviewDetails(string html, string affiliation) { ReviewEntity re = new ReviewEntity(); HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); htmlDoc.OptionFixNestedTags = true; htmlDoc.LoadHtml(html); if (htmlDoc.DocumentNode != null) { HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body"); if (bodyNode == null) { Console.WriteLine("body node is null"); } else { var headerNode = helper.GetElementWithAttribute(bodyNode, "div", "class", "pageContent"); #region Get Reviewer var reviewerNameContainer = helper.GetElementWithAttribute(headerNode, "span", "class", "written"); var reviewerList = reviewerNameContainer.Elements("a"); string reviewerName = string.Empty; if (reviewerList != null) { try { reviewerName = reviewerList.FirstOrDefault().InnerText; } catch (Exception) { } } #endregion #region Get Rating var ratingNode = helper.GetElementWithAttribute(bodyNode, "span", "id", "rate_val_change"); var rating = ratingNode.Attributes["class"] != null ? ratingNode.Attributes["class"].Value : string.Empty; rating = rating.Replace("rate", ""); float multipliedRating = 0; float.TryParse(rating, out multipliedRating); if (multipliedRating > 0) { // All other rating are based out of 10 where as Filmfare is out of 5. rating = (multipliedRating * 2).ToString(); } #endregion #region Get Review Content var reviewContent = helper.GetElementWithAttribute(bodyNode, "div", "class", "upperBlk"); var reviews = reviewContent.Element("figure"); string review = string.Empty; if (reviews != null) { var reviewElements = reviews.Elements("p"); foreach (var r in reviewElements) { if (!string.IsNullOrEmpty(r.InnerText) && r.InnerText.Length > 300) { review = r.InnerText; break; } } } #endregion re.RowKey = re.ReviewId = Guid.NewGuid().ToString(); re.Affiliation = affiliation.Trim(); re.Review = review.Trim(); re.ReviewerName = reviewerName.Trim(); re.ReviewerRating = rating.ToString(); re.JsonString = string.Empty; re.MyScore = string.Empty; return(re); } } return(null); }
public ReviewEntity PopulateReviewDetail(string html, string affiliation) { ReviewEntity re = new ReviewEntity(); string rating = string.Empty; HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); htmlDoc.OptionFixNestedTags = true; htmlDoc.LoadHtml(html); if (htmlDoc.DocumentNode != null) { HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body"); if (bodyNode == null) { Console.WriteLine("Body is empty"); } else { var headerNode = helper.GetElementWithAttribute(bodyNode, "h1", "class", "entry-title"); HtmlNode header = headerNode.Element("a"); var head = header == null ? headerNode.InnerHtml : header.InnerText; head = head.Replace("’", "'").Replace(" ", " ").Trim(); //var reviewerNode = helper.GetElementWithAttribute(bodyNode, "div", "class", "blbox"); // var reviewerMiddleNode = helper.GetElementWithAttribute(reviewerNode, "div", "class", "blbox"); /* * var reviewerName = helper.GetElementWithAttribute(bodyNode, "div", "class", "story-date"); * HtmlNode node = reviewerName.Element("a"); * var reviewName = node == null ? reviewerName.InnerHtml : node.InnerText; */ var reviewContentNode = helper.GetElementWithAttribute(bodyNode, "div", "class", "entry entry-content"); HtmlNodeCollection nodes = reviewContentNode.SelectNodes("p"); var review = string.Empty; var reviewerRating = string.Empty; foreach (var ratingNode in nodes) { review += ratingNode.InnerText; if (ratingNode.InnerText.ToLower().Contains("rating")) { try { rating = ratingNode.InnerText.Replace("Rating: ", "").Replace("stars", "").Trim(); rating = (Decimal.Parse(rating) * 2).ToString(); } catch (Exception) { } } } re.RowKey = re.ReviewId = Guid.NewGuid().ToString(); re.Affiliation = affiliation.Trim(); re.Review = review.Trim(); re.ReviewerName = "Raja Sen"; re.ReviewerRating = rating; re.MyScore = string.Empty; re.JsonString = string.Empty; return(re); } } return(null); }
public ReviewEntity PopulateReviewDetail(string html, string affiliation) { ReviewEntity re = new ReviewEntity(); string rating = string.Empty; HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); htmlDoc.OptionFixNestedTags = true; htmlDoc.LoadHtml(html); if (htmlDoc.DocumentNode != null) { HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body"); if (bodyNode == null) { Console.WriteLine("Body is empty"); } else { var headerNode = helper.GetElementWithAttribute(bodyNode, "div", "class", "article_detail"); HtmlNode head = headerNode.SelectSingleNode("h1"); var header = head == null ? head.InnerHtml : head.InnerText; var reviewerName = helper.GetElementWithAttribute(headerNode, "div", "class", "metalink"); var reviewName = reviewerName == null ? string.Empty : reviewerName.InnerText; reviewName = reviewName.Trim(); int rn = reviewName.IndexOf("|"); reviewName = reviewName.Substring(0, rn); // reviewName = reviewName.Substring(0, reviewName.Length - 20); var reviewContentNode = helper.GetElementWithAttribute(bodyNode, "span", "itemprop", "articleBody"); HtmlNodeCollection nodes = reviewContentNode.SelectNodes("p"); var review = string.Empty; foreach (var ratingNode in nodes) { review += ratingNode.InnerText; } var reviewerRating = helper.GetElementWithAttribute(bodyNode, "h2", "class", "footer_style"); if (reviewerRating != null) { try { rating = PrepareRatingValue(reviewerRating); } catch (Exception) { } } re.RowKey = re.ReviewId = Guid.NewGuid().ToString(); re.Affiliation = affiliation.Trim(); re.Review = review.Trim(); re.ReviewerName = reviewName.Trim(); re.ReviewerRating = rating; re.MyScore = string.Empty; re.JsonString = string.Empty; return(re); } } return(null); }
public bool SaveProducts(ICollection <ApiModel.Product> products) { try { _productRepository.StartTransaction(); foreach (var prod in products) { //save main product if (!_productRepository.SaveProduct(prod.ApiProductToProductEntity())) { continue; } //set if (prod.Images == null) { prod.Images = new ApiModel.Image[0]; } if (prod.Prices == null) { prod.Prices = new ApiModel.Price[0]; } if (prod.Reviews == null) { prod.Reviews = new ApiModel.EditorialReview[0]; } if (prod.Properties == null) { prod.Properties = new ApiModel.Property[0]; } //save images for product foreach (var image in prod.Images) { var imgEntity = new ImageEntity { Id = image.Id, ProductId = prod.Id, PhysicalPath = _imageService.SaveImage(new Model.Image { Name = image.Name, Path = image.Url }, prod.Id) }; _productRepository.SaveImage(imgEntity); } //delete old images var oldImages = _productRepository.GetImagesByProduct(prod.Id); foreach (var image in oldImages) { if (prod.Images.FirstOrDefault(x => x.Id == image.Id) == null) { _productRepository.DeleteImageById(image.Id); } } //save reviews foreach (var review in prod.Reviews) { var reviewEntity = new ReviewEntity { Id = review.Id, Content = review.Content, ReviewType = review.ReviewType, LanguageCode = review.LanguageCode, ProductId = prod.Id }; _productRepository.SaveReview(reviewEntity); } //delete old reviews var oldReviews = _productRepository.GetReviewsByProduct(prod.Id); foreach (var review in oldReviews) { if (prod.Reviews.FirstOrDefault(x => x.Id == review.Id) == null) { _productRepository.DeleteReviewById(review.Id); } } //save price foreach (var price in prod.Prices) { _productRepository.SavePrice(price.PriceApiToPriceEntity()); } //delete old prices var oldPrices = _productRepository.GetPricesByProduct(prod.Id); foreach (var price in oldPrices) { if (prod.Prices.FirstOrDefault(x => x.Id == price.Id) == null) { _productRepository.DeletePriceById(price.Id); } } //save properties foreach (var prop in prod.Properties) { foreach (var propVl in prop.Values) { _productRepository.SaveProductProperty(propVl.ApiPropertyValueToPropertyEntity(prop, prod.Id)); } } //delete old properties var oldProperties = _productRepository.GetProductProperties(prod.Id); foreach (var property in oldProperties) { if (prod.Properties.SelectMany(x => x.Values).FirstOrDefault(x => x.Id == property.Id) == null) { _productRepository.DeletePropertyById(property.Id); } } } _productRepository.EndTransaction(); _productRepository.StartTransaction(); //delete product that not include in new list products var allProducts = _productRepository.GetAllProducts(); foreach (var product in allProducts) { if (products.FirstOrDefault(x => x.Id == product.Id) == null) { _productRepository.DeleteProductById(product.Id); } } _productRepository.EndTransaction(); } catch (Exception) { _productRepository.RollBackTransaction(); return(false); } return(true); }
public async Task <IActionResult> PostReview([FromBody] ReviewRequest request) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } CultureInfo cultureInfo = new CultureInfo(request.CultureInfo); Resource.Culture = cultureInfo; UserEntity userEntity = await _context.Users.FindAsync(request.User); if (userEntity == null) { return(BadRequest(new Response { IsSuccess = false, Message = Resource.UserDoesntExists })); } DocumentEntity documentEntity = await _context.Documents.FindAsync(request.Document); if (documentEntity == null) { return(BadRequest(new Response { IsSuccess = false, Message = Resource.DocumentDoesntexist })); } ReviewEntity reviewEntity = await _context.Reviews .FirstOrDefaultAsync(p => p.User.Id == request.User && p.Document.Id == request.Document); string message = ""; if (reviewEntity == null) { reviewEntity = new ReviewEntity { Document = documentEntity, Comment = request.Comment, Rating = request.Rating, Favorite = request.Favorite, User = userEntity }; message = Resource.TheReviewWasMadeCorrectly; _context.Reviews.Add(reviewEntity); } else { reviewEntity.Comment = request.Comment; reviewEntity.Rating = request.Rating; reviewEntity.Favorite = request.Favorite; message = Resource.TheReviewWasEditedSuccessfully; _context.Reviews.Update(reviewEntity); } await _context.SaveChangesAsync(); return(Ok(new Response { IsSuccess = true, Message = message })); }
internal static string GetMovieInfo(string name) { name = name.ToLower(); string json = string.Empty; if (!CacheManager.TryGet <string>(CacheConstants.MovieInfoJson + name, out json)) { try { var tableMgr = new TableManager(); // get single movie object form database by its unique name var movie = tableMgr.GetMovieByUniqueName(name); if (movie != null) { MovieInfo movieInfo = new MovieInfo(); movieInfo.movieId = movie.MovieId; movieInfo.Movie = movie; // get reviews for movie by movie id var reviewList = tableMgr.GetReviewsByMovieId(movie.MovieId); // if reviews not null then add review to review list. var userReviews = (reviewList != null) ? reviewList.Select(review => { ReviewerEntity reviewer = tableMgr.GetReviewerById(review.Value.ReviewerId); ReviewEntity objReview = review.Value as ReviewEntity; objReview.ReviewerName = reviewer.ReviewerName; objReview.CriticsRating = objReview.SystemRating == 0 ? "" : (objReview.SystemRating == -1 ? 0 : 100).ToString(); //objReview.OutLink = reviewer.ReviewerImage; return(objReview); }) : Enumerable.Empty <ReviewEntity>(); //add reviewlist to movieinfo reviews movieInfo.MovieReviews = userReviews.ToList(); // serialize movie object and return. json = jsonSerializer.Value.Serialize(movieInfo); } else { // if movie not found then return empty string json = string.Empty; } CacheManager.Add <string>(CacheConstants.MovieInfoJson + name, json); } catch (Exception ex) { // if any error occured then return User friendly message with system error message // use jsonError here because more custumizable json = jsonSerializer.Value.Serialize( new { Status = "Error", UserMessage = "Unable to find " + name + " movie.", ActualError = ex.Message }); } } return(json); }
public ActionResult GetEstimationById([FromRoute] decimal id, [FromRoute] decimal estModeUser) { var query = from d in _context.D_REVIEWS where d.CONTACT_ID == id //&& d.EST_MODE_USER == EstModeUser orderby d.REVIEW_MODE_USER select d; if (!query.Any()) { return(Ok(new Result { Status = 404, Message = string.Empty, Data = null })); } List <D_REVIEW> estimationList = query.ToList(); List <ReviewEntity> entityList = new List <ReviewEntity>(); ReviewEntity result = new ReviewEntity(); foreach (D_REVIEW estimation in estimationList) { result.reviewId = estimation.REVIEW_ID; result.contactId = estimation.CONTACT_ID; if (estimation.REVIEW_MODE_USER == estModeUser) { result.isSended = true; result.reviewUserId = estimation.REVIEW_USER_ID; result.reviewModeUser = estimation.REVIEW_MODE_USER; result.reviewDate = estimation.REVIEW_DATE; result.score = estimation.SCORE; result.comment = estimation.COMMENT; var user = from d in _context.M_USERS where d.USER_ID == estimation.REVIEW_USER_ID select d; if (user.Any()) { result.reviewUserName = user.Single().NAME; } } else { result.isReceived = true; result.reviewUserId = estimation.REVIEW_USER_ID; result.reviewDateReceive = estimation.REVIEW_DATE; result.scoreReceive = estimation.SCORE; result.commentReceive = estimation.COMMENT; var user = from d in _context.M_USERS where d.USER_ID == estimation.REVIEW_USER_ID select d; if (user.Any()) { result.reviewUserName = user.Single().NAME; } } } return(Ok(new Result { Status = 200, Message = string.Empty, Data = result })); }
private ReviewEntity PopulateReviewDetails(string html, string affiliation) { ReviewEntity re = new ReviewEntity(); HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); htmlDoc.OptionFixNestedTags = true; htmlDoc.LoadHtml(html); if (htmlDoc.DocumentNode != null) { HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body"); if (bodyNode == null) { Console.WriteLine("body node is null"); } else { var headerNode = helper.GetElementWithAttribute(bodyNode, "div", "class", "Normal"); var reviewerNode = helper.GetElementWithAttribute(headerNode, "span", "id", "advenueINTEXT"); string reviewerName = string.Empty; if (reviewerNode != null) { reviewerName = reviewerNode.InnerText; } // Clean up the review name - It has lots of scrape values along with name if (!string.IsNullOrEmpty(reviewerName)) { reviewerName = reviewerName.Replace(" ", " ").Replace("By", "").Trim(); } HtmlNodeCollection nodes = headerNode.SelectNodes("strong"); var rating = string.Empty; foreach (var node in nodes) { if (node.InnerText.ToLower().Trim().Contains("rating:")) { rating = node.InnerText.Replace(" ", "").Replace("Rating:", "").Length.ToString(); } if (string.IsNullOrEmpty(reviewerName) && node.InnerText.ToLower().Trim().Contains("by:")) { reviewerName = rating = node.InnerText.Replace(" ", "").Replace("By:", ""); } else if (string.IsNullOrEmpty(reviewerName)) { reviewerName = "mumbaimirror"; } } float multipliedRating = 0; float.TryParse(rating, out multipliedRating); if (multipliedRating > 0) { // All other rating are based out of 10 where as Filmfare is out of 5. rating = (multipliedRating * 2).ToString(); } var review = string.Empty; if (!string.IsNullOrEmpty(rating)) { review = headerNode.InnerText.Substring(headerNode.InnerText.LastIndexOf("Rating:") + rating.Length + 1); } else if (!string.IsNullOrEmpty(reviewerName) && reviewerName != "mumbaimirror") { review = headerNode.InnerText.Substring(headerNode.InnerText.LastIndexOf(reviewerName) + rating.Length + 1); } else { review = headerNode.InnerText; } re.Affiliation = affiliation; re.RowKey = re.ReviewId = Guid.NewGuid().ToString(); re.Review = review.Trim(); re.ReviewerName = reviewerName.Trim(); re.ReviewerRating = rating.ToString(); re.MyScore = string.Empty; re.JsonString = string.Empty; return(re); } } return(null); }
public ActionResult InsertEstimation(ReviewEntity entity) { System.Web.Http.HttpError errorHttp = null; if (entity == null) { errorHttp = new System.Web.Http.HttpError("EstimationEntity is not found!"); return(Ok(new Result { Status = 404, Message = errorHttp.Message, Data = null })); } IDbContextTransaction tran = _context.Database.BeginTransaction(); try { var query = from d in _context.D_REVIEWS where d.CONTACT_ID == entity.contactId && d.REVIEW_MODE_USER == (int)entity.reviewModeUser select d; if (query.Any()) { errorHttp = new System.Web.Http.HttpError("Estimation is exists!"); return(Ok(new Result { Status = 404, Message = errorHttp.Message, Data = null })); } decimal userReceiveId; decimal receiveModeUser; D_REVIEW estimation = new D_REVIEW(); estimation.CONTACT_ID = entity.contactId; estimation.REVIEW_USER_ID = entity.reviewUserId; estimation.REVIEW_MODE_USER = entity.reviewModeUser; estimation.REVIEW_DATE = Utility.GetSysDateTime(); estimation.SCORE = entity.score.Value; estimation.COMMENT = entity.comment; _context.D_REVIEWS.Add(estimation); _context.SaveChanges(); if (!UpdateScore(_context, entity.contactId, entity.score.Value, entity.reviewModeUser)) { // Rollback transaction. tran.Rollback(); errorHttp = new System.Web.Http.HttpError("Insert is not success!"); return(Ok(new Result { Status = 404, Message = errorHttp.Message, Data = null })); } if (entity.reviewModeUser == (decimal)Mode.Hirer) { var queryWorker = from d in _context.V_CONTACT_INFOS where d.CONTACT_ID == entity.contactId select d.WORKER_ID; if (!queryWorker.Any()) { // Rollback transaction. tran.Rollback(); errorHttp = new System.Web.Http.HttpError("Update is not success!"); return(Ok(new Result { Status = 404, Message = errorHttp.Message, Data = null })); } userReceiveId = queryWorker.Single(); receiveModeUser = (decimal)Mode.Partner; } else { var queryHirer = from d in _context.V_CONTACT_INFOS where d.CONTACT_ID == entity.contactId select d.HIRER_ID; if (!queryHirer.Any()) { // Rollback transaction. tran.Rollback(); errorHttp = new System.Web.Http.HttpError("Update is not success!"); return(Ok(new Result { Status = 404, Message = errorHttp.Message, Data = null })); } userReceiveId = queryHirer.Single(); receiveModeUser = (decimal)Mode.Hirer; } // Insert notify. if (!Utility.InsertNotify(_context, (int)NotifyType.Estimation, entity.contactId, entity.reviewUserId, userReceiveId, receiveModeUser)) { // Rollback transaction. tran.Rollback(); errorHttp = new System.Web.Http.HttpError("Update is not success!"); return(Ok(new Result { Status = 404, Message = errorHttp.Message, Data = null })); } // Commit transaction. tran.Commit(); errorHttp = new System.Web.Http.HttpError("Insert is success!"); return(Ok(new Result { Status = 200, Message = errorHttp.Message, Data = null })); } catch (Exception ex) { // Rollback transaction. tran.Rollback(); System.Web.Http.HttpError error = new System.Web.Http.HttpError(ex.Message); return(Ok(new Result { Status = 404, Message = error.Message, Data = null })); } }
public ReviewEntity PopulateReviewDetail(string html, string affiliation) { ReviewEntity re = new ReviewEntity(); string rating = string.Empty; HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); htmlDoc.OptionFixNestedTags = true; htmlDoc.LoadHtml(html); if (htmlDoc.DocumentNode != null) { HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body"); if (bodyNode == null) { Console.WriteLine("Body is empty"); } else { var headerNode = helper.GetElementWithAttribute(bodyNode, "div", "class", "fleft"); var reviewerNode = helper.GetElementWithAttribute(bodyNode, "div", "class", "blbox"); // var reviewerMiddleNode = helper.GetElementWithAttribute(reviewerNode, "div", "class", "blbox"); var reviewerName = helper.GetElementWithAttribute(reviewerNode, "span", "class", "fwb"); HtmlNode node = reviewerName.Element("a"); var reviewName = node == null ? reviewerName.InnerHtml : node.InnerText; var reviewContentNode = helper.GetElementWithAttribute(bodyNode, "div", "id", "atxt_box"); HtmlNodeCollection nodes = reviewContentNode.SelectNodes("p"); var review = string.Empty; var reviewerRating = string.Empty; foreach (var ratingNode in nodes) { review += ratingNode.InnerText; if (ratingNode.InnerText.ToLower().Contains("rating")) { try { rating = ratingNode.InnerText.Replace("Rating:", "").Replace("/", "").Trim(); rating = rating.Remove(rating.Length - 1); rating = (Decimal.Parse(rating) * 2).ToString(); } catch (Exception) { } } } re.RowKey = re.ReviewId = Guid.NewGuid().ToString(); re.Affiliation = affiliation.Trim(); re.Review = review.Trim(); re.ReviewerName = reviewName.Trim(); re.ReviewerRating = rating; re.MyScore = string.Empty; re.JsonString = string.Empty; return re; } } return null; }
public ActionResult GetEstimationByExchangeId([FromRoute] decimal id, [FromRoute] decimal modeUser) { int mode = (int)Mode.Hirer; if (modeUser == (int)Mode.Hirer) { mode = (int)Mode.Partner; } string query = " SELECT A.EXCHANGE_ID, D.ESTIMATOR_USER_ID, D.EST_MODE_USER, D.SCORE, D.COMMENT, D.ESTIMATION_DATE " + " , C.EXCHANGE_ID AS EXCHANGE_ID_RECEIVE, C.ESTIMATOR_USER_ID AS ESTIMATOR_USER_ID_RECEIVE " + " , C.EST_MODE_USER AS EST_MODE_USER_RECEIVE, C.SCORE AS SCORE_RECEIVE, C.COMMENT AS COMMENT_RECEIVE, " + " C.ESTIMATION_DATE AS ESTIMATION_DATE_RECEIVE " + " FROM D_EXCHANGE A " + " LEFT JOIN D_ESTIMATION C ON (A.EXCHANGE_ID = C.EXCHANGE_ID AND C.EST_MODE_USER = "******") " + " LEFT JOIN D_ESTIMATION D ON (A.EXCHANGE_ID = D.EXCHANGE_ID AND D.EST_MODE_USER = "******") " + " WHERE A.EXCHANGE_ID = " + id + " "; DataTable data = SqlHelper.FillData(query); if (data.Rows.Count == 0) { return(Ok(new Result { Status = 404, Message = string.Empty, Data = null })); } ReviewEntity result = new ReviewEntity(); result.contactId = data.Rows[0]["EXCHANGE_ID"] == null ? (decimal)data.Rows[0]["EXCHANGE_ID_RECEIVE"] : (decimal)data.Rows[0]["EXCHANGE_ID"]; if (!string.IsNullOrEmpty(data.Rows[0]["ESTIMATION_DATE"].ToString())) { result.reviewDate = DateTime.Parse(data.Rows[0]["ESTIMATION_DATE"].ToString()); } if (!string.IsNullOrEmpty(data.Rows[0]["SCORE"].ToString())) { result.isSended = true; result.score = (decimal)data.Rows[0]["SCORE"]; } result.comment = data.Rows[0]["COMMENT"] == null ? string.Empty : data.Rows[0]["COMMENT"].ToString(); if (!string.IsNullOrEmpty(data.Rows[0]["ESTIMATION_DATE_RECEIVE"].ToString())) { result.reviewDateReceive = DateTime.Parse(data.Rows[0]["ESTIMATION_DATE_RECEIVE"].ToString()); } if (!string.IsNullOrEmpty(data.Rows[0]["SCORE_RECEIVE"].ToString())) { result.isReceived = true; result.scoreReceive = (decimal)data.Rows[0]["SCORE_RECEIVE"]; } result.commentReceive = string.IsNullOrEmpty(data.Rows[0]["COMMENT_RECEIVE"].ToString()) ? string.Empty : data.Rows[0]["COMMENT_RECEIVE"].ToString(); return(Ok(new Result { Status = 200, Message = string.Empty, Data = result })); }
public ReviewModel MapReviewEntityToReviewModel(ReviewEntity reviewEntity) { var config = new Mapper(MapperConfiguration()); return(config.Map <ReviewModel>(reviewEntity)); }
public void InsertReview(ReviewEntity entity) { _dc.Reviews.InsertOne(entity); }
// get : api/MovieInfo?q={movieId} protected override string ProcessRequest() { JavaScriptSerializer json = new JavaScriptSerializer(); try { var tableMgr = new TableManager(); MovieInfo movieInfo = new MovieInfo(); // get query string parameters var qpParams = HttpUtility.ParseQueryString(this.Request.RequestUri.Query); if (string.IsNullOrEmpty(qpParams["q"])) { throw new ArgumentException(Constants.API_EXC_MOVIE_NAME_NOT_EXIST); } string name = qpParams["q"].ToString(); // get single movie object form database by its uinque name var movie = tableMgr.GetMovieByUniqueName(name); if (movie != null) { List <ReviewEntity> userReviews = new List <ReviewEntity>(); movieInfo.movieId = movie.MovieId; // get reviews for movie by movie id var reviewList = tableMgr.GetReviewsByMovieId(movie.MovieId); if (reviewList != null) { // if reviews not null then add review to review list. foreach (var review in reviewList) { ReviewerEntity reviewer = tableMgr.GetReviewerById(review.Value.ReviewerId); ReviewEntity objReview = review.Value as ReviewEntity; objReview.Affiliation = reviewer.Affilation; objReview.ReviewerName = reviewer.ReviewerName; objReview.OutLink = reviewer.ReviewerImage; userReviews.Add(objReview); } } //add reviewlist to movieinfo reviews movieInfo.MovieReviews = userReviews; // serialize movie object and return. return(json.Serialize(movieInfo)); } else { // if movie not found then return empty string return(string.Empty); } } catch (Exception ex) { // if any error occured then return User friendly message with system error message return(json.Serialize(new { Status = "Error", UserMessage = Constants.UM_WHILE_GETTING_MOVIE, ActualError = ex.Message })); } }