protected override async Task OnUpdateAsync(IContact contact, ContactSupplementModel contactSupplementModel) { NullGuard.NotNull(contact, nameof(contact)) .NotNull(contactSupplementModel, nameof(contactSupplementModel)); contactSupplementModel.Birthday = contact.Birthday; contactSupplementModel.ContactGroupIdentifier = contact.ContactGroup.Number; contactSupplementModel.ContactGroup = await DbContext.ContactGroups.SingleAsync(contactGroupModel => contactGroupModel.ContactGroupIdentifier == contact.ContactGroup.Number); contactSupplementModel.Acquaintance = contact.Acquaintance; contactSupplementModel.PersonalHomePage = contact.PersonalHomePage; contactSupplementModel.LendingLimit = contact.LendingLimit; contactSupplementModel.PaymentTermIdentifier = contact.PaymentTerm.Number; contactSupplementModel.PaymentTerm = await DbContext.PaymentTerms.SingleAsync(paymentTermModel => paymentTermModel.PaymentTermIdentifier == contact.PaymentTerm.Number); string[] externalIdentifierCollection = _contactSupplementBindingModelHandler.GetExternalIdentifierCollection(contact); foreach (ContactSupplementBindingModel contactSupplementBindingModel in contactSupplementModel.ContactSupplementBindings.Where(m => externalIdentifierCollection.Any(externalIdentifier => externalIdentifier == m.ExternalIdentifier) == false).ToArray()) { contactSupplementModel.ContactSupplementBindings.Remove(contactSupplementBindingModel); } foreach (string externalIdentifier in externalIdentifierCollection.Where(m => contactSupplementModel.ContactSupplementBindings.Any(contactSupplementBindingModel => contactSupplementBindingModel.ExternalIdentifier == m) == false)) { ContactSupplementBindingModel contactSupplementBindingModel = new ContactSupplementBindingModel { ContactSupplementIdentifier = contactSupplementModel.ContactSupplementIdentifier, ContactSupplement = contactSupplementModel, ExternalIdentifier = externalIdentifier }; contactSupplementModel.ContactSupplementBindings.Add(contactSupplementBindingModel); } }
protected override Task <ContactSupplementModel> OnDeleteAsync(ContactSupplementModel contactSupplementModel) { NullGuard.NotNull(contactSupplementModel, nameof(contactSupplementModel)); ContactSupplementBindingModel contactSupplementBindingModel = contactSupplementModel.ContactSupplementBindings.FirstOrDefault(); while (contactSupplementBindingModel != null) { contactSupplementModel.ContactSupplementBindings.Remove(contactSupplementBindingModel); contactSupplementBindingModel = contactSupplementModel.ContactSupplementBindings.FirstOrDefault(); } return(Task.FromResult(contactSupplementModel)); }