Ejemplo n.º 1
0
        public async Task <IActionResult> AdminCreate(MakeBooking basicBooking)
        {
            if (ModelState.IsValid)
            {
                var _booking = new Booking
                {
                    RoomID        = basicBooking.RoomID,
                    CustomerEmail = basicBooking.CustomerEmail,
                    CheckIn       = basicBooking.CheckIn,
                    CheckOut      = basicBooking.CheckOut
                };

                TimeSpan timeDiff = _booking.CheckOut - _booking.CheckIn;

                decimal nights = Convert.ToDecimal(timeDiff.TotalDays);

                var theRoom = await _context.Room.FindAsync(basicBooking.RoomID);

                _booking.Cost = theRoom.Price * nights;

                _context.Add(_booking);
                await _context.SaveChangesAsync();

                return(View("~/Views/Bookings/Confirmation.cshtml", _booking));
            }

            ViewData["CustomerEmail"] = new SelectList(_context.Set <Customer>(), "Email", "Email", basicBooking.CustomerEmail);
            ViewData["RoomID"]        = new SelectList(_context.Set <Room>(), "ID", "ID", basicBooking.RoomID);
            return(View(basicBooking));
        }
Ejemplo n.º 2
0
        public void Setup()
        {
            var bookingOneId = Guid.NewGuid();
            var bookingTwoId = Guid.NewGuid();

            bookingOne = new MakeBooking()
            {
                Id           = bookingOneId,
                BookingId    = bookingOneId,
                Name         = "Simon",
                Phone        = "456464646",
                Email        = "*****@*****.**",
                CheckInDate  = new DateTime(),
                CheckOutDate = new DateTime(),
            };

            bookingTwo = new MakeBooking()
            {
                Id           = bookingTwoId,
                BookingId    = bookingTwoId,
                Name         = "Alejandro",
                Phone        = "Cristian",
                Email        = "*****@*****.**",
                CheckInDate  = new DateTime(),
                CheckOutDate = new DateTime()
            };
        }
