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; }
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"); }
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(); }
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; }
public TimeSpan QuantidadeDeHorasTrabalhadasPorFuncionarioPorDia(Funcionario funcionario, DateTime dia) { return this.QuantidadeDeHorasTrabalhadasPorFuncionario(funcionario,dia,dia,false); }
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); }
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"); } }