public async Task <IActionResult> RequestUpdateFamilyMember(int id, [FromBody] FamilyMemberViewModel familyMember) { if (ModelState.IsValid) { if (familyMember == null) { return(BadRequest($"{nameof(familyMember)} cannot be null")); } if (id != familyMember.Id) { return(BadRequest("Conflicting family member id in parameter and model data")); } } FamilyMemberUpdate familyMemberUpdate = Mapper.Map <FamilyMemberViewModel, FamilyMemberUpdate>(familyMember); familyMemberUpdate.Status = UpdateStatus.Pending; familyMemberUpdate.Id = 0; familyMemberUpdate.RefId = id; var newId = await this._unitOfWork.FamilyMemberUpdates.AddFamilyMemberUpdateAsync(familyMemberUpdate); var userId = Utilities.GetUserId(this.User); ApplicationUser appUser = await this._accountManager.GetUserByIdAsync(userId); var recipients = new EmailAddress[] { new EmailAddress { Name = EmailSender.Configuration.AdminName, Email = EmailSender.Configuration.AdminEmail } }; var webRootPath = $"{this.Request.Scheme}://{this.Request.Host}/api/FamilyMember/updates/"; //TODO: Get Parnet, Controy, and Horsoscope var requestParam = new Dictionary <string, string> { { "{requester.Name}", appUser.FirstName + " " + appUser.LastName }, { "{requester.Email}", appUser.Email }, { "{requester.PhoneNumber}", appUser.PhoneNumber }, { "{familyMemberUpdate.FamilyId}", familyMemberUpdate.FamilyId }, { "{familyMemberUpdate.BirthYear}", familyMemberUpdate.BirthYear != null?familyMemberUpdate.BirthYear.Value.ToString() : "N/A" }, { "{familyMemberUpdate.City}", familyMemberUpdate.City != null ? familyMemberUpdate.City : "" }, { "{familyMemberUpdate.Country}", familyMemberUpdate.CountryId != null?familyMemberUpdate.CountryId.ToString() : "N/A" }, { "{familyMemberUpdate.DeathYear}", familyMemberUpdate.DeathYear != null?familyMemberUpdate.DeathYear.ToString() : "N/A" }, { "{familyMemberUpdate.DisplayEmail}", familyMemberUpdate.DisplayEmail != null ? familyMemberUpdate.DisplayEmail : "N/A" }, { "{familyMemberUpdate.DisplayPhone}", familyMemberUpdate.DisplayPhone != null ? familyMemberUpdate.DisplayPhone : "N/A" }, { "{familyMemberUpdate.DisplayPhoneType}", familyMemberUpdate.DisplayPhoneType != null?familyMemberUpdate.DisplayPhoneType.ToString() : "N/A" }, { "{familyMemberUpdate.Facebook}", familyMemberUpdate.Facebook != null ? familyMemberUpdate.Facebook : "N/A" }, { "{familyMemberUpdate.FamilyName_En}", familyMemberUpdate.FamilyName_En != null ? familyMemberUpdate.FamilyName_En : "N/A" }, { "{familyMemberUpdate.FirstName_Ar}", familyMemberUpdate.FirstName_Ar != null ? familyMemberUpdate.FirstName_Ar : "N/A" }, { "{familyMemberUpdate.FirstName_En}", familyMemberUpdate.FirstName_En != null ? familyMemberUpdate.FirstName_En : "N/A" }, { "{familyMemberUpdate.Gender}", familyMemberUpdate.Gender.ToString() }, { "{familyMemberUpdate.Generation}", familyMemberUpdate.Generation.ToString() }, { "{familyMemberUpdate.Horoscope}", familyMemberUpdate.HoroscopeId != null?familyMemberUpdate.HoroscopeId.ToString() : "N/A" }, { "{familyMemberUpdate.LinkedIn}", familyMemberUpdate.LinkedIn != null ? familyMemberUpdate.LinkedIn : "N/A" }, { "{familyMemberUpdate.MaritalStatus}", familyMemberUpdate.MaritalStatus != null?familyMemberUpdate.MaritalStatus.ToString() : "N/A" }, { "{familyMemberUpdate.MotherFirstName_Ar}", familyMemberUpdate.MotherFirstName_Ar != null ? familyMemberUpdate.MotherFirstName_Ar : "N/A" }, { "{familyMemberUpdate.MotherFirstName_En}", familyMemberUpdate.MotherFirstName_En != null ? familyMemberUpdate.MotherFirstName_En : "N/A" }, { "{familyMemberUpdate.MotherLastName_Ar}", familyMemberUpdate.MotherLastName_Ar != null ? familyMemberUpdate.MotherLastName_Ar : "N/A" }, { "{familyMemberUpdate.MotherLastName_En}", familyMemberUpdate.MotherLastName_En != null ? familyMemberUpdate.MotherLastName_En : "N/A" }, { "{familyMemberUpdate.Parent}", familyMemberUpdate.ParentId != null?familyMemberUpdate.ParentId.ToString() : "N/A" }, { "{familyMemberUpdate.Province}", familyMemberUpdate.Province != null ? familyMemberUpdate.Province : "N/A" }, { "{familyMemberUpdate.Sequence}", familyMemberUpdate.Sequence.ToString() }, { "{familyMemberUpdate.SpouseFirstName_Ar}", familyMemberUpdate.SpouseFirstName_Ar != null ? familyMemberUpdate.SpouseFirstName_Ar : "N/A" }, { "{familyMemberUpdate.SpouseFirstName_En}", familyMemberUpdate.SpouseFirstName_En != null ? familyMemberUpdate.SpouseFirstName_En : "N/A" }, { "{familyMemberUpdate.SpouseLastName_Ar}", familyMemberUpdate.SpouseLastName_Ar != null ? familyMemberUpdate.SpouseLastName_Ar : "N/A" }, { "{familyMemberUpdate.SpouseLastName_En}", familyMemberUpdate.SpouseLastName_En != null ? familyMemberUpdate.SpouseLastName_En : "N/A" }, { "{familyMemberUpdate.PrvSpouseFirstName_Ar}", familyMemberUpdate.PrvSpouseFirstName_Ar != null ? familyMemberUpdate.PrvSpouseFirstName_Ar : "N/A" }, { "{familyMemberUpdate.PrvSpouseFirstName_En}", familyMemberUpdate.PrvSpouseFirstName_En != null ? familyMemberUpdate.PrvSpouseFirstName_En : "N/A" }, { "{familyMemberUpdate.PrvSpouseLastName_Ar}", familyMemberUpdate.PrvSpouseLastName_Ar != null ? familyMemberUpdate.PrvSpouseLastName_Ar : "N/A" }, { "{familyMemberUpdate.PrvSpouseLastName_En}", familyMemberUpdate.PrvSpouseLastName_En != null ? familyMemberUpdate.PrvSpouseLastName_En : "N/A" }, { "{familyMemberUpdate.PrvPrvSpouseFirstName_Ar}", familyMemberUpdate.PrvPrvSpouseFirstName_Ar != null ? familyMemberUpdate.PrvPrvSpouseFirstName_Ar : "N/A" }, { "{familyMemberUpdate.PrvPrvSpouseFirstName_En}", familyMemberUpdate.PrvPrvSpouseFirstName_En != null ? familyMemberUpdate.PrvPrvSpouseFirstName_En : "N/A" }, { "{familyMemberUpdate.PrvPrvSpouseLastName_Ar}", familyMemberUpdate.PrvPrvSpouseLastName_Ar != null ? familyMemberUpdate.PrvPrvSpouseLastName_Ar : "N/A" }, { "{familyMemberUpdate.PrvPrvSpouseLastName_En}", familyMemberUpdate.PrvPrvSpouseLastName_En != null ? familyMemberUpdate.PrvPrvSpouseLastName_En : "N/A" }, { "{familyMemberUpdate.FemChildrenList_Ar}", familyMemberUpdate.FemChildrenList_Ar != null ? familyMemberUpdate.FemChildrenList_Ar : "N/A" }, { "{familyMemberUpdate.FemChildrenList_En}", familyMemberUpdate.FemChildrenList_En != null ? familyMemberUpdate.FemChildrenList_En : "N/A" }, { "{familyMemberUpdate.PassedAway}", familyMemberUpdate.PassedAway ? "Yes" : "No" }, { "{familyMemberUpdate.SpousePassedAway}", familyMemberUpdate.SpousePassedAway ? "Yes" : "No" }, { "{familyMemberUpdate.Website}", familyMemberUpdate.Website != null ? familyMemberUpdate.Website : "N/A" }, { "{Url.Approve}", $"{webRootPath}approve/{newId}" }, { "{Url.Reject}", $"{webRootPath}reject/{newId}" }, }; var response = await EmailSender.SendEmailAsync( recipients, subject : "Adam.info Request Family Member Update", content : EmailTemplates.GetFamilyMemberUpdatedEmail(requestParam, "en"), isHtml : true, addBccs : false); if (!response.Item1) { this.logger.LogWarning(new EventId(1, "Email Error"), null, $"Failed to send Email Error: {response.Item2}"); } return(NoContent()); }