public async Task <ActionResult> Put([FromBody] ContactDtos contactDtos)
        {
            var TempContact = await applicationContext.Contact.FindAsync(contactDtos.ContactId);

            if (TempContact == null)
            {
                return(NotFound());
            }

            foreach (ContactDetail contact in Mapping(contactDtos.ContactDetails, TempContact.ContactId))
            {
                var details = applicationContext.ContactDetail.SingleOrDefault(tempContact => tempContact.ContactTypeId == contact.ContactTypeId &&
                                                                               tempContact.ContactId == contact.ContactId);
                if (details != null)
                {
                    contact.ContactDetailId = details.ContactDetailId;
                    applicationContext.Entry(details).CurrentValues.SetValues(contact);
                }
                else
                {
                    applicationContext.ContactDetail.Add(contact);
                }
                await applicationContext.SaveChangesAsync();
            }

            applicationContext.Entry(TempContact).CurrentValues.SetValues(mapper.Map <Contact>(contactDtos));
            await applicationContext.SaveChangesAsync();

            return(Ok());
        }
        public async Task <ActionResult> Post([FromBody] ContactDtos contactDtos)
        {
            var contact = mapper.Map <Contact>(contactDtos);
            await applicationContext.Contact.AddAsync(contact);

            await applicationContext.SaveChangesAsync();

            var contactDetails = Mapping(contactDtos.ContactDetails, contact.ContactId);

            contactDetails.ForEach(contactDetail => applicationContext.Add(contactDetail));

            await applicationContext.SaveChangesAsync();

            return(Ok());
        }