public ActionResult Edit(string id, AccountModel accountForm, string dataNotification) { try { AccountModel account = RepositoryFactory.Instance.AccountDb.GetAccounts().Where(x => x.Id.ToString() == id).FirstOrDefault(); account.UrlForwarding = JsonConvert.DeserializeObject<Dictionary<string, string>>(dataNotification); RepositoryFactory.Instance.AccountDb.Save(account); return RedirectToAction("Index"); } catch { return View(); } }
private void DecodeTracking(MD.CloudConnect.ITracking t, AccountModel account, List<TrackingModel> saveTracks, List<DeviceModel> saveDevices) { string imei = t.Asset; DeviceModel device = RepositoryFactory.Instance.DeviceDb.GetDevice(imei); if (device == null) { device = new DeviceModel() { Imei = imei }; RepositoryFactory.Instance.DeviceDb.Save(device); device = RepositoryFactory.Instance.DeviceDb.GetDevice(imei); } device.LastReport = t.Recorded_at; if (t.IsValid) { device.LastValidLocation = t.Recorded_at; device.LastLongitude = t.Longitude; device.LastLatitude = t.Latitude; } TrackingModel track = new TrackingModel(); track.DeviceID = device.Id; track.Data = (MD.CloudConnect.Data.TrackingData)t; track.RecordedDateKey = t.Recorded_at.GenerateKey(); saveTracks.Add(track); device.UpdateField(track); if (saveDevices.Where(x => x.Imei == device.Imei).Count() == 0) saveDevices.Add(device); }
private void Decode(string data) { List<MD.CloudConnect.MDData> decodedData = MD.CloudConnect.Notification.Instance.Decode(data); ForwadNotification(data); List<TrackingModel> saveTracks = new List<TrackingModel>(); List<DeviceModel> saveDevices = new List<DeviceModel>(); List<AccountModel> accounts = RepositoryFactory.Instance.AccountDb.GetAccounts(); AccountModel currentAccount = null; foreach (MD.CloudConnect.MDData dData in decodedData) { //if the current data is for the same previous account, we don't need to reload the account if (currentAccount == null || currentAccount.Name != dData.Meta.Account) currentAccount = accounts.Where(x => x.Name == dData.Meta.Account).FirstOrDefault(); if (currentAccount == null) { currentAccount = new AccountModel() { Name = dData.Meta.Account }; RepositoryFactory.Instance.AccountDb.Save(currentAccount); accounts.Add(currentAccount); } if (dData.Meta.Event == "track") { DecodeTracking(dData.Tracking, currentAccount, saveTracks, saveDevices); } if (dData.Meta.Event == "message") { //MD.CloudConnect.IMessage m = dData.Message; } } if (saveTracks.Count > 0) RepositoryFactory.Instance.DataTrackingDB.Save(saveTracks); if (saveDevices.Count > 0) RepositoryFactory.Instance.DeviceDb.Save(saveDevices); }