public async Task <IActionResult> Create(string apartamentTitle, ApartmentRoom apartmentRoom)
        {
            var apartament = _context.Apartment.SingleOrDefault(x => x.Title == apartamentTitle);

            apartmentRoom.ApartmentId = apartament.Id;
            _context.Add(apartmentRoom);
            await _context.SaveChangesAsync();

            return(RedirectToAction(nameof(Index), new { apartment = apartmentRoom.ApartmentId }));
        }
 public async Task <IActionResult> Edit(string apartmentTitle, ApartmentRoom apartmentRoom)
 {
     try
     {
         var apartment = _context.Apartment.SingleOrDefault(x => x.Title == apartmentTitle);
         apartmentRoom.ApartmentId = apartment.Id;
         _context.Update(apartmentRoom);
         await _context.SaveChangesAsync();
     }
     catch (DbUpdateConcurrencyException)
     {
         if (!ApartmentRoomExists(apartmentRoom.Id))
         {
             return(NotFound());
         }
         else
         {
             throw;
         }
     }
     return(RedirectToAction(nameof(Index), new { apartment = apartmentRoom.ApartmentId }));
 }
示例#3
0
        public async Task <IActionResult> Create(AccomodationInfo accomodationInfo)
        {
            var accomodations = _context.AccomodationInfo.Where(a => a.TripId == accomodationInfo.TripId).ToList();

            var officeDestinationId = _context.Trip.Single(t => t.Id == accomodationInfo.TripId).ToOffice;

            var apartmentId = _context.Apartment.Single(a => a.OfficeId == officeDestinationId).Id;

            var apartmentRooms = _context.ApartmentRoom.Where(a => a.ApartmentId == apartmentId).ToList();

            var trip = _context.Trip.Single(t => t.Id == accomodationInfo.TripId);

            var tripParticipators = _context.TripParticipators.Where(t => t.TripId == trip.Id).ToList();

            List <ApartmentRoom> emptyRooms = GetAvailableRooms(apartmentRooms, accomodationInfo.Start, accomodationInfo.End);

            if (accomodationInfo.Cost != 0 || accomodationInfo.HotelName != null)
            {
                foreach (TripParticipator tripParticipator in tripParticipators)
                {
                    var accomodation = accomodations.Single(a => a.UserId == tripParticipator.UserId);

                    accomodation.TripId             = trip.Id;
                    accomodation.UserId             = tripParticipator.UserId;
                    accomodation.ApartmentRoomId    = 0;
                    accomodation.Start              = accomodationInfo.Start;
                    accomodation.End                = accomodationInfo.End;
                    accomodation.HotelName          = accomodationInfo.HotelName;
                    accomodation.Cost               = accomodationInfo.Cost;
                    accomodation.AccomodationStatus = AccomodationStatusEnum.Booked;

                    _context.Update(accomodation);
                }
                _context.SaveChanges();

                return(RedirectToAction("Details", "Trip", new { id = accomodationInfo.TripId }));
            }

            if (tripParticipators.Count > emptyRooms.Count)
            {
                // kambariu maziau nei keliautoju, automatiskai grizt ir uzsakyt viesbuti
                ViewBag.HotelRequired = true;
                return(RedirectToAction("Create", "Accomodation", new { id = accomodationInfo.Id, isHotelRequired = true, start = accomodationInfo.Start, end = accomodationInfo.End }));
            }

            int i = 0;

            foreach (TripParticipator tripParticipator in tripParticipators)
            {
                var           accomodation = accomodations.Single(a => a.UserId == tripParticipator.UserId);
                ApartmentRoom apRoom       = emptyRooms[i];

                accomodation.TripId             = trip.Id;
                accomodation.UserId             = tripParticipator.UserId;
                accomodation.ApartmentRoomId    = apRoom.Id;
                accomodation.HotelName          = null;
                accomodation.Cost               = 0;
                accomodation.Start              = accomodationInfo.Start;
                accomodation.End                = accomodationInfo.End;
                accomodation.AccomodationStatus = AccomodationStatusEnum.Booked;

                _context.Update(accomodation);

                i++;
            }

            _context.SaveChanges();

            return(RedirectToAction("Details", "Trip", new { id = accomodationInfo.TripId }));
            //return RedirectToAction("a");
        }