public void CopyFrom(MemberAddress other) { this.Member = other.Member; this.MemberId = (other.Member == null) ? other.MemberId : other.Member.Id; this.Type = other.Type; this.Address.CopyFrom(other.Address); }
public DataActionResult SubmitAddress(MemberAddress model) { if (!Permissions.HasPermission(PermissionType.EditMemberContacts, model.MemberId)) return GetLoginError(); List<SubmitError> errors = new List<SubmitError>(); ModelState.Remove("Member"); ModelState.Remove("Id"); if (ModelState.IsValid) { using (var ctx = this.GetRepository()) { var oldModel = ctx.Members.IncludePaths("Address.Member").Where(f => f.Id == model.MemberId).SelectMany(f => f.Addresses).SingleOrDefault(f => f.Id == model.Id); if (oldModel == null) { ctx.Members.Single(f => f.Id == model.MemberId).Addresses.Add(model); } else { oldModel.CopyFrom(model); if (oldModel.Member == null) oldModel.Member = ctx.Members.Single(f => f.Id == oldModel.MemberId); } ctx.SaveChanges(); } } else { ModelStateToSubmitErrors(errors); } return Data(new SubmitResult<MemberAddress> { Errors = errors.ToArray(), Result = model }); }