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