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