//[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)); }
public ActionResult Create(ShowFreeSlotsDTO dto) { var client = GetClient(); foreach (var item in dto.Reservations) { if (item.Selected) { var reservation = new Reservation() { Date = item.Date, TimeStart = item.TimeStart, TimeFinish = item.TimeFinish, ServiceCode = 123, EstimatedCost = 123, Status = ConstantValues.READY, ChargingPoint = db.ChargingPoints.Find(item.ChargingPoint.Id), ChargingMode = db.ChargingModes.Find(item.ChargingMode.Id), Client = client }; try { db.Reservations.Add(reservation); db.SaveChanges(); } catch (DbEntityValidationException dbEx) { foreach (var validationErrors in dbEx.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { System.Diagnostics.Debug.WriteLine("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage); } } } } } return(RedirectToAction("Index", "Home")); }