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