public ActionResult TrackingDetails(string trackingId) { try { ObjectId id = ObjectId.Parse(trackingId); Tracking t = _trackingCollection.AsQueryable().FirstOrDefault(x => x.Id == id); TrackableItem ti = _trackableItemsCollection.AsQueryable().FirstOrDefault(x => x.Id == t.TrackingItemId); TrackableItemState currentState = ti.States.FirstOrDefault(state => state.Id == t.StateId); ViewBag.StateNames = new Dictionary <string, string>(); ti.States.ToList().ForEach(s => ((Dictionary <string, string>)ViewBag.StateNames).Add(s.Id.ToString(), s.Name)); SearchTrackingInfo si = new SearchTrackingInfo(); si.QrData = QRCodeHtmlHelper.CreateQrData(t.Id.ToString(), t.Password); si.TrackingName = t.Id.ToString(); si.TrackabeItemName = ti.Name; si.State = currentState.Name; si.History = t.History; si.SupportsGeolocationServices = ti.SupportsGeolocationServices; return(View(si)); } catch (Exception) { return(new HttpNotFoundResult("The tracking with a specified tracking number doesn't exist")); } }
public ActionResult Index(SearchTracking st) { try { ObjectId id; if (ObjectId.TryParse(st.TrackingNumber, out id)) { //try ti search in db Tracking t = _trackingCollection.AsQueryable().FirstOrDefault(x => x.Id == id); if (t != null) { if (string.IsNullOrEmpty(t.Password) || (!string.IsNullOrWhiteSpace(st.Password) && !string.IsNullOrEmpty(t.Password) && string.Equals(st.Password, t.Password))) { //found and unsecured or password is OK: SearchTrackingInfo si = new SearchTrackingInfo(); si.QrData = QRCodeHtmlHelper.CreateQrData(t.Id.ToString(), t.Password); TrackableItem ti = _trackableItemsCollection.AsQueryable().FirstOrDefault(x => x.Id == t.TrackingItemId); TrackableItemState currentState = ti.States.FirstOrDefault(state => state.Id == t.StateId); si.TrackingName = t.Id.ToString(); si.TrackabeItemName = ti.Name; si.State = currentState.Name; si.History = t.History; si.SupportsGeolocationServices = ti.SupportsGeolocationServices; ViewBag.StateNames = new Dictionary <string, string>(); ti.States.ToList() .ForEach( s => ((Dictionary <string, string>)ViewBag.StateNames).Add(s.Id.ToString(), s.Name)); return(View("TrackingDetails", si)); //return RedirectToAction("TrackingDetails", new {trackingId = st.TrackingNumber}); } else { //need password ViewBag.PasswordRequired = true; } } else { ModelState.AddModelError("", Resource.PublicTrackingController_Index_The_item_with_speficied_number_wasn_t_found_in_our_system__Please_verify_your_input_); } } else { ModelState.AddModelError("TrackingNumber", Resource.PublicTrackingController_Index_Incorrect_tracking_number__Please_verify_your_input_); //incorrect tracking number } } catch { return(View()); } return(View()); }