public ActionResult AddEditPerson(string data) { // Authenticate first if (!Auth()) { return(CheckInMessage.createErrorReturn("Authentication failed, please try again", CheckInMessage.API_ERROR_INVALID_CREDENTIALS)); } CheckInMessage dataIn = CheckInMessage.createFromString(data); CheckInAddEditPerson aep = JsonConvert.DeserializeObject <CheckInAddEditPerson>(dataIn.data); aep.clean(); CheckInAddEditPersonResults results = new CheckInAddEditPersonResults(); Family f; Person p; if (aep.edit) { p = CurrentDatabase.LoadPersonById(aep.id); f = CurrentDatabase.Families.First(fam => fam.FamilyId == p.FamilyId); f.HomePhone = aep.homePhone; f.AddressLineOne = aep.address; f.AddressLineTwo = aep.address2; f.CityName = aep.city; f.StateCode = aep.state; f.ZipCode = aep.zipcode; f.CountryName = aep.country; } else { results.newPerson = true; p = new Person { CreatedDate = Util.Now, CreatedBy = CurrentDatabase.UserId, MemberStatusId = MemberStatusCode.JustAdded, AddressTypeId = 10, OriginId = OriginCode.Visit, EntryPoint = getCheckInEntryPointID() }; if (aep.campus > 0) { p.CampusId = aep.campus; } p.Name = ""; if (aep.familyID > 0) { f = CurrentDatabase.Families.First(fam => fam.FamilyId == aep.familyID); } else { results.newFamily = true; f = new Family(); CurrentDatabase.Families.InsertOnSubmit(f); } f.HomePhone = aep.homePhone; f.AddressLineOne = aep.address; f.AddressLineTwo = aep.address2; f.CityName = aep.city; f.StateCode = aep.state; f.ZipCode = aep.zipcode; f.CountryName = aep.country; f.People.Add(p); p.PositionInFamilyId = CurrentDatabase.ComputePositionInFamily(aep.getAge(), aep.maritalStatusID == MaritalStatusCode.Married, f.FamilyId) ?? PositionInFamily.PrimaryAdult; } p.FirstName = aep.firstName; p.LastName = aep.lastName; p.NickName = aep.goesBy; p.AltName = aep.altName; if (dataIn.version >= CheckInMessage.API_V3) { p.SetRecReg().Fname = aep.father; p.SetRecReg().Mname = aep.mother; } // Check-In API Version 2 or greater adds the ability to clear the birthday if (dataIn.version >= CheckInMessage.API_V2) { if (aep.birthdaySet && aep.birthday != null) { p.BirthDay = aep.birthday.Value.Day; p.BirthMonth = aep.birthday.Value.Month; p.BirthYear = aep.birthday.Value.Year; } else { if (aep.birthdayClear) { p.BirthDay = null; p.BirthMonth = null; p.BirthYear = null; } } } else { if (aep.birthday != null) { p.BirthDay = aep.birthday.Value.Day; p.BirthMonth = aep.birthday.Value.Month; p.BirthYear = aep.birthday.Value.Year; } } p.GenderId = aep.genderID; p.MaritalStatusId = aep.maritalStatusID; p.FixTitle(); p.EmailAddress = aep.eMail; p.CellPhone = aep.cellPhone; p.HomePhone = aep.homePhone; p.SetRecReg().MedicalDescription = aep.allergies; p.SetRecReg().Emcontact = aep.emergencyName; p.SetRecReg().Emphone = aep.emergencyPhone.Truncate(50); p.SetRecReg().ActiveInAnotherChurch = !string.IsNullOrEmpty(aep.church); p.OtherPreviousChurch = aep.church; CurrentDatabase.SubmitChanges(); results.familyID = f.FamilyId; results.peopleID = p.PeopleId; results.position = p.PositionInFamilyId; CheckInMessage br = new CheckInMessage(); br.setNoError(); br.count = 1; br.data = SerializeJSON(results, dataIn.version); return(br); }
public ActionResult AddEditPerson(string data) { // Authenticate first if (!Auth()) { return(BaseMessage.createErrorReturn("Authentication failed, please try again", BaseMessage.API_ERROR_INVALID_CREDENTIALS)); } BaseMessage dataIn = BaseMessage.createFromString(data); CheckInAddEditPerson aep = JsonConvert.DeserializeObject <CheckInAddEditPerson>(dataIn.data); aep.clean(); CheckInAddEditPersonResults results = new CheckInAddEditPersonResults(); Family f; Person p; if (aep.edit) { p = DbUtil.Db.LoadPersonById(aep.id); f = DbUtil.Db.Families.First(fam => fam.FamilyId == p.FamilyId); f.HomePhone = aep.homePhone; f.AddressLineOne = aep.address; f.AddressLineTwo = aep.address2; f.CityName = aep.city; f.StateCode = aep.state; f.ZipCode = aep.zipcode; f.CountryName = aep.country; } else { results.newPerson = true; p = new Person(); p.CreatedDate = Util.Now; p.CreatedBy = Util.UserId; p.MemberStatusId = MemberStatusCode.JustAdded; p.AddressTypeId = 10; p.OriginId = OriginCode.Visit; p.Name = ""; if (aep.familyID > 0) { f = DbUtil.Db.Families.First(fam => fam.FamilyId == aep.familyID); } else { results.newFamily = true; f = new Family(); DbUtil.Db.Families.InsertOnSubmit(f); } f.HomePhone = aep.homePhone; f.AddressLineOne = aep.address; f.AddressLineTwo = aep.address2; f.CityName = aep.city; f.StateCode = aep.state; f.ZipCode = aep.zipcode; f.CountryName = aep.country; f.People.Add(p); p.PositionInFamilyId = PositionInFamily.Child; if (aep.birthday != null && p.GetAge() >= 18) { if (f.People.Count(per => per.PositionInFamilyId == PositionInFamily.PrimaryAdult) < 2) { p.PositionInFamilyId = PositionInFamily.PrimaryAdult; } else { p.PositionInFamilyId = PositionInFamily.SecondaryAdult; } } } p.FirstName = aep.firstName; p.LastName = aep.lastName; p.NickName = aep.goesBy; if (aep.birthday != null) { p.BirthDay = aep.birthday.Value.Day; p.BirthMonth = aep.birthday.Value.Month; p.BirthYear = aep.birthday.Value.Year; } p.GenderId = aep.genderID; p.MaritalStatusId = aep.maritalStatusID; p.FixTitle(); p.EmailAddress = aep.eMail; p.CellPhone = aep.cellPhone; p.HomePhone = aep.homePhone; p.SetRecReg().MedicalDescription = aep.allergies; p.SetRecReg().Emcontact = aep.emergencyName; p.SetRecReg().Emphone = aep.emergencyPhone.Truncate(50); p.SetRecReg().ActiveInAnotherChurch = aep.church != null && aep.church.Length > 0; p.OtherPreviousChurch = aep.church; DbUtil.Db.SubmitChanges(); results.familyID = f.FamilyId; results.peopleID = p.PeopleId; results.position = p.PositionInFamilyId; BaseMessage br = new BaseMessage(); br.setNoError(); br.count = 1; br.data = SerializeJSON(results, dataIn.version); return(br); }