/// <summary> /// Creates a new contact and saves it to external store. /// </summary> /// <param name="contactDetails">Contact details value object.</param> /// <returns>New Contact created.</returns> public Contact CreateNewContact(IContactDetails contactDetails) { ContactDetailsValidator contactDetailsValidator = new ContactDetailsValidator(); contactDetailsValidator.ValidateAndThrow(contactDetails); ContactAddress contactAddress = new ContactAddress(contactDetails.StreetAndNumber, contactDetails.City, contactDetails.PostalCode, contactDetails.Country); Contact newContact = new Contact(Guid.NewGuid(), contactDetails.FirstName, contactDetails.LastName, contactDetails.TelephoneNumber, contactAddress); _contactOrganizerRepository.CreateNewContact(newContact); return(newContact); }
/// <summary> /// Updates contact details. /// </summary> /// <param name="contactId">Contact unique ID.</param> /// <param name="contactDetails">Contact details value object.</param> public Contact UpdateContactDetails(Guid contactId, IContactDetails contactDetails) { ContactDetailsValidator contactDetailsValidator = new ContactDetailsValidator(); contactDetailsValidator.ValidateAndThrow(contactDetails); Contact contact = _contactOrganizerRepository.GetContactById(contactId); ContactAddress contactAddress = new ContactAddress(contactDetails.StreetAndNumber, contactDetails.City, contactDetails.PostalCode, contactDetails.Country); contact.UpdateDetails(contactDetails.FirstName, contactDetails.LastName, contactDetails.TelephoneNumber, contactAddress); _contactOrganizerRepository.UpdateContactDetails(contact); return(contact); }