<%@ WebHandler Language="C#" Class="MobileHandler" %> using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using Common; using Newtonsoft.Json; public class MobileHandler : IHttpHandler { private HttpContext c; private string inputStream = string.Empty; public string InputStream { get { if (!string.IsNullOrEmpty(inputStream)) return inputStream; inputStream = new StreamReader(HttpContext.Current.Request.InputStream, HttpContext.Current.Request.ContentEncoding).ReadToEnd(); return inputStream; } } public bool IsReusable { get { return false; } } public void ProcessRequest(HttpContext context) { c = context; context.Response.ContentType = "application/json"; context.Response.Write(Process()); } public string Process() { var j = JsonConvert.DeserializeObject(InputStream); if (inputStream == null || j == null || string.IsNullOrEmpty(inputStream)) return JsonResult.Json(false, "Error", "Missing parameters"); if (string.IsNullOrEmpty(j.a)) return JsonResult.Json(false, "Error", "Missing action parameter"); c.Trace.Warn("UserId", j.u); c.Trace.Warn("CustomerId", j.c.ToString()); c.Trace.Warn("Marker", JsonConvert.SerializeObject(j.m)); using (var db = new DataModel()) { var location = db.Locations.FirstOrDefault(f => f.Address == j.m.address && f.Lat == j.m.lat && f.Lng == j.m.lng); if (location == null) { location = new Location { Address = j.m.address, Lat = j.m.lat, Lng = j.m.lng }; db.Locations.Add(location); db.SaveChanges(); } var action = db.DriverActions.FirstOrDefault(f => f.Action == j.a); if (action == null) { action = new DriverAction { Action = j.a }; db.DriverActions.Add(action); db.SaveChanges(); } var operatorLogin = db.OperatorLogins.FirstOrDefault(f => f.Username == j.u); if (operatorLogin == null) return JsonResult.Json(false, "Error", "Unknown Operator"); var log = db.DriverLogs.Add(new DriverLog { CustomerId = j.c, DriverActionId = action.DriverActionId, LocationId = location.LocationId, OperatorLoginId = operatorLogin.OperatorLoginId, TimeStamp = DateTime.Now }); db.DriverLogs.Add(log); db.SaveChanges(); if (j.a != "Bag") return JsonResult.Json(true); c.Trace.Warn("BagId", j.b.ToString()); var bag = db.CustomerWorkloadBags.FirstOrDefault(f => f.WorkloadBagId == j.b); if (bag == null) return JsonResult.Json(false, "Error", "Unknown Bag"); c.Trace.Warn("CustomerId", j.c.ToString()); c.Trace.Warn("UniqueReference", bag.UniqueReference); c.Trace.Warn("OperatorLoginId", operatorLogin.OperatorLoginId.ToString()); var acceptedBag = db.AcceptCustomerBag(j.c, bag.UniqueReference, operatorLogin.OperatorLoginId); return acceptedBag == null ? JsonResult.Json(false, "Error", "Unknown Bag") : JsonResult.Json(true); } } }