public IEnumerable <ChildCase> GetChildCases(int CaseID) { List <ChildCase> childCases = new List <ChildCase>(); AcadreServiceV7.BUCaseFileType Case = (AcadreServiceV7.BUCaseFileType)caseService.GetCase(CaseID.ToString()); string CPR = Case.CaseFileTitleText.Substring(0, 10); AcadreServiceV7.AdvancedSearchCaseCriterionType2 searchCriterion = new AcadreServiceV7.AdvancedSearchCaseCriterionType2(); searchCriterion.CaseFileTitleText = CPR; searchCriterion.CaseFileTypeCode = CaseFileTypeCode; var userList = configurationService.GetUserList(new AcadreServiceV7.EmptyRequestType()).ToList(); foreach (AcadreServiceV7.CaseSearchResponseType foundCase in caseService.SearchCases(searchCriterion)) { Case = (AcadreServiceV7.BUCaseFileType)caseService.GetCase(foundCase.CaseFileReference); var user = userList.SingleOrDefault(ut => ut.Id == Case.CaseFileManagerReference); if (user == null) { user = new AcadreServiceV7.UserType() { Initials = "", Name = "" }; } childCases.Add(new ChildCase { CaseID = int.Parse(foundCase.CaseFileReference), CaseContent = Case.CustomFields.df1, ChildCPR = CPR, CaseNumberIdentifier = Case.CaseFileNumberIdentifier, CaseManagerInitials = user.Initials, CaseManagerName = user.Name, Note = Case.Note, ChildName = Case.TitleAlternativeText, IsClosed = Case.CaseFileStatusCode == "A" }); } return(childCases); }
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); }
// Changes the Responsible CaseManager on all the childrens cases where the CaseManagerInitials = oldCaseManagerInitials. If oldCaseManagerInitials is "" then all child cases CaseManager is changed to newCaseManagerInitials. public void ChangeChildResponsible(string oldCaseManagerInitials, string newCaseManagerInitials, int newAcadreOrgID, int CaseID) { var userList = configurationService.GetUserList(new AcadreServiceV7.EmptyRequestType()).ToList(); var newUser = userList.SingleOrDefault(ut => ut.Initials == newCaseManagerInitials); if (newUser == null) { throw new Exception("Der fandtes ikke en bruger i Acadre med initialerne " + newCaseManagerInitials); } AcadreServiceV7.BUCaseFileType Case = (AcadreServiceV7.BUCaseFileType)caseService.GetCase(CaseID.ToString()); if (!Case.CustomFieldCollection.Single(x => x.Name == "df1").Value.Contains("Løbende ")) { Case.CaseFileManagerReference = newUser.Id; Case.AdministrativeUnit = new AcadreServiceV7.AdministrativeUnitType[] { new AcadreServiceV7.AdministrativeUnitType() { AdministrativeUnitReference = newAcadreOrgID.ToString() } }; try { caseService.UpdateCase(Case); } catch (Exception e) { throw new Exception("Kunne ikke opdatere Acadre sagen", e); } return; } string CPR = Case.CaseFileTitleText.Substring(0, 10); AcadreServiceV7.AdvancedSearchCaseCriterionType2 searchCriterion = new AcadreServiceV7.AdvancedSearchCaseCriterionType2(); searchCriterion.CaseFileTitleText = CPR + "*"; searchCriterion.CaseFileTypeCode = CaseFileTypeCode; foreach (AcadreServiceV7.CaseSearchResponseType foundCase in caseService.SearchCases(searchCriterion)) { Case = (AcadreServiceV7.BUCaseFileType)caseService.GetCase(foundCase.CaseFileReference); var user = userList.SingleOrDefault(ut => ut.Id == Case.CaseFileManagerReference); if (user == null) { user = new AcadreServiceV7.UserType { Initials = "" } } ; if (user.Initials == oldCaseManagerInitials || oldCaseManagerInitials == "" || user.Initials == "") { Case.CaseFileManagerReference = newUser.Id; Case.AdministrativeUnit = new AcadreServiceV7.AdministrativeUnitType[] { new AcadreServiceV7.AdministrativeUnitType() { AdministrativeUnitReference = newAcadreOrgID.ToString() } }; try { caseService.UpdateCase(Case); } catch (Exception e) { throw new Exception("Kunne ikke opdatere Acadre sagen", e); } } } }