Beispiel #1
0
        //Сохраняет заданные параметры для поиска компаниии
        private CompanySearchParameter FindSearchedCompany()
        {
            CompanySearchParameter searchedCompany = new CompanySearchParameter()
            {
                Name           = nameTBox.Text,
                Category       = (Category)Enum.Parse(typeof(Category), kindCBox.Text, true),
                Specialization = (Specialization)Enum.Parse(typeof(Specialization), specializationCBox.Text, true),
                Ownership      = (OwnershipType)Enum.Parse(typeof(OwnershipType), ownershipCBox.Text, true),
                Contacts       = new CompanyContactData()
                {
                    Addres = new Addres()
                    {
                        City        = citytextBox.Text,
                        Street      = streettextBox.Text,
                        HouseNumber = (int)houseNumber.Value
                    },
                    Telephone = phoneNumberTBox.Text
                }
            };
            var schedule = new List <CompanySchedule>();

            foreach (var el in workdaysGB.Controls)
            {
                CheckBox day = (CheckBox)el;
                if (day.Checked)
                {
                    schedule.Add(new CompanySchedule()
                    {
                        Day = (Days)Enum.Parse(typeof(Days), day.Text, true),
                        StartWorkingTime = startDTPicker.Value,
                        EndWorkingTime   = endDTPicker.Value
                    });
                }
            }
            searchedCompany.Schedules = schedule;
            var serv = new List <string>();

            foreach (var ch in servicesChLB.CheckedItems)
            {
                serv.Add(ch.ToString());
            }
            searchedCompany.Services = serv;
            return(searchedCompany);
        }
Beispiel #2
0
 //Поиск предприятий по нажатию на кнопку "Поиск"
 private void Findbtn_Click(object sender, EventArgs e)
 {
     if (!CheckTelephone())
     {
         MessageBox.Show("Некорректно введен номер телефона.",
                         "Некорректные данные", MessageBoxButtons.OK, MessageBoxIcon.Warning);
     }
     else
     {
         CompanySearchParameter searchedCompany = FindSearchedCompany();
         var collection = CompanyCollection.Search(searchedCompany);
         bindListToDataGridView(collection);
         foundCompanies = collection;
         if (collection.Count == 0)
         {
             MessageBox.Show("Предприятий по заданным параметрам не найдено.",
                             "Поиск", MessageBoxButtons.OK);
             return;
         }
     }
 }
Beispiel #3
0
        /// <summary>
        /// Нахождение компаний по заданым критериям
        /// </summary>
        /// <param name="company"></param>
        public static BindingList <Company> Search(CompanySearchParameter parameters)
        {
            IEnumerable <Company> companiesCopy = MakeCompaniesCopy();

            //if (!string.IsNullOrEmpty(parameters.Name))
            //{
            //    companiesCopy = companiesCopy.Where(c => string.Equals(c.Name, parameters.Name, StringComparison.CurrentCultureIgnoreCase));
            //}
            if (!string.IsNullOrEmpty(parameters.Name))
            {
                companiesCopy = companiesCopy.Where(c => c.Name.ToLower().Contains(parameters.Name.ToLower()));
            }
            if (parameters.Category != Category.любой)
            {
                companiesCopy = companiesCopy.Where(c => c.Category == parameters.Category);
            }

            if (parameters.Services != null && parameters.Services.Any())
            {
                companiesCopy = companiesCopy
                                .Where(c => c.Services.Select(s => s.ToLower())
                                       .Intersect(parameters.Services.Select(s => s.ToLower())).Count() >= parameters.Services.Count);
            }

            if (parameters.Specialization != Specialization.любая)
            {
                companiesCopy = companiesCopy.Where(c => c.Specialization == parameters.Specialization);
            }

            if (parameters.Ownership != OwnershipType.любая)
            {
                companiesCopy = companiesCopy.Where(c => c.Ownership == parameters.Ownership);
            }

            if (parameters.Schedules != null && parameters.Schedules.Any())
            {
                parameters.Schedules.ForEach(s =>
                {
                    companiesCopy = companiesCopy.Where(c =>
                                                        c.Schedules.FirstOrDefault(sc => sc.Day == s.Day)?.StartWorkingTime.ToString().Substring(11, 5) == "00:00" ||
                                                        c.Schedules.FirstOrDefault(sc => sc.Day == s.Day)?.StartWorkingTime.TimeOfDay <= s.StartWorkingTime.TimeOfDay);

                    companiesCopy = companiesCopy.Where(c =>
                                                        c.Schedules.FirstOrDefault(sc => sc.Day == s.Day)?.EndWorkingTime.ToString().Substring(11, 5) == "23:59" ||
                                                        c.Schedules.FirstOrDefault(sc => sc.Day == s.Day)?.EndWorkingTime.TimeOfDay >= s.EndWorkingTime.TimeOfDay);
                });
            }

            //if(parameters.Contacts != null && !string.IsNullOrEmpty(parameters.Contacts.Addres.City))
            //{
            //    companiesCopy = companiesCopy.Where(c => c.Contacts.Addres.City == parameters.Contacts.Addres.City);
            //}

            if (parameters.Contacts != null && !string.IsNullOrEmpty(parameters.Contacts.Addres.City))
            {
                companiesCopy = companiesCopy.Where(c => c.Contacts.Addres.City.ToLower().
                                                    Contains(parameters.Contacts.Addres.City.ToLower()));
            }

            //if (parameters.Contacts != null && !string.IsNullOrEmpty(parameters.Contacts.Addres.Street))
            //{
            //    companiesCopy = companiesCopy.Where(c => c.Contacts.Addres.Street == parameters.Contacts.Addres.Street);
            //}
            if (parameters.Contacts != null && !string.IsNullOrEmpty(parameters.Contacts.Addres.Street))
            {
                companiesCopy = companiesCopy.Where(c => c.Contacts.Addres.Street.ToLower().
                                                    Contains(parameters.Contacts.Addres.Street.ToLower()));
            }

            if (parameters.Contacts != null && parameters.Contacts.Addres.HouseNumber != 0)
            {
                companiesCopy = companiesCopy.Where(c => c.Contacts.Addres.HouseNumber == parameters.Contacts.Addres.HouseNumber);
            }

            if (parameters.Contacts != null && !string.IsNullOrEmpty(parameters.Contacts.Telephone))
            {
                companiesCopy = companiesCopy.Where(c => c.Contacts.Telephone == parameters.Contacts.Telephone);
            }
            BindingList <Company> result = new BindingList <Company>();

            companiesCopy.ToList().ForEach(c => result.Add(c));
            return(result);
        }