예제 #1
0
        public async Task <ActionResult> SearchTag(MacAddressModel mac)
        {
            if (ModelState.IsValid)
            {
                List <WhereOSApiRuuvi> apiResponse = await GetTagData(mac.GetAddress());

                if (apiResponse.Count == 0)
                {
                    ModelState.AddModelError("MacAddress", "No data found, check RuuviTag ID. See Help -section for more information.");
                    return(View("Index", mac));
                }

                List <UnpackData> lstapiData = new List <UnpackData>();

                foreach (WhereOSApiRuuvi apiRuuviTag in apiResponse)
                {
                    UnpackData    ApiRowData = new UnpackData();
                    UnpackRawData RawDataRow = new UnpackRawData();
                    RawDataRow.UnpackAllData(apiRuuviTag.data);
                    ApiRowData.Data = RawDataRow;
                    ApiRowData.Time = apiRuuviTag.time;
                    lstapiData.Add(ApiRowData);
                }

                TempData["UnpackedTagData"] = lstapiData;
                return(RedirectToAction("Index", "Home", new { tagMac = mac.GetAddress() }));
            }
            return(View("Index", mac));
        }
예제 #2
0
        public async Task <ActionResult> LoggedInApiData(int?tagID, int?interval)
        {
            if (tagID == null)
            {
                TempData["GeneralError"] = "Something went wrong while fetching data. Please try again";
                return(RedirectToAction("Index"));
            }
            RuuviTagModel tag = db.RuuviTagModels.Find(tagID);

            if (tag == null)
            {
                TempData["GeneralError"] = "Something went wrong while fetching data. Please try again";
                return(RedirectToAction("Index"));
            }
            if (tag.UserId != User.Identity.GetUserId())
            {
                TempData["GeneralError"] = "You do not have permission to do that.";
                return(RedirectToAction("Index"));
            }
            List <WhereOSApiRuuvi> apiResponse;

            if (interval != null)
            {
                apiResponse = await GetTagData(tag.TagMacAddress, (int)interval);
            }
            else
            {
                apiResponse = await GetTagData(tag.TagMacAddress);
            }

            List <UnpackData> lstapiData = new List <UnpackData>();

            foreach (WhereOSApiRuuvi apiRuuviTag in apiResponse)
            {
                UnpackData    ApiRowData = new UnpackData();
                UnpackRawData RawDataRow = new UnpackRawData();
                RawDataRow.UnpackAllData(apiRuuviTag.data);
                ApiRowData.Data = RawDataRow;
                ApiRowData.Time = apiRuuviTag.time;
                lstapiData.Add(ApiRowData);
            }


            return(Json(lstapiData, JsonRequestBehavior.AllowGet));
        }
예제 #3
0
        public async Task <ActionResult> _GroupTagDataPartial(int groupID, int?interval)
        {
            List <GroupDataModel> groupData = new List <GroupDataModel>();

            foreach (TagListRowModel row in await db.TagListRowModels.Where(r => r.ListId == groupID).Include(t => t.RuuviTagModel).ToListAsync())
            {
                if (!row.RuuviTagModel.TagActive)
                {
                    continue;
                }
                List <WhereOSApiRuuvi> apiResponse;

                if (interval == null)
                {
                    apiResponse = await GetTagData(row.RuuviTagModel.TagMacAddress);
                }
                else
                {
                    apiResponse = await GetTagData(row.RuuviTagModel.TagMacAddress, (int)interval);
                }

                List <UnpackData> lstapiData = new List <UnpackData>();

                foreach (WhereOSApiRuuvi apiRuuviTag in apiResponse)
                {
                    UnpackData    ApiRowData = new UnpackData();
                    UnpackRawData RawDataRow = new UnpackRawData();
                    RawDataRow.UnpackAllData(apiRuuviTag.data);
                    ApiRowData.Data = RawDataRow;
                    ApiRowData.Time = apiRuuviTag.time;
                    lstapiData.Add(ApiRowData);
                }

                groupData.Add(new GroupDataModel
                {
                    TagID      = row.RuuviTagModel.TagId,
                    TagDisplay = row.RuuviTagModel.TagName ?? row.RuuviTagModel.TagMacAddress,
                    TagData    = lstapiData
                });
            }

            return(PartialView(groupData));
        }
예제 #4
0
        public async Task <ActionResult> AddTag(AddTagModel tag)
        {
            if (ModelState.IsValid)
            {
                string userID = User.Identity.GetUserId();
                List <WhereOSApiRuuvi> apiResponse = await GetTagData(tag.GetAddress());

                bool userHasTag = await UserHasTagMacAsync(userID, tag.GetAddress());

                bool tagNameTaken = !string.IsNullOrEmpty(tag.AddTagName) && await TagNameTakenAsync(userID, tag.AddTagName);

                if (apiResponse.Count == 0 || userHasTag || tagNameTaken)
                {
                    List <string> tagErrors = new List <string>();
                    if (userHasTag)
                    {
                        tagErrors.Add("Couldn't add this tag, since you have already added it!");
                    }
                    if (tagNameTaken)
                    {
                        tagErrors.Add("Couldn't add this tag, since you have a tag with that name already!");
                    }
                    if (apiResponse.Count == 0)
                    {
                        tagErrors.Add("No data found, check RuuviTag ID. See Help -section for more information.");
                    }
                    TempData["TagErrorList"] = tagErrors;
                    TempData["ShowAddTag"]   = true;
                    TempData["TagModel"]     = tag;
                    return(RedirectToAction("Index"));
                }

                try
                {
                    UnpackRawData test = new UnpackRawData();
                    test.UnpackAllData(apiResponse.First().data);
                }
                catch (InvalidOperationException)
                {
                    TempData["TagErrorList"] = new List <string> {
                        "Tag data is in an unsupported format."
                    };
                    TempData["ShowAddTag"] = true;
                    TempData["TagModel"]   = tag;
                    return(RedirectToAction("Index"));
                }

                var newTag = db.RuuviTagModels.Add(new RuuviTagModel {
                    UserId = userID, TagMacAddress = tag.GetAddress(), TagName = tag.AddTagName
                });
                await db.SaveChangesAsync();

                TempData["ReturnToTag"] = newTag.TagId;
                return(RedirectToAction("Index"));
            }

            TempData["TagErrorList"] = ModelState.Values.SelectMany(v => v.Errors).Select(e => e.ErrorMessage).ToList();
            TempData["ShowAddTag"]   = true;
            TempData["TagModel"]     = tag;
            return(RedirectToAction("Index"));
        }