Ejemplo n.º 3
0
        private void ReserveButton_Click(object sender, EventArgs e)
        {
            var makeBooking = new MakeBooking();

            makeBooking.ShowDialog();

            if (MakeBooking.MakeBookingButtonCliked)
            {
                showAllReservations();
            }
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> Create(MakeBooking basicBooking)
        {
            string _email = User.FindFirst(ClaimTypes.Name).Value;

            if (ModelState.IsValid)
            {
                var roomID   = new SqliteParameter("roomID", basicBooking.RoomID);
                var checkIn  = new SqliteParameter("in", basicBooking.CheckIn);
                var checkOut = new SqliteParameter("out", basicBooking.CheckOut);

                var freeBookings = _context.Booking.FromSql("select * from [Booking] inner join [Room] on [Booking].RoomID = [Room].ID "
                                                            + "where [Booking].RoomID = @roomID and @in >= [Booking].checkIn" +
                                                            " and @out <= [Booking].checkOut", roomID, checkIn, checkOut)
                                   .Select(mo => new Booking
                {
                    ID            = mo.ID,
                    RoomID        = mo.RoomID,
                    CustomerEmail = mo.CustomerEmail,
                    CheckIn       = mo.CheckIn,
                    CheckOut      = mo.CheckOut,
                    Cost          = mo.Cost
                });

                ViewBag.FreeBookings = await freeBookings.ToListAsync();

                if (ViewBag.FreeBookings.Count == 0)
                {
                    var booking = new Booking
                    {
                        RoomID        = basicBooking.RoomID,
                        CheckIn       = basicBooking.CheckIn,
                        CheckOut      = basicBooking.CheckOut,
                        CustomerEmail = _email
                    };

                    var theRoom = await _context.Room.FindAsync(basicBooking.RoomID);

                    var theCustomer = await _context.Customer.FindAsync(_email);

                    theCustomer.Email = _email;
                    TimeSpan diff     = basicBooking.CheckOut - basicBooking.CheckIn;
                    double   noOfDays = diff.TotalDays;

                    booking.Cost = theRoom.Price * noOfDays;

                    _context.Add(booking);
                    await _context.SaveChangesAsync();

                    ViewBag.roomLevel = theRoom.Level;
                    ViewBag.totalCost = booking.Cost;
                }
            }
            return(View(basicBooking));
        }
Ejemplo n.º 5
0
        public IActionResult Book(MakeBooking makeBooking)
        {
            if (ModelState.IsValid)
            {
                makeBooking.Id        = Guid.NewGuid();
                makeBooking.BookingId = makeBooking.Id;
                _domain.Dispatcher.SendCommand(makeBooking);

                return(RedirectToAction("Booking", new { result = true }));
            }
            return(RedirectToAction("Booking", new { result = false }));
        }
Ejemplo n.º 6
0
        private void HolidayBooked(HolidayBookedEvent @event)
        {
            _holidayRepository.Save(@event.Source);

            var makeBookingCommand = new MakeBooking
            {
                Id            = @event.Source.Id.Value,
                EmployeeId    = @event.Source.Employee.Id.Value,
                Start         = @event.Source.Start,
                End           = @event.Source.End,
                BookingTypeId = Constants.HolidayBookingTypeId
            };

            _bus.Send(makeBookingCommand);
        }
        private void AppointmentBooked(AppointmentBookedEvent @event)
        {
            _appointmentRepository.Save(@event.Source);

            //todo: still a problem here.
            //Some logic has slipped into here on how to raise a command to make a booking.
            var makeBookingCommand = new MakeBooking
            {
                Id            = @event.Source.Id.Value,
                EmployeeId    = @event.Source.ConsultantId,
                Start         = @event.Source.Date + @event.Source.StartTime,
                End           = @event.Source.Date + @event.Source.EndTime,
                BookingTypeId = Constants.SalesAppointmentBookingTypeId
            };

            _bus.Send(makeBookingCommand);
        }
Ejemplo n.º 8
0
        public async Task <IActionResult> Create(MakeBooking makeBooking)
        {
            if (ModelState.IsValid)
            {
                var rID      = new SqliteParameter("rID", makeBooking.RoomID);
                var cInDate  = new SqliteParameter("checkIn", makeBooking.CheckIn);
                var cOutDate = new SqliteParameter("checkOut", makeBooking.CheckOut);

                var searchRoom = _context.Room.FromSql("select * from [Room]"
                                                       + "where [Room].ID = @rID and [Room].ID not in " +
                                                       "(select [Room].ID from [Room] inner join [Booking] on [Room].ID = [Booking].RoomID " +
                                                       "where ([Booking].checkIn <= @checkIn and [Booking].checkOut >= @checkIn)" +
                                                       "or ([Booking].checkIn >= @checkIn and[Booking].checkOut <= @checkOut)" +
                                                       "or ([Booking].checkIn <= @checkOut and [Booking].checkOut >= @checkOut))", rID, cInDate, cOutDate);

                ViewBag.Results = await searchRoom.ToListAsync();

                if (ViewBag.Results.Count != 0)
                {
                    if (User.IsInRole("Customers"))
                    {
                        var booking = new Booking()
                        {
                            RoomID        = makeBooking.RoomID,
                            CustomerEmail = User.Identity.Name,
                            CheckIn       = makeBooking.CheckIn,
                            CheckOut      = makeBooking.CheckOut
                        };
                        var theRoom = await _context.Room.FindAsync(makeBooking.RoomID);

                        var lengthOfStay = (makeBooking.CheckOut - makeBooking.CheckIn).TotalDays;

                        ViewData["MyBooking"] = booking;

                        if (lengthOfStay != 0)
                        {
                            booking.Cost = theRoom.Price * (decimal)lengthOfStay;
                        }
                        else
                        {
                            booking.Cost = theRoom.Price;
                        }


                        _context.Add(booking);
                        await _context.SaveChangesAsync();

                        return(View(makeBooking));
                        // return RedirectToAction(nameof(Index));
                    }
                    else
                    {
                        var booking = new Booking()
                        {
                            RoomID        = makeBooking.RoomID,
                            CustomerEmail = makeBooking.CustomerEmail,
                            CheckIn       = makeBooking.CheckIn,
                            CheckOut      = makeBooking.CheckOut
                        };
                        var theRoom = await _context.Room.FindAsync(makeBooking.RoomID);

                        var lengthOfStay = (makeBooking.CheckOut - makeBooking.CheckIn).TotalDays;

                        if (lengthOfStay != 0)
                        {
                            booking.Cost = theRoom.Price * (decimal)lengthOfStay;
                        }
                        else
                        {
                            booking.Cost = theRoom.Price;
                        }

                        _context.Add(booking);
                        await _context.SaveChangesAsync();

                        return(RedirectToAction(nameof(BookingManagement)));
                    }
                }

                ViewData["RoomID"]        = new SelectList(_context.Room, "ID", "ID", makeBooking.RoomID);
                ViewData["CustomerEmail"] = new SelectList(_context.Customer, "Email", "Email", makeBooking.CustomerEmail);
                return(View(makeBooking));
            }
            return(View(makeBooking));
        }