Beispiel #1
0
        // 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;
        }
Beispiel #2
0
        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));
        }