public async Task <IActionResult> Create(AppointmentTypeDto appointmentTypeDto) { var appointmentType = _mapper.Map <AppointmentType>(appointmentTypeDto); var validationResult = _validator.Validate(appointmentType); if (!ModelState.IsValid) { var errors = ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage).ToList(); return(BadRequest(errors)); } else if (!validationResult.IsValid) { var validationErrors = validationResult.Errors.Select(x => $"{x.PropertyName} failed validation: ${x.ErrorMessage}."); return(BadRequest(string.Join(";", validationErrors))); } if (await _appointmentTypeRepository.AnyByName(appointmentType.Name).ConfigureAwait(false)) { return(BadRequest("This appointment type already exists.")); } await _appointmentTypeRepository.Create(appointmentType).ConfigureAwait(false); return(Ok("Appointment type created.")); }
public async Task <ActionResult <AppointmentTypeDto> > Put(int id, AppointmentTypeDto model) { try { if (!ModelState.IsValid) { return(BadRequest("Model is not valid")); } var oldAppointmentType = await _appointmentTypeService.GetAppointmentTypeByIdAsync(id); if (oldAppointmentType == null) { return(NotFound($"Could not find appointment type with id of {id}")); } var updatedAppointmentType = _mapper.Map(model, oldAppointmentType); if (await _appointmentTypeService.UpdateAppointmentType(updatedAppointmentType)) { return(Ok(updatedAppointmentType)); } } catch (Exception e) { return(this.StatusCode(StatusCodes.Status500InternalServerError, $"Database Failure: {e}")); } return(BadRequest()); }
public async Task <ActionResult <AppointmentTypeDto> > Post(AppointmentTypeDto model) { try { if (ModelState.IsValid) { var existing = await _appointmentTypeService.GetAppointmentTypeByNameAsync(model.Name); if (existing != null) { return(BadRequest("The appointment type is already exists!")); } var location = _linkGenerator.GetPathByAction(HttpContext, "Get", "AppointmentTypes", new { name = model.Name }); if (string.IsNullOrWhiteSpace(location)) { return(BadRequest("Could not use current name")); } var appointmentType = _mapper.Map <AppointmentType>(model); if (await _appointmentTypeService.CreateAppointmentType(appointmentType)) { return(Created(location, appointmentType)); } return(BadRequest("Something bad happened!")); } else { return(BadRequest(ModelState)); } } catch (Exception e) { return(this.StatusCode(StatusCodes.Status500InternalServerError, $"Database Failure: {e}")); } }