// POST: api/Participant public IHttpActionResult PostPerson(ParticipantViewModel participant) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } //Add HouseholdId if (participant.HouseholdId == null) { var household = new Household(); household.AddressStreet = participant.Street; household.AddressSuburb = participant.Suburb; household.AddressPostcode = participant.Postcode; household.AddressState = participant.State; household.PhoneHome = participant.PhoneHome; household.LastConfirmedBy = participant.LastConfirmedBy; household.LastConfirmedWhen = participant.LastConfirmedWhen; household.AddresseeId = participant.HouseholdAddressee; household.ActiveAddress = household.ActiveAddress; db.Households.Add(household); db.SaveChanges(); participant.HouseholdId = db.Households.Max(x => x.HouseholdId); } //Add Participant var mapper = new ParticipantMapper(); var person = mapper.GetParticipantModel(participant); db.People.Add(person); db.SaveChanges(); if (participant.StudyId != 0) { //Add in Linked Stuby Table var linkedStudy = new LinkSubjectsStudy(); linkedStudy.PersonId = db.People.Max(x => x.PersonId); linkedStudy.StudyId = participant.StudyId; db.LinkSubjectsStudies.Add(linkedStudy); db.SaveChanges(); } //Add household members foreach (var member in participant.HouseholdMembers) { member.HouseholdId = participant.HouseholdId; member.Gender = member.Gender == "M" ? "Male" : (member.Gender == "F" ? "Female" : ""); var familyMember = mapper.GetParticipantModel(member); db.People.Add(familyMember); db.SaveChanges(); } return(Ok(participant)); }
public IHttpActionResult PutPerson(int id, ParticipantViewModel participant) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != participant.PersonId) { return(BadRequest()); } var mapper = new ParticipantMapper(); var person = mapper.GetParticipantModel(participant); if (participant.StudyId != 0) { var linkedStudy = db.LinkSubjectsStudies.Where(l => l.PersonId == participant.PersonId && l.StudyId == participant.StudyId).FirstOrDefault(); //Study Detail linkedStudy.Status = participant.StudyParticipationStatus; linkedStudy.OfficialSubjectStudyNum = participant.OfficialSubjectStudyNum; linkedStudy.WithdrawnReason = participant.Reason; linkedStudy.WithdrawnReasonOther = participant.ReasonOther; linkedStudy.EffFrom = participant.EffectiveFrom; linkedStudy.EffTo = participant.EffectiveTo; linkedStudy.OfficialSubjectStudyNum = participant.OfficialSubjectStudyNum; db.Entry(linkedStudy).State = EntityState.Modified; } if (participant.HouseholdId.HasValue) { //Household Detail var household = db.Households.Where(h => h.HouseholdId == participant.HouseholdId).FirstOrDefault(); household.AddressStreet = participant.Street; household.AddressSuburb = participant.Suburb; household.AddressPostcode = participant.Postcode; household.AddressState = participant.State; household.PhoneHome = participant.PhoneHome; household.LastConfirmedBy = participant.LastConfirmedBy; household.LastConfirmedWhen = participant.LastConfirmedWhen; household.AddresseeId = participant.HouseholdAddressee; household.ActiveAddress = participant.ActiveAddress?1:0; db.Entry(household).State = EntityState.Modified; } db.Entry(person).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!PersonExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }