Exemple #1
0
        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);
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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}"));
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
 }
Exemple #8
0
        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));
        }
Exemple #9
0
        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
            }));
        }
Exemple #10
0
        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("&#39;", "'").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;
 }
Exemple #12
0
        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("&#39;", "'").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("&nbsp;", " ").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;
            }
        }
Exemple #15
0
        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);
        }
Exemple #16
0
        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("&#8217;", "'").Replace("&nbsp;", " ").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);
        }
Exemple #17
0
        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);
        }
Exemple #19
0
        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);
        }
Exemple #21
0
        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
            }));
        }
Exemple #22
0
        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("&nbsp;", " ").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);
        }
Exemple #23
0
        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
                }));
            }
        }
Exemple #24
0
        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;
        }
Exemple #25
0
        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));
        }
Exemple #27
0
 public void InsertReview(ReviewEntity entity)
 {
     _dc.Reviews.InsertOne(entity);
 }
Exemple #28
0
        // 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 }));
            }
        }