public CreatedReservationContract Create(CreateReservationContract contract) { contract.SinceReservation = contract.SinceReservation.ToLocalTime(); contract.UntilReservation = contract.UntilReservation.ToLocalTime(); _log.LogInformation($"Validating contract {contract.Description}"); ValidateContract(contract); _log.LogInformation($"Mapping contract {contract.Description}"); var Reservation = _mapper.Map <Reservation>(contract); ValidateSchedule(Reservation); CheckOverlap(Reservation); Reservation.Recruiter = _ConsultantRepository.Query().Where(x => x.Id == contract.Recruiter).FirstOrDefault(); Reservation.Room = _RoomRepository.Query().Where(x => x.Id == Reservation.RoomId).FirstOrDefault(); var createdReservation = _ReservationRepository.Create(Reservation); AddModelToGoogleCalendar(Reservation); _log.LogInformation($"Complete for {contract.Description}"); _unitOfWork.Complete(); _log.LogInformation($"Return {contract.Description}"); return(_mapper.Map <CreatedReservationContract>(createdReservation)); }
private void ValidateContract(CreateReservationContract contract) { try { _createReservationContractValidator.ValidateAndThrow(contract, $"{ValidatorConstants.RULESET_CREATE}"); } catch (ValidationException ex) { throw new CreateContractInvalidException(ex.ToListOfMessages()); } }