public HttpResponseMessage ObterBloqueioAgenda(int id)
        {
            try
            {
                var model  = new BloqueioAgendaViewModel();
                var result = _serviceAgenda.ObterBloqueioAgenda(id);

                if (result == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Não foi possível recuperar dados do bloqueio de agenda."));
                }

                model.DataFim       = result.DataFim;
                model.DataInicio    = result.DataInicio;
                model.Funcionario   = result.Funcionario.Pessoa.Nome;
                model.IdBloqueio    = result.IdBloqueio;
                model.IdFuncionario = result.IdFuncionario;
                model.Motivo        = result.Motivo;

                return(Request.CreateResponse(HttpStatusCode.OK, model));
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }
        public HttpResponseMessage SalvarBloqueioAgenda(BloqueioAgendaViewModel model)
        {
            var result = new BloqueioAgendaAvisoViewModel();

            try
            {
                if (model.IdBloqueio > 0)
                {
                    var bloqueio = _serviceAgenda.ObterBloqueioAgenda(model.IdBloqueio);
                    bloqueio.SetDataFim(model.DataFim);
                    bloqueio.SetDataInicio(model.DataInicio);
                    bloqueio.SetMotivo(model.Motivo);

                    _serviceAgenda.SalvarBloqueioAgenda(bloqueio);
                }
                else
                {
                    var funcionario = _cadastroService.ObterFuncionarioById(model.IdFuncionario);
                    if (funcionario == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Não foi possível recuperar dados do funcionário."));
                    }

                    var clinica = _cadastroService.ObterClinicaById(base.GetUsuarioLogado().IdClinica);
                    if (clinica == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Não foi possível recuperar dados da clinica."));
                    }

                    //recupero a agenda do funcionário no periódo selecionado
                    var agendaperiodo = _serviceAgenda.ListarAgendaMedicaPorPeriodo(funcionario.IdFuncionario, model.DataInicio, model.DataFim);
                    if (agendaperiodo.Count == 0)
                    {
                        var bloqueio = new BloqueioAgenda(funcionario, clinica, model.DataInicio, model.DataFim, model.Motivo);
                        _serviceAgenda.SalvarBloqueioAgenda(bloqueio);
                        result.Aceito = true;
                    }
                    else
                    {
                        result.Aceito = false;

                        var marcados = agendaperiodo.Where(x => x.Situacao == "Marcado").ToList();
                        foreach (var item in marcados)
                        {
                            result.PacientesMarcados.Add(new PacientesMarcados
                            {
                                Data     = item.Data.ToShortDateString() + " as " + item.Hora.ToString(@"hh\:mm"),
                                Email    = item.Paciente.Pessoa.Email,
                                Nome     = item.Paciente.Pessoa.Nome,
                                Telefone = item.Paciente.Pessoa.Telefone1
                            });
                        }
                    }
                }

                return(Request.CreateResponse(HttpStatusCode.OK, result));
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }