using System;
using System.IO;
using System.Net;
using System.Text;
using System.Data.SqlClient;
public partial class UpdateLocation : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
// http://localhost/gpstracker/UpdateLocation.aspx?longitude=-122.0214996&latitude=47.4758847&extrainfo=0&username=momo&distance=0.012262854&date=2014-09-16%2B17%253A49%253A57&direction=0&accuracy=65&phonenumber=867-5309&eventtype=android&sessionid=0a6dfd74-df4d-466e-b1b8-23234ef57512&speed=0&locationmethod=fused
string latitude = Request.QueryString["latitude"];
latitude = latitude.Replace(",", "."); // to handle European locale decimals
string longitude = Request.QueryString["longitude"];
longitude = longitude.Replace(",", ".");
string sessionID = Request.QueryString["sessionid"];
string userName = Request.QueryString["username"];
// do a little validation
Decimal latDecimal;
bool result = Decimal.TryParse(latitude, out latDecimal);
if (!result)
{
latDecimal = 0.0M;
}
Decimal lngDecimal;
bool result2 = Decimal.TryParse(longitude, out lngDecimal);
if (!result2)
{
lngDecimal = 0.0M;
}
if (latDecimal == 0.0M && lngDecimal == 0.0M)
{
Response.Write("-1");
return;
}
if (sessionID.Trim().Length == 0)
{
Response.Write("-2");
return;
}
if (userName.Trim().Length == 0)
{
Response.Write("-3");
return;
}
string speed = Request.QueryString["speed"];
string direction = Request.QueryString["direction"];
direction = direction.Replace(",", ".");
Decimal directionDecimal;
bool result4 = Decimal.TryParse(latitude, out directionDecimal);
if (!result4)
{
directionDecimal = 0.0M;
}
//sometimes in eu phones you get this with a comma
string distance = Request.QueryString["distance"].Replace(",", ".");
string date = Server.UrlDecode(Request.QueryString["date"]);
DateTime tempDateTime;
bool result3 = DateTime.TryParse(date, out tempDateTime);
if (!result3)
{
tempDateTime = DateTime.Now;
}
string locationMethod = Server.UrlDecode(Request.QueryString["locationmethod"]);
string phoneNumber = Request.QueryString["phonenumber"];
string accuracy = Request.QueryString["accuracy"];
string eventType = Request.QueryString["eventtype"];
string extraInfo = Request.QueryString["extrainfo"];
// our helper class to update the database
DbWriter dbw = new DbWriter();
string returnValue = "";
try {
// update the database with our GPS data from the phone
returnValue = dbw.updateDB("prcSaveGPSLocation",
new SqlParameter("@latitude", latDecimal),
new SqlParameter("@longitude", lngDecimal),
new SqlParameter("@speed", speed),
new SqlParameter("@direction", directionDecimal),
new SqlParameter("@distance", distance),
new SqlParameter("@date", tempDateTime),
new SqlParameter("@locationMethod", locationMethod),
new SqlParameter("@phoneNumber", phoneNumber),
new SqlParameter("@userName", userName),
new SqlParameter("@sessionID", sessionID),
new SqlParameter("@accuracy", accuracy),
new SqlParameter("@eventType", eventType),
new SqlParameter("@extraInfo", extraInfo));
}
catch (Exception ex) {
Response.Write(ex.Message);
}
Response.Write(returnValue);
}
}