public AddCareTeamMemberResponse Post(AddCareTeamMemberRequest request) { if (request == null) { throw new ArgumentNullException("request"); } var response = new AddCareTeamMemberResponse(); ValidateTokenResponse result = null; try { request.Token = base.Request.Headers["Token"] as string; result = Security.IsUserValidated(request.Version, request.Token, request.ContractNumber); if (result.UserId.Trim() != string.Empty) { request.UserId = result.UserId; var dataResponse = ContactManager.AddCareTeamMember(request); response.Id = dataResponse.Id; } else { throw new UnauthorizedAccessException(); } } catch (Exception ex) { CommonFormatter.FormatExceptionResponse(response, base.Response, ex); if ((ex is WebServiceException) == false) { ContactManager.LogException(ex); } } finally { if (result != null) { AuditHelper.LogAuditData(request, result.SQLUserId, null, System.Web.HttpContext.Current.Request, request.GetType().Name); } } return(response); }
public AddCareTeamMemberDataResponse AddCareTeamMember(AddCareTeamMemberRequest request) { var response = new AddCareTeamMemberDataResponse(); try { IRestClient client = new JsonServiceClient(); var url = Common.Helper.BuildURL(string.Format("{0}/{1}/{2}/{3}/Contacts/{4}/CareTeams/{5}/CareTeamMembers", DDContactServiceUrl, "NG", request.Version, request.ContractNumber, request.ContactId, request.CareTeamId), request.UserId); var dataDomainResponse = client.Post <AddCareTeamMemberDataResponse>(url, new AddCareTeamMemberDataRequest { CareTeamMemberData = Mapper.Map <CareTeamMemberData>(request.CareTeamMember), Version = request.Version, ContactId = request.ContactId, CareTeamId = request.CareTeamId, ContractNumber = request.ContractNumber, Context = "NG" } as object); if (dataDomainResponse != null) { response.Version = dataDomainResponse.Version; response.Status = response.Status == null ? new ResponseStatus() : dataDomainResponse.Status; response.Id = dataDomainResponse.Id; } } catch (WebServiceException wse) { throw new WebServiceException("AD:AddCareTeamMember()::" + wse.Message, wse.InnerException); } return(response); }
public AddCareTeamMemberResponse AddCareTeamMember(AddCareTeamMemberRequest request) { var response = new AddCareTeamMemberResponse(); if (request == null) { throw new ArgumentNullException("request"); } ValidateCareTeamMemberFields(request.CareTeamMember); var careTeamData = EndpointUtil.GetCareTeam(new GetCareTeamRequest { ContactId = request.ContactId, ContractNumber = request.ContractNumber, UserId = request.UserId, Version = request.Version }); if (careTeamData == null) { throw new ApplicationException(string.Format("No care team exists for contact {0}", request.ContactId)); } var members = careTeamData.Members; if (!members.IsNullOrEmpty()) { var mappedMembers = members.Select(Mapper.Map <Member>).ToList(); mappedMembers.Add(request.CareTeamMember); var careTeam = new CareTeam { Members = mappedMembers, ContactId = request.ContactId, Id = careTeamData.Id }; if (CohortRuleUtil.HasMultipleActiveCorePCM(careTeam)) { throw new ApplicationException("The Care team cannot have multiple Active, Core PCMs"); } if (CohortRuleUtil.HasMultipleActiveCorePCP(careTeam)) { throw new ApplicationException("The Care team cannot have multiple Active, Core PCPs"); } } var contact = GetContactByContactId(new GetContactByContactIdRequest { ContractNumber = request.ContractNumber, ContactId = request.ContactId, UserId = request.UserId, Version = request.Version }); if (contact == null) { throw new ApplicationException(string.Format("Contact with id: {0} does not exist", request.ContactId)); } var cohortRuleCheckData = new CohortRuleCheckData() { ContactId = request.ContactId, ContractNumber = request.ContractNumber, UserId = request.UserId, PatientId = contact.PatientId }; try { var domainResponse = EndpointUtil.AddCareTeamMember(request); if (domainResponse != null) { response.Id = domainResponse.Id; CohortRules.EnqueueCohorRuleCheck(cohortRuleCheckData); } } catch (Exception ex) { throw new Exception("AD:UpdateCareTeamMember()::" + ex.Message, ex.InnerException); } return(response); }