public FeedNew Get([FromServices] DataContext dataContext)
        {
            //needs data
            List <Need>  needs = dataContext.Needs.Where(n => n.StatusId == (int)PostStatus.Published).Include(n => n.NeedPpeTypes).ToList();
            List <NeedM> ints  = needs.SelectToList(NeedM.ProjectFromDb);
            Dictionary <string, List <Point> > needPoints = Ppe.EmptyNeedsPointsDic();

            foreach (NeedM need in ints)
            {
                Need_ToFeed.AddPoints(need, needPoints);
            }

            MapData needsData = new MapData();

            needsData.Posts       = ints.Where(p => p.PpeTypes.Count > 0).SelectToList(n => Need_ToFeed.ToPost(n, userLoggedIn));
            needsData.PointsList  = needPoints.Select(ToPointsList).ToList();
            needsData.PointsCount = needPoints.Values.Sum(v => v.Count);

            //needs met data
            List <Need>  needsMet = dataContext.Needs.Where(n => n.StatusId == (int)PostStatus.Published).Include(n => n.NeedPpeTypes).ToList();
            List <NeedM> intsMet  = needsMet.SelectToList(NeedM.ProjectFromDbMet);
            Dictionary <string, List <Point> > needMetPoints = Ppe.EmptyNeedsPointsDic();

            foreach (NeedM need in intsMet)
            {
                NeedMet_ToFeed.AddPoints(need, needMetPoints);
            }

            MapData needsMetData = new MapData();

            needsMetData.Posts       = intsMet.Where(p => p.PpeTypes.Count > 0).SelectToList(n => NeedMet_ToFeed.ToPost(n, userLoggedIn));
            needsMetData.PointsList  = needMetPoints.Select(ToPointsList).ToList();
            needsMetData.PointsCount = needMetPoints.Values.Sum(v => v.Count);


            List <Supplier> suppliers = dataContext.Suppliers.Where(n => n.StatusId == (int)PostStatus.Published).Include(n => n.SupplierPpeTypes).ToList();
            List <SupplyM>  intsSups  = suppliers.SelectToList(SupplyM.ProjectFromDb);
            Dictionary <string, List <Point> > supplyPoints = Ppe.EmptyNeedsPointsDic();

            foreach (SupplyM supply in intsSups)
            {
                Supply_ToFeed.AddPoints(supply, supplyPoints);
            }

            MapData suppliesData = new MapData();

            suppliesData.Posts       = intsSups.SelectToList(s => Supply_ToFeed.ToPost(s, userLoggedIn));
            suppliesData.PointsList  = supplyPoints.Select(ToPointsList).ToList();
            suppliesData.PointsCount = supplyPoints.Values.Sum(v => v.Count);

            var respVal = new FeedNew {
                Needs = needsData, NeedsMet = needsMetData, Supplies = suppliesData
            };

            return(respVal);
        }
            public static void AddPoints(SupplyM s, Dictionary <string, List <Point> > dict)
            {
                List <string> allPpeTypes = s.PpeTypes.ToList();

                foreach (string ppeType in allPpeTypes)
                {
                    string className = Ppe.TypesToClasses[ppeType];
                    string need      = Ppe.NeedFromType(ppeType, s.OtherPpeTypes);

                    Point p = new Point {
                        Location  = s.LocationArry,
                        PopupHtml = $"<div class='supply'><h1>Supply</h1>{s.WebsiteHtml}{HtmlHelp.LabelledTag("PPE:", HtmlHelp.ColorBoxHtml(need, className))}{HtmlHelp.LabelledTag("Organisation:", s.Organisation)}{s.PostedHtml}</div>"
                    };

                    dict[ppeType].Add(p);
                }
            }