public int Add(VisitForCreationDto visit) { try { int newId = -1; using (var sqlConnection = new SqlConnection(sqlConnectionString)) using (var sqlCommand = new SqlCommand($"EXEC ADD_VISIT @stationId, @courseId, @visitOrder, @available_seats, @date", sqlConnection)) { var returnParameter = sqlCommand.Parameters.Add("@result", SqlDbType.Int); returnParameter.Direction = ParameterDirection.Output; sqlCommand.Parameters.AddWithValue("@stationId", visit.StationId); sqlCommand.Parameters.AddWithValue("@courseId", visit.CourseId); sqlCommand.Parameters.AddWithValue("@visitOrder", visit.VisitOrder); //TODO sqlCommand.Parameters.AddWithValue("@availableSeats", 50); sqlCommand.Parameters.AddWithValue("@date", visit.Date); sqlConnection.Open(); var result = sqlCommand.ExecuteScalar(); newId = Convert.ToInt32(result); } return(newId); } catch (Exception ex) { logger.LogInformation($"AddVisit DB Connection Error: {ex}"); return(-1); } }
public IActionResult CreateVisit([FromBody] VisitForCreationDto visit, int id) { if (ModelState.IsValid && id >= 0) { visit.CourseId = id; var newId = _unitOfWork.VisitRepository.Add(visit); if (newId < 0) { throw new Exception("Creating a visit failed on save."); } var visitToReturn = new VisitDto { Id = newId, StationId = visit.StationId, CourseId = visit.CourseId, StationName = "maybeToDo", VisitOrder = visit.VisitOrder, Date = visit.Date }; return(CreatedAtRoute("GetVisitsForCourse", new { id = visitToReturn.Id }, visitToReturn)); } else { return(BadRequest()); } }
public async Task <ActionResult <VisitDto> > AddVisit([FromBody] VisitForCreationDto visitForCreation) { var validationResults = new VisitForCreationDtoValidator().Validate(visitForCreation); validationResults.AddToModelState(ModelState, null); if (!ModelState.IsValid) { return(BadRequest(new ValidationProblemDetails(ModelState))); //return ValidationProblem(); } var visit = _mapper.Map <Visit>(visitForCreation); await _visitRepo.AddVisit(visit); var saveSuccessful = await _visitRepo.SaveAsync(); if (saveSuccessful) { var visitFromRepo = await _visitRepo.GetVisitAsync(visit.Id); var visitDto = _mapper.Map <VisitDto>(visitFromRepo); var response = new Response <VisitDto>(visitDto); return(CreatedAtRoute("GetVisit", new { visitDto.Id }, response)); } return(StatusCode(500)); }