public XmlDocument DeviceDataPostV3(String deviceId, String packageId, String companyName, String appVersion, String webOsBuildNumber, String resolution, String carrier, String webOsVersion, String deviceName, String locale) { byte[] deviceIdAsByteArray = Encoding.UTF8.GetBytes(deviceId); String hashId = Convert.ToBase64String(metrixHash.ComputeHash(deviceIdAsByteArray)); var q = from p in db.MetrixGeneralDeviceDatas where p.HashId == hashId && p.PackageID == packageId select p; if (q.Count() == 0) { //generalDataTable.DeviceId = deviceId; //Unique Id of a phone, this is not necessary a reflection of unique users since devices can be replaced but it is the closest we can get for now. generalDataTable.HashId = hashId; generalDataTable.PackageID = packageId; //Unique name of the app generalDataTable.CreationTimeStamp = DateTime.Now; //Stamped only the first time a deviceId checks in generalDataTable.LastUpdateTimeStamp = DateTime.Now; //Stamped only when the appVersion changes generalDataTable.CompanyName = companyName; //Company that produced the app generalDataTable.AppVersion = appVersion; //Version number of the app generalDataTable.WebOsBuildNumber = webOsBuildNumber; //This is the build number of WebOs on the device generalDataTable.ScreenResolution = resolution; //Screen resolution for the device. I.E. Pre = 320x480, Pixie = 320x400 generalDataTable.CarrierName = carrier; //Telephone company the phone is assigned to generalDataTable.WebOsVersion = webOsVersion; //This is the version of WebOs on the device generalDataTable.DeviceName = deviceName; //This is the string name for the device. generalDataTable.LastCheckInTimeStamp = DateTime.Now; //This is stamped everytime the device checks in generalDataTable.Locale = locale; db.MetrixGeneralDeviceDatas.InsertOnSubmit(generalDataTable); db.SubmitChanges(); } else //already on file just update record { generalDataTable = q.Single(); // hit the db if something changed or we haven't checked in for 12 hours. if (generalDataTable.AppVersion != appVersion || generalDataTable.HashId == null || generalDataTable.CompanyName != companyName || generalDataTable.WebOsBuildNumber != webOsBuildNumber || generalDataTable.CarrierName != carrier || generalDataTable.ScreenResolution != resolution || generalDataTable.WebOsVersion != webOsVersion || generalDataTable.DeviceName != deviceName || generalDataTable.Locale != locale || generalDataTable.LastCheckInTimeStamp < DateTime.Now.AddHours(-12) ) { if (generalDataTable.AppVersion != appVersion) { generalDataTable.LastUpdateTimeStamp = DateTime.Now; } if (generalDataTable.HashId == null) { generalDataTable.HashId = hashId; } generalDataTable.CompanyName = companyName; generalDataTable.AppVersion = appVersion; generalDataTable.WebOsBuildNumber = webOsBuildNumber; generalDataTable.CarrierName = carrier; generalDataTable.ScreenResolution = resolution; generalDataTable.WebOsVersion = webOsVersion; generalDataTable.DeviceName = deviceName; generalDataTable.LastCheckInTimeStamp = DateTime.Now; generalDataTable.Locale = locale; db.SubmitChanges(); } } XmlDocument xmlDoc = new XmlDocument(); String result = "<postGeneralDataResult><creationTimestamp>" + convertToUTC(generalDataTable.CreationTimeStamp).ToString() + "</creationTimestamp><lastUpdateTimestamp>" + convertToUTC(generalDataTable.LastUpdateTimeStamp).ToString() + "</lastUpdateTimestamp></postGeneralDataResult>"; xmlDoc.LoadXml(result); return xmlDoc; }
public XmlDocument DeviceDataPostV4(String deviceId, String packageId, String companyName, String appVersion, String webOsBuildNumber, String resolution, String carrier, String webOsVersion, String deviceName, String locale) { byte[] deviceIdAsByteArray = Encoding.UTF8.GetBytes(deviceId); String hashId = Convert.ToBase64String(metrixHash.ComputeHash(deviceIdAsByteArray)); var q = from p in db.MetrixGeneralDeviceDatas where p.HashId == hashId && p.PackageID == packageId select p; if (q.Count() == 0) { //generalDataTable.DeviceId = deviceId; //Unique Id of a phone, this is not necessary a reflection of unique users since devices can be replaced but it is the closest we can get for now. generalDataTable.HashId = hashId; generalDataTable.PackageID = packageId; //Unique name of the app generalDataTable.CreationTimeStamp = DateTime.Now; //Stamped only the first time a deviceId checks in generalDataTable.LastUpdateTimeStamp = DateTime.Now; //Stamped only when the appVersion changes generalDataTable.CompanyName = companyName; //Company that produced the app generalDataTable.AppVersion = appVersion; //Version number of the app generalDataTable.WebOsBuildNumber = webOsBuildNumber; //This is the build number of WebOs on the device generalDataTable.ScreenResolution = resolution; //Screen resolution for the device. I.E. Pre = 320x480, Pixie = 320x400 generalDataTable.CarrierName = carrier; //Telephone company the phone is assigned to generalDataTable.WebOsVersion = webOsVersion; //This is the version of WebOs on the device generalDataTable.DeviceName = deviceName; //This is the string name for the device. generalDataTable.LastCheckInTimeStamp = DateTime.Now; //This is stamped everytime the device checks in generalDataTable.Locale = locale; db.MetrixGeneralDeviceDatas.InsertOnSubmit(generalDataTable); db.SubmitChanges(); } else //already on file just update record { generalDataTable = q.Single(); // hit the db if something changed or we haven't checked in for 12 hours. if (generalDataTable.AppVersion != appVersion || generalDataTable.HashId == null || generalDataTable.CompanyName != companyName || generalDataTable.WebOsBuildNumber != webOsBuildNumber || generalDataTable.CarrierName != carrier || generalDataTable.ScreenResolution != resolution || generalDataTable.WebOsVersion != webOsVersion || generalDataTable.DeviceName != deviceName || generalDataTable.Locale != locale || generalDataTable.LastCheckInTimeStamp < DateTime.Now.AddHours(-12) ) { if (generalDataTable.AppVersion != appVersion) { generalDataTable.LastUpdateTimeStamp = DateTime.Now; } if (generalDataTable.HashId == null) { generalDataTable.HashId = hashId; } generalDataTable.CompanyName = companyName; generalDataTable.AppVersion = appVersion; generalDataTable.WebOsBuildNumber = webOsBuildNumber; generalDataTable.CarrierName = carrier; generalDataTable.ScreenResolution = resolution; generalDataTable.WebOsVersion = webOsVersion; generalDataTable.DeviceName = deviceName; generalDataTable.LastCheckInTimeStamp = DateTime.Now; generalDataTable.Locale = locale; db.SubmitChanges(); } } MetrixDeviceInfo mdd = new MetrixDeviceInfo(); MetrixAppStructure mas = new MetrixAppStructure(); var mongo = MDB.Instance().GetMongo(); var device = mongo.GetCollection<MetrixDeviceInfo>(); if (device.Count() > 0) mongo.Database.DropCollection("MetrixDeviceInfo"); device = mongo.GetCollection<MetrixDeviceInfo>(); var qm = from p in device.AsQueryable() where p.HashId == hashId select p; if (q.Count() > 0) { mdd = qm.Single(); var a = from p in mdd.Apps where p.PackageId == packageId select p; if (a.Count() > 0) { mas = a.Single(); mas.Company = companyName; mas.Creation = mas.Creation; mas.LastCheckIn = DateTime.Now; if (mas.AppVersion != appVersion) { mas.LastUpdate = DateTime.Now; } else { mas.LastUpdate = mas.LastUpdate; } mas.AppVersion = appVersion; } else { if (mdd.Apps.Count() == 0) { mas.ID = 0; } else { mas.ID = mdd.Apps.AsQueryable().OrderByDescending(i => i.ID).First().ID + 1; } mas.PackageId = packageId; mas.Company = companyName; mas.AppVersion = appVersion; mas.Creation = DateTime.Now; mas.LastCheckIn = DateTime.Now; mas.LastUpdate = DateTime.Now; mdd.Apps.Add(mas); } } else { if (device.Count() == 0) { mdd.ID = 0; } else { mdd.ID = device.AsQueryable().OrderByDescending(i => i.ID).First().ID + 1; } mdd.HashId = hashId; mas.PackageId = packageId; mas.Company = companyName; mas.AppVersion = appVersion; mas.Creation = DateTime.Now; mas.LastCheckIn = DateTime.Now; mas.LastUpdate = DateTime.Now; mdd.Apps = new List<MetrixAppStructure>(); mdd.Apps.Add(mas); } mdd.Device = deviceName; mdd.Carrier = carrier; mdd.Screen = resolution; mdd.Locale = locale; mdd.WebOsBuild = webOsBuildNumber; mdd.WebOsVersion = webOsVersion; device.Save(mdd); XmlDocument xmlDoc = new XmlDocument(); String result = "<postGeneralDataResult><creationTimestamp>" + convertToUTC(generalDataTable.CreationTimeStamp).ToString() + "</creationTimestamp><lastUpdateTimestamp>" + convertToUTC(generalDataTable.LastUpdateTimeStamp).ToString() + "</lastUpdateTimestamp></postGeneralDataResult>"; xmlDoc.LoadXml(result); return xmlDoc; }