Exemplo n.º 1
0
        // Constructors
        public VolatileList(RetrieveList listRetrieval, InstantiateItem itemInstantiation)
            : base()
        {
            this.retrieveList    = listRetrieval;
            this.instantiateItem = itemInstantiation;

            this.isValid = false;
        }
Exemplo n.º 2
0
        public ActionResult GenerateList(string listName,
                                         int?employeesMin, int?employeesMax,
                                         int?revenueMin, int?revenueMax,
                                         int[] countries, int[] industries, int[] jobLevels, int[] jobAreas)
        {
            if (employeesMin == null)
            {
                employeesMin = 0;
            }
            if (employeesMax == null)
            {
                employeesMax = 0;
            }
            if (revenueMin == null)
            {
                revenueMin = 0;
            }
            if (revenueMax == null)
            {
                revenueMax = 0;
            }
            var ifListNameExist = dbNew.RetrieveLists.FirstOrDefault(l => l.Name == listName);

            if (ifListNameExist != null)
            {
                listName = "Copy of " + listName;
            }
            var list = new RetrieveList();

            list.Name = listName;

            List <Contact> contacts;

            if (countries != null)
            {
                contacts = dbNew.Contacts.Include(c => c.Company).Include(c => c.Country).Include(c => c.Company.Industries).Include(c => c.Title.JobLevel)
                           .Where(c => countries.Contains(c.Country.Id)).ToList();
            }
            else
            {
                contacts = dbNew.Contacts.Include(c => c.Company).Include(c => c.Country).Include(c => c.Company.Industries).Include(c => c.Title.JobLevel).ToList();
            }

            List <Contact> filterContacts = new List <Contact>();

            string contactsIds = "";

            foreach (var cont in contacts)
            {
                if (cont.Company.IfMinMaxFitsCriteria(employeesMin, employeesMax) &&
                    cont.Company.IfMinMaxFitsCriteria(revenueMin, revenueMax) &&
                    (jobLevels == null || (cont.Title.JobLevel != null && jobLevels.Contains(cont.Title.JobLevel.Id))) &&
                    (jobAreas == null || (cont.Title.JobAreas.Any(ja => jobAreas.Contains(ja.Id)))) &&
                    (industries == null || (cont.Company.Industries.Any(ind => industries.Contains(ind.Id)))))
                {
                    filterContacts.Add(cont);
                    contactsIds += (cont.Id.ToString() + ",");
                }
            }
            if (contactsIds.Length > 0)
            {
                contactsIds = contactsIds.Remove(contactsIds.Length - 1);
            }

            list.ContactsIds = contactsIds;
            dbNew.RetrieveLists.Add(list);
            dbNew.SaveChanges();

            ViewBag.listId = list.Id;
            return(View("RetrieveList", filterContacts));
        }