public async Task UpdateAsync(Guid id, CreateUpdateContactDto input) { var contact = await _contactRepository.GetAsync(id, includeDetails : false); await _contactRepository.EnsureCollectionLoadedAsync(contact, x => x.ContactGroups); //List<Group> groups = await _groupRepository.GetListAsync(); //Add new relationship foreach (Guid groupid in input.GroupIds) { var item = contact.ContactGroups.FirstOrDefault(gid => gid.GroupId.ToString().Equals(groupid.ToString())); if (item == null) { contact.ContactGroups.Add(new ContactGroup( GuidGenerator.Create(), contact.Id, groupid )); } } //Remove relationship for (int i = 0; i < contact.ContactGroups.Count; i++) { Guid item = input.GroupIds.FirstOrDefault(gid => gid.ToString().Equals(contact.ContactGroups[i].GroupId.ToString())); if (item.ToString().Equals(Guid.Empty.ToString())) { contact.ContactGroups.Remove(contact.ContactGroups[i]); i--; } } //contact.Groups = new List<Group>(); contact.Email = input.Email; //contact.ContactGroups = updateGroup; contact.DateOfBirth = input.DateOfBirth; contact.FirstName = input.FirstName; contact.LastName = input.LastName; contact.PhoneNumber = input.PhoneNumber; contact.Addition = input.Addition; await _contactRepository.UpdateAsync(contact); //await _contactRepository.UpdateContact(id, contact); }
public async Task <ContactDto> CreateAsync(CreateUpdateContactDto input) { var group = await _groupRepository.GetListAsync(); List <ContactGroup> contactGroups = new List <ContactGroup>(); var contact = await _contactManager.CreateAsync( input.FirstName, input.LastName, input.Email, input.DateOfBirth, input.PhoneNumber, input.Addition, 0, null, 0 ); foreach (Guid id in input.GroupIds) { var item = group.FirstOrDefault(gid => gid.Id.ToString().Equals(id.ToString())); if (item != null) { contactGroups.Add(new ContactGroup( GuidGenerator.Create(), contact.Id, item.Id )); } } contact.ContactGroups = contactGroups; await _contactRepository.InsertAsync(contact); //await _contactRepository.CreateContact(contact); return(ObjectMapper.Map <Contact, ContactDto>(contact)); }