public string GetLikesOnPosts(int UserId, string StartDate, string EndDate, string ChartType)
        {
            List <ReportsGraph> ListReportsGraph = null;
            ReportsGraph        ReportsGraph     = null;
            var chartTestlist = new List <ChartTest>();
            var utcNow        = DateTime.UtcNow.Date;
            List <smSocialMediaProfile> listSocialMedia = _scheduleService.GetAllSocialMediaAccountByUserId(UserId);
            List <smPost> Post = null;

            var currentDate = DateTime.Now.Date;
            var SDate       = !string.IsNullOrEmpty(StartDate) ? Convert.ToDateTime(StartDate) : currentDate.AddMonths(-1);
            var EDate       = (!string.IsNullOrEmpty(EndDate) ? Convert.ToDateTime(EndDate) : currentDate).Date;

            //
            // End of day
            EDate = EDate.AddDays(1).AddTicks(-1);

            string[] MonthArray = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
            //var ChartType = "Day"; //Request.QueryString["ChartType"];
            var           CalendarType = Request.QueryString["CalendarType"];
            List <smPost> listPost     = _scheduleService.GetAllPostListByUserId(UserId, SDate, EDate);

            ListReportsGraph = new List <ReportsGraph>();
            if (ChartType == "Likes")
            {
                foreach (var item in listPost)
                {
                    ReportsGraph             = new ReportsGraph();
                    ReportsGraph.Count       = item.LikesCount;
                    ReportsGraph.Date        = "P" + item.PostId.ToString();
                    ReportsGraph.TrackerName = "Likes";
                    ListReportsGraph.Add(ReportsGraph);
                }
            }
            else
            {
                foreach (var item in listPost)
                {
                    ReportsGraph             = new ReportsGraph();
                    ReportsGraph.Count       = item.CommentsCount;
                    ReportsGraph.Date        = "P" + item.PostId.ToString();
                    ReportsGraph.TrackerName = "Comments";
                    ListReportsGraph.Add(ReportsGraph);
                }
            }
            var Serializer = new JavaScriptSerializer();

            return(Serializer.Serialize(ListReportsGraph));
        }
        public string GetPostDetailsChart(int UserId, string StartDate, string EndDate, string ChartType)
        {
            List <ReportsGraph> ListReportsGraph = null;
            ReportsGraph        ReportsGraph     = null;
            var chartTestlist = new List <ChartTest>();
            var utcNow        = DateTime.UtcNow.Date;
            List <smSocialMediaProfile> listSocialMedia = _scheduleService.GetAllSocialMediaAccountByUserId(UserId);
            List <smPost> Post = null;

            var currentDate = DateTime.Now.Date;
            var SDate       = !string.IsNullOrEmpty(StartDate) ? Convert.ToDateTime(StartDate) : currentDate.AddMonths(-1);
            var EDate       = (!string.IsNullOrEmpty(EndDate) ? Convert.ToDateTime(EndDate) : currentDate).Date;

            //
            // End of day
            EDate = EDate.AddDays(1).AddTicks(-1);

            string[] MonthArray = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
            //var ChartType = "Day"; //Request.QueryString["ChartType"];
            var CalendarType = Request.QueryString["CalendarType"];

            List <smPost> listPost = _scheduleService.GetAllPostListByUserId(UserId, SDate, EDate);

            ListReportsGraph = new List <ReportsGraph>();

            if (listPost.Count > 0)
            {
                if (ChartType == "Day")
                {
                    foreach (var item in listSocialMedia)
                    {
                        var test = new ChartTest {
                            SourceName = item.SocialMedia, DataList = new List <Data>()
                        };
                        for (var i = 31; i >= 1; i--)
                        {
                            var filtered = listPost.Where(m => m.SocialMediaProfileId == item.Fid).ToList();
                            var cDate    = utcNow.AddDays(-i + 1).Date;
                            Post = filtered.Where(m => m.PostDate.Date >= cDate && m.PostDate.Date < cDate.AddDays(1)).ToList();
                            var data = new Data
                            {
                                Date  = utcNow.AddDays(-i + 1).Day + " " + MonthArray[utcNow.AddDays(-i + 1).Month - 1],
                                Count = Post.Count > 0 ? Post.Count : 0
                            };
                            test.DataList.Add(data);
                        }
                        chartTestlist.Add(test);
                    }
                }
                else if (ChartType == "Week")
                {
                    foreach (var item in listSocialMedia)
                    {
                        var test = new ChartTest {
                            SourceName = item.SocialMedia, DataList = new List <Data>()
                        };
                        for (var i = 35; i >= 0; i -= 7)
                        {
                            var filtered = listPost.Where(m => m.SocialMediaProfileId == item.Fid).ToList();
                            Post =
                                filtered.Where(
                                    m =>
                                    m.PostDate.Date <= utcNow.AddDays(-i).Date&&
                                    m.PostDate.Date >= utcNow.AddDays(-(i + 7)).Date).ToList();

                            var data = new Data
                            {
                                Date    = utcNow.AddDays(-i).Date.Day + " " + MonthArray[utcNow.AddDays(-i).Month - 1],
                                Count   = Post.Count,
                                ToolTip =
                                    utcNow.AddDays(-(i + 7)).DayOfWeek + ", " + utcNow.AddDays(-(i + 7)).Day + ", " +
                                    MonthArray[utcNow.AddDays(-(i + 7)).Month - 1] + "<br/>Keyword Tracker: " +
                                    Post.Count
                            };

                            test.DataList.Add(data);
                        }
                        chartTestlist.Add(test);
                    }
                }
                else if (ChartType == "Month")
                {
                    var date = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, 1);
                    foreach (var item in listSocialMedia)
                    {
                        var test = new ChartTest {
                            SourceName = item.SocialMedia, DataList = new List <Data>()
                        };
                        var data = new Data {
                            Date = date.Day + " " + MonthArray[date.AddMonths(-1).Month - 1]
                        };
                        var filtered = listPost.Where(m => m.SocialMediaProfileId == item.Fid).ToList();
                        Post =
                            filtered.Where(m => m.PostDate.Date <= date && m.PostDate.Date >= date.AddMonths(-1))
                            .ToList();
                        data.Count = Post.Count;
                        test.DataList.Add(data);

                        data      = new Data();
                        data.Date = "1 " + MonthArray[DateTime.UtcNow.Month - 1];
                        var Filtered1 = listPost.Where(m => m.SocialMediaProfileId == item.Fid).ToList();
                        Post       = Filtered1.Where(m => m.PostDate.Date >= date.Date).ToList();
                        data.Count = Post.Count;
                        test.DataList.Add(data);
                        chartTestlist.Add(test);
                    }
                }

                else if (ChartType == "Custom")
                {
                    var DateDiff = EDate >= SDate?Convert.ToInt32((EDate - SDate).TotalDays) : 0;

                    foreach (var item in listSocialMedia)
                    {
                        var Test = new ChartTest();
                        Test.SourceName = item.SocialMedia;
                        Test.DataList   = new List <Data>();
                        Data data = null;
                        for (var i = DateDiff + 1; i >= 1; i--)
                        {
                            data = new Data
                            {
                                Date = EDate.AddDays(-i + 1).Day + " " + MonthArray[EDate.AddDays(-i + 1).Month - 1]
                            };


                            var Filtered = listPost.Where(m => m.SocialMediaProfileId == item.Fid).ToList();
                            var cDate    = EDate.AddDays(-i + 1).Date;
                            Post =
                                Filtered.Where(m => m.PostDate.Date >= cDate && m.PostDate.Date < cDate.AddDays(1)).ToList();
                            data.Count = Post.Count > 0 ? Post.Count : 0;
                            Test.DataList.Add(data);
                        }
                        chartTestlist.Add(Test);
                    }
                }
            }
            var Serializer = new JavaScriptSerializer();

            return(Serializer.Serialize(chartTestlist));
        }