public async Task <IActionResult> CreateContact([FromBody] ContactForCreationDto contactForCreationDto) { if (contactForCreationDto == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { var contactEntity = Mapper.Map <Entities.Contact>(contactForCreationDto); _registrationRepository.AddContact(contactEntity); if (!_registrationRepository.Save()) { return(StatusCode(500, "A problem happened while handling your request.")); } var createdContactToReturn = Mapper.Map <ContactDto>(contactEntity); var email = await _emailService.GenerateEmailMessageAsync(createdContactToReturn); await _emailService.SendMessage(email); return(CreatedAtRoute("GetContact", new { id = createdContactToReturn.Id }, createdContactToReturn)); } catch (Exception) { return(StatusCode(500, "A problem happened while handling your request.")); } }