//
        // GET: /Funcionario/

        public ActionResult Index()
        {
            try
            {
                ViewBag.Title = "Listar - Recursos";
                Conexao.Ativar(true);
                Usuario umUsuario = (Usuario)Session["UsuarioLogado"];
                INegocio<Funcionario, int> umFuncBUS = new FuncionarioBUS(Conexao.Instacia, umUsuario.Funcionario.Empresa, umUsuario.Funcionario.Filial);
                List<Funcionario> lista = new List<Funcionario>();

                if (umUsuario.IsAdministrador)
                {
                    lista.AddRange(umFuncBUS.Listar());
                }
                else
                {
                    Funcionario umFuncionario = umFuncBUS.Consultar(umUsuario.Funcionario.Codigo);
                    lista.Add(umFuncionario);
                }

                return View(lista);
            }
            catch(Exception ex)
            {
                return View();
            }
            finally
            {
                if(Conexao.Instacia.State == ConnectionState.Open)
                {
                    Conexao.Ativar(false);
                }
            }
        }
 public void TestaPesquisaFucnionario()
 {
     this.CriaInstancia();
     List<Funcionario> lista = new List<Funcionario>();
     Empresa emp = new Empresa();
     emp.Codigo = "99";
     Filial fil = new Filial();
     fil.Codigo = "99";
     lista = new FuncionarioBUS(Conexao.Instacia, emp, fil).Pesquisar(2);
     Assert.IsNotNull(lista);
 }
 public void TestaListagemFuncionario()
 {
     this.CriaInstancia();
     List<Funcionario> lista = new List<Funcionario>();
     Empresa emp = new Empresa();
     emp.Codigo = "99";
     Filial fil = new Filial();
     fil.Codigo = "99";
     lista = new FuncionarioBUS(Conexao.Instacia, emp, fil).Listar();
     Assert.AreNotEqual(0, lista.Count);
 }
        public void TestaConsultaFuncionario()
        {
            this.CriaInstancia();
            Empresa umaEmpresa = new Empresa();
            umaEmpresa.Codigo = "99";
            Filial umaFilial = new Filial();
            umaFilial.Codigo = "99";
            INegocio<Funcionario, int> func = new FuncionarioBUS(Conexao.Instacia, umaEmpresa, umaFilial);
            Funcionario f = func.Consultar(2);
            Assert.IsNotNull(f);

            Conexao.Ativar(false);
        }
        //
        // GET: /Funcionario/Details/5

        public ActionResult Details(int id)
        {
            try
            {
                ViewBag.Title = "Detalhes - Recursos";
                Conexao.Ativar(true);
                Usuario umUsuario = (Usuario)Session["UsuarioLogado"];
                INegocio<Funcionario, int> umFuncBUS = new FuncionarioBUS(Conexao.Instacia, umUsuario.Funcionario.Empresa, umUsuario.Funcionario.Filial);
                Funcionario umFuncionario = null;

                if (umUsuario.IsAdministrador)
                {
                    umFuncionario = umFuncBUS.Consultar(id);
                }
                else
                {
                    if (umUsuario.Funcionario.Codigo == id)
                    {
                        umFuncionario = umFuncBUS.Consultar(id);
                    }
                }

                if(umFuncionario != null)
                {
                    return View(umFuncionario);
                }

                return RedirectToAction("Index", new { st = "er" });
            }
            catch (Exception ex)
            {
                return RedirectToAction("Index", new { st = "er" });
            }
            finally
            {
                if(Conexao.Instacia.State == ConnectionState.Open)
                {
                    Conexao.Ativar(false);
                }
            }
        }
        //
        // GET: /Agendamento/

        public ActionResult Index()
        {
            try
            {

                Usuario umUsuario = (Usuario)Session["UsuarioLogado"];


                ViewBag.Title = "Consultar Agendamentos - Agendamentos";
                Conexao.Ativar(true);
                List<Funcionario> lista = new FuncionarioBUS(Conexao.Instacia, umUsuario.Funcionario.Empresa, umUsuario.Funcionario.Filial).Listar();
                List<SelectListItem> listaSelecionavel = new List<SelectListItem>();

                SelectListItem itemDefault = new SelectListItem();
                itemDefault.Value = "0";
                itemDefault.Text = "Selecione um item";
                listaSelecionavel.Add(itemDefault);

                foreach (Funcionario item in lista)
                {
                    SelectListItem itemLista = new SelectListItem();
                    itemLista.Text = item.Nome;
                    itemLista.Value = item.Codigo.ToString();
                    if (umUsuario.IsAdministrador)
                    {
                        listaSelecionavel.Add(itemLista);
                    }
                    else
                    {
                        if (umUsuario.Funcionario.Codigo == item.Codigo)
                        {
                            listaSelecionavel.Add(itemLista);
                        }
                    }
                }

                ViewBag.Funcionarios = listaSelecionavel;

                if (Session["IdFuncionario"] != null)
                {
                    ViewBag.Argumento = "ps";
                    ViewBag.Funcionario = (int)Session["IdFuncionario"];
                }
                else
                {
                    if (!umUsuario.IsAdministrador)
                    {
                        ViewBag.Argumento = "ps";
                        ViewBag.Funcionario = umUsuario.Funcionario.Codigo;
                    }
                }

                return View();
            }
            catch (Exception ex)
            {
                return RedirectToAction("Index", new { st = "er" });
            }
            finally
            {
                if (Conexao.Instacia.State == ConnectionState.Open)
                {
                    Conexao.Ativar(false);
                }
            }
        }
        //
        // GET: /Agendamento/Create

        public ActionResult Create()
        {
            try
            {
                ViewBag.Title = "Cadastro - Agendamentos";
                Usuario umUsuario = (Usuario)Session["UsuarioLogado"];
                Conexao.Ativar(true);
                var agendamentoConsultor = new AgendamentosConsultor();
                agendamentoConsultor.Clientes = new ClienteBUS(Conexao.Instacia, umUsuario.Funcionario.Empresa, umUsuario.Funcionario.Filial).Listar();

                if (umUsuario.IsAdministrador)
                {
                    agendamentoConsultor.Funcionarios = new FuncionarioBUS(Conexao.Instacia, umUsuario.Funcionario.Empresa, umUsuario.Funcionario.Filial).Listar();
                }
                else
                {
                    INegocio<Funcionario, int> umFuncBUS = new FuncionarioBUS(Conexao.Instacia, umUsuario.Funcionario.Empresa, umUsuario.Funcionario.Filial);
                    List<Funcionario> funcionario = new List<Funcionario>();
                    funcionario.Add(umFuncBUS.Consultar(umUsuario.Funcionario.Codigo));
                    agendamentoConsultor.Funcionarios = funcionario;
                }
                agendamentoConsultor.Cliente = new Cliente();
                agendamentoConsultor.Funcionario = new Funcionario();
                agendamentoConsultor.Agendamentos[0].Todos = true;

                agendamentoConsultor.Agendamentos[0].Status = new Status { Codigo = 1 };
                ViewBag.Situacoes = CarregarStatus(umUsuario, agendamentoConsultor.Agendamentos[0]);
                return View(agendamentoConsultor);
            }
            catch (Exception ex)
            {
                return RedirectToAction("Index", new { st = "er" });
            }
            finally
            {
                if (Conexao.Instacia.State == ConnectionState.Open)
                {
                    Conexao.Ativar(false);
                }
            }
        }
        public void CarregarFuncionarios(Usuario umUsuario)
        {
            List<Funcionario> lista = new FuncionarioBUS(Conexao.Instacia, umUsuario.Funcionario.Empresa, umUsuario.Funcionario.Filial).Listar();
            List<SelectListItem> itensSelecionaveis = new List<SelectListItem>();

            itensSelecionaveis.Add(new SelectListItem { Value = null, Text = "Selecione um Recurso", Selected = true });

            foreach (var funcionario in lista)
            {
                SelectListItem item = new SelectListItem();
                item.Text = funcionario.Nome;
                item.Value = funcionario.Codigo.ToString();
                itensSelecionaveis.Add(item);
            }

            ViewBag.Funcionarios = itensSelecionaveis;
        }        
        //
        // /OS/Filter
        public ActionResult Filter()
        {
            try
            {
                ViewBag.Title = "Filtrar - Ordens de Serviço";
                Conexao.Ativar(true);
                Usuario umUsuario = (Usuario)Session["UsuarioLogado"];
                OrdemServico umaOrdemServico = new OrdemServico();
                List<Cliente> listaCliente = new ClienteBUS(Conexao.Instacia, umUsuario.Funcionario.Empresa, umUsuario.Funcionario.Filial).Listar();
                List<Funcionario> listaFuncionarios = new FuncionarioBUS(Conexao.Instacia, umUsuario.Funcionario.Empresa, umUsuario.Funcionario.Filial).Listar();
                umaOrdemServico.Funcionario = new Funcionario();
                umaOrdemServico.Cliente = new Cliente();

                List<SelectListItem> listaSelectCliente = new List<SelectListItem>();
                listaSelectCliente.Add(new SelectListItem { Text = "Selecione um Cliente", Value = "0", Selected = true });

                foreach (var cli in listaCliente)
                {
                    SelectListItem itemSelecionavel = new SelectListItem();
                    itemSelecionavel.Text = cli.Nome;
                    itemSelecionavel.Value = cli.Codigo.ToString();
                    listaSelectCliente.Add(itemSelecionavel);
                }

                ViewBag.Clientes = listaSelectCliente;

                if (umUsuario.IsAdministrador)
                {
                    List<SelectListItem> listaSelectFuncionario = new List<SelectListItem>();
                    listaSelectFuncionario.Add(new SelectListItem { Text = "Selecione um Recurso", Value = "0", Selected = true });

                    foreach (var func in listaFuncionarios)
                    {
                        SelectListItem itemSelecionavel = new SelectListItem();
                        itemSelecionavel.Text = func.Nome;
                        itemSelecionavel.Value = func.Codigo.ToString();
                        listaSelectFuncionario.Add(itemSelecionavel);
                    }

                    ViewBag.Funcionarios = listaSelectFuncionario;
                }

                return View(umaOrdemServico);
            }
            catch (Exception)
            {
                return RedirectToAction("Filter", new { st = "er" });
            }
            finally
            {
                if (Conexao.Instacia.State == ConnectionState.Open)
                {
                    Conexao.Ativar(false);
                }
            }
        }