// GET: Reservations/Create public ActionResult Create() { var dto = new StartCreateDTO(); //Adds all Stations with distinct Districs to a List var stationsList = db.Stations.Where(e => e.Status == "Accepted").DistinctBy(e => e.District).ToList(); dto.DistrictDropDown = new SelectList(stationsList, "Id", "District"); return(View(dto)); }
//[HttpPost] public ActionResult ShowFreeSlots(StartCreateDTO startDto) { var station = db.Stations.Find(startDto.Station); var reservationsOfTheDay = db.Reservations .Where(e => e.ChargingPoint.Station.Id == station.Id) .Where(e => e.Date == startDto.Date).ToList(); var listOfCargingPoints = station.ChargingPoints.Where(e => e.Station == station).ToList(); var reservationsList = new List <Reservation>(); foreach (var item in listOfCargingPoints) { var openTime = station.OpenTime; var closeTime = station.CloseTime; var timeSpan = TimeSpan.FromMinutes(30); while (openTime <= closeTime) { if (reservationsOfTheDay .Where(e => e.ChargingPoint.Id == item.Id) .Any(e => e.TimeStart == openTime)) { openTime = openTime.Add(timeSpan); continue; } else { var reservation = new Reservation() { TimeStart = openTime, TimeFinish = openTime.Add(timeSpan), ChargingPoint = item, Date = startDto.Date, Status = "Not Selected" }; openTime = openTime.Add(timeSpan); reservationsList.Add(reservation); } } } var showSlotsDto = new ShowFreeSlotsDTO(); showSlotsDto.Reservations = reservationsList; showSlotsDto.Station = station; return(View(showSlotsDto)); }