/// <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); }
/// <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)); }
/// <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); }