public async Task <bool> CreateReservationAsync(ReservationCreate model)
        {
            var reservation = new Reservation
            {
                CustomerId   = model.CustomerId,
                RoomId       = model.RoomId,
                CheckInDate  = model.CheckInDate,
                CheckOutDate = model.CheckOutDate
            };

            using (var db = new ApplicationDbContext())
            {
                db.Reservations.Add(reservation);

                var room = await db.Rooms.FindAsync(model.RoomId);

                room.Available = false;

                //return await db.SaveChangesAsync() == 1;
                return(await db.SaveChangesAsync() == 2);
            }
        }
Example #2
0
        public override void HandleBasicDeliver(string consumerTag, ulong deliveryTag, bool redelivered, string exchange, string routingKey, IBasicProperties properties, byte[] body)
        {
            Console.WriteLine($"Consuming Message");
            Console.WriteLine(string.Concat("Message received from the exchange ", exchange));
            Console.WriteLine(string.Concat("Consumer tag: ", consumerTag));
            Console.WriteLine(string.Concat("Delivery tag: ", deliveryTag));
            Console.WriteLine(string.Concat("Routing tag: ", routingKey));
            Console.WriteLine(string.Concat("Message: ", Encoding.UTF8.GetString(body)));


            if (exchange.Equals("request.reservation"))
            {
                if (routingKey.Equals("reservation.create"))
                {
                    ReservationCreate message = JsonConvert.DeserializeObject <ReservationCreate>(Encoding.UTF8.GetString(body));
                    //Console.WriteLine(string.Concat("desirialized: ", carConsumed.CarId));

                    System.Threading.Thread.Sleep(3000);

                    DirectMessageToReservation ds = new DirectMessageToReservation();
                    ds.SendMessageToReservation(message);
                }
            }

            if (exchange.Equals("request.reservation"))
            {
                if (routingKey.Equals("get_res_by_id_key"))
                {
                    Console.WriteLine("get ReservationID " + Encoding.UTF8.GetString(body));
                    DirectMessageToReservation ds = new DirectMessageToReservation();
                    ds.SendReservationByID(Encoding.UTF8.GetString(body));
                }
            }

            Console.WriteLine("retrieved car DATA: " + body);

            _channel.BasicAck(deliveryTag, false);
        }
Example #3
0
        /// <summary>
        /// This will create a new reservation.
        /// </summary>
        /// <param name="model">This is the model of the reservation and includes Driver Id, Renter Id, Number of Passangers, Date of Reservation, Reservation Duration, Reservation Details and Date the Reservation was made.</param>
        /// <returns>This does not return anything.</returns>
        public bool CreateReservation(ReservationCreate model)
        {
            using (var ctx = new ApplicationDbContext())
            {
                var entity =

                    new Reservation()
                {
                    ApplicationUser        = _userId,
                    DriverId               = model.DriverId,
                    RenterId               = model.RenterId,
                    NumberOfPassengers     = model.NumberOfPassengers,
                    DateReservedFor        = model.DateReservedFor,
                    ReservationDuration    = model.ReservationDuration,
                    ReservationDetails     = model.ReservationDetails,
                    DateReservationMade    = DateTimeOffset.Now,
                    UserCreatedReservation = ctx.Users.Single(r => r.Id == _userId.ToString()).UserName,
                };


                var driver = ctx.Drivers.Find(model.DriverId);
                int day    = (int)model.DateReservedFor.DayOfWeek;

                switch (day)
                {
                case 0:
                    day = 1;
                    break;

                case 1:
                    day = 2;
                    break;

                case 2:
                    day = 4;
                    break;

                case 3:
                    day = 8;
                    break;

                case 4:
                    day = 16;
                    break;

                case 5:
                    day = 32;
                    break;

                case 6:
                    day = 64;
                    break;
                }

                DaysOfWeek dayOfWeek = (DaysOfWeek)day;

                if (model.NumberOfPassengers > driver.MaximumOccupants - 1)
                {
                    return(false);
                }

                if (!driver.DaysAvailable.HasFlag(dayOfWeek))
                {
                    return(false);
                }

                ctx.Reservations.Add(entity);
                return(ctx.SaveChanges() == 1);
            }
        }