public string CreateCase(
            /* Case party's name */
            string personNameForAddressingName,
            /* Case party's CPR number */
            string personCivilRegistrationNumber,

            /* Case type. One of the following:
             * "EMSAG" (emnesag)
             * "BGSAG" (borgersag)
             * "EJSAG" (ejendomssag)
             * "PERSAG" (personalesag)
             * "BYGGESAG" (byggesag)
             * "BUSAG" (Børn og unge sag)*/
            string caseFileTypeCode,

            /* Security code. One of the following:
             * "BO" (borgersag)
             * "KK" (kommunekode)
             * "LP" (lukket punkt)
             * "PP" (personpunkt) */
            string accessCode,
            /* Case title */
            string caseFileTitleText,
            /* KLE journalizing code (http://www.kle-online.dk/emneplan/00/) */
            string journalizingCode,
            /* KLE facet for the specified journalizing code */
            string facet,

            /* Username of the user creating this case; get from Active Directory
             * (the AcadreServiceFactory.GetConfigurationService7().GetUserList(...) method will
             * return a full list) */
            string caseResponsible,

            /* Identifier of the administrative unit; should probably be "80" for "Løn og personale"
             * (the AcadreServiceFactory.GetConfigurationService7().GetAdminUnitList(...) method
             * will return a full list) */
            string administrativeUnit,
            /* Case content */
            string caseContent,

            /* Discard code. One of the following(?):
             * "B" (bevares),
             * "K" (kasseres),
             * "K5" (kasseres efter 5 år),
             * "K10" (kasseres efter 10 år)
             * "K20" (kasseres efter 20 år) */
            string caseFileDisposalCode,
            /* Deletion code; "P1800D" seems to be the standard value here */
            string deletionCode,
            string caseRestrictedFromPublicText,
            string SpecialistID,
            string RecommendationID,
            string CategoryID,
            string SubType
            )
        {
            // look up contact by cprnumber
            var searchContactCriterion = new AcadreServiceV7.SearchContactCriterionType2();

            searchContactCriterion.ContactTypeName = "Person";
            searchContactCriterion.SearchTerm      = personCivilRegistrationNumber;

            AcadreServiceV7.ContactSearchResponseType[] foundContacts =
                contactService.SearchContacts(searchContactCriterion);

            var PrimaryContact = GetCreateAcadreContact(personCivilRegistrationNumber);
            var simplePerson   = CPRBrokerService.GetSimplePersonByCPR(personCivilRegistrationNumber);

            // create the case
            var createCaseRequest = new AcadreServiceV7.CreateCaseRequestType();

            AcadreServiceV7.CaseFileType3 caseFile;
            if (caseFileTypeCode == "BUSAG")
            {
                AcadreServiceV7.BUCaseFileType BUcaseFile = new AcadreServiceV7.BUCaseFileType();
                try
                {
                    BUcaseFile.SpecialistId          = int.Parse(SpecialistID); // Faggruppe
                    BUcaseFile.SpecialistIdSpecified = true;
                }
                catch
                {
                    BUcaseFile.SpecialistIdSpecified = false;
                }
                try
                {
                    BUcaseFile.RecommendationId          = int.Parse(RecommendationID); // Henvendelse
                    BUcaseFile.RecommendationIdSpecified = true;
                }
                catch
                {
                    BUcaseFile.RecommendationIdSpecified = false;
                }
                try
                {
                    BUcaseFile.CategoryId          = int.Parse(CategoryID); // Kategori
                    BUcaseFile.CategoryIdSpecified = true;
                }
                catch
                {
                    BUcaseFile.CategoryIdSpecified = false;
                }
                caseFile = BUcaseFile;
            }
            else
            {
                caseFile = new AcadreServiceV7.CaseFileType3();
            }
            caseFile.SubType          = SubType; // SubType from input argument
            caseFile.CaseFileTypeCode = caseFileTypeCode;
            caseFile.Year             = DateTime.Now.Year.ToString();
            caseFile.CreationDate     = DateTime.Now;
            if (((IEnumerable <string>) new string[3]
            {
                "BUSAG",
                "BGSAG",
                "PERSAG"
            }).Contains(CaseFileTypeCode))
            {
                var KLECategory = configurationService.GetCategoryList(new AcadreServiceV7.EmptyRequestType()).ToList().Where(x => x.Principle.Literal == "KL Koder" && x.Literal == journalizingCode).FirstOrDefault();
                if (KLECategory == null)
                {
                    throw (new Exception("kunne ikke finde KLE nummer"));
                }
                string KLEtitle = KLECategory.Title;
                caseFile.CaseFileTitleText = string.Format("{0} - {1} - {2}", personCivilRegistrationNumber, simplePerson.FullName, KLEtitle);
            }
            else
            {
                caseFile.CaseFileTitleText = caseFileTitleText;
            }
            caseFile.CaseFileTitleText        = personCivilRegistrationNumber; // must be set to contact cpr number for BGSAG
            caseFile.TitleUnofficialIndicator = false;
            caseFile.TitleAlternativeText     = simplePerson.FullName;         // must be set to contact name for BGSAG
            caseFile.RestrictedFromPublicText = caseRestrictedFromPublicText;
            caseFile.CaseFileStatusCode       = "B";
            caseFile.CaseFileDisposalCode     = caseFileDisposalCode;
            caseFile.DeletionCode             = deletionCode;
            caseFile.AccessCode = accessCode;

            caseFile.AdministrativeUnit = new AcadreServiceV7.AdministrativeUnitType[]
            {
                new AcadreServiceV7.AdministrativeUnitType()
                {
                    AdministrativeUnitReference = administrativeUnit
                }
            };

            caseFile.CustomFieldCollection = new AcadreServiceV7.CustomField[]
            {
                new AcadreServiceV7.CustomField()
                {
                    Name = "df1", Value = caseContent
                }
                , new AcadreServiceV7.CustomField()
                {
                    Name = "df25", Value = PrimaryContact.GUID
                }
            };

            caseFile.Classification = new AcadreServiceV7.ClassificationType
            {
                Category = new AcadreServiceV7.CategoryType[] {
                    new AcadreServiceV7.CategoryType()
                    {
                        Principle = "KL Koder", Literal = journalizingCode
                    }
                    , new AcadreServiceV7.CategoryType()
                    {
                        Principle = "Facetter", Literal = facet
                    }
                }
            };

            if (caseFileTypeCode == "BUSAG")
            {
                var child = CPRBrokerService.GetChild(personCivilRegistrationNumber);
                // Forældre skal også med som kontakter
                var parents = new List <SimplePerson>();
                parents.AddRange(child.Mom ?? new SimplePerson[] { }); parents.AddRange(child.Dad ?? new SimplePerson[] { });
                var parentsGUI = new List <string>();
                foreach (var parent in parents)
                {
                    parentsGUI.Add(GetCreateAcadreContact(parent.CPR).GUID);
                }
                // Barnet tilføjes som primær part og forældre tilføjes som parter
                caseFile.Party    = new AcadreServiceV7.PartyType[1 + parentsGUI.Count];
                caseFile.Party[0] = new AcadreServiceV7.PartyType()
                {
                    CreationDate               = DateTime.Now,
                    ContactReference           = PrimaryContact.GUID,
                    PublicAccessLevelReference = "3",
                    IsPrimary = true
                };
                int i = 1;
                foreach (var parentGUI in parentsGUI)
                {
                    caseFile.Party[i] = new AcadreServiceV7.PartyType()
                    {
                        CreationDate               = DateTime.Now,
                        ContactReference           = parentGUI,
                        PublicAccessLevelReference = "3",
                        IsPrimary = false
                    };
                    i++;
                }
            }
            else
            {
                caseFile.Party = new AcadreServiceV7.PartyType[] { new AcadreServiceV7.PartyType()
                                                                   {
                                                                       CreationDate                 = DateTime.Now
                                                                       , ContactReference           = PrimaryContact.GUID
                                                                       , PublicAccessLevelReference = "3"
                                                                       , IsPrimary = true
                                                                   } }
            };

            var userList = configurationService.GetUserList(
                new AcadreServiceV7.EmptyRequestType()).ToList();
            var user = userList.SingleOrDefault(u => u.Initials == caseResponsible);

            if (user != null)
            {
                caseFile.CaseFileManagerReference = user.Id;
            }

            createCaseRequest.CaseFile = caseFile;

            var createCaseResponse = caseService.CreateCase(createCaseRequest);

            // check for multicase (samlesag) response.
            if (createCaseResponse.CreateCaseAndAMCResult == AcadreServiceV7.CreateCaseAndAMCResultType.CaseNotCreatedAndListAMCReceived)
            {
                // create the case in all the multicases
                createCaseRequest.MultiCaseIdentifiers = createCaseResponse.MultiCaseIdentifiers;
                createCaseResponse = createCaseResponse = caseService.CreateCase(createCaseRequest);
            }

            return(createCaseResponse.CaseFileIdentifier);
        }
