public ActionResult Add(SocialPageFormViewModel model) { bool error = false; var listaSocialNetworks = _context.SocialNetworks.ToList(); if (!ModelState.IsValid) { model.SocialNetworks = listaSocialNetworks; return(View("Add", model)); } try { switch (model.SocialNetworkId) { case 1: addFacebookPage(model); break; case 2: addTwitterFollow(model); break; case 3: addYoutubeSubscriber(model); break; default: throw new Exception("Please enter valid values"); } } catch (BadLinkException e) { ModelState.AddModelError("", e.Message); error = true; } catch (LinkAlreadyExistException e) { ModelState.AddModelError("", e.Message); error = true; } catch (Exception) { ModelState.AddModelError("", "Please add a valid page"); error = true; } if (error) { model.SocialNetworks = listaSocialNetworks; return(View("Add", model)); } _context.SaveChanges(); return(RedirectToAction("index", "home")); }
public ActionResult Add() { var listaSocialNetworks = _context.SocialNetworks.ToList(); var model = new SocialPageFormViewModel() { SocialNetworks = listaSocialNetworks, Cpc = 10 }; return(View("Add", model)); }
private void addTwitterFollow(SocialPageFormViewModel model) { var username = Regex.Match(model.Url, @"(?<=\.com\/)[^\/\s]+").ToString(); if (String.IsNullOrWhiteSpace(username)) { throw new BadLinkException("Please enter a valid twitter url"); } var user = _twitterContext.User.Where(u => u.Type == UserType.Show && u.ScreenName == username).SingleOrDefault(); if (user == null || user.Protected) { throw new BadLinkException("This user doesn't exist or it's private"); } var currentUserId = User.Identity.GetUserId(); var twitter = _context.Twitters.SingleOrDefault(twt => twt.TwitterUsername == username); if (twitter != null) { if (twitter.UserId.Equals(currentUserId)) { twitter.Deleted = false; } else { throw new LinkAlreadyExistException("This twitter accounts is already added on this site"); } } else { TwitterPage twitterPage = new TwitterPage() { Url = "http://twitter.com/" + username, TwitterUsername = username, Name = model.Name, Cpc = model.Cpc, UserId = currentUserId }; _context.Twitters.Add(twitterPage); } }
private void addFacebookPage(SocialPageFormViewModel model) { var url = Regex.Match(model.Url, @"http(s)?:\/\/(www\.)?facebook\.com\/[^\/\s]+").ToString(); if (String.IsNullOrWhiteSpace(url)) { throw new BadLinkException("Please enter a valid facebook page"); } FacebookGraph fbGraph = new FacebookGraph(url); FacebookPage fbPage = new FacebookPage() { Name = model.Name, Url = url, Cpc = model.Cpc }; var facebookId = fbGraph.takeFacebookId(); var fbAlreadyAdded = _context.Facebooks.SingleOrDefault(fb => fb.FacebookCode == facebookId); var currentUserId = User.Identity.GetUserId(); if (fbAlreadyAdded == null) { fbPage.FacebookCode = facebookId; fbPage.UserId = currentUserId; _context.Facebooks.Add(fbPage); } else { if (fbAlreadyAdded.UserId == currentUserId) { fbAlreadyAdded.Deleted = false; } else { throw new LinkAlreadyExistException("Link is already added on this social network"); } } }
private void addYoutubeSubscriber(SocialPageFormViewModel model) { var url = Regex.Match(model.Url, @"http(s):\/\/(www\.)youtube\.com\/(user|channel)\/[^\/\s]+").ToString(); string usernameOrId = Regex.Match(url, @"(?<=channel\/|user\/)[^\/\s]+").ToString(); if (String.IsNullOrWhiteSpace(url) || String.IsNullOrWhiteSpace(usernameOrId)) { throw new BadLinkException("This youtube link isn't good. Try to add something like this https://youtube.com/channel/youtube"); } YoutubePage newYoutubePage = new YoutubePage() { Cpc = model.Cpc, Name = model.Name, Url = url }; var youtubeService = new YouTubeService(new BaseClientService.Initializer() { ApiKey = "AIzaSyDp5rhMI0dW7uHIYhq0_iLS9vW5pgy1oy0", }); var request = youtubeService.Channels.List("statistics"); if (model.Url.Contains("channel")) { request.Id = usernameOrId; } else { request.ForUsername = usernameOrId; } var response = request.Execute(); var userRetrieveFromYt = response.Items.SingleOrDefault(); if (userRetrieveFromYt == null) { throw new BadLinkException("This user doesn't exist"); } else { if (userRetrieveFromYt.Statistics.HiddenSubscriberCount == true) { throw new BadLinkException("You must not hide the subscribers counter"); } var currentUserId = User.Identity.GetUserId(); newYoutubePage.UserId = currentUserId; newYoutubePage.YoutubeUsername = userRetrieveFromYt.Id; var ytAlreadyAdded = _context.Youtubes.SingleOrDefault(y => y.YoutubeUsername == newYoutubePage.YoutubeUsername); if (ytAlreadyAdded == null) { _context.Youtubes.Add(newYoutubePage); } else { if (ytAlreadyAdded.UserId.Equals(currentUserId)) { ytAlreadyAdded.Deleted = false; } else { throw new LinkAlreadyExistException("This channel is already added on this site"); } } } }