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);
        }