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); }
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); }