public void AtualizarExperiencia() { List <Funcionario> func_exp = _db.Int_DP_Funcionarios.ToList(); DateTime hoje = Globalization.HojeBR(); foreach (var func in func_exp) { if (func.Exp_DataInicio.Date <= hoje & func.Exp_DataFim.Date >= hoje) { func.Experiencia = 1; } else { func.Experiencia = 0; } _db.SaveChanges(); } }
public ActionResult Lembrete(int dias) { int id_user = HttpContext.Session.GetInt32("ID") ?? 0; if (dias > 0) { List <DateTime> diasLista = new List <DateTime>(); List <DateTime> feriados = new List <DateTime>(); List <int> vUsuariosSemEnvio = new List <int>(); DateTime hoje = Globalization.HojeBR(); try { DateTime datainicio = (hoje.AddDays(dias * (-1))); vUsuariosSemEnvio = _db.Int_DP_Ocorrencias .Where(a => a.Data >= datainicio && a.Data < hoje) .GroupBy(g => g.Usuario.Id) .Select(s => s.Key) .ToList(); } catch (InvalidOperationException exp) { TempData["LembreteNotOK"] = "Todos os usuários já enviaram as ocorrências no periodo solicitado!"; Log log = new Log(); log.EnviarLembrete_Erro(id_user, exp); _db.SaveChanges(); return(RedirectToAction("Index")); } catch (Exception exp) { TempData["LembreteNotOK"] = "Ocorreu um erro ao tentar enviar o lembrete!"; Log log = new Log(); log.EnviarLembrete_Erro(id_user, exp); _db.SaveChanges(); return(RedirectToAction("Index")); } List <int> vUsuarios = _db.Int_DP_Usuarios .Where(a => a.Ativo == 1) .Select(s => s.Id) .ToList(); List <int> usuariosNaoEnviados = vUsuarios.Except(vUsuariosSemEnvio).ToList(); if (usuariosNaoEnviados.Count > 0) { List <string> vEmails = new List <string>(); foreach (var id in usuariosNaoEnviados) { string email = _db.Int_DP_Usuarios .Where(a => a.Id == id) .Select(s => s.Email) .FirstOrDefault(); if (!vEmails.Contains(email)) { //Para não entrar duplicado vEmails.Add(email); } } vEmails.RemoveAll(item => item == null); //Remove os valores nulos da lista vEmails.RemoveAll(item => item == string.Empty); //Remove os valores de string vazia vEmails.RemoveAll(item => item == ""); //Remove os valores de string vazia if (vEmails.Count > 0) { Log log = new Log(); try { EnviarLembrete.EnviarMsgLembrete(dias, vEmails); TempData["LembreteOK"] = "Lembrete Enviado!"; log.EnviarLembrete(id_user, vEmails.Count); _db.Int_DP_Logs.Add(log); } catch (Exception exp) { log.EnviarLembrete_Erro(id_user, exp); _db.Int_DP_Logs.Add(log); TempData["LembreteNotOK"] = "Ocorreu um erro ao tentar enviar o lembrete, por favor, tente novamente!"; } finally { _db.SaveChanges(); } } else { TempData["LembreteNotOK"] = "Não há e-mails cadastrados para envio"; } return(RedirectToAction("Index")); } else { TempData["LembreteNotOK"] = "Todos os usuários já enviaram as ocorrências no período solicitado!"; return(RedirectToAction("Index")); } } else { TempData["LembreteNotOK"] = "Insira um período de dias válido"; return(RedirectToAction("Index")); } }
public void OcorrenciasFaltantes() { if (HttpContext.Session.GetString("Perfil") != "admin") { List <DateTime> dias = new List <DateTime>(); //30 últimos dias List <DateTime> enviados = new List <DateTime>(); //Ultimas ocorrências enviadas List <DateTime> calend = new List <DateTime>(); //Dias - Falta List <DateTime> calend_final = new List <DateTime>(); //Calend - Finais de Semana try { int id_user = HttpContext.Session.GetInt32("ID") ?? 0; DateTime dataCadastro = _db.Int_DP_Usuarios .Where(a => a.Id == id_user) .Select(s => s.DataCadastro) .FirstOrDefault(); List <DateTime> feriados = _db.Int_DP_Feriados .OrderByDescending(a => a.Data) .Select(s => s.Data) .ToList(); int usuario = HttpContext.Session.GetInt32("ID") ?? 0; TimeSpan diff = Globalization.HoraAtualBR().Subtract(dataCadastro); //Diferença de dias entre data do cadastro e hoje DateTime dataInicial; if (diff.Days >= 30) { //dataInicial = DateTime.Today.AddDays(-30); dataInicial = Globalization.HojeBR().AddDays(-30); //Adiciona 30 dias anteriores a hoje na lista for (int i = 29; i >= 0; i--) { dias.Add(Globalization.HojeBR().AddDays(i * -1)); } } else { dataInicial = dataCadastro.Date; for (int i = diff.Days; i >= 0; i--) { //dias.Add(DateTime.Today.AddDays(i * -1)); dias.Add(Globalization.HojeBR().AddDays(i * -1)); } } enviados = _db.Int_DP_Ocorrencias .Where(a => a.Data >= dataInicial && a.Usuario.Id == usuario && a.Ativo == 1) .OrderByDescending(a => a.Data) .Select(a => a.Data) .ToList(); //Pega os útimos 30 dias calend = dias.Except(enviados).ToList(); //Retira os dias que foram enviados calend = calend.Except(feriados).ToList(); //Retira os feriados //Retira o sábado e o domingo da lista foreach (DateTime dia in calend) { if (!dia.DayOfWeek.Equals(DayOfWeek.Saturday) && !dia.DayOfWeek.Equals(DayOfWeek.Sunday)) { calend_final.Add(dia); } } //calend_final.Reverse(); //Reverte a ordem das datas para decrescente ViewBag.Calendario = calend_final; } catch (Exception) { ViewBag.Calendario = null; } } }
public ActionResult Atualizar([FromForm] Funcionario func, int exp_periodo) { int id_notnull = HttpContext.Session.GetInt32("ID") ?? 0; ViewBag.Func = func; Log log = new Log(); try { DateTime hoje = Globalization.HojeBR(); func.Setor = _db.Int_DP_Setores.Find(func.Setor.Id); func.Loja = _db.Int_DP_Lojas.Find(func.Loja.Id); Funcionario func_antigo = _db.Int_DP_Funcionarios.Find(func.Id); func_antigo.Setor = func.Setor; func_antigo.Loja = func.Loja; func_antigo.Exp_DataInicio = func.Exp_DataInicio; func_antigo.Exp_DataFim = func.Exp_DataInicio.AddDays(exp_periodo); if (exp_periodo != 0) { if (func_antigo.Exp_DataFim.Date >= hoje && func_antigo.Exp_DataInicio.Date <= hoje) { func_antigo.Experiencia = 1; } else { func_antigo.Experiencia = 0; } } else { func_antigo.Experiencia = 0; } //Férias /*func_antigo.Ferias_DataInicio = func.Ferias_DataInicio; * func_antigo.Ferias_DataLimite = func.Ferias_DataLimite; * func_antigo.Ferias_Periodo = func.Ferias_Periodo;*/ _db.SaveChanges(); log.AlterarFuncionario(id_notnull, func.Id); TempData["FuncionarioOK"] = "Funcionário Atualizado com Sucesso"; } catch (Exception exp) { log.AlterarFuncionario_Erro(id_notnull, func.Id, exp); TempData["FuncionarioNotOK"] = "Ocorreu um erro ao tentar atualizar o funcionário"; } finally { _db.Int_DP_Logs.Add(log); _db.SaveChanges(); } return(RedirectToAction("Index")); }
public ActionResult Cadastrar([FromForm] Funcionario func, int exp_periodo) { DeclararViewBags(); ViewBag.Func = new Funcionario(); int id_notnull = HttpContext.Session.GetInt32("ID") ?? 1; DateTime hoje = Globalization.HojeBR(); //Verifica se há um funcionário com o mesmo nome e encarregado cadastrado Funcionario vFuncionario = _db.Int_DP_Funcionarios .Where(a => a.Nome.Equals(func.Nome) && a.Setor.Id == func.Setor.Id && a.Loja.Id == func.Loja.Id && a.Ativo == 1) .FirstOrDefault(); if (vFuncionario == null) { Log log = new Log(); try { func.DataCadastro = Globalization.HoraAtualBR(); func.Setor = _db.Int_DP_Setores.Find(func.Setor.Id); func.Loja = _db.Int_DP_Lojas.Find(func.Loja.Id); int id_user = HttpContext.Session.GetInt32("ID") ?? 0; func.CadastradoPor = _db.Int_DP_Usuarios.Find(id_user); func.Exp_DataFim = func.Exp_DataInicio.AddDays(exp_periodo); if (exp_periodo != 0) { if (func.Exp_DataFim >= hoje && func.Exp_DataInicio <= hoje) { func.Experiencia = 1; } else { func.Experiencia = 0; } } else { func.Experiencia = 0; } _db.Int_DP_Funcionarios.Add(func); _db.SaveChanges(); log.CadastrarFuncionario(id_notnull, func.Id); _db.SaveChanges(); TempData["FuncionarioOK"] = "Funcionário cadastrado com sucesso!"; return(RedirectToAction("Index")); } catch (Exception exp) { ViewBag.Func = func; log.CadastrarFuncionario_Erro(id_notnull, func.Id, exp); _db.SaveChanges(); TempData["FuncionarioNotOK"] = "Ocorreu um erro ao tentar inserir o funcionário!"; return(View()); } } else { if (exp_periodo != 0) { func.Experiencia = 1; } else { func.Experiencia = 0; } ViewBag.Func = func; TempData["FuncionarioNotOK"] = "Já existe um funcionário cadastrado com esse Nome e Setor"; } return(View()); }