// Convert dates in number of days counting from today private void CreateViewBagsForDates(long selectedID = newReservationMode) { session _session = sessionService.GetSession(this.HttpContext); ipmevent _IPMEvent = ipmevents.GetById(_session.idIPMEvent); // Read and convert the dates to a value than can be used by jQuery Datepicker DateTime start = _IPMEvent.startDate.Value; DateTime end = _IPMEvent.endDate.Value; DateTime now = DateTime.Now; DateTime checkInDate = DateTime.MinValue; DateTime checkOutDate = DateTime.MinValue; // Parameters for Edit Reservation, NOT used for New Reservation if (selectedID != newReservationMode) { selecteditem _selecteditem = selecteditems.GetById(selectedID); checkInDate = _selecteditem.checkInDate; checkOutDate = _selecteditem.checkOutDate; } if (checkInDate == DateTime.MinValue) { if (_session.checkInDate != null) { checkInDate = _session.checkInDate.Value; } ; } ; if (checkOutDate == DateTime.MinValue) { if (_session.checkOutDate != null) { checkOutDate = _session.checkOutDate.Value; } ; } ; if (!(checkInDate >= start && checkInDate <= end)) { checkInDate = start; } ; if (!(checkOutDate >= checkInDate && checkOutDate <= end)) { checkOutDate = end; } ; int min = (int)(start - now).TotalDays + 1; int max = (int)(end - now).TotalDays + 1; int checkIn = (int)(checkInDate - now).TotalDays - 7; int checkOut = (int)(checkOutDate - now).TotalDays + 1; ViewBag.minDate = min; ViewBag.maxDate = max; ViewBag.checkInDate = checkIn; ViewBag.checkOutDate = checkOut; }
public ActionResult SelectSiteOnMap(long id) { var _session = sessionService.GetSession(this.HttpContext, true, false); // Check if site is really available bool isRVSiteAvailable = rvsites_available.GetAll(). Where(s => s.idIPMEvent == _session.idIPMEvent && s.id == id). ToList().Count() > 0; if (isRVSiteAvailable) { ipmevent _IPMEvent = ipmevents.GetById(_session.idIPMEvent); // Read dates from IPM Event DateTime checkInDate = _IPMEvent.startDate.Value; DateTime checkOutDate = checkInDate.AddDays(7); // Read dates from session if (_session.checkInDate != null) { checkInDate = _session.checkInDate.Value; } ; if (_session.checkOutDate != null) { checkOutDate = _session.checkOutDate.Value; } ; // Add selected item to the database var _selecteditem = new selecteditem(); var type_rates = sites_description_rate.GetAll(). Where(s => s.id == id).FirstOrDefault(); _selecteditem.checkInDate = checkInDate; _selecteditem.checkOutDate = checkOutDate; _selecteditem.weeklyRate = type_rates.weeklyRate.Value; _selecteditem.dailyRate = type_rates.dailyRate.Value; _selecteditem.idRVSite = id; _selecteditem.idSession = _session.ID; _selecteditem.idIPMEvent = _session.idIPMEvent; _selecteditem.idStaff = _session.idStaff; _selecteditem.idCustomer = _session.idCustomer; _selecteditem.site = type_rates.RVSite; _selecteditem.siteType = type_rates.description; _selecteditem.isSiteChecked = true; CalcSiteTotal calcResults = new CalcSiteTotal( checkInDate, checkOutDate, type_rates.weeklyRate.Value, type_rates.dailyRate.Value, true); _selecteditem.duration = calcResults.duration; _selecteditem.weeks = calcResults.weeks; _selecteditem.days = calcResults.days; _selecteditem.amount = calcResults.amount; _selecteditem.total = calcResults.total; _selecteditem.createDate = DateTime.Now; _selecteditem.lastUpdate = DateTime.Now; _selecteditem.timeStamp = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"); selecteditems.Insert(_selecteditem); selecteditems.Commit(); } return(Json(id)); }
// method for database saving type & rate public ActionResult VerifyAndSaveTypes(string year, string city, string province, string street, DateTime startDate, DateTime endDate, DateTime lastDateRefund) { long sessionID = sessionService.GetSessionID(this.HttpContext, true, true); bool ret = true; string errMsg = ""; long _year = 0; long.TryParse(year, out _year); /// parameter validation // dates check if (startDate == null || endDate == null || lastDateRefund == null || startDate > endDate || lastDateRefund > endDate) { ret = false; errMsg = string.Format("Please check Event Period"); } // city, street check else if (city == string.Empty || street == string.Empty) { ret = false; errMsg = string.Format("Please check city or street, it needs input"); } /// event validation var _event = events.GetQueryable().Where(x => x.year == _year).FirstOrDefault <ipmevent>(); var _found = _event != null ? true : false; if (ret && _found) { if (isEventStarted(_year)) { ret = false; errMsg = string.Format("Could not update this event which has been started"); } } // validation of types are not needed due to AddTypeRate() if (ret == true) { if (!_found) { _event = new ipmevent(); } // update event object _event.year = _year; _event.street = street; _event.city = city; _event.provinceCode = province; _event.startDate = startDate; _event.endDate = endDate; _event.lastUpdate = DateTime.Now; _event.lastDateRefund = lastDateRefund; if (_found) { events.Update(_event); } else { events.Insert(_event); } long eventId = _event.ID; // commit events events.Commit(); // save all type and rate information Polygons poly = Polygons.GetInstance(); foreach (var t in poly.TypeRates) { // save new type var _type = new sitetype { // get eventId from event object not from TypeRates idIPMEvent = _event.ID, idSiteSize = t.sizeId, idService = t.serviceId, createDate = DateTime.Now, lastUpdate = DateTime.Now }; types.Insert(_type); types.Commit(); // save two rate with new type id rates.Insert(new siterate { idSiteType = _type.ID, period = "Weekly", rate = (decimal)t.week, createDate = DateTime.Now, lastUpdate = DateTime.Now, idIPMEvent = _event.ID }); rates.Insert(new siterate { idSiteType = _type.ID, period = "Daily", rate = (decimal)t.day, createDate = DateTime.Now, lastUpdate = DateTime.Now, idIPMEvent = _event.ID }); rates.Commit(); } // clear poly's TypeRates poly.TypeRates.Clear(); } // return return(Json(new { success = ret, msg = errMsg }, JsonRequestBehavior.AllowGet)); }