public HttpResponseMessage ProcessChecked([FromBody]List<PostDetail> items) { try { if (items == null || items.Count == 0) throw new HttpResponseException(HttpStatusCode.ExpectationFailed); var action = Request.GetRouteData().Values["id"].ToString(); DateTime shared = DateTime.UtcNow; foreach (var item in items) { if (item.IsChecked) { if (action.ToLower() == "delete") { repository.Remove(item.Id); } else if (action.ToLower() == "share") { PostRepository repo = new PostRepository(); var post = repo.FindById(item.Id); string baseUrl = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.ApplicationPath.TrimEnd('/'); Task<bool> t1 = Task.Run(async () => { try { await Task.Delay(10000); var token = FacebookData.GetLatestAccessToken(); FacebookFactory.Initialize(token) .GetPageAuthorization(ConfigurationManager.AppSettings["FacebookPageName"].ToString(), ConfigurationManager.AppSettings["FacebookPageId"].ToString()) .PostToFanPage(post.Title, baseUrl + post.RelativeLink, baseUrl + post.MainImageUrl, post.Title, post.Title, string.Empty); FacebookFactory.Initialize(token).GetPageAuthorization(ConfigurationManager.AppSettings["FacebookPageName2"].ToString(), ConfigurationManager.AppSettings["FacebookPageId2"].ToString()) .PostToFanPage(post.Title, baseUrl + post.RelativeLink, baseUrl + post.MainImageUrl, post.Title, post.Title, string.Empty); shared = shared.AddMinutes(5); TwitterFactory.Initialize(ConfigurationManager.AppSettings["TwitterConsumerKey"].ToString(), ConfigurationManager.AppSettings["TwitterConsumerSecret"].ToString(), ConfigurationManager.AppSettings["TwitterToken"].ToString(), ConfigurationManager.AppSettings["TwitterTokenSecret"].ToString()) .SendMessage(post.Title + " #rollerderby " + baseUrl + post.RelativeLink); FacebookData.RecordNewFBShare(post.Id); } catch (Exception exception) { ErrorDatabaseManager.AddException(exception, GetType()); } return true; }); } else { repository.Update(item, action); } } } return Request.CreateResponse(HttpStatusCode.OK); } catch (UnauthorizedAccessException) { return Request.CreateResponse(HttpStatusCode.Unauthorized); } catch (Exception exception) { ErrorDatabaseManager.AddException(exception, GetType()); return Request.CreateResponse(HttpStatusCode.InternalServerError); } }
public HttpResponseMessage PublishPostToSocial(string r) { try { var dateAfter = DateTime.UtcNow.AddDays(-90); PostRepository repo = new PostRepository(); var posts = repo.FindPublic(1000).Select(x => x.Id).ToList(); var postId = FacebookData.GetRandomPostToSocialize(posts, dateAfter); var token = FacebookData.GetLatestAccessToken(); if (String.IsNullOrEmpty(token)) FacebookData.ResetFacebookConnection(); else { var post = repo.FindById(postId); string baseUrl = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.ApplicationPath.TrimEnd('/'); FacebookFactory.Initialize(token) .GetPageAuthorization(ConfigurationManager.AppSettings["FacebookPageName"].ToString(), ConfigurationManager.AppSettings["FacebookPageId"].ToString()) .PostToFanPage(post.Title, baseUrl + post.RelativeLink, baseUrl + post.MainImageUrl, post.Title, post.Title, string.Empty); FacebookFactory.Initialize(token).GetPageAuthorization(ConfigurationManager.AppSettings["FacebookPageName2"].ToString(), ConfigurationManager.AppSettings["FacebookPageId2"].ToString()) .PostToFanPage(post.Title, baseUrl + post.RelativeLink, baseUrl + post.MainImageUrl, post.Title, post.Title, string.Empty); TwitterFactory.Initialize(ConfigurationManager.AppSettings["TwitterConsumerKey"].ToString(), ConfigurationManager.AppSettings["TwitterConsumerSecret"].ToString(), ConfigurationManager.AppSettings["TwitterToken"].ToString(), ConfigurationManager.AppSettings["TwitterTokenSecret"].ToString()) .SendMessage(post.Title + " #rollerderby " + baseUrl + post.RelativeLink); } return Request.CreateResponse(HttpStatusCode.OK); } catch (UnauthorizedAccessException) { return Request.CreateResponse(HttpStatusCode.Unauthorized); } catch (Exception exception) { ErrorDatabaseManager.AddException(exception, GetType()); return Request.CreateResponse(HttpStatusCode.InternalServerError); } }