public static void GetLatestVersionOfPass(IRequestMessage request, IResponseMessage response) { Pass pass; using (Repository repository = new Repository()) { pass = repository.GetPass( request.RouteValue<string>("passTypeIdentifier"), request.RouteValue<string>("serialNumber")); } if (pass != null) { if (pass.LastUpdated > request.Headers.Get<DateTime>("If-Modified-Since")) { response.ResponseObject = pass.Data; } else { response.SetStatus(StatusCode.NotModified); } } else { response.SetStatus(StatusCode.NotFound); } }
public static void RegisterDeviceForPushNotifications(IRequestMessage<Registration> request, IResponseMessage response) { if (!string.IsNullOrEmpty(request.RequestObject.PushToken)) { using (Repository repository = new Repository()) { using (IDbTransaction transaction = repository.Connection.BeginTransaction()) { try { Pass pass = repository.GetPass( request.RouteValue<string>("passTypeIdentifier"), request.RouteValue<string>("serialNumber"), transaction); if (pass != null) { Registration registration = new Registration() { Created = DateTime.UtcNow, DeviceLibraryIdentifier = request.RouteValue<string>("deviceLibraryIdentifier"), LastUpdated = DateTime.UtcNow, PassId = pass.Id, PushToken = request.RequestObject.PushToken }; if (repository.CreateRegistration(registration, transaction)) { response.SetStatus(StatusCode.Created); } } else { response.SetStatus(StatusCode.NotFound); } transaction.Commit(); } catch { transaction.Rollback(); throw; } } } } else { response.SetStatus(StatusCode.BadRequest); } }