public async Task <(int, long)> AddDependent([FromBody] DependentDetailsBO primaryMember) { var jwt = await HttpContext.GetTokenAsync(BrokerConstants.TokenScheme, BrokerConstants.AccessToken); var auditLogBO = new AuditLogBO(_appSettings.Value.ApplicationName, jwt, _httpContextAccessor); var statusCode = await _demographicsService.AddDependent(primaryMember, auditLogBO); return(statusCode); }
public static MemberDependent Map(DependentDetailsBO dependentMember, long memberDetailId) { return(new MemberDependent { MemberId = dependentMember.MemberId, MemberDetailId = memberDetailId, IsTobaccoUser = dependentMember.isTobaccoUser, CreatedOn = DateTime.Now, CreatedBy = dependentMember.MemberId, RelationshipId = dependentMember.RelationshipId }); }
/// <summary> /// Adds the dependent. /// </summary> /// <param name="primaryMember">The primary member.</param> /// <param name="auditLogBO">The audit log bo.</param> /// <returns></returns> /// <exception cref="CustomException"> /// MemberPrimaryMemberForAddDependentEmptyErrorCode /// or /// MemberAddDependentStatusEmptyErrorCode /// </exception> public async Task <(int, long)> AddDependent(DependentDetailsBO primaryMember, AuditLogBO auditLogBO) { if (primaryMember == null) { throw new CustomException(nameof(MemberConstants.MemberPrimaryMemberForAddDependentEmptyErrorCode)); } var statusCode = await _demographicsDataAccess.AddDependent(primaryMember, auditLogBO); if (statusCode.Item1 == 0) { throw new CustomException(nameof(MemberConstants.MemberAddDependentStatusEmptyErrorCode)); } return(statusCode); }
public static MemberDetail Map(DependentDetailsBO dependentMember, MemberDetail detail) { return(new MemberDetail { FirstName = dependentMember.FirstName.Trim(), LastName = dependentMember.LastName.Trim(), EmailId = detail.EmailId, PhoneNumber = detail.PhoneNumber, Gender = dependentMember.Gender, DateOfBirth = Convert.ToDateTime(dependentMember.DOB), CreatedBy = dependentMember.MemberId, CreatedOn = DateTime.Now, Ssn = dependentMember.Ssn ?? string.Empty }); }
public static MemberDependentAddress Map(DependentDetailsBO dependentMember, long memberDetailId, MemberAddress memberAddress) { return(new MemberDependentAddress { MemberId = dependentMember.MemberId, MemberDetailId = memberDetailId, AddressTypeId = memberAddress.AddressTypeId, AddressLine1 = memberAddress.AddressLine1, AddressLine2 = memberAddress.AddressLine2, City = memberAddress.City, ZipCode = memberAddress.ZipCode.Trim(), StateCode = memberAddress.StateCode, CreatedOn = DateTime.Now, CreatedBy = memberAddress.MemberId }); }
/// <summary> /// Adds the dependent. /// </summary> /// <param name="dependentMember">The dependent member.</param> /// <param name="auditLogBO">The audit log bo.</param> /// <returns></returns> public async Task <(int, long)> AddDependent(DependentDetailsBO dependentMember, AuditLogBO auditLogBO) { var statusCode = DependentAddRemove.IsNotAdded; long dependentId = 0; var memberRepo = _unitOfWork.GetRepository <Member>(); var memberInfo = await memberRepo.GetFirstOrDefaultAsync(a => a, b => b.MemberId == dependentMember.MemberId); var memberDetails = await _unitOfWork.GetRepository <MemberDetail>().GetFirstOrDefaultAsync(a => a, s => s.MemberDetailId == memberInfo.MemberDetailId); var memberDependentRepo = _unitOfWork.GetRepository <MemberDependent>(); var memberDependentDetailsRepo = _unitOfWork.GetRepository <MemberDetail>(); var dependents = await memberDependentRepo.GetPagedListAsync(a => a, predicate : b => b.MemberId == dependentMember.MemberId); var dependentIds = dependents.Items.Select(i => i.MemberDetailId).ToList(); var dependentDetails = await memberDependentDetailsRepo.GetPagedListAsync(a => a, predicate : b => dependentIds.Contains(b.MemberDetailId)); var checkdependent = dependentDetails.Items.Where(d => (d.FirstName == dependentMember.FirstName) && (d.LastName == dependentMember.LastName) && (Convert.ToString(d.DateOfBirth.Date.ToString("yyyy-MM-dd")) == dependentMember.DOB) && (((Relationship)dependents.Items.FirstOrDefault(dep => dep.MemberDetailId == d.MemberDetailId).RelationshipId).ToString() == dependentMember.Relationship)).ToList(); if (checkdependent.Any()) { statusCode = DependentAddRemove.IsExisting; return((int)statusCode, 0); } var memberSubscriptionPlan = await _unitOfWork.GetRepository <MemberSubscribedPlan>().GetPagedListAsync(a => a, s => s.MemberSubscription.MemberId == dependentMember.MemberId, pageIndex: BrokerConstants.PAGE_INDEX, pageSize: BrokerConstants.PAGE_SIZE); await _unitOfWork.GetRepository <MemberSubscription>().GetPagedListAsync(a => a, s => s.MemberId == dependentMember.MemberId, pageIndex: BrokerConstants.PAGE_INDEX, pageSize: BrokerConstants.PAGE_SIZE); var existingFamilyIndicator = memberSubscriptionPlan.Items.Select(a => a.FamilyIndicator).FirstOrDefault(); if (dependentMember != null) { var memberDependentId = 0; //Adding Details of Dependent in table var member = await _unitOfWork.GetRepository <Member>() .GetFirstOrDefaultAsync(a => a, obj => obj.MemberId == dependentMember.MemberId); var details = await _unitOfWork.GetRepository <MemberDetail>() .GetFirstOrDefaultAsync(a => a, obj => obj.MemberDetailId == member.MemberDetailId); var memberDetail = MemberMapper.Map(dependentMember, details); await _unitOfWork.GetRepository <MemberDetail>().InsertAsync(memberDetail); var dependentMemberDetailId = await _unitOfWork.SaveChangesAsync(); if (dependentMemberDetailId > 0) { var memberDependent = MemberMapper.Map(dependentMember, memberDetail.MemberDetailId); dependentId = memberDetail.MemberDetailId; var updatedFamilyIndicator = await UpdateFamilyIndicator(dependentMember.RelationshipId, existingFamilyIndicator, dependentMember.MemberId, "Add"); if (updatedFamilyIndicator > 0) { memberSubscriptionPlan.Items.All(msp => { msp.FamilyIndicator = updatedFamilyIndicator; return(true); }); _unitOfWork.GetRepository <MemberSubscribedPlan>().Update(memberSubscriptionPlan.Items); } await _unitOfWork.GetRepository <MemberDependent>().InsertAsync(memberDependent); memberDependentId = await _unitOfWork.SaveChangesAsync(); } if (memberDependentId > 0) { var memberAddress = await _unitOfWork.GetRepository <MemberAddress>() .GetFirstOrDefaultAsync(a => a, obj => obj.MemberId == dependentMember.MemberId); var memberDependentAddress = new MemberDependentAddress(); { memberDependentAddress.MemberId = dependentMember.MemberId; memberDependentAddress.MemberDetailId = memberDetail.MemberDetailId; memberDependentAddress.AddressTypeId = memberAddress.AddressTypeId; memberDependentAddress.AddressLine1 = memberAddress.AddressLine1; memberDependentAddress.AddressLine2 = memberAddress.AddressLine2; memberDependentAddress.City = memberAddress.City; memberDependentAddress.ZipCode = memberAddress.ZipCode.Trim(); memberDependentAddress.StateCode = memberAddress.StateCode; memberDependentAddress.CreatedOn = DateTime.Now; memberDependentAddress.CreatedBy = memberAddress.MemberId; //var isInvalidState = await ValidateState(memberAddress.StateCode); //if (!isInvalidState) //{ await _unitOfWork.GetRepository <MemberDependentAddress>().InsertAsync(memberDependentAddress); var rowCount = await _unitOfWork.SaveChangesAsync(); if (rowCount > 0) { statusCode = DependentAddRemove.IsAdded; } //} //else // return ((int)Utilities.Enumerations.ValidateState.StateInvalid, 0); } } if (dependentMember.MemberDependentQuestionAnswersBO != null) { await SaveDependentMemberQuestionAnswerAsync(dependentMember.MemberDependentQuestionAnswersBO, memberDetail.MemberDetailId, member.MemberId); } } if (statusCode == DependentAddRemove.IsAdded) { //Adding Dependent Information to Member Dependent Status History { var statusHistory = new List <MemberDependentStatusHistory>(); statusHistory.AddRange(memberSubscriptionPlan.Items.Select(q => new MemberDependentStatusHistory { MemberId = dependentMember.MemberId, MemberDetailId = dependentId, MemberSubscribedPlanId = q.MemberSubscribedPlanId, CreatedBy = dependentMember.MemberId, CreatedOn = DateTime.UtcNow })); await _unitOfWork.GetRepository <MemberDependentStatusHistory>().InsertAsync(statusHistory); await _unitOfWork.SaveChangesAsync(); } var mailTo = _appSettings.Value.PlanChangeRequestEmail; var notificaton = await _unitOfWork.GetRepository <Notification>().GetFirstOrDefaultAsync(predicate: n => n.Type == (int)EmailType.MemberDependentActivation); var questionIds = dependentMember.MemberDependentQuestionAnswersBO .Select(q => q.DependentQuestionnaireId).ToList(); var memberDependentQuestions = await _unitOfWork.GetRepository <MemberQuestionnaire>().GetPagedListAsync( a => new { a.MemberQuestionnaireId, a.MemberQuestionnaire1 }, predicate: question => questionIds.Contains(question.MemberQuestionnaireId), pageIndex: BrokerConstants.PAGE_INDEX, pageSize: BrokerConstants.PAGE_SIZE); var questionsContext = string.Empty; var answerValue = string.Empty; var i = 1; for (int item = 0; item < memberDependentQuestions.Items.Count; item++) { if (answerValue.ToLower().Equals("no")) { answerValue = string.Empty; continue; } var answer = dependentMember.MemberDependentQuestionAnswersBO.Where(q => q.DependentQuestionnaireId == memberDependentQuestions.Items[item] .MemberQuestionnaireId).Select(ans => ans.DependentAnswer).ToArray(); answerValue = answer.Length > 0 && !string.IsNullOrEmpty(answer[0]) ? answer[0] : "No Inputs"; questionsContext = questionsContext + "<br/>" + "Q" + i + ". " + memberDependentQuestions.Items[item].MemberQuestionnaire1 + "<br/>Ans: " + answerValue.Substring(0, 1).ToUpper() + answerValue.Substring(1); i++; } if (notificaton != null && dependentMember != null) { //var isTobaccoUser = dependentMember.isTobaccoUser ? "Yes" : "No"; var subject = notificaton.Subject.Replace("{externalId}", memberInfo.ExternalId); var body = notificaton.Content.Replace("{firstname}", memberDetails.FirstName) .Replace("{lastname}", memberDetails.LastName) .Replace("{externalId}", memberInfo.ExternalId) .Replace("{dependentfirstname}", dependentMember.FirstName) .Replace("{dependentlastname}", dependentMember.LastName) .Replace("{relationship}", Convert.ToString((Relationship)dependentMember.RelationshipId)) .Replace("{gender}", char.ToUpper(dependentMember.Gender[0]) + dependentMember.Gender.Substring(1)) .Replace("{dateofbirth}", dependentMember.DOB) //.Replace("{istobaccouser}", isTobaccoUser) .Replace("{questionnaire}", questionsContext); var email = MemberMapper.Map(mailTo, body, subject, _appSettings, notificaton.From); await _emailService.SendEmailAsync(email); } } return((int)statusCode, dependentId); }