Ejemplo n.º 1
0
        public Task <int> PersonsCountAsync(PersonsFilters filters)
        {
            _filter.NameFilter           = filters.NameFilter;
            _filter.GenderFilter         = filters.Gender;
            _filter.AgeMin               = filters.MinAge;
            _filter.AgeMax               = filters.MaxAge;
            _filter.MinDaysAfterLastCall = filters.MinDaysAfterLastCall;
            _filter.PageSize             = filters.PageSize;
            _filter.PageNo               = filters.PageNo;

            return(_filter.GetCountAsync(_storage));
        }
Ejemplo n.º 2
0
        public async Task <List <PersonsListItem> > GetPersonsAsync(PersonsFilters filters)
        {
            _filter.NameFilter           = filters.NameFilter;
            _filter.GenderFilter         = filters.Gender;
            _filter.AgeMin               = filters.MinAge;
            _filter.AgeMax               = filters.MaxAge;
            _filter.MinDaysAfterLastCall = filters.MinDaysAfterLastCall;
            _filter.PageSize             = filters.PageSize;
            _filter.PageNo               = filters.PageNo;

            var pList = await _filter.GetPersonsAsync(_storage);

            return(pList.AsParallel().Select(p => new PersonsListItem {
                Id = p.Id, FirstName = p.FirstName, LastName = p.LastName, Patronymic = p.Patronymic
            }).ToList());
        }
Ejemplo n.º 3
0
        public void Domain_WithTestDB_PersonsFiltering()
        {
            // создание тестовой бд и наполнение ее тестовыми данными
            var storage    = new CallCenterStorage("TestsDB");
            var callCenter = new CallCenterService(storage);

            var resList = callCenter.GetPersonsAsync(new PersonsFilters()).Result;

            foreach (PersonsListItem p in resList)
            {
                callCenter.DeletePersonAsync(p.Id).Wait();
            }

            var pList  = TestData.GetTestPersons(false, false);
            var pCalls = TestData.GetTestCalls();

            foreach (var p in pList)
            {
                callCenter.AddPersonAsync(p).Wait();
            }
            resList = callCenter.GetPersonsAsync(new PersonsFilters()).Result;
            for (int i = 0; i < 3; i++)
            {
                callCenter.AddCallAsync(pCalls[3 * i], resList[i].Id).Wait();
                callCenter.AddCallAsync(pCalls[3 * i + 1], resList[i].Id).Wait();
                callCenter.AddCallAsync(pCalls[3 * i + 2], resList[i].Id).Wait();
            }
            // вывод без фильтров
            resList = callCenter.GetPersonsAsync(new PersonsFilters()).Result;
            Assert.IsTrue(resList.Count == 3, "Не все элементы прошли фильтр без условий");
            // Фильтрация по имени (имени, фамилии или отчеству)
            var fltr = new PersonsFilters()
            {
                NameFilter = pList[0].FirstName
            };

            resList = callCenter.GetPersonsAsync(fltr).Result;
            Assert.AreEqual(1, resList.Count, "Ошибка при фильтрации по имени");
            fltr.NameFilter = pList[0].LastName;
            resList         = callCenter.GetPersonsAsync(fltr).Result;
            Assert.AreEqual(1, resList.Count, "Ошибка при фильтрации по фамилии");
            fltr.NameFilter = pList[1].Patronymic;
            resList         = callCenter.GetPersonsAsync(fltr).Result;
            Assert.AreEqual(1, resList.Count, "Ошибка при фильтрации по отчеству");
            // Фильтр по дате последнего звонка (отбор тех, кому не звонили N-е количество дней)
            resList = callCenter.GetPersonsAsync(new PersonsFilters()
            {
                MinDaysAfterLastCall = 8
            }).Result;
            Assert.IsTrue(resList.Count == 2, "Фильтр по давности последнего звонка не сработал");
            Assert.IsTrue(resList.Find(p => p.FirstName == "Евгений") != null, "Неправильный результат фильтрации по дате последнего звонка");
            Assert.IsTrue(resList.Find(p => p.FirstName == "Ольга") != null, "Неправильный результат фильтрации по дате последнего звонка");
            // Фильтрация по полу
            resList = callCenter.GetPersonsAsync(new PersonsFilters()
            {
                Gender = Gender.Male
            }).Result;
            Assert.IsTrue(resList.Count == 1, "Не работает фильтр по полу");
            Assert.IsTrue(resList.Find(p => p.FirstName == "Евгений") != null, "Неправильный результат фильтрации по полу");
            // фильтрация по возрасту
            resList = callCenter.GetPersonsAsync(new PersonsFilters()
            {
                MaxAge = 20, MinAge = 15
            }).Result;
            Assert.IsTrue(resList.Count == 1, "Не сработал фильтр по возрасту");
            Assert.IsTrue(resList.Find(p => p.FirstName == "Евгений") != null, "Неправильный результат фильтрации по возрасту");
            // проверка пейджинга
            resList = callCenter.GetPersonsAsync(new PersonsFilters()
            {
                PageSize = 2, PageNo = 2
            }).Result;
            Assert.IsTrue(resList.Count == 1, "Не работает разбиение на страницы");
        }
