示例#1
0
        /// <summary>
        /// Foglalás létrehozása.
        /// </summary>
        /// <param name="apartmentId">Apartman azonosítója.</param>
        public RentViewModel NewRent(Int32?apartmentId)
        {
            if (apartmentId == null)
            {
                return(null);
            }

            Apartment apartment = _context.Apartments
                                  .Include(a => a.Building) // betöltjük az apartmanokhoz az épületeket
                                  .ThenInclude(b => b.City) // az épületekhez pedig a városokat
                                  .FirstOrDefault(ap => ap.Id == apartmentId);

            RentViewModel rent = new RentViewModel {
                Apartment = apartment
            };                                                                // létrehozunk egy új foglalást, amelynek megadjuk az apartmant

            // beállítunk egy foglalást, amely a következő megfelelő fordulónappal (minimum 1 héttel később), és egy hetes időtartammal rendelkezik
            rent.RentStartDate = DateTime.Today + TimeSpan.FromDays(7);
            while (rent.RentStartDate.DayOfWeek != apartment.Turnday)
            {
                rent.RentStartDate += TimeSpan.FromDays(1);
            }

            rent.RentEndDate = rent.RentStartDate + TimeSpan.FromDays(7);

            return(rent);
        }
示例#2
0
        /// <summary>
        /// Foglalás árának lekérdezése.
        /// </summary>
        /// <param name="apartmentId">Apartman azonosítója.</param>
        /// <param name="rent">Foglalás adatai.</param>
        public Int32 GetPrice(Int32?apartmentId, RentViewModel rent)
        {
            if (apartmentId == null || rent == null || rent.Apartment == null)
            {
                return(0);
            }

            return(rent.Apartment.Price * Convert.ToInt32((rent.RentEndDate - rent.RentStartDate).TotalDays));
        }
示例#3
0
        /// <summary>
        /// Foglalás mentése.
        /// </summary>
        /// <param name="apartmentId">Apartman azonosítója.</param>
        /// <param name="userName">Felhasználónév.</param>
        /// <param name="rent">Foglalás adatai.</param>
        /// <returns>Sikeres volt-e a foglalás.</returns>
        public Boolean SaveRent(Int32?apartmentId, String userName, RentViewModel rent)
        {
            if (apartmentId == null || rent == null)
            {
                return(false);
            }

            // ellenőrizzük az annotációkat
            if (!Validator.TryValidateObject(rent, new ValidationContext(rent, null, null), null))
            {
                return(false);
            }

            // ellenőrizzük a dátumot
            if (_rentDateValidator.Validate(rent.RentStartDate, rent.RentEndDate, apartmentId.Value) != RentDateError.None)
            {
                return(false);
            }

            // a felhasználót a név alapján betöltjük
            Guest guest = _context.Guests.FirstOrDefault(g => g.UserName == userName);

            if (guest == null)
            {
                return(false);
            }

            _context.Rents.Add(new Rent
            {
                ApartmentId = rent.Apartment.Id,
                UserId      = guest.Id,
                StartDate   = rent.RentStartDate,
                EndDate     = rent.RentEndDate
            });

            try
            {
                _context.SaveChanges();
            }
            catch (Exception)
            {
                // mentéskor lehet hiba
                return(false);
            }

            // ha idáig eljuttottunk, minden sikeres volt
            return(true);
        }