public Child GetChildInfo(string CPR) { int CaseID = 0; SearchCriterion searchCriterion = new SearchCriterion() { ChildCPR = CPR + "*", CaseContent = "Løbende journal*", IsClosed = true }; IEnumerable <ChildCase> childCases = SearchChildren(searchCriterion); foreach (var childCase in childCases) { CaseID = childCase.CaseID; if (!childCase.IsClosed) // Hvis sagen ikke er afsluttet så behøver vi ikke at gå resten igennem { break; } } if (CaseID != 0) { return(GetChildInfo(CaseID)); } else { return(CPRBrokerService.GetChild(CPR)); } }
public Child GetChildInfo(int CaseID) { string CPR; Child child = new Child(); AcadreServiceV7.BUCaseFileType Case = (AcadreServiceV7.BUCaseFileType)caseService.GetCase(CaseID.ToString()); var user = GetUser(Case.CaseFileManagerReference); user = user ?? new AcadreServiceV7.UserType() { Initials = "", Name = "", Id = Case.CaseFileManagerReference }; child = CPRBrokerService.GetChild(Case.CaseFileTitleText.Substring(0, 10)); child.Note = Case.Note; child.CaseID = CaseID; child.CaseNumberIdentifier = Case.CaseFileNumberIdentifier; child.CaseManagerInitials = user.Initials; child.CaseManagerName = user.Name; child.CaseIsClosed = Case.CaseFileStatusCode == "A"; if (child.Siblings == null) { return(child); } var siblings = child.Siblings.ToArray(); for (int i = 0; i < child.Siblings.Count(); i++) { CPR = siblings[i].SimpleChild.CPR; SearchCriterion searchCriterion = new SearchCriterion() { ChildCPR = CPR, CaseContent = "Løbende journal*", IsClosed = true }; IEnumerable <ChildCase> childCases = SearchChildren(searchCriterion); foreach (var childCase in childCases) { siblings[i].CaseID = childCase.CaseID; siblings[i].Note = childCase.Note; siblings[i].CaseNumberIdentifier = childCase.CaseNumberIdentifier; siblings[i].CaseManagerInitials = childCase.CaseManagerInitials; siblings[i].CaseManagerName = childCase.CaseManagerName; siblings[i].CaseIsClosed = childCase.IsClosed; if (!childCase.IsClosed) // Hvis sagen ikke er afsluttet så behøver vi ikke at gå resten igennem { break; } } } child.Siblings = siblings.AsEnumerable(); return(child); }
public IEnumerable <ChildCase> SearchChildren(SearchCriterion searchCriterion) { // Acadre PWS metoden er begrænset af at der kun kan fremsøges 100 sager af gangen. Derfor suppleres der i disse tilfælde med Acadre PWI // Følgende parametre kan ikke søges efter gennem API: // 1. KLE // 2. PrimaryContactsName (men der kan godt søges efter specifik Primær kontakt ID) List <ChildCase> childCases = new List <ChildCase>(); var userList = configurationService.GetUserList(new AcadreServiceV7.EmptyRequestType()).ToList(); // Herfra kan CaseManager aflæses. Listen indeholder alle brugere i Acadre som ikke er ophørte. var UnknownUser = new AcadreServiceV7.UserType() { Initials = "", Name = "", Id = "" }; AcadreServiceV7.AdvancedCaseSearchRequestType3 advancedCaseSearchRequestType = new AcadreServiceV7.AdvancedCaseSearchRequestType3(); // For at sænke risikoen for at ramme de max 100 sager, så splittes søgningen op i åbne og lukkede sager string[] StatusCodes; if (searchCriterion.IsClosed.HasValue) { if (searchCriterion.IsClosed.Value) { StatusCodes = new string[] { "A" } } ; else { StatusCodes = new string[] { "B" } }; } else { StatusCodes = new string[] { "A", "B" }; //StatusCodes = new string[] { "A", "B", "P", "S" }; } // Sagstype er det samme for alle børnesager advancedCaseSearchRequestType.TypeCode = CaseFileTypeCode; // Afdeling er obligatorisk søgekriterie if (searchCriterion.AcadreOrgID != 0) { advancedCaseSearchRequestType.AdministrativeUnitId = searchCriterion.AcadreOrgID.ToString(); } // Sagsansvarlig er valgfrit søgekriterie if (searchCriterion.CaseManagerInitials != null) { var user = userList.SingleOrDefault(ut => ut.Initials == searchCriterion.CaseManagerInitials); if (user != null) { advancedCaseSearchRequestType.ResponsibleUserId = user.Id; } else { return(childCases); } } // Der kan desværre ikke søges efter kontakter med navn fordi Acadre PWS ikke kan returnere mere end 100 personer. string[] foundContactsGUI = new string[] { null }; if (searchCriterion.PrimaryContactsName != "" && searchCriterion.ChildCPR == "*") { var searchContactCriterion = new AcadreServiceV7.SearchContactCriterionType2(); //AcadreServiceV7.ContactType contactType = new AcadreServiceV7.ContactType(); searchContactCriterion.ContactTypeName = "Person"; searchContactCriterion.SearchTerm = searchCriterion.PrimaryContactsName; foundContactsGUI = contactService.SearchContacts(searchContactCriterion).Select(x => x.GUID).ToArray(); if (foundContactsGUI.Length == 0) { return(childCases); } else if (foundContactsGUI.Length > 10) { // Brug Acadre PWI i stedet var AcadreCases = PWIservice.SearchCases(searchCriterion); // Add to list foreach (var AcadreCase in AcadreCases) { var user = userList.SingleOrDefault(ut => ut.Id == AcadreCase.ResponsibleUserId.ToString()) ?? UnknownUser; childCases.Add(new ChildCase() { CaseID = AcadreCase.Id, ChildName = AcadreCase.Description, ChildCPR = AcadreCase.Title, CaseManagerInitials = user.Initials, CaseManagerName = user.Name, CaseContent = AcadreCase.Content, IsClosed = AcadreCase.Status.IsClosed, Note = "", CaseNumberIdentifier = AcadreCase.Year.ToString().Substring(2, 2) + "/" + AcadreCase.SequenceNumber }); } return(childCases); } } // CPR er valgfrit søgekriterie advancedCaseSearchRequestType.Title = searchCriterion.ChildCPR; var foundCases = new List <AcadreServiceV7.CaseFileType3>(); foreach (var PrimaryContactGUI in foundContactsGUI) { if (PrimaryContactGUI != null) { advancedCaseSearchRequestType.CustomFields = new AcadreServiceV7.CustomField[] { new AcadreServiceV7.CustomField { Value = searchCriterion.CaseContent, Name = "df1" }, new AcadreServiceV7.CustomField { Value = PrimaryContactGUI, Name = "df25" } } } ; else { advancedCaseSearchRequestType.CustomFields = new AcadreServiceV7.CustomField[] { new AcadreServiceV7.CustomField { Value = searchCriterion.CaseContent, Name = "df1" } } }; foreach (var StatusCode in StatusCodes) { advancedCaseSearchRequestType.StatusCode = StatusCode; var result = caseService.AdvancedCaseSearch(advancedCaseSearchRequestType); if (result.Length == 100) { // Brug Acadre PWI i stedet var AcadreCases = PWIservice.SearchCases(searchCriterion); // Add to list foreach (var AcadreCase in AcadreCases) { var user = userList.SingleOrDefault(ut => ut.Id == AcadreCase.ResponsibleUserId.ToString()) ?? UnknownUser; childCases.Add(new ChildCase() { CaseID = AcadreCase.Id, ChildName = AcadreCase.Description, ChildCPR = AcadreCase.Title.Substring(0, 10), CaseManagerInitials = user.Initials, CaseManagerName = user.Name, CaseContent = AcadreCase.Content, IsClosed = AcadreCase.Status.IsClosed, Note = "", CaseNumberIdentifier = AcadreCase.Year.ToString().Substring(2, 2) + "/" + AcadreCase.SequenceNumber }); } return(childCases); } foundCases.AddRange(result); } } if (!(searchCriterion.KLE == null)) { foundCases.RemoveAll(x => !x.Classification.Category.Where(y => y.Equals("KL Koder")).Select(y => y.Literal).Contains(searchCriterion.KLE)); } foreach (AcadreServiceV7.BUCaseFileType foundCase in foundCases) { var user = userList.SingleOrDefault(ut => ut.Id == foundCase.CaseFileManagerReference) ?? UnknownUser; childCases.Add(new ChildCase() { CaseID = int.Parse(foundCase.CaseFileIdentifier), ChildName = foundCase.TitleAlternativeText, ChildCPR = foundCase.CaseFileTitleText.Substring(0, 10), CaseManagerInitials = user.Initials, CaseManagerName = user.Name, CaseContent = foundCase.CustomFields.df1, IsClosed = foundCase.CaseFileStatusCode == "A", Note = foundCase.Note, CaseNumberIdentifier = foundCase.CaseFileNumberIdentifier }); } return(childCases); }