Ejemplo n.º 4
0
        public void Domain_WithTestDB_PersonsCRUD()
        {
            // для тестирования указываем название тестовой бд, которая будет пересоздаваться
            var storage    = new CallCenterStorage("TestsDB");
            var callCenter = new CallCenterService(storage);
            var pList      = TestData.GetTestPersons(false);
            // запись и чтение
            int recCount = callCenter.PersonsCountAsync().Result;

            callCenter.AddPersonAsync(pList[0]).Wait();
            Assert.AreEqual(recCount + 1, callCenter.PersonsCountAsync().Result, "Запись не добавлена");
            var fltr = new PersonsFilters()
            {
                NameFilter = pList[0].LastName
            };
            var pers = callCenter.GetPersonsAsync(fltr).Result;

            Assert.AreEqual(pers.Count, 1, "Данные не получены");
            // чтение по id
            Guid pId = pers[0].Id;
            var  p   = callCenter.GetPerson(pId);

            Assert.IsNotNull(p, "Данные Person по id не получены");
            // добавление отчета
            var c = new CallDetails()
            {
                CallDate = DateTime.Now, CallReport = "Empty", OrderCost = 0
            };

            callCenter.AddCallAsync(c, pId).Wait();
            var calls = callCenter.GetCalls(pId);

            Assert.AreEqual(1, calls.Count, "Отчет не добавлен");
            // обновление
            p.FirstName  = "NewFirstName";
            p.LastName   = "NewLastName";
            p.Patronymic = "NewPatronymic";
            DateTime newBirthDate = DateTime.Now.AddYears(-20);

            p.BirthDate   = newBirthDate;
            p.Gender      = Gender.All;
            p.PhoneNumber = "00000000";
            callCenter.UpdatePersonAsync(p).Wait();
            p = callCenter.GetPerson(pId);
            Assert.AreEqual(p.FirstName, "NewFirstName", "Данные не обновились (FirstName)");
            Assert.AreEqual(p.LastName, "NewLastName", "Данные не обновились (LastName)");
            Assert.AreEqual(p.Patronymic, "NewPatronymic", "Данные не обновились (Patronymic)");
            Assert.AreEqual(p.BirthDate, newBirthDate, "Данные не обновились (BirthDate)");
            Assert.AreEqual(p.Gender, Gender.All, "Данные не обновились (Gender)");
            Assert.AreEqual(p.PhoneNumber, "00000000", "Данные не обновились (PhoneNumber)");
            // удаление
            callCenter.DeletePersonAsync(p.Id).Wait();
            p = callCenter.GetPerson(p.Id);
            Assert.IsNull(p, "Запись не удалилась");
            //
            callCenter.AddPersonAsync(pList[1]).Wait();
            var pd = callCenter.GetPersonsAsync(new PersonsFilters()).Result[0];

            Assert.IsNotNull(pd);
            pId = pd.Id;
            callCenter.DeletePersonAsync(pId).Wait();
            p = callCenter.GetPerson(pId);
            Assert.IsNull(p);
        }