Beispiel #1
0
        public async Task <ActionResult> CreateAsync(
            [Bind(Include = "Title,Details,RelatedLink")] RssFeedViewModel rssFeedVm, HttpPostedFileBase imageFile)
        {
            if (!ModelState.IsValid)
            {
                return(View(rssFeedVm));
            }

            var newsFeed = Mapper.Map <NewsFeed>(rssFeedVm);

            newsFeed.NewsDate = DateTime.Now;
            if (imageFile != null && imageFile.FileName != null)
            {
                var imageMimeType = imageFile.ContentType;
                if (
                    !ImageProcessorUtils.ImageMimeTypes.Any(
                        mimeType => imageMimeType.Equals(mimeType, StringComparison.OrdinalIgnoreCase)))
                {
                    ModelState.AddModelError(string.Empty, string.Format(Resources.NotAnImage, imageFile.FileName));
                    return(RedirectToAction("Create"));
                }

                var imageStream = imageFile.InputStream;
                var imageBytes  = await imageStream.ToByteArrayAsync().ConfigureAwait(false);

                newsFeed.ImageData     = imageBytes;
                newsFeed.ImageMimeType = imageMimeType;
            }

            await _feedSource.AddNewsAsync(newsFeed).ConfigureAwait(false);

            TempData[TempDataContants.NotificationKey] = string.Format(Resources.NewsSuccessfullyCreated, newsFeed.Title);
            return(RedirectToAction("Index"));
        }
Beispiel #2
0
 public ViewResult Index(RssFeedViewModel viewModel)
 {
     try {
         if (!ModelState.IsValid)
         {
             throw new Exception();
         }
         if (viewModel.CSVFile != null)
         {
             string wwwRootPath = hostingEnvironment.WebRootPath;
             var    csvText     = _rssFeedRepository.ReadCSV(viewModel.CSVFile);
             string savedFile   = _rssFeedRepository.CreateCSVFileInRoot(wwwRootPath, viewModel.CSVFile.FileName, csvText);
             ViewBag.SavedFile = savedFile;
             return(View("ConvertBResult"));
         }
         string url       = viewModel.RSSFeedURl;
         var    feedItems = _rssFeedRepository.getFeedItemsFromURL(url);
         IEnumerable <FeedArticlesAndDetail> feedArticlesAndDetails = _rssFeedRepository.ConvertAResult(feedItems.ToList());
         return(View("ConvertAResult", feedArticlesAndDetails));
     }
     catch (Exception ex)
     {
         ViewBag.ErrorMessage = ex.Message;
         return(View("ErrorPage"));
     }
 }
        private string RenderModel(RssFeedViewModel model)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("<div class=\"rssfeedviewer\">");
            sb.Append("<div class=\"rssfeedviewerwrapper\">");
            if (model.ShowTitle)
            {
                sb.Append("<h4>" + HttpUtility.HtmlEncode(model.Channel.Title) + "</h4>");
            }
            if (model.ShowDescription)
            {
                sb.Append(model.Channel.Description);
            }
            sb.Append("<ul>");
            foreach (var item in model.Channel.GetChannelItems(model.MaxItems))
            {
                sb.Append("<li><a href=\"" + item.Link + "\">" + item.Title + "</a><br />");
                sb.Append(item.Description + "</li>");
            }
            sb.Append("</ul>");
            sb.Append("</div>");
            sb.Append("</div>");

            return(sb.ToString());
        }
        public async Task <ActionResult> Index(RssFeedViewModel model, string btnSearch)
        {
            try
            {
                IEnumerable <Domain.RssFeed> items = null;

                if (string.IsNullOrEmpty(btnSearch))
                {
                    items = await GetExternalRssList(model);

                    model.Search = string.Empty;
                }
                else
                {
                    if (model.Search == null)
                    {
                        model.Search = "";
                    }

                    items = _db.RssFeed.Where(x => x.Description.Contains(model.Search) ||
                                              x.Author.Contains(model.Search) ||
                                              x.Title.Contains(model.Search)).ToList();
                }

                model.Items = items.ToList();

                return(View(model));
            }
            catch (Exception ex)
            {
                ViewBag.Error = ex.Message;
                return(View(model));
            }
        }
        public RssFeedView(string url, string title)
        {
            InitializeComponent ();
            BindingContext = new RssFeedViewModel(url);
            Title = title;

            if (!CrossConnectivity.Current.IsConnected)
                DisplayAlert ("Error", "Revisa tu conexión de internet y vuelve a intentarlo.", "Aceptar");
        }