Exemple #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="personNameForAddressingName"></param>
        /// <param name="personCivilRegistrationNumber"></param>
        /// <param name="caseFileTypeCode"></param>
        /// <param name="accessCode"></param>
        /// <param name="caseFileTitleText"></param>
        /// <param name="journalizingCode"></param>
        /// <param name="facet"></param>
        /// <param name="caseResponsible"></param>
        /// <param name="administrativeUnit"></param>
        /// <param name="caseContent"></param>
        /// <param name="caseFileDisposalCode"></param>
        /// <param name="deletionCode"></param>
        /// <param name="caseRestrictedFromPublicText"></param>
        /// <returns></returns>
        public static string CreateCase(
            /* Case party's name */
            string personNameForAddressingName,
            /* Case party's CPR number */
            string personCivilRegistrationNumber,

            /* Case type. One of the following:
             * "EMSAG" (emnesag)
             * "BGSAG" (borgersag)
             * "EJSAG" (ejendomssag)
             * "PERSAG" (personalesag)
             * "BYGGESAG" (byggesag) */
            string caseFileTypeCode,

            /* Security code. One of the following:
             * "BO" (borgersag)
             * "KK" (kommunekode)
             * "LP" (lukket punkt)
             * "PP" (personpunkt) */
            string accessCode,
            /* Case title */
            string caseFileTitleText,
            /* KLE journalizing code (http://www.kle-online.dk/emneplan/00/) */
            string journalizingCode,
            /* KLE facet for the specified journalizing code */
            string facet,

            /* Username of the user creating this case; get from Active Directory
             * (the AcadreServiceFactory.GetConfigurationService7().GetUserList(...) method will
             * return a full list) */
            string caseResponsible,

            /* Identifier of the administrative unit; should probably be "80" for "Løn og personale"
             * (the AcadreServiceFactory.GetConfigurationService7().GetAdminUnitList(...) method
             * will return a full list) */
            string administrativeUnit,
            /* Case content */
            string caseContent,

            /* Discard code. One of the following(?):
             * "B" (bevares),
             * "K" (kasseres),
             * "K5" (kasseres efter 5 år),
             * "K10" (kasseres efter 10 år)
             * "K20" (kasseres efter 20 år) */
            string caseFileDisposalCode,
            /* Deletion code; "P1800D" seems to be the standard value here */
            string deletionCode,
            string caseRestrictedFromPublicText
            )
        {
            var caseService          = Acadre.AcadreServiceFactory.GetCaseService7();
            var contactService       = Acadre.AcadreServiceFactory.GetContactService7();
            var configurationService = Acadre.AcadreServiceFactory.GetConfigurationService7();

            // look up contact by cprnumber
            var searchContactCriterion = new AcadreServiceV7.SearchContactCriterionType2();

            searchContactCriterion.ContactTypeName = "Person";
            searchContactCriterion.SearchTerm      = personCivilRegistrationNumber;

            AcadreServiceV7.ContactSearchResponseType[] foundContacts =
                contactService.SearchContacts(searchContactCriterion);

            string contactGUID;

            if (foundContacts.Length > 0)
            {
                // contact already exists, read GUID and name
                contactGUID = foundContacts.First().GUID;
            }
            else
            {
                // contact doesn't exist - create it and assign GUID
                var contact = new AcadreServiceV7.PersonType2();
                contact.PersonCivilRegistrationIdentifierStatusCode = "0";
                contact.PersonCivilRegistrationIdentifier           = personCivilRegistrationNumber;
                contact.PersonNameForAddressingName = personNameForAddressingName;
                contactGUID = contactService.CreateContact(contact);
            }

            // create the case
            var createCaseRequest = new AcadreServiceV7.CreateCaseRequestType();

            AcadreServiceV7.CaseFileType3 caseFile = new AcadreServiceV7.CaseFileType3();
            caseFile.CaseFileTypeCode         = caseFileTypeCode;
            caseFile.Year                     = DateTime.Now.Year.ToString();
            caseFile.CreationDate             = DateTime.Now;
            caseFile.CaseFileTitleText        = personCivilRegistrationNumber; // must be set to contact cpr number for BGSAG
            caseFile.TitleUnofficialIndicator = false;
            caseFile.TitleAlternativeText     = personNameForAddressingName;   // must be set to contact name for BGSAG
            caseFile.RestrictedFromPublicText = caseRestrictedFromPublicText;
            caseFile.CaseFileStatusCode       = "B";
            caseFile.CaseFileDisposalCode     = caseFileDisposalCode;
            caseFile.DeletionCode             = deletionCode;
            caseFile.AccessCode               = accessCode;

            caseFile.AdministrativeUnit = new AcadreServiceV7.AdministrativeUnitType[]
            {
                new AcadreServiceV7.AdministrativeUnitType()
                {
                    AdministrativeUnitReference = administrativeUnit
                }
            };

            caseFile.CustomFieldCollection = new AcadreServiceV7.CustomField[]
            {
                new AcadreServiceV7.CustomField()
                {
                    Name = "df1", Value = caseContent
                }
                , new AcadreServiceV7.CustomField()
                {
                    Name = "df25", Value = contactGUID
                }
            };

            caseFile.Classification = new AcadreServiceV7.ClassificationType
            {
                Category = new AcadreServiceV7.CategoryType[] {
                    new AcadreServiceV7.CategoryType()
                    {
                        Principle = "KL Koder", Literal = journalizingCode
                    }
                    , new AcadreServiceV7.CategoryType()
                    {
                        Principle = "Facetter", Literal = facet
                    }
                }
            };

            caseFile.Party = new AcadreServiceV7.PartyType[] { new AcadreServiceV7.PartyType()
                                                               {
                                                                   CreationDate                 = DateTime.Now
                                                                   , ContactReference           = contactGUID
                                                                   , PublicAccessLevelReference = "3"
                                                                   , IsPrimary = true
                                                               } };

            var userList = configurationService.GetUserList(
                new AcadreServiceV7.EmptyRequestType()).ToList();
            var user = userList.SingleOrDefault(u => u.Initials == caseResponsible);

            if (user != null)
            {
                caseFile.CaseFileManagerReference = user.Id;
            }

            createCaseRequest.CaseFile = caseFile;

            var createCaseResponse = caseService.CreateCase(createCaseRequest);

            // check for multicase (samlesag) response.
            if (createCaseResponse.CreateCaseAndAMCResult == AcadreServiceV7.CreateCaseAndAMCResultType.CaseNotCreatedAndListAMCReceived)
            {
                // create the case in all the multicases
                createCaseRequest.MultiCaseIdentifiers = createCaseResponse.MultiCaseIdentifiers;
                createCaseResponse = createCaseResponse = caseService.CreateCase(createCaseRequest);
            }

            return(createCaseResponse.CaseFileIdentifier);
        }
        public int CreateChildJournal(string CPR, int AcadreOrgID, string CaseManagerInitials)
        {
            CPR = CPR.Replace("-", "").Trim();
            if (!CPRBrokerService.IsValidCPR(CPR))
            {
                throw new Exception("CPR-nummeret (" + CPR + ") er ikke gyldigt.");
            }

            string KLE                    = "27.24.00";
            string CaseContent            = "Løbende journal";
            string PublicationRestriction = "2";      // Aktindsigt, 2 = Delvis
            string CaseStatus             = "B";      // Sagsstatus, B = Under Behandling
            string CaseDisposalCode       = "B";      // Kassationskode, B = Bevares
            string DeletionCode           = "P1825D"; // Slettekode
            string AccessCode             = "BN";     // Adgangskode, BN = Børnesager
            string Classification         = "G01";    // Facet
            string SubType                = "Person"; // Undertype
            int    SpecialistID           = 8;
            int    RecommendationID       = 1;
            int    CategoryID             = 4;
            string KLEtitle               = configurationService.GetCategoryList(new AcadreServiceV7.EmptyRequestType()).ToList().Where(x => x.Principle.Literal == "KL Koder").Where(x => x.Literal == KLE).First().Title;

            // Find informationer om barnet og eventuelle eksisterende sager
            var childinfo = GetChildInfo(CPR);

            // Hvis der blev fundet en åben sag så returneres denne sags CaseID. Hvis der kun blev fundet en lukket sag så returneres -1.
            if (childinfo.CaseID != 0 && !caseService.Url.Contains("esdhtest2"))
            {
                if (!childinfo.CaseIsClosed)
                {
                    return(childinfo.CaseID);
                }
                else
                {
                    return(-1);
                }
            }

            // look up contact by cpr number
            var PrimaryContact = GetCreateAcadreContact(CPR);

            // Forældre skal også med som kontakter
            var parents = new List <SimplePerson>();

            parents.AddRange(childinfo.Mom ?? new SimplePerson[] { }); parents.AddRange(childinfo.Dad ?? new SimplePerson[] { });
            var parentsGUI = new List <string>();

            foreach (var parent in parents)
            {
                parentsGUI.Add(GetCreateAcadreContact(parent.CPR).GUID);
            }

            var createCaseRequest = new AcadreServiceV7.CreateCaseRequestType();

            AcadreServiceV7.CaseFileType3 caseFile;
            //AcadreServiceV7.BUCaseFileType caseFile = new AcadreServiceV7.BUCaseFileType();
            if (CaseFileTypeCode == "BUSAG")
            {
                AcadreServiceV7.BUCaseFileType BUcaseFile = new AcadreServiceV7.BUCaseFileType();
                BUcaseFile.SpecialistId              = SpecialistID;     // Faggruppe
                BUcaseFile.SpecialistIdSpecified     = true;
                BUcaseFile.RecommendationId          = RecommendationID; // Henvendelse
                BUcaseFile.RecommendationIdSpecified = true;
                BUcaseFile.CategoryId          = CategoryID;             // Kategori
                BUcaseFile.CategoryIdSpecified = true;
                caseFile = BUcaseFile;
            }
            else
            {
                caseFile = new AcadreServiceV7.CaseFileType3();
            }
            caseFile.CaseFileTypeCode         = CaseFileTypeCode;
            caseFile.Year                     = DateTime.Now.Year.ToString();
            caseFile.CreationDate             = DateTime.Now;
            caseFile.CaseFileTitleText        = string.Format("{0} - {1} - {2}", CPR, childinfo.SimpleChild.FullName, KLEtitle);
            caseFile.TitleAlternativeText     = childinfo.SimpleChild.FullName;
            caseFile.RestrictedFromPublicText = PublicationRestriction;
            caseFile.CaseFileStatusCode       = CaseStatus;
            caseFile.CaseFileDisposalCode     = CaseDisposalCode;
            caseFile.DeletionCode             = DeletionCode;
            caseFile.AccessCode               = AccessCode;
            caseFile.SubType                  = SubType;
            caseFile.AdministrativeUnit       = new AcadreServiceV7.AdministrativeUnitType[]
            {
                new AcadreServiceV7.AdministrativeUnitType()
                {
                    AdministrativeUnitReference = AcadreOrgID.ToString()
                }
            };

            caseFile.CustomFieldCollection = new AcadreServiceV7.CustomField[]
            {
                new AcadreServiceV7.CustomField()
                {
                    Name = "df1", Value = CaseContent
                }
                , new AcadreServiceV7.CustomField()
                {
                    Name = "df25", Value = PrimaryContact.GUID
                }                                                                                         //contactGUID
            };

            caseFile.Classification = new AcadreServiceV7.ClassificationType
            {
                Category = new AcadreServiceV7.CategoryType[] {
                    new AcadreServiceV7.CategoryType()
                    {
                        Principle = "KL Koder", Literal = KLE
                    }
                    , new AcadreServiceV7.CategoryType()
                    {
                        Principle = "Facetter", Literal = Classification
                    }
                }
            };

            // Barnet tilføjes som primær part og forældre tilføjes som parter
            caseFile.Party    = new AcadreServiceV7.PartyType[1 + parentsGUI.Count];
            caseFile.Party[0] = new AcadreServiceV7.PartyType()
            {
                CreationDate                 = DateTime.Now
                , ContactReference           = PrimaryContact.GUID
                , PublicAccessLevelReference = "3"
                , IsPrimary = true
            };
            int i = 1;

            foreach (var parentGUI in parentsGUI)
            {
                caseFile.Party[i] = new AcadreServiceV7.PartyType()
                {
                    CreationDate                 = DateTime.Now
                    , ContactReference           = parentGUI
                    , PublicAccessLevelReference = "3"
                    , IsPrimary = false
                };
                i++;
            }

            createCaseRequest.CaseFile = caseFile;


            var userList = configurationService.GetUserList(new AcadreServiceV7.EmptyRequestType()).ToList();
            var user     = userList.SingleOrDefault(ut => ut.Initials == CaseManagerInitials);

            if (user != null)
            {
                createCaseRequest.CaseFile.CaseFileManagerReference = user.Id;
            }
            //createCaseRequest.CaseFile.
            var createCaseResponse = caseService.CreateCase(createCaseRequest);

            // check for multicase (samlesag) response.
            if (createCaseResponse.CreateCaseAndAMCResult == AcadreServiceV7.CreateCaseAndAMCResultType.CaseNotCreatedAndListAMCReceived)
            {
                // create the case in all the multicases
                createCaseRequest.MultiCaseIdentifiers = createCaseResponse.MultiCaseIdentifiers;
                createCaseResponse = createCaseResponse = caseService.CreateCase(createCaseRequest);
            }
            return(int.Parse(createCaseResponse.CaseFileIdentifier));
        }