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);
        }
    }