public async Task <IActionResult> UpdateAsync(long id, AppointmentInDTO appointmentDTO)
        {
            if (appointmentDTO == null)
            {
                return(BadRequest());
            }

            var existing = await _unitOfWork.Appointments.GetByIdAsync(id);

            if (existing == null)
            {
                return(NotFound($"Appointment {id} could not be found"));
            }

            var newAppointmentModel = _mapper.Map <Appointment>(appointmentDTO);
            await _unitOfWork.Appointments.UpdateAsync(id, newAppointmentModel);

            await _unitOfWork.CompleteAsync();

            appointmentDTO = _mapper.Map <AppointmentInDTO>(existing);

            return(Ok(appointmentDTO));
        }
        public async Task <IActionResult> CreateAsync([FromBody] AppointmentInDTO appointmentDTO)
        {
            if (!ModelState.IsValid || appointmentDTO == null)
            {
                return(BadRequest("Please fill out the required fields."));
            }

            var appointmentModel       = _mapper.Map <Appointment>(appointmentDTO);
            var existingUserWorkPeriod = await _unitOfWork.UserWorkPeriods.FindAsync(u => u.UserId == appointmentDTO.OwnerId && u.WorkPeriodId == appointmentDTO.WorkPeriodId);

            if (existingUserWorkPeriod.Count() == 0 && appointmentDTO.OwnerId != null)
            {
                var userPeriodModel = _mapper.Map <UserWorkPeriod>(new UserWorkPeriodDTO(appointmentDTO.OwnerId ?? 0, appointmentDTO.WorkPeriodId));
                await _unitOfWork.UserWorkPeriods.AddAsync(userPeriodModel);
            }

            await _unitOfWork.Appointments.AddAsync(appointmentModel);

            await _unitOfWork.CompleteAsync();

            appointmentDTO = _mapper.Map <AppointmentInDTO>(appointmentModel);

            return(CreatedAtRoute("GetAppointment", new { id = appointmentDTO.Id }, appointmentDTO));
        }