public DEJOSOBU_RESP NajdiOsobu(Session sesna, int EXT_APP_KOD, string RC_IC, string JMENO, string PRIJMENI, DateTime?DATUM_NAROZENI, string NAZEV)
        {
            DEJOSOBU_RESP osobaResp = new DEJOSOBU_RESP();

            try
            {
                if (!string.IsNullOrWhiteSpace(RC_IC))
                {
                    return(Najdi(sesna, EXT_APP_KOD, RC_IC));
                }

                if (!string.IsNullOrWhiteSpace(JMENO) && !string.IsNullOrWhiteSpace(PRIJMENI) && (DATUM_NAROZENI.HasValue))
                {
                    return(Najdi(sesna, EXT_APP_KOD, JMENO, PRIJMENI, DATUM_NAROZENI.Value, ""));
                }

                if (!string.IsNullOrWhiteSpace(NAZEV))
                {
                    return(Najdi(sesna, EXT_APP_KOD, "", "", new DateTime(2000, 1, 1), NAZEV));
                }


                osobaResp.ERRORMESS = "Chybné vstupní parametry. \n Povolené kombinace: " +
                                      " \n - RC_IC" +
                                      " \n - JMENO, PRIJMENI, DATUM_NAROZENI" +
                                      " \n - NAZEV";
                osobaResp.result = Result.ERROR;
                osobaResp.status = Status.ERROR;
                return(osobaResp);
            }
            catch (Exception exc)
            {
                osobaResp.result = Result.ERROR;
                osobaResp.status = Status.ERROR;

                if (exc.InnerException == null)
                {
                    osobaResp.ERRORMESS = exc.Message;
                }
                else
                {
                    osobaResp.ERRORMESS = exc.InnerException.Message;
                }
                return(osobaResp);
            }
        }
        public DEJOSOBU_RESP Najdi(Session session, int EXT_APP_KOD, string RC_IC)
        {
            Session       sesna     = session;
            DEJOSOBU_RESP osobaResp = new DEJOSOBU_RESP();

            try
            {
                CriteriaOperator criteria = CriteriaOperator.Parse("ADR_SICO = ?", RC_IC);
                XPCollection <P_ADRESA_ROBRHS> adrExist = new XPCollection <P_ADRESA_ROBRHS>(sesna, criteria);
                if (adrExist.Count > 0)
                {
                    osobaResp.result = Result.OK;
                    osobaResp.status = Status.EXISTS;
                    foreach (var item in adrExist)
                    {
                        //zkopiruji adresu a kontaktni adresu
                        OSOBA osoba = new OSOBA();
                        Utils.copy.CopyDlePersistentAttr <OSOBA>(item, osoba);
                        Utils.copy.CopyDlePersistentAttr <KONTAKTNI_ADRESA>(item, osoba.KONTAKTNI_ADRESA);
                        osoba.RC_IC = item.ADR_SICO; //0.8
                        osobaResp.OSOBY.Add(osoba);
                    }
                }
                else
                {
                    osobaResp.status = Status.NOTEXISTS;
                }
                return(osobaResp);
            }
            catch (Exception exc)
            {
                osobaResp.result = Result.ERROR;

                if (exc.InnerException == null)
                {
                    osobaResp.ERRORMESS = exc.Message;
                }
                else
                {
                    osobaResp.ERRORMESS = exc.InnerException.Message;
                }
                return(osobaResp);
            }
        }
        public DEJOSOBU_RESP Najdi(Session sesna, int EXT_APP_KOD, string JMENO, string PRIJMENI, DateTime DATUM_NAROZENI, string NAZEV)
        {
            DEJOSOBU_RESP osobaResp = new DEJOSOBU_RESP();

            try
            {
                CriteriaOperator criteria;
                if (NAZEV.Length > 0)
                {
                    criteria = CriteriaOperator.Parse("Contains(UPPER(ADR_NAZEV1), ?) and ADR_TYP = ?",
                                                      NAZEV.ToUpper(), "P");
                }
                else
                {
                    criteria = CriteriaOperator.Parse("UPPER(ADR_JMENO) = ? and UPPER(ADR_PRIJMENI) = ? and ADR_DATNAR = ? ", JMENO.ToUpper(), PRIJMENI.ToUpper(), DATUM_NAROZENI);
                }
                XPCollection <P_ADRESA_ROBRHS> adrExist = new XPCollection <P_ADRESA_ROBRHS>(sesna, criteria);

                if (adrExist.Count > 100)
                {
                    osobaResp.result    = Result.ERROR;
                    osobaResp.status    = Status.TOOMANY;
                    osobaResp.ERRORMESS = "Příliš mnoho hodnot, je potřeba zpřesnit výběrové kritérium.";
                    return(osobaResp);
                }

                if (adrExist.Count > 0)
                {
                    osobaResp.result = Result.OK;
                    osobaResp.status = Status.EXISTS;
                    int returnRC;
                    if (!int.TryParse(System.Web.Configuration.WebConfigurationManager.AppSettings["ReturnRC"], out returnRC))
                    {
                        ;
                    }
                    returnRC = 0;

                    foreach (var item in adrExist)
                    {
                        //zkopiruji adresu a kontaktni adresu
                        OSOBA osoba = new OSOBA();
                        Utils.copy.CopyDlePersistentAttr <OSOBA>(item, osoba);
                        Utils.copy.CopyDlePersistentAttr <KONTAKTNI_ADRESA>(item, osoba.KONTAKTNI_ADRESA);
                        osoba.RC_IC = item.ADR_SICO; //0.8
                        if ((osoba.TYP == TypOsoby.C) || (osoba.TYP == TypOsoby.F))
                        {
                            if (returnRC == 0)
                            {
                                osoba.RC_IC = null;
                            }
                        }
                        osobaResp.OSOBY.Add(osoba);
                    }
                }
                else
                {
                    osobaResp.status = Status.NOTEXISTS;
                }

                return(osobaResp);
            }
            catch (Exception exc)
            {
                osobaResp.result = Result.ERROR;

                if (exc.InnerException == null)
                {
                    osobaResp.ERRORMESS = exc.Message;
                }
                else
                {
                    osobaResp.ERRORMESS = exc.InnerException.Message;
                }
                return(osobaResp);
            }
        }