Beispiel #6
0
        public async Task <IHttpActionResult> Delete(RssFeedViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            await _rssFeedBuilder.UpdateAsync(model);

            return(Ok());
        }
Beispiel #7
0
 private static IEnumerable <SyndicationItem> GetFeedItems(RssFeedViewModel rssFeedViewModel, UrlHelper urlHelper)
 {
     return((from post in rssFeedViewModel.Posts
             let textContent = new TextSyndicationContent(post.PostContent)
                               let url = rssFeedViewModel.BlogUrl.TrimEnd('/') + urlHelper.RouteUrl("IndividualPost", new { year = post.PostYear,
                                                                                                                            month = post.PostMonth,
                                                                                                                            url = post.PostUrl })
                                         let date = post.PostEditedDate ?? post.PostAddedDate
                                                    select new SyndicationItem(post.PostTitle, textContent, new Uri(url), url, date)).ToList());
 }
        public IActionResult Index()
        {
            var RSSFeedData = this.rssFeedRepository.GetListedFeed("item");

            var model = new RssFeedViewModel()
            {
                RssList = RSSFeedData,
            };

            return(View(model));
        }
Beispiel #9
0
        public void Edit(RssFeedViewModel feed)
        {
            var entity = this.repository.GetById(feed.Id);

            if (entity != null)
            {
                entity.Caption = feed.Caption;
                entity.Uri     = feed.Link;
                this.repository.SaveChanges();
            }
        }
Beispiel #10
0
        public void Add(RssFeedViewModel newFeed)
        {
            if (newFeed == null)
            {
                throw new ArgumentNullException();
            }
            var newEntity = this.repository.Create();

            newEntity.Caption = newFeed.Caption;
            newEntity.Uri     = newFeed.Link;
            this.repository.Add(newEntity);
            this.repository.SaveChanges();
        }
        public ActionResult Index(RssFeedViewModel model)
        {
            if (model.URL == null)
            {
                throw new ArgumentException("Model state was invalid");
            }

            var RSSFeedData = this.rssFeedRepository.GetSpecificFeed(model.URL, "item");

            var viewModel = new RssFeedViewModel()
            {
                RssFeed = RSSFeedData,
                URL     = model.URL
            };

            return(View(viewModel));
        }
Beispiel #12
0
        static RssFeedFactory()
        {
            AutoMapperConfig.ConfigureViewModelMapping();

            FeedVms = new RssFeedViewModel[FeedCount];
            for (var i = 0; i < FeedCount; i++)
            {
                FeedVms[i] = new RssFeedViewModel(i, string.Format("title{0}", i), string.Format("details{0}", i),
                                                  string.Empty, DateTime.Now.AddMilliseconds(-i), false, string.Empty);
            }

            _Feeds = new NewsFeed[FeedCount];
            for (var i = 0; i < FeedCount; i++)
            {
                _Feeds[i] = Mapper.Map <NewsFeed>(FeedVms[i]);
            }
        }
        public IActionResult Index()
        {
            var model = new RssFeedViewModel();

            model.Search = "";

            if (_db.RssFeed.Any())
            {
                model.Items = _db.RssFeed.ToList();
            }

            var userData = _db.UserData.FirstOrDefault(x => x.Description == "RssFeed");

            if (userData != null)
            {
                model.Url = userData.Value;
            }

            return(View(model));
        }
