//pass the chart object as json to the index view to craete a chart
        public async System.Threading.Tasks.Task <JsonResult> LeavesAppliedByMonth()
        {
            using (HttpClient client = new HttpClient())
            {
                client.BaseAddress = new Uri(BaseUrl);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/Json"));

                var response = await client.GetAsync("Leaves/LeavesAppliedMonthly");

                var responseData = response.Content.ReadAsStringAsync().Result;
                appliedLeavesPercentViewMonthly LeavePercentMonth = JsonConvert.DeserializeObject <appliedLeavesPercentViewMonthly>(responseData);

                Chart _chart = new Chart();
                _chart.labels   = new string[] { "January", "Febrauary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };
                _chart.datasets = new List <Datasets>();
                List <Datasets> _dataSet = new List <Datasets>();
                _dataSet.Add(new Datasets()
                {
                    label = "Applied Leaves by Month",
                    data  = new int[] { (int)Math.Round(LeavePercentMonth.January, 0),
                                        (int)Math.Round(LeavePercentMonth.February, 0),
                                        (int)Math.Round(LeavePercentMonth.March, 0),
                                        (int)Math.Round(LeavePercentMonth.April, 0),
                                        (int)Math.Round(LeavePercentMonth.May, 0),
                                        (int)Math.Round(LeavePercentMonth.June, 0),
                                        (int)Math.Round(LeavePercentMonth.July, 0),
                                        (int)Math.Round(LeavePercentMonth.August, 0),
                                        (int)Math.Round(LeavePercentMonth.September, 0),
                                        (int)Math.Round(LeavePercentMonth.October, 0),
                                        (int)Math.Round(LeavePercentMonth.November, 0),
                                        (int)Math.Round(LeavePercentMonth.December, 0) },
                    backgroundColor = new string[] { "#f4424b", "#5e4e84", "#5d7572", "#d2d615", "#1b0a66", "#05af57", "#177209", "#afe25d", "#9aa870", "#a2a2d8", "#e80909", "#5fa86d" },
                    borderColor     = new string[] { "#00ff00", "#0000FF" },
                    borderWidth     = "1"
                });
                _chart.datasets = _dataSet;

                return(Json(_chart, JsonRequestBehavior.AllowGet));
            }
        }
        public HttpResponseMessage GetMonthly()
        {
            try
            {
                using (ebuilderEntities entities = new ebuilderEntities())
                {
                    var allDutyLeaves = entities.duty_leave.Where(l => l.date.Year == DateTime.Now.Year).ToList();
                    var dutyLeavePercentageByMonth = new appliedLeavesPercentViewMonthly();

                    for (int month = 1; month <= 12; month++)
                    {
                        switch (month)
                        {
                        case 1:
                            int leaveCountJan = allDutyLeaves.Where(l => l.date.Month == 1).ToList().Count;
                            dutyLeavePercentageByMonth.January = Math.Round(((double)leaveCountJan / allDutyLeaves.Count * 100), 2);
                            break;

                        case 2:
                            int leaveCountFeb = allDutyLeaves.Where(l => l.date.Month == 2).ToList().Count;
                            dutyLeavePercentageByMonth.February = Math.Round(((double)leaveCountFeb / allDutyLeaves.Count * 100), 2);
                            break;

                        case 3:
                            int leaveCountMar = allDutyLeaves.Where(l => l.date.Month == 3).ToList().Count;
                            dutyLeavePercentageByMonth.March = Math.Round(((double)leaveCountMar / allDutyLeaves.Count * 100), 2);
                            break;

                        case 4:
                            int leaveCountApr = allDutyLeaves.Where(l => l.date.Month == 4).ToList().Count;
                            dutyLeavePercentageByMonth.April = Math.Round(((double)leaveCountApr / allDutyLeaves.Count * 100), 2);
                            break;

                        case 5:
                            int leaveCountMay = allDutyLeaves.Where(l => l.date.Month == 5).ToList().Count;
                            dutyLeavePercentageByMonth.May = Math.Round(((double)leaveCountMay / allDutyLeaves.Count * 100), 2);
                            break;

                        case 6:
                            int leaveCountJun = allDutyLeaves.Where(l => l.date.Month == 6).ToList().Count;
                            dutyLeavePercentageByMonth.June = Math.Round(((double)leaveCountJun / allDutyLeaves.Count * 100), 2);
                            break;

                        case 7:
                            int leaveCountJul = allDutyLeaves.Where(l => l.date.Month == 7).ToList().Count;
                            dutyLeavePercentageByMonth.July = Math.Round(((double)leaveCountJul / allDutyLeaves.Count * 100), 2);
                            break;

                        case 8:
                            int leaveCountAug = allDutyLeaves.Where(l => l.date.Month == 8).ToList().Count;
                            dutyLeavePercentageByMonth.August = Math.Round(((double)leaveCountAug / allDutyLeaves.Count * 100), 2);
                            break;

                        case 9:
                            int leaveCountSep = allDutyLeaves.Where(l => l.date.Month == 9).ToList().Count;
                            dutyLeavePercentageByMonth.September = Math.Round(((double)leaveCountSep / allDutyLeaves.Count * 100), 2);
                            break;

                        case 10:
                            int leaveCountOct = allDutyLeaves.Where(l => l.date.Month == 10).ToList().Count;
                            dutyLeavePercentageByMonth.October = Math.Round(((double)leaveCountOct / allDutyLeaves.Count * 100), 2);
                            break;

                        case 11:
                            int leaveCountNov = allDutyLeaves.Where(l => l.date.Month == 11).ToList().Count;
                            dutyLeavePercentageByMonth.November = Math.Round(((double)leaveCountNov / allDutyLeaves.Count), 2);
                            break;

                        case 12:
                            int leaveCountDec = allDutyLeaves.Where(l => l.date.Month == 12).ToList().Count;
                            dutyLeavePercentageByMonth.December = Math.Round(((double)leaveCountDec / allDutyLeaves.Count * 100), 2);
                            break;
                        }
                    }
                    return(Request.CreateResponse(HttpStatusCode.OK, dutyLeavePercentageByMonth));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
            }
        }