public IHttpActionResult SignIn(Guid? id) { NameValueCollection nvc = HttpUtility.ParseQueryString(Request.RequestUri.Query); string name = nvc["name"]; if (string.IsNullOrEmpty(name)) name = "Test"; string phoneNumber = nvc["phoneNumber"]; if (string.IsNullOrEmpty(phoneNumber)) phoneNumber = "555-555-5555"; try { // get or create a member GUID if (!id.HasValue) id = Guid.NewGuid(); if (id.Value == Guid.Empty) id = Guid.NewGuid(); //get the open Incident Incident incident = db.Incidents.ToList().FirstOrDefault(x => x.IsOpen); if (incident == null) return NotFound(); // get or create a new member Member member = db.Members.Find(id); if (member == null) { member = new DataModel.Member() { MemberID = id.Value, FirstName = name, LastName = "Test", PhoneNumber = phoneNumber, EmailAddress = "*****@*****.**", AgencyID = incident.AgencyID, }; member.Core.CreatedBy="Blue Diamond"; db.Members.Add(member); db.SaveChanges(); } // create a new signin SignIn si = new SignIn() { IncidentID = incident.IncidentID, MemberID = id.Value }; db.SignIns.Add(si); // signal the sign in Helpers.SignalSignIn(incident.IncidentID, member.LastName, member.FirstName, si.SignedIn); // save changes db.SaveChanges(); return Ok(id.Value.ToString()); } catch (Exception ex) { Trace.TraceError("Error sign in:\r\n{0}", ex); return BadRequest(ex.Message); } }
/// <summary> /// Do sign-in form for incident with the given ID /// </summary> /// <param name="id"></param> /// <returns></returns> public async Task<ActionResult> SignIn(Guid id, Guid? memberID) { if (memberID.HasValue) { SignIn si = new SignIn() { IncidentID = id, MemberID = memberID.Value }; db.SignIns.Add(si); Member member = await db.Members.FindAsync(memberID); Helpers.SignalSignIn(id, member.LastName, member.FirstName, si.SignedIn); await db.SaveChangesAsync(); } CheckInViewModel model = new CheckInViewModel(); model.Incident = db.Incidents.Include(i => i.SignIns).FirstOrDefault(x => x.IncidentID == id); var signIns = db.SignIns .Where(x => x.IncidentID == id) .ToList(); model.SignIns = db.Members.Select<Member, MemberSignIn>(x => new MemberSignIn() { Member = x }).ToList(); foreach (var m in model.SignIns) { var si = signIns .OrderByDescending(x => x.SignedIn) .FirstOrDefault(x => x.MemberID == m.Member.MemberID); if (si != null) m.SignIn = si; } return View(model); }