Exemplo n.º 1
0
        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());
        }