public IActionResult Search(SearchRouteVM searchRouteVM = null) { if (searchRouteVM.StartTime != null && searchRouteVM.BusStopListStartId != 0 && searchRouteVM.BusStopListEndId != 0) { int DayOfWeek = (int)searchRouteVM.StartTime.DayOfWeek; bool IsHoliday = false; IEnumerable <Holidays> holidays = _unitOfWork.Holidays.GetAll(); foreach (var item in holidays) { if (item.Day == searchRouteVM.StartTime.Day && item.Month == searchRouteVM.StartTime.Month) { IsHoliday = true; break; } } int Year = searchRouteVM.StartTime.Year; int poniedzialek_wielkanocny_dzien, poniedzialek_wielkanocny_miesiac, boze_cialo_dzien, boze_cialo_miesiac, luty = (((Year % 4 == 0) && (Year % 100 != 0)) || (Year % 400 == 0)) ? 29 : 28, dzien_roku = 31 + luty, G = Year % 19, C = Year / 100, H = (C - (C / 4) - ((8 * C + 13) / 25) + 19 * G + 15) % 30, I = H - (H / 28) * (1 - (29 / (H + 1)) * ((21 - G) / 11)), J = (Year + (Year / 4) + I + 2 - C + (C / 4)) % 7, L = I - J, month = 3 + ((L + 40) / 44), day = L + 28 - 31 * (month / 4); if (day == 31 && month == 3) { poniedzialek_wielkanocny_dzien = 1; poniedzialek_wielkanocny_miesiac = 3; } else { poniedzialek_wielkanocny_dzien = day + 1; poniedzialek_wielkanocny_miesiac = month - 1; } if (month == 3) { dzien_roku += day; } else { dzien_roku = dzien_roku + 31 + day; } dzien_roku += 60; if (luty == 28 && dzien_roku <= 151) { boze_cialo_dzien = dzien_roku - 120; boze_cialo_miesiac = 4; } else if (luty == 29 && dzien_roku <= 152) { boze_cialo_dzien = dzien_roku - 121; boze_cialo_miesiac = 4; } else if (luty == 29) { boze_cialo_dzien = dzien_roku - 152; boze_cialo_miesiac = 5; } else { boze_cialo_dzien = dzien_roku - 151; boze_cialo_miesiac = 5; } if (DayOfWeek == 0 || IsHoliday == true || (searchRouteVM.StartTime.Day == poniedzialek_wielkanocny_dzien && searchRouteVM.StartTime.Month == poniedzialek_wielkanocny_miesiac + 1) || (searchRouteVM.StartTime.Day == boze_cialo_dzien && searchRouteVM.StartTime.Month == boze_cialo_miesiac + 1)) { DayOfWeek = 7; } searchRouteVM.searchRouteShowRouteVMs = new List <SearchRouteShowRouteVM>(); IList <ArrivalsDepartures> arrivalsDeparturesStart = (IList <ArrivalsDepartures>)_unitOfWork.ArrivalsDepartures.GetAll(ad => ad.BusStopId == searchRouteVM.BusStopListStartId); IList <ArrivalsDepartures> arrivalsDeparturesEnd = (IList <ArrivalsDepartures>)_unitOfWork.ArrivalsDepartures.GetAll(ad => ad.BusStopId == searchRouteVM.BusStopListEndId); foreach (var start in arrivalsDeparturesStart) { foreach (var end in arrivalsDeparturesEnd) { Timetable timetableStart = _unitOfWork.Timetable.GetFirstOrDefault(t => t.Id == start.TimetableId); Timetable timetableEnd = _unitOfWork.Timetable.GetFirstOrDefault(t => t.Id == end.TimetableId); OperatingDays operatingDaysStart = _unitOfWork.OperatingDays.GetFirstOrDefault(od => od.Id == timetableStart.OperatingDaysId); OperatingDays operatingDaysEnd = _unitOfWork.OperatingDays.GetFirstOrDefault(od => od.Id == timetableEnd.OperatingDaysId); bool IsValidOperatingDay = false; if (DayOfWeek == 1 && operatingDaysStart.Monday == true) { IsValidOperatingDay = true; } if (DayOfWeek == 2 && operatingDaysStart.Tuesday == true) { IsValidOperatingDay = true; } if (DayOfWeek == 3 && operatingDaysStart.Wednesday == true) { IsValidOperatingDay = true; } if (DayOfWeek == 4 && operatingDaysStart.Thursday == true) { IsValidOperatingDay = true; } if (DayOfWeek == 5 && operatingDaysStart.Friday == true) { IsValidOperatingDay = true; } if (DayOfWeek == 6 && operatingDaysStart.Saturday == true) { IsValidOperatingDay = true; } if (DayOfWeek == 7 && operatingDaysStart.SundayAndHolidays == true) { IsValidOperatingDay = true; } if (start.TimetableId == end.TimetableId && start.DepartureTime < end.ArrivalTime && IsValidOperatingDay == true && timetableStart.IsActive == true && timetableEnd.IsActive == true) { DateTime startDateTime = new DateTime(2000, 1, 1, start.DepartureTime.Value.Hour, start.DepartureTime.Value.Minute, 0); DateTime searchRouteDateTime = new DateTime(2000, 1, 1, searchRouteVM.StartTime.Hour, searchRouteVM.StartTime.Minute, 0); if (startDateTime.CompareTo(searchRouteDateTime) >= 0) { SearchRouteShowRouteVM searchRouteShowRouteVM = new SearchRouteShowRouteVM(); searchRouteShowRouteVM.TimetableId = start.TimetableId; Timetable timetable = _unitOfWork.Timetable.GetFirstOrDefault(t => t.Id == start.TimetableId); LineName lineName = _unitOfWork.LineName.GetFirstOrDefault(ln => ln.Id == timetable.LineNameId); searchRouteShowRouteVM.LineName = lineName.Name; searchRouteShowRouteVM.StartBusStopName = _unitOfWork.BusStop.GetFirstOrDefault(bs => bs.Id == searchRouteVM.BusStopListStartId).Name; string departure = start.DepartureTime.Value.Hour + ":"; if (start.DepartureTime.Value.Minute < 10) { departure += "0" + start.DepartureTime.Value.Minute; } else { departure += start.DepartureTime.Value.Minute; } searchRouteShowRouteVM.DepartureTime = departure; searchRouteShowRouteVM.EndBusStopName = _unitOfWork.BusStop.GetFirstOrDefault(bs => bs.Id == searchRouteVM.BusStopListEndId).Name; string arrival = end.ArrivalTime.Value.Hour + ":"; if (end.ArrivalTime.Value.Minute < 10) { arrival += "0" + end.ArrivalTime.Value.Minute; } else { arrival += end.ArrivalTime.Value.Minute; } searchRouteShowRouteVM.ArrivalTime = arrival; searchRouteVM.searchRouteShowRouteVMs.Add(searchRouteShowRouteVM); } } } } } DateTime DateTimeNow = DateTime.Now; searchRouteVM = new SearchRouteVM() { BusStopListStart = _unitOfWork.BusStop.GetBusStopListDropDown(), BusStopListEnd = _unitOfWork.BusStop.GetBusStopListDropDown(), StartTime = new DateTime(DateTimeNow.Year, DateTimeNow.Month, DateTimeNow.Day, DateTimeNow.Hour, DateTimeNow.Minute, 0), searchRouteShowRouteVMs = searchRouteVM.searchRouteShowRouteVMs }; return(View(searchRouteVM)); }
public IActionResult GetAll() { IList <ArrivalsDepartures> ArrivalsDepartures = (IList <ArrivalsDepartures>)_unitOfWork.ArrivalsDepartures.GetAll(); IList <Timetable> TimetableList = (IList <Timetable>)_unitOfWork.Timetable.GetAll(); IList <Timetable> Timetables = new List <Timetable>(); foreach (var item in TimetableList) { if (ArrivalsDepartures.Any(a => a.TimetableId == item.Id)) { Timetables.Add(item); } } IList <TimetableIndexDto> TimetableIndexDtos = new List <TimetableIndexDto>(); foreach (var item in Timetables) { string operDays = ""; OperatingDays operDay = _unitOfWork.OperatingDays.GetFirstOrDefault(od => od.Id == item.OperatingDaysId); ArrivalsDepartures Departure = _unitOfWork.ArrivalsDepartures.GetFirstOrDefault(ad => ad.TimetableId == item.Id); if (operDay.Monday) { operDays += "poniedziałek, "; } if (operDay.Thursday) { operDays += "wtorek, "; } if (operDay.Wednesday) { operDays += "środa, "; } if (operDay.Thursday) { operDays += "czwartek, "; } if (operDay.Friday) { operDays += "piątek, "; } if (operDay.Saturday) { operDays += "sobota, "; } if (operDay.SundayAndHolidays) { operDays += "niedziele/święta, "; } operDays = operDays.Remove(operDays.Length - 2); string departureTime = Departure.DepartureTime.Value.Hour.ToString() + " : "; if (Departure.DepartureTime.Value.Minute < 10) { departureTime += "0" + Departure.DepartureTime.Value.Minute.ToString(); } else { departureTime += Departure.DepartureTime.Value.Minute.ToString(); } TimetableIndexDto timetableIndexDto = new TimetableIndexDto() { Id = item.Id, LineName = _unitOfWork.LineName.Get(item.LineNameId).Name, Wehicle = _unitOfWork.Wehicle.Get(item.WehicleId).Brand + " " + _unitOfWork.Wehicle.Get(item.Wehicle.Id).Model, OperatingDays = operDays, DepartureTime = departureTime, PricePerEntireRoute = _unitOfWork.TicketPrice.Get(item.TicketPriceId).PricePerEntireRoute, PricePerSegment = _unitOfWork.TicketPrice.Get(item.TicketPriceId).PricePerSegment, IsActive = item.IsActive }; TimetableIndexDtos.Add(timetableIndexDto); } return(Json(new { data = TimetableIndexDtos })); }