public void BookingHearingSuccess() { const int trialManagementConference = 9090; var booking = new BookHearingInfo { CEIS_Physical_File_ID = 3879m, containerID = 305273, dateTime = new DateTime(2019, 2, 25, 11, 45, 0), hearingLength = 30, hearingTypeId = trialManagementConference, locationID = 1, requestedBy = "John Smith 604-555-1212 [email protected]" }; BookingHearingResult result = _soapClient.BookingHearingAsync(booking).Result; Assert.NotNull(result); }
public void BookingHearingFail() { // this booking will fail because the date is too close in the future const int trialManagementConference = 9090; var booking = new BookHearingInfo { CEIS_Physical_File_ID = 3879m, containerID = 305291, dateTime = new DateTime(2019, 1, 22, 11, 45, 0), hearingLength = 30, hearingTypeId = trialManagementConference, locationID = 1, requestedBy = "John Smith 604-555-1212 [email protected]" }; BookingHearingResult result = _soapClient.BookingHearingAsync(booking).Result; Assert.NotNull(result); }
/// <summary> /// Book court case /// </summary> public async Task <ScCaseConfirmViewModel> BookCourtCase(ScCaseConfirmViewModel model, string userGuid, string userDisplayName) { //if the user could not be detected return if (string.IsNullOrWhiteSpace(userGuid)) { return(model); } ScSessionBookingInfo bookingInfo = _session.ScBookingInfo; // check the schedule again to make sure the time slot wasn't taken by someone else AvailableDatesByLocation schedule = await _client.AvailableDatesByLocationAsync( bookingInfo.BookingRegistryId, bookingInfo.HearingTypeId); //ensure time slot is still available if (IsTimeStillAvailable(schedule, bookingInfo.ContainerId)) { //build object to send to the API var bookInfo = new BookHearingInfo { CEIS_Physical_File_ID = bookingInfo.CaseId, containerID = bookingInfo.ContainerId, dateTime = model.FullDate, hearingLength = bookingInfo.HearingLengthMinutes, locationID = bookingInfo.BookingRegistryId, requestedBy = $"{userDisplayName} {model.Phone} {model.EmailAddress}", hearingTypeId = bookingInfo.HearingTypeId }; //submit booking BookingHearingResult result = await _client.BookingHearingAsync(bookInfo); //get the raw result bookingInfo.RawResult = result.bookingResult; //test to see if the booking was successful if (result.bookingResult.ToLower().StartsWith("success")) { //create database entry DbSet <BookingHistory> bookingHistory = _dbContext.Set <BookingHistory>(); bookingHistory.Add(new BookingHistory { ContainerId = bookingInfo.ContainerId, SmGovUserGuid = userGuid, Timestamp = DateTime.Now }); //save to DB await _dbContext.SaveChangesAsync(); //update model model.IsBooked = true; bookingInfo.IsBooked = true; //store user info in session for next booking var userInfo = new SessionUserInfo { Phone = model.Phone, Email = model.EmailAddress, ContactName = $"{userDisplayName}" }; _session.UserInfo = userInfo; var emailBody = await GetEmailBody(); //send email await _mailService.SendEmail( //"*****@*****.**", model.EmailAddress, EmailSubject, emailBody); //clear booking info session _session.ScBookingInfo = null; } else { model.IsBooked = false; bookingInfo.IsBooked = false; } } else { //The booking is not available anymore //user needs to choose a new time slot model.IsTimeSlotAvailable = false; model.IsBooked = false; bookingInfo.IsBooked = false; } // save the booking info back to the session _session.ScBookingInfo = bookingInfo; return(model); }