public async Task <IActionResult> CreateAppointment([FromBody] RequestAppointment appointmentRequest) { try { var appointmentId = appointmentRequest.AppointmentReference.ID; var workOrderId = int.Parse(appointmentRequest.WorkOrderReference.ID); await _createAppointmentUseCase.Execute(appointmentId, workOrderId, appointmentRequest.Notes); return(Ok()); } catch (FormatException) { return(BadRequest("Invalid Id formats. they must be integers")); } }
public async Task BookSlotAppointment() { const string contractor = "contractor"; var woRef = AddWorkOrder(contractor); var expectedAppointment = new AppointmentSeedModel("AM", DateTime.UtcNow, DateTime.UtcNow.AddHours(1)); var(code, appointments) = await GetAppointments(contractor, woRef, expectedAppointment); code.Should().Be(HttpStatusCode.OK); var appointment = appointments.Single().Slots.Single(); const string expectedNotes = "notes"; var request = new RequestAppointment { WorkOrderReference = new Reference { ID = woRef.ToString() }, AppointmentReference = new Reference { ID = appointment.Reference }, Notes = expectedNotes }; code = await Post($"/api/v2/appointments", request); code.Should().Be(HttpStatusCode.OK); using var ctx = GetContext(); var db = ctx.DB; var bookedAppointment = await db.Appointments.SingleAsync(a => a.WorkOrderId == woRef); bookedAppointment.StartTime.Should().Be(expectedAppointment.StartTime); bookedAppointment.EndTime.Should().Be(expectedAppointment.EndTime); bookedAppointment.AppointmentNote.Should().Be(expectedNotes); var notes = await db.JobStatusUpdates.SingleAsync(jsu => jsu.RelatedWorkOrderId == woRef); notes.TypeCode.Should().Be(JobStatusUpdateTypeCode.Other_0); notes.OtherType.Should().Be(CustomJobStatusUpdates.AddNote); notes.Comments.Should().Be(expectedNotes); var(woCode, workOrderResponse) = await Get <RepairsApi.V2.Boundary.WorkOrderResponse>($"/api/v2/workOrders/{woRef}"); woCode.Should().Be(HttpStatusCode.OK); workOrderResponse.Appointment.Note.Should().Be(expectedNotes); }
public async Task NotFoundWhenBookSlotAppointmentWithUnknownWorkOrderId() { var request = new RequestAppointment { WorkOrderReference = new Reference { ID = "1337" }, AppointmentReference = new Reference { ID = "string" } }; var code = await Post($"/api/v2/appointments", request); code.Should().Be(HttpStatusCode.NotFound); }
public async Task BadRequestWhenBookSlotAppointmentWithBadWorkOrderId() { var request = new RequestAppointment { WorkOrderReference = new Reference { ID = "notANumber" }, AppointmentReference = new Reference { ID = "string" } }; var code = await Post($"/api/v2/appointments", request); code.Should().Be(HttpStatusCode.BadRequest); }
private async Task RequestAppointment(int woRef, string appointmentReference) { var request = new RequestAppointment { WorkOrderReference = new Reference { ID = woRef.ToString() }, AppointmentReference = new Reference { ID = appointmentReference } }; var code = await Post($"/api/v2/appointments", request); code.Should().Be(HttpStatusCode.OK); }