public async Task<Message> SendNotificationAsync(Reservation reservation) { var pendingReservations = await _repository.FindPendingReservationsAsync(); if (pendingReservations.Count() > 1) return null; var notification = BuildNotification(reservation); return _client.SendMessage(notification.From, notification.To, notification.Messsage); }
private static Notification BuildNotification(Reservation reservation) { var message = new StringBuilder(); message.AppendFormat("You have a new reservation request from {0} for {1}:{2}", reservation.Name, reservation.VacationProperty.Description, Environment.NewLine); message.AppendFormat("{0}{1}", reservation.Message, Environment.NewLine); message.Append("Reply [accept] or [reject]"); return new Notification { From = PhoneNumbers.Twilio, To = reservation.PhoneNumber, Messsage = message.ToString() }; }
public async Task<ActionResult> Create(ReservationViewModel model) { if (ModelState.IsValid) { var reservation = new Reservation { Message = model.Message, PhoneNumber = model.UserPhoneNumber, Name = model.UserName, VactionPropertyId = model.VacationPropertyId, Status = ReservationStatus.Pending, CreatedAt = DateTime.Now }; await _reservationsRepository.CreateAsync(reservation); reservation.VacationProperty = new VacationProperty {Description = model.VacationPropertyDescription}; await _notifier.SendNotificationAsync(reservation); return RedirectToAction("Index", "VacationProperties"); } return View(model); }