public ActionResult JoinOrg(string data) { if (!Auth()) { return(CheckInMessage.createErrorReturn("Authentication failed, please try again", CheckInMessage.API_ERROR_INVALID_CREDENTIALS)); } CheckInMessage dataIn = CheckInMessage.createFromString(data); CheckInJoinOrg cjo = JsonConvert.DeserializeObject <CheckInJoinOrg>(dataIn.data); OrganizationMember om = CurrentDatabase.OrganizationMembers.SingleOrDefault(m => m.PeopleId == cjo.peopleID && m.OrganizationId == cjo.orgID); if (om == null && cjo.join) { om = OrganizationMember.InsertOrgMembers(CurrentDatabase, cjo.orgID, cjo.peopleID, MemberTypeCode.Member, DateTime.Today); } if (om != null && !cjo.join) { om.Drop(CurrentDatabase, CurrentImageDatabase, DateTime.Now); DbUtil.LogActivity($"Dropped {om.PeopleId} for {om.Organization.OrganizationId} via {dataIn.getSourceOS()} app", peopleid: om.PeopleId, orgid: om.OrganizationId); } CurrentDatabase.SubmitChanges(); // Check Entry Point and replace if Check-In Person person = CurrentDatabase.People.FirstOrDefault(p => p.PeopleId == cjo.peopleID); if (person?.EntryPoint != null && person.EntryPoint.Code == "CHECKIN" && om != null) { person.EntryPoint = om.Organization.EntryPoint; CurrentDatabase.SubmitChanges(); } CheckInMessage br = new CheckInMessage(); br.setNoError(); br.count = 1; return(br); }