public async Task <IActionResult> Edit(int id, GuestReservation guestReservation)
        {
            if (id != guestReservation.Id)
            {
                ViewBag.ErrorMessage = "لايوجد   بيانات";
                return(View("NotFound"));
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _repository.Update <GuestReservation>(guestReservation);
                    await _repository.SavaAll();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (_repository.GetBank(guestReservation.Id) == null)
                    {
                        ViewBag.ErrorMessage = "لايوجد   بيانات";
                        return(View("NotFound"));
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }

            ViewData["MGuideId"] = new SelectList(await _repository.GetGuides(), "Id", "Name", guestReservation.MGuideId);
            ViewData["SheikhId"] = new SelectList(await _repository.GetSheikhs(), "Id", "Name", guestReservation.SheikhId);
            return(View(guestReservation));
        }
        public async Task <IActionResult> Create(GuestReservation guestReservation)
        {
            if (ModelState.IsValid)
            {
                _repository.Add <GuestReservation>(guestReservation);
                await _repository.SavaAll();

                return(RedirectToAction(nameof(Index)));
            }

            ViewData["MGuideId"] = new SelectList(await _repository.GetGuides(), "Id", "Name", guestReservation.MGuideId);
            ViewData["SheikhId"] = new SelectList(await _repository.GetSheikhs(), "Id", "Name", guestReservation.SheikhId);
            return(View(guestReservation));
        }
        public async Task <ProcessResult> CreateReservationAsync(Reservation model, IList <Guest> guestModel)
        {
            Func <Task> action = async() =>
            {
                model.InitDate = new DateTime(model.InitDate.Year, model.InitDate.Month, model.InitDate.Day, 9, 0, 0);
                model.EndDate  = new DateTime(model.EndDate.Year, model.EndDate.Month, model.EndDate.Day, 8, 59, 59);

                if (model.EndDate < model.InitDate)
                {
                    throw new InvalidOperationException("La fecha de terminación no puede ser antes de la fecha de inicio");
                }

                IQueryable <Reservation> q = context.Reservations;
                q = q.Where(r => r.RoomID == model.RoomID && !(r.EndDate.CompareTo(model.InitDate) < 0 || model.EndDate.CompareTo(r.InitDate) < 0));
                int cnt = await q.CountAsync();

                if (cnt > 0)
                {
                    throw new InvalidOperationException("Existe un conflicto con otra reservación");
                }

                var ReservationEntity = await GetOrCreateEntityAsync(context.Reservations, x => x.Id == model.Id);

                var Reservation = ReservationEntity.result;

                Reservation.Details  = model.Details;
                Reservation.InitDate = model.InitDate;
                Reservation.EndDate  = model.EndDate;
                Reservation.AgencyID = model.AgencyID;
                Reservation.RoomID   = model.RoomID;
                Reservation.CheckIn  = model.CheckIn;
                Reservation.CheckOut = model.CheckOut;

                foreach (var item in guestModel)
                {
                    GuestReservation gr = new GuestReservation();

                    gr.GuestId       = item.Id;
                    gr.ReservationId = Reservation.Id;

                    await context.GuestReservations.AddAsync(gr);
                }

                await context.SaveChangesAsync();
            };

            return(await Process.RunAsync(action));
        }
Exemple #4
0
        public void SaveReservationWithGuests(Reservation reservation, List <Guest> guests)
        {
            dbContext.Reservations.Add(reservation);
            dbContext.SaveChanges();

            foreach (var guest in guests)
            {
                dbContext.Guests.Add(guest);
                dbContext.SaveChanges();

                var reservationGuest = new GuestReservation(guest.Id, reservation.Id);

                dbContext.GuestReservations.Add(reservationGuest);
            }

            dbContext.SaveChanges();
        }
Exemple #5
0
 public GuestReservation Create(GuestReservation guestReservation)
 {
     _unitOfWork.GuestReservationRepository.Insert(guestReservation);
     _unitOfWork.Save();
     return(guestReservation);
 }
Exemple #6
0
 public void Delete(GuestReservation guestReservation)
 {
     _unitOfWork.GuestReservationRepository.Delete(guestReservation);
     _unitOfWork.Save();
 }
Exemple #7
0
 public GuestReservation Update(GuestReservation guestReservation)
 {
     _unitOfWork.GuestReservationRepository.Update(guestReservation);
     _unitOfWork.Save();
     return(guestReservation);
 }