public void TestBasicReisAddGetUpdateDelete() { //Add-Get-Тест DateTime date = DateTime.Now; BasicReis expectedBasicReis = new BasicReis(); expectedBasicReis.Date = date; DataAccessBasicReis basicReis = new DataAccessBasicReis(); basicReis.AddElement(expectedBasicReis); var actualBasicReis = basicReis.GetAll().Last(); Assert.AreEqual(expectedBasicReis, actualBasicReis); //Update - Тест expectedBasicReis = actualBasicReis; expectedBasicReis.Date = date.AddDays(2); basicReis.UpdateElement(expectedBasicReis); actualBasicReis = basicReis.GetElement(expectedBasicReis.CodeBasicReis); Assert.AreEqual(expectedBasicReis, actualBasicReis); //Delete-Тест int expectedCount = basicReis.GetAll().Count() - 1; basicReis.DeleteElement(actualBasicReis); int actualCount = basicReis.GetAll().Count(); Assert.AreEqual(expectedCount, actualCount); }
//Бронирование public string Reserve(string destination, DateTime nowTime) { //Выбираем все рейсы в искомую точку и сортируем по времени var basicReises = BasicReisEntitie.GetAll().Where(x => x.To.Trim() == destination.Trim()).Select(x => x.CodeBasicReis); var reises = ReisEntitie.GetAll().Where(x => basicReises.Contains((int)x.CodeBasicReis)).OrderBy(x => x.Date); //Выбираем из подходящих рейсов, рейсы на которые есть места var freeReises = reises.Where(x => PlainsEntitie.GetAll().Single(plain => plain.CodePlane == x.BasicReis.CodePlain).NumberOfSeats - ClientsEntitie.GetAll().Where(client => client.CodeReis == x.CodeReis).Count() > 0); //Выбираем первый, по времени, рейс на который есть места var total = freeReises.SkipWhile(x => x.Date < nowTime).DefaultIfEmpty(null).First(); if (total != null) { Clients temp = new Clients(); temp.BookOrBuy = false; temp.CodeReis = total.CodeReis; ClientsEntitie.AddElement(temp); return(String.Format("Забронирован билет на рейс {0} в {1} на {2}", total.CodeReis, total.BasicReis.To.Trim(), total.Date)); } else { return(String.Format("Билетов в {0} нет на допустимый период", destination)); } }