public IActionResult Get([FromRoute] Guid organizationId, [FromQuery] NotificationFilters filters)
 {
     return(Ok());
 }
        public NotificationFilters GetAvailableNotificationFilters(GetAvailableNotificationFiltersRequestData filter_req)
        {
            NotificationFilters notiFilters = new NotificationFilters();
            string userName;

            if (HttpContext.Current.Request.UrlReferrer.Host.Contains("localhost") && HttpContext.Current.Request.UrlReferrer.Port == 51268)
            {
                userName = "******";// HttpContext.Current.User.Identity.Name;
            }
            else
            {
                userName = HttpContext.Current.User.Identity.Name;
            }
            using (SqlConnection sqlCon = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["CC_ProdConn"].ConnectionString))
            {
                SqlCommand sq = new SqlCommand("[getNotificationFilters]");
                sq.Connection  = sqlCon;
                sq.CommandType = CommandType.StoredProcedure;

                if (filter_req.filters != null)
                {
                    if (filter_req.filters.apps != null && filter_req.filters.apps.Count > 0)
                    {
                        var preparedLst = new StringBuilder();
                        foreach (var value in filter_req.filters.apps)
                        {
                            preparedLst.Append("'" + value + "',");
                        }
                        sq.Parameters.AddWithValue("@apps", preparedLst.ToString().Trim(Convert.ToChar(",")));
                    }
                    //sq.Parameters.AddWithValue("apps", filter_req.filters.apps);
                    if (filter_req.filters.supervisors != null && filter_req.filters.supervisors.Count > 0)
                    {
                        var preparedLst = new StringBuilder();
                        foreach (var value in filter_req.filters.supervisors)
                        {
                            preparedLst.Append("'" + value + "',");
                        }
                        sq.Parameters.AddWithValue("@supervisors", preparedLst.ToString().Trim(Convert.ToChar(",")));
                    }
                    //sq.Parameters.AddWithValue("supervisors", (filter_req.filters.supervisors));
                    if (filter_req.filters.scorecards != null && filter_req.filters.scorecards.Count > 0)
                    {
                        var preparedLst = new StringBuilder();
                        foreach (var value in filter_req.filters.scorecards)
                        {
                            preparedLst.Append("'" + value + "',");
                        }
                        sq.Parameters.AddWithValue("@scorecards", preparedLst.ToString().Trim(Convert.ToChar(",")));
                    }
                    //sq.Parameters.AddWithValue("scorecards", (filter_req.filters.scorecards));
                    if (filter_req.filters.QAs != null && filter_req.filters.QAs.Count > 0)
                    {
                        var preparedLst = new StringBuilder();
                        foreach (var value in filter_req.filters.QAs)
                        {
                            preparedLst.Append("'" + value + "',");
                        }
                        sq.Parameters.AddWithValue("@QAs", preparedLst.ToString().Trim(Convert.ToChar(",")));
                    }
                    //sq.Parameters.AddWithValue("QAs", (filter_req.filters.QAs));
                    if (filter_req.filters.teamLeads != null && filter_req.filters.teamLeads.Count > 0)
                    {
                        var preparedLst = new StringBuilder();
                        foreach (var value in filter_req.filters.teamLeads)
                        {
                            preparedLst.Append("'" + value + "',");
                        }
                        sq.Parameters.AddWithValue("@teamLeads", preparedLst.ToString().Trim(Convert.ToChar(",")));
                    }
                    //sq.Parameters.AddWithValue("teamLeads",(filter_req.filters.teamLeads));
                    if (filter_req.filters.calibrators != null && filter_req.filters.calibrators.Count > 0)
                    {
                        var preparedLst = new StringBuilder();
                        foreach (var value in filter_req.filters.calibrators)
                        {
                            preparedLst.Append("'" + value + "',");
                        }
                        sq.Parameters.AddWithValue("@calibrators", preparedLst.ToString().Trim(Convert.ToChar(",")));
                    }
                    //sq.Parameters.AddWithValue("calibrators", (filter_req.filters.calibrators));
                    sq.Parameters.AddWithValue("filterByDateClosed", filter_req.filters.filterByDateClosed);
                }
                sq.Parameters.AddWithValue("start", filter_req.range.start);
                sq.Parameters.AddWithValue("end", filter_req.range.end);
                sq.Parameters.AddWithValue("username", userName);
                sq.CommandTimeout = int.MaxValue;
                sqlCon.Open();

                SqlDataAdapter adapter = new System.Data.SqlClient.SqlDataAdapter(sq);
                DataSet        ds      = new DataSet();
                adapter.Fill(ds);
                DataTable notify_dt = ds.Tables[0];

                //apps

                List <FilterItem> fitems = new List <FilterItem>();
                notiFilters.filters = new NotiFilters();
                foreach (DataRow dr in notify_dt.Rows)
                {
                    FilterItem fi = new FilterItem
                    {
                        name  = dr.Field <string>("appname"),
                        id    = dr.Field <string>("appname"),
                        count = dr.Field <int>("count")
                    };

                    fitems.Add(fi);
                }

                notiFilters.filters.apps = fitems;

                fitems = new List <FilterItem>();
                foreach (DataRow dr in ds.Tables[1].Rows)
                {
                    FilterItem fi = new FilterItem
                    {
                        name  = dr.Field <string>("agent_group"),
                        id    = dr.Field <string>("agent_group"),
                        count = dr.Field <int>("count")
                    };

                    fitems.Add(fi);
                }

                notiFilters.filters.supervisors = fitems;

                fitems = new List <FilterItem>();
                foreach (DataRow dr in ds.Tables[2].Rows)
                {
                    FilterItem fi = new FilterItem
                    {
                        name  = dr.Field <string>("scorecard_name"),
                        id    = dr.Field <int>("scorecard"),
                        count = dr.Field <int>("count")
                    };

                    fitems.Add(fi);
                }

                notiFilters.filters.scorecards = fitems;



                fitems = new List <FilterItem>();
                foreach (DataRow dr in ds.Tables[3].Rows)
                {
                    FilterItem filterItem = new FilterItem
                    {
                        name  = dr.Field <string>("QA"),
                        id    = dr.Field <string>("QA"),
                        count = dr.Field <int>("count")
                    };


                    fitems.Add(filterItem);
                }

                notiFilters.filters.QAs = fitems;



                fitems = new List <FilterItem>();
                foreach (DataRow dr in ds.Tables[4].Rows)
                {
                    FilterItem fi = new FilterItem
                    {
                        name  = dr.Field <string>("team_Lead"),
                        id    = dr.Field <string>("team_Lead"),
                        count = dr.Field <int>("count")
                    };

                    fitems.Add(fi);
                }

                notiFilters.filters.teamLeads = fitems;

                fitems = new List <FilterItem>();
                foreach (DataRow dr in ds.Tables[5].Rows)
                {
                    FilterItem fi = new FilterItem
                    {
                        name  = dr.Field <string>("calibrator"),
                        id    = dr.Field <string>("calibrator"),
                        count = dr.Field <int>("count")
                    };

                    fitems.Add(fi);
                }

                notiFilters.filters.calibrators = fitems;

                List <Count> counts = new List <Count>();
                foreach (DataRow dr in ds.Tables[6].Rows)
                {
                    notiFilters.countsFiltered = dr.Field <int>("filtered_total");
                    notiFilters.countsTotal    = dr.Field <int>("total");
                }

                return(notiFilters);
            }
        }