public async Task <List <Request_NEW> > populateReqsAsync() { var reqData = await firebaseClient .Child("requests") .OnceAsync <IDictionary <string, Object> >(); List <items> itemListN = new List <items>(); var fbItemList = await firebaseClient .Child("items") .OnceAsync <items>(); foreach (var item in fbItemList) { items itemActual = item.Object; itemActual.ID = item.Key; itemListN.Add(itemActual); } List <Request_NEW> reqListN = new List <Request_NEW>(); foreach (var area in reqData) { Request_NEW req = new Request_NEW(); req.ZoneID = area.Key; foreach (var requestID in area.Object) { Request currReq = JsonConvert.DeserializeObject <Request>(requestID.Value.ToString()); currReq.ID = requestID.Key; foreach (var item in currReq.Contents) { items itemF = itemListN.Find(x => x.ID == item.Key); items itemN = new items(itemF.BgCol, itemF.Icon, itemF.Name, itemF.Name_CL, itemF.Requested, item.Value, itemF.Limit); items itemR = new items(itemF.BgCol, itemF.Icon, itemF.Name, itemF.Name_CL, itemF.Requested, item.Value, itemF.Limit); itemN.ID = item.Key; itemR.ID = item.Key; currReq.addItem(itemN); req.addItem(itemR); } req.ReqList.Add(currReq); } reqListN.Add(req); } reqList = reqListN; itemList = itemListN; return(reqListN); }
public ArraySegment <byte> toReqAsync(FirebaseObject <IDictionary <string, object> > d) { //check if request in list Request_NEW req = new Request_NEW(); bool success = false; req.ZoneID = d.Key; req.ReqList.Clear(); req.ItemList.Clear(); foreach (var singularRequest in d.Object) { Request currReq; if (singularRequest.Value.ToString() == "System.Object") { currReq = firebaseClient .Child("requests") .Child(req.ZoneID) .Child(singularRequest.Key) .OnceSingleAsync <Request>() .Result; } else { currReq = JsonConvert.DeserializeObject <Request>(singularRequest.Value.ToString()); } currReq.ID = singularRequest.Key; foreach (var item in currReq.Contents) { items itemF = itemList.Find(x => x.ID == item.Key); items itemN = new items(itemF.BgCol, itemF.Icon, itemF.Name, itemF.Name_CL, item.Value, itemF.Requested, itemF.Limit); items itemR = new items(itemF.BgCol, itemF.Icon, itemF.Name, itemF.Name_CL, item.Value, itemF.Requested, itemF.Limit); itemN.ID = item.Key; itemR.ID = item.Key; req.addItem(itemR); } req.ReqList.Add(currReq); } reqList.RemoveAll(x => x.ZoneID == req.ZoneID); reqList.Add(req); ArraySegment <byte> bruh = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(req)); return(bruh); }
public async Task getDataAsync() { Request_NEW req = new Request_NEW(); var subscription = firebaseClient .Child("requests") .AsObservable <IDictionary <string, object> >() .Subscribe(d => { if (d.EventType == Firebase.Database.Streaming.FirebaseEventType.InsertOrUpdate) { ArraySegment <Byte> segment = toReqAsync(d); _context.Clients.All.SendAsync("getData", segment); } else { _context.Clients.All.SendAsync("delData", checkNDelete(d)); } }); }
public async Task <AreaRoot> getUserRequests() { SubzoneList SZList = JsonConvert.DeserializeObject <SubzoneList>(System.IO.File.ReadAllText(@"wwwroot/subzones.geojson")); //Read subzones from JSON file and store them as list of class <Subzone> AreaRoot areaList = new AreaRoot(); var reqList = await firebaseClient .Child("requests") .OnceAsync <IDictionary <string, Object> >(); var itemList = await firebaseClient .Child("items") .OnceAsync <items>(); List <Elderly> elderlyList = await getElderly(); List <items> itemListN = new List <items>(); AreaRoot areaRoot = new AreaRoot(); foreach (var item in itemList) { items itemActual = item.Object; itemActual.ID = item.Key; itemListN.Add(itemActual); } areaRoot.ItemList = itemListN; foreach (var area in reqList) { Request_NEW req = new Request_NEW(); req.ZoneID = area.Key; SubzoneRoot subzone = SZList.features.Find(x => x.properties.Name == req.ZoneID); req.RegionCode = subzone.properties.SUBZONE_N; bool found = true; Area areaN = areaRoot.arealist.Find(x => x.AreaCode == subzone.properties.REGION_C); if (areaN == null) { found = false; areaN = new Area(); areaN.AreaCode = subzone.properties.REGION_C; } foreach (var requestID in area.Object) { Request currReq = JsonConvert.DeserializeObject <Request>(requestID.Value.ToString()); currReq.ID = requestID.Key; currReq.Sender = elderlyList.Find(x => x.ID == currReq.SenderID); foreach (var item in currReq.Contents) { items itemF = itemListN.Find(x => x.ID == item.Key); items itemN = new items(itemF.BgCol, itemF.Icon, itemF.Name, itemF.Name_CL, itemF.Requested, item.Value, itemF.Limit); itemN.ID = item.Key; currReq.addItem(itemN); } currReq.dateCreatedD = DateTimeOffset.FromUnixTimeSeconds(currReq.dateCreated).Date.ToLocalTime(); req.ReqList.Add(currReq); } areaN.ReqList.Add(req); if (!found) { areaRoot.arealist.Add(areaN); } } return(areaRoot); }