public async Task <int> AddCandidate(CandidateDetailsWithSkills details) { var timeNow = DateTime.Now; var candidateObject = new Candidate() { FirstName = details.FirstName, Surname = details.LastName, DateOfBirth = details.DateOfBirth, Address1 = details.Address1, Town = details.Town, Country = details.Country, PostCode = details.PostCode, PhoneHome = details.PhoneHome, PhoneMobile = details.PhoneMobile, PhoneWork = details.PhoneWork, CreatedDate = timeNow, UpdatedDate = timeNow }; var candidateId = await _candidateRepository.Add(candidateObject); if (details.SkillIds != null) { int numSkills = details.SkillIds.Count; if (numSkills > 0) { // If number of records created doesn't match size of input list consider rolling back entire transaction var numRecords = await _candidateRepository.AddSkills(candidateId, details.SkillIds); } } return(candidateId); }