Beispiel #14
0
        public async Task <IHttpActionResult> Put(RssFeedViewModel model)
        {
            if (String.IsNullOrEmpty(model.ContentSourceId) && !User.IsInRole(AppRoles.SystemAdmin))
            {
                if (String.IsNullOrEmpty(model.TeamId))
                {
                    ModelState.AddModelError("model.TeamId", "Team is Required");
                }
                if (String.IsNullOrEmpty(model.SchoolId))
                {
                    ModelState.AddModelError("model.SchoolId", "School is Required");
                }
                if (String.IsNullOrEmpty(model.SportId))
                {
                    ModelState.AddModelError("model.SportId", "Sport is Required");
                }

                if (!String.IsNullOrEmpty(model.TeamId))
                {
                    ModelState.Remove("model.SchoolId");
                    ModelState.Remove("model.SportId");
                }
                if (!String.IsNullOrEmpty(model.SchoolId))
                {
                    ModelState.Remove("model.TeamId");
                    ModelState.Remove("model.SportId");
                }
                if (!String.IsNullOrEmpty(model.SportId))
                {
                    ModelState.Remove("model.SchoolId");
                    ModelState.Remove("model.TeamId");
                }
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            await _rssFeedBuilder.UpdateAsync(model);

            return(Ok());
        }
Beispiel #15
0
        public static SyndicationFeed GetRssFeedData(RssFeedViewModel rssFeedViewModel, UrlHelper urlHelper)
        {
            var mostRecentPost     = rssFeedViewModel.Posts.FirstOrDefault();
            var lastUpdateDateTime = (mostRecentPost != null && mostRecentPost.PostEditedDate.HasValue) ? mostRecentPost.PostEditedDate.Value : DateTime.MinValue;
            var feed = new SyndicationFeed(rssFeedViewModel.BlogTitle,
                                           rssFeedViewModel.BlogCaption,
                                           new Uri(rssFeedViewModel.BlogUrl),
                                           string.Format("{0}{1}", DateTime.Now.ToString("MM_dd_yyyy"), DateTime.Now.ToBinary()),
                                           lastUpdateDateTime)
            {
                Copyright   = new TextSyndicationContent("Copyright " + DateTime.Now.Year),
                Description =
                    new TextSyndicationContent("This is the feed for " + rssFeedViewModel.BlogTitle),
                Generator       = rssFeedViewModel.BlogUrl,
                Items           = GetFeedItems(rssFeedViewModel, urlHelper),
                Language        = rssFeedViewModel.BlogLanguage,
                LastUpdatedTime = lastUpdateDateTime,
            };

            return(feed);
        }
        private async Task <IEnumerable <Domain.RssFeed> > GetExternalRssList(RssFeedViewModel model)
        {
            using (var client = new HttpClient())
            {
                var RssData = await client.GetStringAsync(model.Url);

                XDocument xml   = XDocument.Parse(RssData);
                var       items = (from x in xml.Descendants("item")
                                   select new Domain.RssFeed
                {
                    Title = (x.Element("title") != null ? (string)x.Element("title") : null),
                    Link = (x.Element("link") != null ? (string)x.Element("link") : null),
                    Description = (x.Element("description") != null ? (string)x.Element("description") : null),
                    DatePublish = (x.Element("pubDate") != null ? (string)x.Element("pubDate") : null),
                    Author = (x.Element("author") != null ? (string)x.Element("author") : null)
                });

                _db.RssFeed.RemoveRange(_db.RssFeed);
                await _db.RssFeed.AddRangeAsync(items);

                if (_db.UserData.Any())
                {
                    var userData = await _db.UserData.FirstOrDefaultAsync(x => x.Description == "RssFeed");

                    if (userData != null)
                    {
                        userData.Value = model.Url;
                        _db.UserData.Update(userData);
                    }
                }
                else
                {
                    await _db.UserData.AddAsync(new UserData { Description = "RssFeed", Value = model.Url });
                }

                await _db.SaveChangesAsync();

                return(items);
            }
        }
        public ActionResult Index(ContentBlock block)
        {
            var model = new RssFeedViewModel {
                Channel = new RSSChannel(Factory.CreateEventLogger())
            };

            if (block != null)
            {
                var feedUrl = block.BaseSettings.GetSettingOrEmpty("FeedUrl");
                model.Channel.LoadFromFeed(feedUrl);
                model.ShowTitle       = block.BaseSettings.GetBoolSetting("ShowTitle");
                model.ShowDescription = block.BaseSettings.GetBoolSetting("ShowDescription");
                var max = block.BaseSettings.GetIntegerSetting("MaxItems");
                if (max <= 0)
                {
                    max = 5;
                }
                model.MaxItems = max;
            }

            return(View(model));
        }
        //
        // GET: /ContentBlocks/RssFeedViewer/
        public ActionResult Index(ContentBlock block)
        {
            RssFeedViewModel model = new RssFeedViewModel();

            model.Channel = new RSSChannel(new MerchantTribe.Commerce.EventLog());

            if (block != null)
            {
                string feedUrl = block.BaseSettings.GetSettingOrEmpty("FeedUrl");
                model.Channel.LoadFromFeed(feedUrl);
                model.ShowTitle       = block.BaseSettings.GetBoolSetting("ShowTitle");
                model.ShowDescription = block.BaseSettings.GetBoolSetting("ShowDescription");
                int max = block.BaseSettings.GetIntegerSetting("MaxItems");
                if (max <= 0)
                {
                    max = 5;
                }
                model.MaxItems = max;
            }

            return(View(model));
        }
        public string Render(MerchantTribe.Commerce.MerchantTribeApplication app, dynamic viewBag, MerchantTribe.Commerce.Content.ContentBlock block)
        {
            RssFeedViewModel model = new RssFeedViewModel();

            model.Channel = new RSSChannel(new MerchantTribe.Commerce.EventLog());

            if (block != null)
            {
                string feedUrl = block.BaseSettings.GetSettingOrEmpty("FeedUrl");
                model.Channel.LoadFromFeed(feedUrl);
                model.ShowTitle       = block.BaseSettings.GetBoolSetting("ShowTitle");
                model.ShowDescription = block.BaseSettings.GetBoolSetting("ShowDescription");
                int max = block.BaseSettings.GetIntegerSetting("MaxItems");
                if (max <= 0)
                {
                    max = 5;
                }
                model.MaxItems = max;
            }

            return(RenderModel(model));
        }
Beispiel #20
0
        public async Task <ActionResult> EditAsync(
            [Bind(Include = "FeedId,Title,Details,RelatedLink")] RssFeedViewModel rssFeedVm, HttpPostedFileBase imageFile)
        {
            if (!ModelState.IsValid)
            {
                return(View(rssFeedVm));
            }

            var existingNews = await _feedSource.GetNewsAsync(rssFeedVm.FeedId).ConfigureAwait(false);

            var newsFeed = Mapper.Map <NewsFeed>(rssFeedVm);

            newsFeed.NewsDate = existingNews.NewsDate;
            if (imageFile != null && imageFile.FileName != null)
            {
                var imageStream = imageFile.InputStream;
                var imageBytes  = await imageStream.ToByteArrayAsync().ConfigureAwait(false);

                newsFeed.ImageData     = imageBytes;
                newsFeed.ImageMimeType = imageFile.ContentType;
            }
            else
            {
                newsFeed.ImageData     = existingNews.ImageData;
                newsFeed.ImageMimeType = existingNews.ImageMimeType;
            }

            var isSuccessfullyUpdated = await _feedSource.UpdateNewsAsync(newsFeed).ConfigureAwait(false);

            if (!isSuccessfullyUpdated)
            {
                ModelState.AddModelError(string.Empty, Resources.FailedToUpdate);
                return(View(rssFeedVm));
            }

            TempData[TempDataContants.NotificationKey] = string.Format(Resources.NewsSuccessfullyUpdated, newsFeed.Title);
            return(RedirectToAction("Index"));
        }
Beispiel #21
0
        public ActionResult Details(int rssFeedId, int recordCount)
        {
            RssFeedViewModel model = _rssFeedProvider.GetRssFeedById(rssFeedId, recordCount);

            return(View("Views/RssFeed.cshtml", model));
        }
Beispiel #22
0
        public async Task UpdateAsync(RssFeedViewModel model)
        {
            try
            {
                //Delete Keywords from Database
                var dbItem = await _repo.RssFeeds.GetByIdAsync(model.Id, m => m.Include(mm => mm.RssKeywords));

                if (model.DateDeletedUtc != null)
                {
                    var dbPosts = await _repo.Posts.Where(m => m.FeedId == model.Id).ToListAsync();

                    foreach (var post in dbPosts)
                    {
                        post.DateDeletedUtc = DateTime.UtcNow;
                    }
                    foreach (var post in dbPosts)
                    {
                        await _repo.Posts.AddOrUpdateAndSaveAsync(post);
                    }
                }

                while (dbItem.RssKeywords.Count > 0)
                {
                    dbItem.RssKeywords.Remove(dbItem.RssKeywords.FirstOrDefault());
                }
                await _repo.SaveAsync();

                var idType = 0;
                if (dbItem.TeamId == null && model.TeamId != null)
                {
                    idType = 1;
                }
                else if (dbItem.SchoolId == null && model.SchoolId != null)
                {
                    idType = 2;
                }
                else if (dbItem.SportId == null && model.SportId != null)
                {
                    idType = 3;
                }
                else if (model.SportId == null && model.TeamId == null && model.SchoolId == null)
                {
                    idType = 4;
                }

                dbItem = MapUpdate().CreateMapper().Map(model, dbItem);
                if (idType == 1)
                {
                    dbItem.SchoolId = null;
                    dbItem.SportId  = null;
                }
                else if (idType == 2)
                {
                    dbItem.TeamId  = null;
                    dbItem.SportId = null;
                }
                else if (idType == 3)
                {
                    dbItem.SchoolId = null;
                    dbItem.TeamId   = null;
                }
                else if (idType == 4)
                {
                    dbItem.TeamId   = null;
                    dbItem.SportId  = null;
                    dbItem.SchoolId = null;
                }


                await _repo.RssFeeds.AddOrUpdateAndSaveAsync(dbItem);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Beispiel #23
0
        public async Task AddAsync(RssFeedViewModel model, string userId)
        {
            //model.CreatedBy = userId;
            var currentUser = _repo.Users.Where(m => m.Id == userId).Include("ContentSource").FirstOrDefault();
            var idType      = 0;

            if (model.TeamId != null)
            {
                idType = 1;
            }
            else if (model.SchoolId != null)
            {
                idType = 2;
            }
            else
            {
                idType = 3;
            }

            //model.CreatedBy = currentUser.ContentSource.Id;
            if (ClaimsPrincipal.Current.IsInRole(AppRoles.SystemAdmin))
            {
                var dbItem2 = MapAdminAdd(userId).CreateMapper().Map <RssFeed>(model);
                if (idType == 1)
                {
                    dbItem2.SchoolId = null;
                    dbItem2.SportId  = null;
                }
                else if (idType == 2)
                {
                    dbItem2.TeamId  = null;
                    dbItem2.SportId = null;
                }
                else
                {
                    dbItem2.TeamId   = null;
                    dbItem2.SchoolId = null;
                }

                await _repo.RssFeeds.AddOrUpdateAndSaveAsync(dbItem2);

                return;
            }

            var dbItem = MapAdd(currentUser.ContentSourceId, userId).CreateMapper().Map <RssFeed>(model);

            if (idType == 1)
            {
                dbItem.SchoolId = null;
                dbItem.SportId  = null;
            }
            else if (idType == 2)
            {
                dbItem.TeamId  = null;
                dbItem.SportId = null;
            }
            else
            {
                dbItem.TeamId   = null;
                dbItem.SchoolId = null;
            }
            await _repo.RssFeeds.AddOrUpdateAndSaveAsync(dbItem);
        }
Beispiel #24
0
        public async Task <IHttpActionResult> Post(RssFeedViewModel model)
        {
            if (User.IsInRole("System_Admin"))
            {
                if (String.IsNullOrEmpty(model.TeamId))
                {
                    ModelState.AddModelError("model.TeamId", "Team is Required");
                }
                if (String.IsNullOrEmpty(model.SchoolId))
                {
                    ModelState.AddModelError("model.SchoolId", "School is Required");
                }
                if (String.IsNullOrEmpty(model.SportId))
                {
                    ModelState.AddModelError("model.SportId", "Sport is Required");
                }

                if (!String.IsNullOrEmpty(model.TeamId) || ClaimsPrincipal.Current.IsInRole("ContentSource"))
                {
                    ModelState.Remove("model.SchoolId");
                    ModelState.Remove("model.SportId");
                }
                if (!String.IsNullOrEmpty(model.SchoolId) || ClaimsPrincipal.Current.IsInRole("ContentSource"))
                {
                    ModelState.Remove("model.TeamId");
                    ModelState.Remove("model.SportId");
                }
                if (!String.IsNullOrEmpty(model.SportId) || ClaimsPrincipal.Current.IsInRole("ContentSource"))
                {
                    ModelState.Remove("model.SchoolId");
                    ModelState.Remove("model.TeamId");
                }
            }

            var userId = User.Identity.GetUserId();

            if (User.IsInRole("TeamAdmin"))
            {
                var teamId = _repo.TeamAdmins.Where(m => m.UserId == userId).FirstOrDefault().TeamId;
                model.TeamId = teamId;
            }
            if (User.IsInRole("SchoolAdmin"))
            {
                var schoolId = _repo.SchoolAdmins.Where(m => m.UserId == userId).FirstOrDefault().SchoolId;
                model.SchoolId = schoolId;
            }
            //try
            //{
            //	var currentUser = _repo.Users.Where(m => m.Id == userId).Include("ContentSource").FirstOrDefault();
            //	var name = currentUser.ContentSource.ContentSourceName;
            //	model.CreatedBy = name;

            //}
            //catch (Exception ex)
            //{

            //	throw;
            //}


            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            await _rssFeedBuilder.AddAsync(model, userId);

            return(Ok());
        }
        public RssFeedsPage()
        {
            InitializeComponent();

            BindingContext = viewModel = new RssFeedViewModel(Shared.Constants.CommandConstants.VIEWS.RssFeeds);
        }
Beispiel #26
0
        public async Task <IActionResult> Detail(string link, string sortType = SortTypes.None)
        {
            RssFeedViewModel viewModel = await _parser.ParseArticlesAsync(link, sortType);

            return(View(viewModel));
        }