public async Task <bool> Handle(AgendarConsultaCommand request, CancellationToken cancellationToken)
        {
            if (!ValidarComando(request))
            {
                return(false);
            }

            var agendaMedica = await _agendaMedicaRepository.ObterAgendaMedica(request.MedicoId);

            var agendamentoPaciente = new AgendamentoPaciente(request.PacienteId, request.DataInicioConsulta);

            if (agendaMedica == null)
            {
                agendaMedica = new AgendaMedica(request.MedicoId);
                agendaMedica.AdicionarAgendamentoPaciente(agendamentoPaciente);
                _agendaMedicaRepository.Adicionar(agendaMedica);
            }
            else if (HorarioAgendamentoNaoDisponivel(request, agendaMedica))
            {
                await _mediatorHandler.PublicarNotificacao(new DomainNotification("Agendamento consulta", "Data não está disponível!"));

                return(false);
            }
            else
            {
                agendaMedica.AdicionarAgendamentoPaciente(agendamentoPaciente);
                _agendaMedicaRepository.AdicionarAgendamentoPaciente(agendamentoPaciente);
            }

            return(await _agendaMedicaRepository.UnitOfWork.Commit());
        }
        public async Task AgendarConsulta_NovaConsulta_ComSucesso()
        {
            //Arrange
            var agendaConsultaCommand = new AgendarConsultaCommand(_medicoId, Guid.NewGuid(), DateTime.Now.AddDays(1));

            var agendaMedica          = new AgendaMedica(_medicoId);
            var agendaMedicaExistente = new AgendamentoPaciente(_pacienteId, DateTime.Now.AddDays(1));

            agendaMedica.AdicionarAgendamentoPaciente(agendaMedicaExistente);

            _mocker.GetMock <IAgendaMedicaRepository>().Setup(r => r.UnitOfWork.Commit()).Returns(Task.FromResult(true));

            //Act
            var result = await _agendaMedicaHandler.Handle(agendaConsultaCommand, CancellationToken.None);

            //Assert
            Assert.True(result);
            _mocker.GetMock <IAgendaMedicaRepository>().Verify(r => r.Adicionar(It.IsAny <AgendaMedica>()), Times.Once);
            _mocker.GetMock <IAgendaMedicaRepository>().Verify(r => r.UnitOfWork.Commit(), Times.Once);
        }
Exemplo n.º 3
0
        public VisualizarAgendamento(int id)
        {
            InitializeComponent();
            ID = id;
            WindowsSO.ToCenterOfScreen(this);
            var agendamento = Agendamentos.Select(id);

            if (agendamento != null)
            {
                Data = agendamento._Data;
                var i = agendamento.Inicio;
                var f = agendamento.Fim;
                HorarioTBL.Text = $"{i.Hours:00}:{i.Minutes:00}-{f.Hours:00}:{f.Minutes:00}";
                var am = AgendamentoFuncionario.Select(id);
                if (am != null)
                {
                    var pessoa = Pessoas.Select(am.Funcionario);
                    MedicoCPFTBL.Text  = pessoa.CPF;
                    MedicoNomeTBL.Text = pessoa.Nome;
                }
                var atp = AgendamentoTempPaciente.Select(id);
                if (atp != null)
                {
                    var contato = TempPacientes.Select(atp.TempPaciente);
                    PacienteNomeTBL.Text    = atp.TempPaciente;
                    PacienteContatoTBL.Text = contato;
                }
                else
                {
                    var ap = AgendamentoPaciente.Select(id);
                    PacienteCPFTBL.Text = ap.Paciente;
                    var pessoa = Pessoas.Select(ap.Paciente);
                    PacienteNomeTBL.Text    = pessoa.Nome;
                    PacienteContatoTBL.Text = pessoa.Contato1;
                }
            }
        }
 public void AdicionarAgendamentoPaciente(AgendamentoPaciente agendamentoPaciente)
 {
     _context.AgendamentoPacientes.Add(agendamentoPaciente);
 }