public void Agendar(long idEmpresa, DateTime data, long idServico, long idCliente, long idFuncionario, string guidUsuarioAgendou) { try { //if (data < DateTime.Now.FirstHourOfDay().AddMonths(-1)) // { throw new AtendimentoInvalidoException("Data inválido."); } //if (data.DateHourMinute() < DateTime.Now.DateHourMinute()) //{ throw new AtendimentoInvalidoException("Data inválida, não é possível realizar um agendamento para o passado."); } ClienteModel cliente = svCliente.Find(idCliente); if (cliente.IsNull()) { throw new AtendimentoInvalidoException("Cliente inválido."); } ServicoModel servico = svServico.Find(idServico); if (servico.IsNull()) { throw new AtendimentoInvalidoException("Serviço inválido."); } FuncionarioModel funcionario = svFuncionario.Find(idFuncionario); if (funcionario.IsNull()) { throw new AtendimentoInvalidoException("Funcionário inválido."); } AtendimentoModel agendamentoCadastrado = _repository.GetAtendimento(cliente.Id, servico.Id, funcionario.Id, data.DateHourMinute()); if (agendamentoCadastrado.IsNotNull()) { throw new AtendimentoInvalidoException("Já existe um atendimento para este cliente com este funcionário neste horário."); } EmpresaModel empresa = svEmpresa.Find(idEmpresa); AtendimentoModel a = new AtendimentoModel(empresa, data.DateHourMinute(), cliente, servico, funcionario, guidUsuarioAgendou, servico.Preco); _repository.Save(a); } catch (DomainException dEx) { Logger.Log.Warn(dEx); throw; } catch (Exception ex) { Logger.Log.Error(ex); throw; } }