Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 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));
         }
     });
 }
Exemplo n.º 4
0
        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);
        }