Пример #1
0
        public string HorasBatidasPorDiaPorFuncionario(Funcionario funcionario, DateTime dia)
        {
            string hora = string.Empty;
            string separador = " - ";
            var marcacoesDoDia = PontoRepository.
                                    Listar().
                                    ToList().
                                    Where(p => p.DataValida.Date == dia.Date).
                                    Where(p => p.Funcionario.Id == funcionario.Id).
                                    Where(p => p.Contabilizar == true).
                                    OrderBy(p => p.DataValida).
                                    ToList();

            foreach (var ciclo in marcacoesDoDia)
            {

                if (hora.Equals(string.Empty))
                {
                    hora = ciclo.DataValida.ToString(FormatoHora);
                }
                else
                {
                    hora = hora + separador + ciclo.DataValida.ToString(FormatoHora);
                }
            }
            return hora;
        }
Пример #2
0
        public ActionResult Autenticar(FuncionarioLogin model, string remember)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    if (model.Email.ToString() == String.Empty) { TempData["MensagemAlerta"] = "Informe o login!"; }
                    if (model.Senha.ToString() == String.Empty) { TempData["MensagemAlerta"] = "Informe a senha!"; }
                }
                else
                {
                    var funcionarioParaLogin = new Funcionario();
                    funcionarioParaLogin =
                        FuncionarioRepository.
                        PesquisaParaLogin(
                            model.Email,
                            Criptografia.Encrypt(model.Senha));

                    if (funcionarioParaLogin != null)
                    {
                        //if (funcionarioParaLogin.PerfilDeAcesso.Descricao == Seedwork.Const.PerfilAcesso.Administrador.ToString())
                        //{
                        //    TempData["MensagemAlerta"] = "O administrador do sistema está bloqueado! Entre em contato com os responsáveis pelo sistema!";
                        //}
                        //else
                        if (funcionarioParaLogin.Bloqueado == "Y")
                        {
                            TempData["MensagemAlerta"] = "Este funcionário está bloqueado! Entre em contato com o Gerente!";
                        }
                        else
                        {
                            if (funcionarioParaLogin.Empresa.Bloqueado == "Y")
                            {
                                TempData["MensagemAlerta"] = "A empresa deste funcionário está bloqueada! Entre em contato com o Administrador do sistema!";
                            }
                            else
                            {
                                if (remember == "on")
                                    CreateLoginCookie(model.Email);

                                Session.Add("Funcionario", funcionarioParaLogin);

                                //Redireciona para a mesma view e o tratamento do que vai aparecer será nas views.
                                return RedirectToAction("Index", "Home");
                            }
                        }
                    }
                    else
                    {
                        TempData["MensagemAlerta"] = "Usuário ou senha incorreta!";
                    }
                }
            }
            catch (Exception e)
            {
                TempData["MensagemErro"] = "Erro de auteticação." + e.Message;
            }

            return RedirectToAction("Index", "Login");
        }
Пример #3
0
        public void EfetuarMarcacaoDePonto(Funcionario funcionario)
        {
            CultureInfo cult = new CultureInfo("pt-BR");
            string StrData = DateTime.Now.ToString("dd/MM/yyyy HH:mm", cult);

            var novoPonto = new Ponto()
               {
               Id = Guid.NewGuid(),
               DataMarcacao = DateTime.Parse(StrData,cult),
               DataValida = DateTime.Parse(StrData, cult),
               Funcionario = funcionario,
               Contabilizar = true
               };

            PontoRepository.Salvar(novoPonto);
            PontoRepository.Executar();
        }
Пример #4
0
        public TimeSpan QuantidadeDeHorasTrabalhadasPorFuncionario(Funcionario funcionario, DateTime diaInicio, DateTime diaFinal, Boolean descontarHoras = true)
        {
            var _horaExpediente = 8;
            if (funcionario.HorarioDeExpediente != null)
            {
                _horaExpediente = funcionario.HorarioDeExpediente.NumeroHorasPorDia;
            }

            var _marcacoesDoDia = PontoRepository.
                                    Listar().
                                    ToList().
                                    Where(p => p.Funcionario.Id == funcionario.Id).
                                    Where(p => p.DataValida.Date >= diaInicio.Date).
                                    Where(p => p.DataValida.Date <= diaFinal.Date).
                                    Where(p => p.Contabilizar == true).
                                    OrderBy(p => p.DataValida).
                                    ToList();

            int _Dias = diaFinal.Subtract(diaInicio).Days;
            var horasTrabalhadas = new TimeSpan();

            for (int i = 0; i <= _Dias; i++)
            {
                DateTime DataTeste = diaInicio.AddDays(i).Date;
                var _ListaPorDia = _marcacoesDoDia.Where(p => p.DataValida.Date == DataTeste).ToList();

                for (int j = 1; j < _ListaPorDia.Count; j = j + 2)
                {
                    horasTrabalhadas = horasTrabalhadas.Add(_ListaPorDia[j].DataValida.TimeOfDay - _ListaPorDia[j-1].DataValida.TimeOfDay);
                }

                if ((_ListaPorDia.Count >= 4) && (descontarHoras))
                {
                    horasTrabalhadas = horasTrabalhadas.Subtract(new TimeSpan(_horaExpediente, 0, 0));
                }

            }

            return horasTrabalhadas;
        }
