Ejemplo n.º 1
0
        public IList <SendMail.Model.RubricaMapping.RubricaContatti> LoadContattiOrgByName(string identita, bool startFromOrg, bool includeDescendant, bool includeIPA)
        {
            List <RubricaContatti> lCont = null;

            List <SendMail.Model.EntitaType> tEnt = new List <SendMail.Model.EntitaType>();

            tEnt.Add(SendMail.Model.EntitaType.ALL);
            try
            {
                RubrEntitaSQLDb      sql     = new RubrEntitaSQLDb();
                List <RubricaEntita> lEntita = sql.LoadEntitaByName(tEnt, identita);
                if (lEntita != null && lEntita.Count != 0)
                {
                    foreach (RubricaEntita e in lEntita)
                    {
                        if (e.IdReferral.HasValue)
                        {
                            lCont.AddRange(this.LoadContattiOrgByOrgId(e.IdReferral.Value, startFromOrg, includeDescendant, includeIPA, false));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                if (!ex.GetType().Equals(typeof(ManagedException)))
                {
                    ManagedException mEx = new ManagedException(ex.Message,
                                                                "ORA_ERR011", string.Empty, string.Empty, ex);
                    ErrorLogInfo err = new ErrorLogInfo(mEx);
                    _log.Error(err);
                    throw mEx;
                }
                else
                {
                    throw ex;
                }
            }
            return(lCont);
        }
Ejemplo n.º 2
0
        public ResultList <RubricaContatti> LoadContattiByParams(List <SendMail.Model.EntitaType> tEnt, Dictionary <SendMail.Model.FastIndexedAttributes, List <string> > pars, int da, int per, bool withEntita)
        {
            if (tEnt == null)
            {
                tEnt = new List <SendMail.Model.EntitaType>();
            }
            if (tEnt.Count == 0)
            {
                tEnt.Add(SendMail.Model.EntitaType.ALL);
            }
            if (tEnt.Contains(SendMail.Model.EntitaType.UNKNOWN))
            {
                throw new ArgumentException("Tipo entità errato");
            }

            List <RubricaContatti>       lContatti = null;
            List <RubricaEntita>         lEntita   = null;
            ResultList <RubricaContatti> res       = new ResultList <RubricaContatti>();

            var pp = from k in pars.Keys
                     where k == SendMail.Model.FastIndexedAttributes.COGNOME ||
                     k == SendMail.Model.FastIndexedAttributes.RAGIONE_SOCIALE ||
                     k == SendMail.Model.FastIndexedAttributes.UFFICIO
                     select k;

            var entPar = (from ep in pars
                          where pp.Contains(ep.Key)
                          select ep).ToDictionary((x =>
                                                   x.Key), (y => (IList <string>)y.Value));

            if (pp.Count() != 0)
            {
                RubrEntitaSQLDb            sql = new RubrEntitaSQLDb();
                ResultList <RubricaEntita> rE  = sql.LoadEntitaByParams((IList <SendMail.Model.EntitaType>)tEnt,
                                                                        entPar, da, per);
                lEntita = (List <RubricaEntita>)rE.List;
            }

            var cPars = from p in pars
                        where !entPar.Keys.Contains(p.Key)
                        select p;

            //as IEnumerable<KeyValuePair<SendMail.Model.FastIndexedAttributes,
            //List<string>>>;
            if (cPars.Count() != 0)
            {
                using (var dbcontext = new FAXPECContext())
                {
                    var query = dbcontext.RUBR_CONTATTI.AsQueryable();

                    List <RUBR_CONTATTI> list = new List <RUBR_CONTATTI>();
                    foreach (var kvp in cPars)
                    {
                        switch (kvp.Key)
                        {
                        case SendMail.Model.FastIndexedAttributes.FAX:
                            string[] faxies = kvp.Value.ToArray();
                            list = query.Where(x => faxies.Contains(x.FAX)).ToList();
                            break;

                        case SendMail.Model.FastIndexedAttributes.MAIL:
                            string[] mailies = kvp.Value.ToArray();
                            list = query.Where(x => mailies.Contains(x.MAIL)).ToList();
                            break;

                        case SendMail.Model.FastIndexedAttributes.TELEFONO:
                            string[] telefoni = kvp.Value.ToArray();
                            list = query.Where(x => telefoni.Contains(x.TELEFONO)).ToList();
                            break;

                        default:
                            break;
                        }
                    }
                    lContatti = new List <RubricaContatti>();
                    foreach (var c in list)
                    {
                        var ListTitoli = (from t in dbcontext.RUBR_CONTATTI_BACKEND
                                          where t.REF_ID_CONTATTO == c.ID_CONTACT
                                          select t.COMUNICAZIONI_TITOLI.ID_TITOLO).ToList();

                        lContatti.Add(AutoMapperConfiguration.MapToRubrContatti(c, ListTitoli));
                    }
                }
            }

            if (lEntita != null)
            {
                if (lContatti == null)
                {
                    lContatti = new List <RubricaContatti>();
                }
                lEntita.ForEach(e => lContatti.AddRange(LoadContattiOrgByOrgId(e.IdReferral.Value, true, true, false, true)));
            }

            if (lContatti != null)
            {
                res.List = new List <RubricaContatti>();
                foreach (var c in lContatti)
                {
                    if (res.List.SingleOrDefault(x => x.IdContact == c.IdContact) == null)
                    {
                        res.List.Add(c);
                    }
                }

                res.Da     = da;
                res.Totale = res.List.Count;
                res.Per    = (per > res.Totale) ? res.Totale : per;
            }
            return(res);
        }