Пример #5
0
 public TimeSpan QuantidadeDeHorasTrabalhadasPorFuncionarioPorDia(Funcionario funcionario, DateTime dia)
 {
     return this.QuantidadeDeHorasTrabalhadasPorFuncionario(funcionario,dia,dia,false);
 }
Пример #6
0
        public ActionResult Lista(string Email, DateTime? Data)
        {
            // Pega email, ou default usuario logado
            string _Email = Sessao.FuncionarioLogado.Email;
            if ((Email != null) && (Email != String.Empty)) { _Email = Email; }
            ViewBag.EmailLogado = _Email;

            Funcionario _Funcionario = new Funcionario();
            _Funcionario = FuncionarioRepository.PesquisaPeloEmail(_Email);

            // Pega a data, ou default data atual
            DateTime _Data = DateTime.Now;
            if (Data != null) { _Data = DateTime.Parse(Data.ToString()); }

            var ListaFuncionarios = FuncionarioRepository.ListarComPerfil(Sessao.FuncionarioLogado.PerfilDeAcesso).ToList();

            switch (Sessao.PerfilFuncionarioLogado)
            {
                case PerfilAcesso.Funcionario:
                    ListaFuncionarios = ListaFuncionarios.Where(p => p.Id == Sessao.FuncionarioLogado.Id).ToList();
                    break;
                case PerfilAcesso.Gerente:
                    ListaFuncionarios = ListaFuncionarios.Where(p => p.Empresa.Id == Sessao.EmpresaLogada.Id).ToList();
                    break;
            }

            // Recupera a lista de pontos batidos
            var _ListaCompleta = PontoRepository.
                            Listar().
                            ToList().
                            Where(p => p.DataValida.Month == _Data.Month).
                            Where(p => p.DataValida.Year == _Data.Year).
                            Where(p => p.Funcionario.Email == _Email).
                            OrderBy(p => p.DataValida).
                            ToList();

            DateTime _PrimeiraData = new DateTime(_Data.Year, _Data.Month, 1);
            int _Dias = DateTime.DaysInMonth(_Data.Year, _Data.Month);
            Dictionary<DateTime, List<Ponto>> Dicionario = new Dictionary<DateTime, List<Ponto>>();
            Dictionary<DateTime, TimeSpan> DicionarioHoras = new Dictionary<DateTime, TimeSpan>();

            int Maior = 0;

            for (int i = 0; i < _Dias; i++)
            {

                var _ListaPorDia = _ListaCompleta.Where(p => p.DataValida.Date == _PrimeiraData.AddDays(i).Date).ToList();

                int _QtdeBatidas = _ListaPorDia.Count();
                if (_QtdeBatidas > Maior)
                {
                    Maior = _QtdeBatidas;
                }

                Dicionario.Add(_PrimeiraData.AddDays(i), _ListaPorDia);
                DicionarioHoras.Add(_PrimeiraData.AddDays(i), PontoEletronicoService.QuantidadeDeHorasTrabalhadasPorFuncionarioPorDia(_Funcionario, _PrimeiraData.AddDays(i)));
            }

            ViewBag.MaiorBatidas = ((int)((Maior + 1) / 2)) * 2;
            ViewBag.DicionarioHoras = DicionarioHoras;
            ViewBag.ListaFuncionarios = ListaFuncionarios.Select(p => new SelectListItem() { Text = p.Email, Value = p.Email });

            return View(Dicionario);
        }
Пример #7
0
        public ActionResult Marcar(string email, string senha, string parametro)
        {
            var funcionarioParaMarcar = new Funcionario();
            funcionarioParaMarcar = FuncionarioRepository.PesquisaParaLogin(email, Criptografia.Encrypt(senha));

            if (funcionarioParaMarcar != null)
            {
                PontoEletronicoService.EfetuarMarcacaoDePonto(funcionarioParaMarcar);
                TempData["Mensagem"] = "Marcação efetuada com sucesso!";
            }
            else
            {
                TempData["MensagemAlerta"] = "Senha incorreta";
            }

            if ((parametro != string.Empty) && (parametro != null))
            {
                // Registro de ponto sem Login
                return RedirectToAction("Index");
            }
            else
            {
                return RedirectToAction("Index", "Home");
            }
        }