using System; using System.Collections.Generic; using System.Web; using MySQL; using System.Data; using System.Web.Configuration; using System.Web.UI.WebControls; namespace Intranet { /// /// Requisições /// public class RH { /// /// Gestão de férias /// public class Ferias { /// /// Listagem de marcações de férias de todos os utilizadores de todos os departamentos a que pertence o utilizador autenticado /// /// Número da página a mostrar /// Id do departameto do colaborador autenticado /// Nível de permissão do colaborador que acede à listagem /// DataTable public static DataTable Listagem(int Pagina, int Departamento, int Permissao) { DataTable dtInfo = new DataTable(); int offset = Convert.ToInt16(WebConfigurationManager.AppSettings["offset"].ToString()); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); if (Permissao <= Intranet.Sistema.Permissoes.Total) { // Permissão total // Vê as marcações de todos sqlInfo.Query = "SELECT f.id, " + " f.createuser, f.createdep, f.createdata, " + " f.edituser, f.editdep, f.editdata, " + " f.activo, " + " DATE_FORMAT(f.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(f.data_fim, '%Y.%m.%d') AS data_fim, " + " f.dias, f.descricao, f.autorizado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura " + "FROM colaborador c, departamento d, rh_ferias f " + "WHERE c.id=f.createuser " + " AND d.id=f.createdep " + "ORDER BY f.data_ini DESC, f.data_fim DESC " + "LIMIT " + (Pagina * offset) + ", " + offset; } else { // Ler / Escrever / Editar // Vê apenas as marcações do departamento sqlInfo.Query = "SELECT f.id, " + " f.createuser, f.createdep, f.createdata, " + " f.edituser, f.editdep, f.editdata, " + " f.activo, " + " DATE_FORMAT(f.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(f.data_fim, '%Y.%m.%d') AS data_fim, " + " f.dias, f.descricao, f.autorizado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura " + "FROM departamento d, colaborador c, sys_colaborador_departamento s, " + " rh_ferias f " + "WHERE s.departamentoid=" + Departamento + " " + " AND c.id=s.colaboradorid " + " AND s.departamentoid=d.id " + " AND c.id=f.createuser " + "ORDER BY f.data_ini DESC, f.data_fim DESC " + "LIMIT " + (Pagina * offset) + ", " + offset; } dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Listagem de marcações de férias para determinado ano. Apenas marcações aprovadas. /// /// Ano da marcação /// Mês da marcação /// DataTable public static DataTable Listagem(int Ano) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT f.id, " + " f.createuser, f.createdep, f.createdata, " + " f.edituser, f.editdep, f.editdata, " + " f.activo, " + " DATE_FORMAT(f.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(f.data_fim, '%Y.%m.%d') AS data_fim, " + " f.dias, f.descricao, f.autorizado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura " + "FROM colaborador c, departamento d, rh_ferias f " + "WHERE c.id=f.createuser " + " AND d.id=f.createdep " + " AND f.activo=1 " + " AND f.autorizado=1 " + " AND DATE_FORMAT(f.data_ini, '%Y')=DATE_FORMAT('" + Ano + ".1.1', '%Y') " + "ORDER BY f.data_ini DESC, f.data_fim DESC"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Listagem de marcações de férias para determinado mês. /// /// Ano da marcação /// Mês da marcação /// DataTable public static DataTable ListagemData(int Ano, int Mes) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT f.id, " + " f.createuser, f.createdep, f.createdata, " + " f.edituser, f.editdep, f.editdata, " + " f.activo, " + " DATE_FORMAT(f.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(f.data_fim, '%Y.%m.%d') AS data_fim, " + " f.dias, f.descricao, f.autorizado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura " + "FROM colaborador c, departamento d, rh_ferias f " + "WHERE c.id=f.createuser " + " AND d.id=f.createdep " + " AND DATE_FORMAT(f.data_ini, '%Y.%m')=DATE_FORMAT('" + Ano + "." + Mes + ".1', '%Y.%m') " + "ORDER BY f.data_ini DESC, f.data_fim DESC"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Listagem de marcações de férias para determinado dia. /// /// Ano da marcação /// Mês da marcação /// Dia da marcação /// DataTable public static DataTable ListagemData(int Ano, int Mes, int Dia) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT f.id, " + " f.createuser, f.createdep, f.createdata, " + " f.edituser, f.editdep, f.editdata, " + " f.activo, " + " DATE_FORMAT(f.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(f.data_fim, '%Y.%m.%d') AS data_fim, " + " f.dias, f.descricao, f.autorizado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura " + "FROM colaborador c, departamento d, rh_ferias f " + "WHERE c.id=f.createuser " + " AND d.id=f.createdep " + " AND DATE_FORMAT(f.data_ini, '%Y.%m.%d')<=DATE_FORMAT('" + Ano + "." + Mes + "." + Dia + "', '%Y.%m.%d') " + " AND DATE_FORMAT(f.data_fim, '%Y.%m.%d')>=DATE_FORMAT('" + Ano + "." + Mes + "." + Dia + "', '%Y.%m.%d') " + "ORDER BY f.data_ini DESC, f.data_fim DESC"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Pesquisa de marcações de férias de todos os utilizadores de todos os departamentos a que pertence o utilizador autenticado /// /// Id do departameto do colaborador autenticado /// Nível de permissão do colaborador que acede à listagem /// DataTable public static DataTable Pesquisa(string Pesquisa, int Departamento, int Permissao) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); if (Permissao <= Intranet.Sistema.Permissoes.Total) { // Permissão total // Vê as marcações de todos sqlInfo.Query = "SELECT f.id, " + " f.createuser, f.createdep, f.createdata, " + " f.edituser, f.editdep, f.editdata, " + " f.activo, " + " DATE_FORMAT(f.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(f.data_fim, '%Y.%m.%d') AS data_fim, " + " f.dias, f.descricao, f.autorizado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, " + " c.*, d.*, f.* " + "FROM colaborador c, departamento d, rh_ferias f " + "WHERE c.id=f.createuser " + " AND d.id=f.createdep " + "ORDER BY f.data_ini DESC, f.data_fim DESC"; } else { // Ler / Escrever / Editar // Vê apenas as marcações do departamento sqlInfo.Query = "SELECT f.id, " + " f.createuser, f.createdep, f.createdata, " + " f.edituser, f.editdep, f.editdata, " + " f.activo, " + " DATE_FORMAT(f.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(f.data_fim, '%Y.%m.%d') AS data_fim, " + " f.dias, f.descricao, f.autorizado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, " + " c.*, d.*, f.*, sys.* " + "FROM departamento d, colaborador c, sys_colaborador_departamento s, " + " rh_ferias f " + "WHERE s.departamentoid=" + Departamento + " " + " AND c.id=s.colaboradorid " + " AND s.departamentoid=d.id " + " AND c.id=f.createuser " + "ORDER BY f.data_ini DESC, f.data_fim DESC"; } dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); /* #1 - CONVERTE A PESQUISA NUM ARRAY EM QUE CADA POSIÇÃO CONTEM UM PARALVRA */ string[] _pesquisa = Pesquisa.Split(new char[] { ' ' }); /* #2 - PESQUISA TODAS AS OCURRÊNCIAS DE _pesquisa EM dtInfo. REMOVE DE dtInfo TODAS AS LINHAS QUE NÃO TENHAM PELO MENOS UMA OCURRÊNCIA */ Intranet.Geral.Pesquisa(ref dtInfo, _pesquisa); return dtInfo; } /// /// Mostra o detalhe de uma requisição /// /// Id do conteúdo a mostrar /// DataTable public static DataTable Detalhes(int Id) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT f.id, " + " f.createuser, f.createdep, f.createdata, " + " f.edituser, f.editdep, f.editdata, " + " f.activo, " + " DATE_FORMAT(f.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(f.data_fim, '%Y.%m.%d') AS data_fim, " + " f.dias, f.descricao, f.autorizado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura " + "FROM rh_ferias f, departamento d, colaborador c, sys_colaborador_departamento s " + "WHERE f.id=" + Id + " " + " AND f.createuser=c.id " + " AND s.colaboradorid=c.id " + " AND s.departamentoid=d.id " + "GROUP BY f.id"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Nova requisição /// /// Data de início /// Data de fim /// Total de dias úteis referentes à marcação /// Descrição do evento /// Autorização de férias (1/0) /// Activo/Inactivo (1/0) /// Id de quem cria o conteúdo /// Departamento de quem cria o conteúdo /// True ou False public static Boolean Gravar(string Inicio, string Fim, decimal Dias, string Descricao, int Autorizado, int Activo, int CreateUser, int CreateDep) { bool gravado = false; sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "INSERT INTO rh_ferias(data_ini, data_fim, dias, descricao, autorizado, activo, createuser, createdep, createdata) " + "VALUES ('" + Inicio + "'," + " '" + Fim + "'," + " '" + Dias.ToString().Replace(",", ".") + "'," + " '" + Descricao + "'," + " " + Autorizado + " ," + " " + Activo + " ," + " " + CreateUser + " ," + " " + CreateDep + " ," + " now())"; gravado = sqlInfo.Write(); sqlInfo.closeConnection(); return gravado; } /// /// Editar requisição /// /// Id do conteúdo a editar /// Data de início /// Data de fim /// Total de dias úteis referentes à marcação /// Descrição do evento /// Autorização de férias (1/0) /// Activo/Inactivo (1/0) /// Id de quem cria o conteúdo /// Departamento de quem cria o conteúdo /// True ou False public static Boolean Editar(int Id, string Inicio, string Fim, decimal Dias, string Descricao, int Autorizado, int Activo, int EditUser, int EditDep) { bool editado = false; sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "UPDATE rh_ferias " + "SET data_ini='" + Inicio + "'," + " data_fim='" + Fim + "'," + " dias='" + Dias.ToString().Replace(",", ".") + "'," + " descricao='" + Descricao + "'," + " autorizado=" + Autorizado + "," + " activo=" + Activo + "," + " edituser=" + EditUser + "," + " editdep=" + EditDep + "," + " editdata=now() " + "WHERE id=" + Id; editado = sqlInfo.Write(); sqlInfo.closeConnection(); return editado; } public class Log { /// /// Listagem de todas as actividades numa determinada marcações de férias /// /// Id da marcação de férias /// DataTable public static DataTable Listagem(int Marcacao) { DataTable dtInfo = new DataTable(); int offset = Convert.ToInt16(WebConfigurationManager.AppSettings["offset"].ToString()); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT l.id, " + " l.createuser, l.createdep, " + " l.edituser, l.editdep, " + " DATE_FORMAT(l.createdata, '%Y.%m.%d %H:%i:%S') AS createdata, " + " DATE_FORMAT(l.editdata, '%Y.%m.%d %H:%i:%S') AS editdata, " + " l.activo, " + " DATE_FORMAT(l.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(l.data_fim, '%Y.%m.%d') AS data_fim, " + " l.dias, l.status, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura " + "FROM rh_ferias_log l, colaborador c " + "WHERE l.marcacaoid=" + Marcacao + " " + " AND l.createuser=c.id " + "ORDER BY l.createdata"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Regista todas as alterações a uma determinada marcação de férias /// /// Id da marcação /// Data de início /// Data de fim /// Dias marcados /// Descrição da actividade /// Activo/Inactivo (1/0) /// Id de quem cria o conteúdo /// Departamento de quem cria o conteúdo public static void Adicionar(int Marcacao, string Inicio, string Fim, decimal Dias, string Descricao, int Activo, int CreateUser, int CreateDep) { sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "INSERT INTO rh_ferias_log(marcacaoid, data_ini, data_fim, dias, status, activo, createuser, createdep, createdata) " + "VALUES ( " + Marcacao + "," + " '" + Inicio + "'," + " '" + Fim + "'," + " '" + Dias.ToString().Replace(",", ".") + "'," + " '" + Descricao + "'," + " " + Activo + " ," + " " + CreateUser + " ," + " " + CreateDep + " ," + " now())"; sqlInfo.Write(); sqlInfo.closeConnection(); } } /// /// Gestão de dias marcados, atribuidos e disponíveis /// public class Dias { public class Atribuidos { /// /// Dias de férias atribuidos a um colaborador /// /// Id do colaborador /// Número de dias atribuidos public static decimal Total(int Colaborador) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); // DIAS ATRIBUIDOS decimal atribuidos = 0; sqlInfo.Query = "SELECT IF(SUM(dias)>=0, SUM(dias), 0) " + "FROM rh_ferias_dias " + "WHERE colaboradorid=" + Colaborador + " " + " AND activo=1"; dtInfo = sqlInfo.Read(); if (dtInfo.Rows.Count > 0) { atribuidos = Convert.ToDecimal(dtInfo.Rows[0].ItemArray[0].ToString()); } sqlInfo.closeConnection(); return atribuidos; } /// /// Listagem dos dias de férias atribuidos a um colaborador agrupados por ano /// /// Id do colaborador /// DataTable public static DataTable Anos(int Colaborador) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT SUM(dias) AS dias, ano " + "FROM rh_ferias_dias " + "WHERE colaboradorid=" + Colaborador + " " + " AND activo=1 " + "GROUP BY ano " + "ORDER BY ano DESC"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } } public class Marcados { /// /// Dias de férias marcados por um colaborador /// /// Id do colaborador /// Número de dias marcados public static decimal Total(int Colaborador) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); // DIAS MARCADOS decimal marcados = 0; sqlInfo.Query = "SELECT IF(SUM(dias)>=0, SUM(dias), 0) " + "FROM rh_ferias " + "WHERE createuser=" + Colaborador + " " + " AND activo=1 " + " AND (autorizado=1 " + " OR (autorizado=0 AND DATE_FORMAT(data_ini, '%Y.%m.%d')>DATE_FORMAT(now(), '%Y.%m.%d')))"; dtInfo = sqlInfo.Read(); if (dtInfo.Rows.Count > 0) { marcados = Convert.ToDecimal(dtInfo.Rows[0].ItemArray[0].ToString()); } sqlInfo.closeConnection(); return marcados; } /// /// Dias de férias marcados por um colaborador num determinado ano /// /// Id do colaborador /// Ano das marcações /// Número de dias marcados public static decimal Anos(int Colaborador, int Ano) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); // DIAS MARCADOS decimal marcados = 0; sqlInfo.Query = "SELECT IF(SUM(dias)>=0, SUM(dias), 0) " + "FROM rh_ferias " + "WHERE createuser=" + Colaborador + " " + " AND DATE_FORMAT(data_ini, '%Y')=" + Ano + " " + " AND activo=1 " + " AND (autorizado=1 " + " OR (autorizado=0 AND DATE_FORMAT(data_ini, '%Y.%m.%d')>DATE_FORMAT(now(), '%Y.%m.%d')))"; dtInfo = sqlInfo.Read(); if (dtInfo.Rows.Count > 0) { marcados = Convert.ToDecimal(dtInfo.Rows[0].ItemArray[0].ToString()); } sqlInfo.closeConnection(); return marcados; } } /// /// Dias de férias ainda disponíveis para marcação /// /// Id do colaborador /// Número de dias disponíveis para marcação public static decimal Disponiveis(int Colaborador) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); // DIAS ATRIBUIDOS decimal atribuidos = 0; sqlInfo.Query = "SELECT IF(SUM(dias)>=0, SUM(dias), 0) " + "FROM rh_ferias_dias " + "WHERE colaboradorid=" + Colaborador + " " + " AND activo=1"; dtInfo = sqlInfo.Read(); if (dtInfo.Rows.Count > 0) { atribuidos = Convert.ToDecimal(dtInfo.Rows[0].ItemArray[0].ToString()); } // HORAS ATRIBUIDAS sqlInfo.Query = "SELECT IF(SUM(horas)>=0, SUM(horas), 0) " + "FROM rh_ferias_horas " + "WHERE colaboradorid=" + Colaborador + " " + " AND activo=1"; dtInfo = sqlInfo.Read(); if (dtInfo.Rows.Count > 0) { atribuidos = atribuidos + Convert.ToDecimal(dtInfo.Rows[0].ItemArray[0].ToString()) / 8; } // DIAS MARCADOS decimal marcados = 0; sqlInfo.Query = "SELECT IF(SUM(dias)>=0, SUM(dias), 0) " + "FROM rh_ferias " + "WHERE createuser=" + Colaborador + " " + " AND activo=1 " + " AND (autorizado=1 " + " OR (autorizado=0 AND DATE_FORMAT(data_ini, '%Y.%m.%d')>DATE_FORMAT(now(), '%Y.%m.%d')))"; dtInfo = sqlInfo.Read(); if (dtInfo.Rows.Count > 0) { marcados = Convert.ToDecimal(dtInfo.Rows[0].ItemArray[0].ToString()); } sqlInfo.closeConnection(); return (atribuidos - marcados); } } } /// /// Gestão de ausências /// public class Ausencias { /// /// Listagem de marcações de ausências de todos os utilizadores de todos os departamentos a que pertence o utilizador autenticado /// /// Número da página a mostrar /// Id do departameto do colaborador autenticado /// Nível de permissão do colaborador que acede à listagem /// DataTable public static DataTable Listagem(int Pagina, int Departamento, int Permissao) { DataTable dtInfo = new DataTable(); int offset = Convert.ToInt16(WebConfigurationManager.AppSettings["offset"].ToString()); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); if (Permissao <= Intranet.Sistema.Permissoes.Total) { // Permissão total // Vê as marcações de todos sqlInfo.Query = "SELECT a.id, " + " a.createuser, a.createdep, a.createdata, " + " a.edituser, a.editdep, a.editdata, " + " a.activo, " + " DATE_FORMAT(a.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(a.data_fim, '%Y.%m.%d') AS data_fim, " + " a.dias, a.codigo, a.descricao, a.autorizado, a.justificado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura " + "FROM colaborador c, departamento d, rh_ausencias a " + "WHERE c.id=a.createuser " + " AND d.id=a.createdep " + "ORDER BY a.data_ini DESC, a.data_fim DESC " + "LIMIT " + (Pagina * offset) + ", " + offset; } else { // Ler / Escrever / Editar // Vê apenas as marcações do departamento sqlInfo.Query = "SELECT a.id, " + " a.createuser, a.createdep, a.createdata, " + " a.edituser, a.editdep, a.editdata, " + " a.activo, " + " DATE_FORMAT(a.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(a.data_fim, '%Y.%m.%d') AS data_fim, " + " a.dias, a.codigo, a.descricao, a.autorizado, a.justificado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura " + "FROM departamento d, colaborador c, sys_colaborador_departamento s, " + " rh_ausencias a " + "WHERE s.departamentoid=" + Departamento + " " + " AND c.id=s.colaboradorid " + " AND s.departamentoid=d.id " + " AND c.id=a.createuser " + "ORDER BY a.data_ini DESC, a.data_fim DESC " + "LIMIT " + (Pagina * offset) + ", " + offset; } dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Listagem de marcações de ausências para determinado ano. Apenas marcações aprovadas. /// /// Ano da marcação /// Mês da marcação /// DataTable public static DataTable Listagem(int Ano) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT a.id, " + " a.createuser, a.createdep, a.createdata, " + " a.edituser, a.editdep, a.editdata, " + " a.activo, " + " DATE_FORMAT(a.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(a.data_fim, '%Y.%m.%d') AS data_fim, " + " a.dias, a.codigo, a.descricao, a.autorizado, a.justificado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura " + "FROM colaborador c, departamento d, rh_ausencias a " + "WHERE c.id=a.createuser " + " AND d.id=a.createdep " + " AND a.activo=1 " + " AND a.autorizado=1 " + " AND DATE_FORMAT(a.data_ini, '%Y')=DATE_FORMAT('" + Ano + ".1.1', '%Y') " + "ORDER BY a.data_ini DESC, a.data_fim DESC"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Listagem de marcações de ausências para determinado mês. /// /// Ano da marcação /// Mês da marcação /// DataTable public static DataTable ListagemData(int Ano, int Mes) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT a.id, " + " a.createuser, a.createdep, a.createdata, " + " a.edituser, a.editdep, a.editdata, " + " a.activo, " + " DATE_FORMAT(a.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(a.data_fim, '%Y.%m.%d') AS data_fim, " + " a.dias, a.codigo, a.descricao, a.autorizado, a.justificado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura " + "FROM colaborador c, departamento d, rh_ausencias a " + "WHERE c.id=a.createuser " + " AND d.id=a.createdep " + " AND DATE_FORMAT(a.data_ini, '%Y.%m')=DATE_FORMAT('" + Ano + "." + Mes + ".1', '%Y.%m') " + "ORDER BY a.data_ini DESC, a.data_fim DESC"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Listagem de marcações de ausências para determinado dia. /// /// Ano da marcação /// Mês da marcação /// Dia da marcação /// DataTable public static DataTable ListagemData(int Ano, int Mes, int Dia) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT a.id, " + " a.createuser, a.createdep, a.createdata, " + " a.edituser, a.editdep, a.editdata, " + " a.activo, " + " DATE_FORMAT(a.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(a.data_fim, '%Y.%m.%d') AS data_fim, " + " a.dias, a.codigo, a.descricao, a.autorizado, a.justificado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura " + "FROM colaborador c, departamento d, rh_ausencias a " + "WHERE c.id=a.createuser " + " AND d.id=a.createdep " + " AND DATE_FORMAT(a.data_ini, '%Y.%m.%d')<=DATE_FORMAT('" + Ano + "." + Mes + "." + Dia + "', '%Y.%m.%d') " + " AND DATE_FORMAT(a.data_fim, '%Y.%m.%d')>=DATE_FORMAT('" + Ano + "." + Mes + "." + Dia + "', '%Y.%m.%d') " + "ORDER BY a.data_ini DESC, a.data_fim DESC"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Pesqusa de marcações de ausências de todos os utilizadores de todos os departamentos a que pertence o utilizador autenticado /// /// Id do departameto do colaborador autenticado /// Nível de permissão do colaborador que acede à listagem /// DataTable public static DataTable Pesquisa(string Pesquisa, int Departamento, int Permissao) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); if (Permissao <= Intranet.Sistema.Permissoes.Total) { // Permissão total // Vê as marcações de todos sqlInfo.Query = "SELECT a.id, " + " a.createuser, a.createdep, a.createdata, " + " a.edituser, a.editdep, a.editdata, " + " a.activo, " + " DATE_FORMAT(a.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(a.data_fim, '%Y.%m.%d') AS data_fim, " + " a.dias, a.codigo, a.descricao, a.autorizado, a.justificado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, " + " c.*, d.*, a.* " + "FROM colaborador c, departamento d, rh_ausencias a " + "WHERE c.id=a.createuser " + " AND d.id=a.createdep " + "ORDER BY a.data_ini DESC, a.data_fim DESC"; } else { // Ler / Escrever / Editar // Vê apenas as marcações do departamento sqlInfo.Query = "SELECT a.id, " + " a.createuser, a.createdep, a.createdata, " + " a.edituser, a.editdep, a.editdata, " + " a.activo, " + " DATE_FORMAT(a.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(a.data_fim, '%Y.%m.%d') AS data_fim, " + " a.dias, a.codigo, a.descricao, a.autorizado, a.justificado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, " + " c.*, d.*, a.*, sys.* " + "FROM departamento d, colaborador c, sys_colaborador_departamento s, " + " rh_ausencias a " + "WHERE s.departamentoid=" + Departamento + " " + " AND c.id=s.colaboradorid " + " AND s.departamentoid=d.id " + " AND c.id=a.createuser " + "ORDER BY a.data_ini DESC, a.data_fim DESC"; } dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); /* #1 - CONVERTE A PESQUISA NUM ARRAY EM QUE CADA POSIÇÃO CONTEM UM PARALVRA */ string[] _pesquisa = Pesquisa.Split(new char[] { ' ' }); /* #2 - PESQUISA TODAS AS OCURRÊNCIAS DE _pesquisa EM dtInfo. REMOVE DE dtInfo TODAS AS LINHAS QUE NÃO TENHAM PELO MENOS UMA OCURRÊNCIA */ Intranet.Geral.Pesquisa(ref dtInfo, _pesquisa); return dtInfo; } /// /// Mostra o detalhe de uma requisição /// /// Id do conteúdo a mostrar /// DataTable public static DataTable Detalhes(int Id) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT a.id, " + " a.createuser, a.createdep, a.createdata, " + " a.edituser, a.editdep, a.editdata, " + " a.activo, " + " DATE_FORMAT(a.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(a.data_fim, '%Y.%m.%d') AS data_fim, " + " a.dias, a.codigo, a.descricao, a.autorizado, a.justificado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura " + "FROM rh_ausencias a, departamento d, colaborador c, sys_colaborador_departamento s " + "WHERE a.id=" + Id + " " + " AND a.createuser=c.id " + " AND s.colaboradorid=c.id " + " AND s.departamentoid=d.id " + "GROUP BY a.id"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Nova requisição /// /// Data de início /// Data de fim /// Total de dias úteis referentes à marcação /// Código de ausência /// Descrição do evento /// Autorização de ausências (1/0) /// Justificação da ausência (1/0) /// Activo/Inactivo (1/0) /// Id de quem cria o conteúdo /// Departamento de quem cria o conteúdo /// True ou False public static Boolean Gravar(string Inicio, string Fim, decimal Dias, string Codigo, string Descricao, int Autorizado, int Justificado, int Activo, int CreateUser, int CreateDep) { bool gravado = false; sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "INSERT INTO rh_ausencias(data_ini, data_fim, dias, codigo, descricao, autorizado, justificado, activo, createuser, createdep, createdata) " + "VALUES ('" + Inicio + "'," + " '" + Fim + "'," + " '" + Dias.ToString().Replace(",", ".") + "'," + " '" + Codigo + "'," + " '" + Descricao + "'," + " " + Autorizado + " ," + " " + Justificado + " ," + " " + Activo + " ," + " " + CreateUser + " ," + " " + CreateDep + " ," + " now())"; gravado = sqlInfo.Write(); sqlInfo.closeConnection(); return gravado; } /// /// Editar requisição /// /// Id do conteúdo a editar /// Data de início /// Data de fim /// Total de dias úteis referentes à marcação /// Código de ausência /// Descrição do evento /// Autorização de ausências (1/0) /// Justificação da ausência (1/0) /// Activo/Inactivo (1/0) /// Id de quem cria o conteúdo /// Departamento de quem cria o conteúdo /// True ou False public static Boolean Editar(int Id, string Inicio, string Fim, decimal Dias, string Codigo, string Descricao, int Autorizado, int Justificado, int Activo, int EditUser, int EditDep) { bool editado = false; sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "UPDATE rh_ausencias " + "SET data_ini='" + Inicio + "'," + " data_fim='" + Fim + "'," + " dias='" + Dias.ToString().Replace(",", ".") + "'," + " codigo='" + Codigo + "'," + " descricao='" + Descricao + "'," + " autorizado=" + Autorizado + "," + " justificado=" + Justificado + "," + " activo=" + Activo + "," + " edituser=" + EditUser + "," + " editdep=" + EditDep + "," + " editdata=now() " + "WHERE id=" + Id; editado = sqlInfo.Write(); sqlInfo.closeConnection(); return editado; } public class Log { /// /// Listagem de todas as actividades numa determinada marcações de ausências /// /// Id da marcação de ausências /// DataTable public static DataTable Listagem(int Marcacao) { DataTable dtInfo = new DataTable(); int offset = Convert.ToInt16(WebConfigurationManager.AppSettings["offset"].ToString()); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT l.id, " + " l.createuser, l.createdep, " + " l.edituser, l.editdep, " + " DATE_FORMAT(l.createdata, '%Y.%m.%d %H:%i:%S') AS createdata, " + " DATE_FORMAT(l.editdata, '%Y.%m.%d %H:%i:%S') AS editdata, " + " l.activo, " + " DATE_FORMAT(l.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(l.data_fim, '%Y.%m.%d') AS data_fim, " + " l.dias, l.codigo, l.status, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura " + "FROM rh_ausencias_log l, colaborador c " + "WHERE l.marcacaoid=" + Marcacao + " " + " AND l.createuser=c.id " + "ORDER BY l.createdata"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Regista todas as alterações a uma determinada marcação de ausências /// /// Id da marcação /// Data de início /// Data de fim /// Dias marcados /// Código de ausência /// Descrição da actividade /// Activo/Inactivo (1/0) /// Id de quem cria o conteúdo /// Departamento de quem cria o conteúdo public static void Adicionar(int Marcacao, string Inicio, string Fim, decimal Dias, string Codigo, string Descricao, int Activo, int CreateUser, int CreateDep) { sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "INSERT INTO rh_ausencias_log(marcacaoid, data_ini, data_fim, dias, codigo, status, activo, createuser, createdep, createdata) " + "VALUES ( " + Marcacao + "," + " '" + Inicio + "'," + " '" + Fim + "'," + " '" + Dias.ToString().Replace(",", ".") + "'," + " '" + Codigo + "'," + " '" + Descricao + "'," + " " + Activo + " ," + " " + CreateUser + " ," + " " + CreateDep + " ," + " now())"; sqlInfo.Write(); sqlInfo.closeConnection(); } } /// /// Gestão de dias marcados, atribuidos e disponíveis /// public class Dias { public class Marcados { /// /// Dias de ausências marcados por um colaborador /// /// Id do colaborador /// Número de dias marcados public static decimal Total(int Colaborador) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); // DIAS MARCADOS decimal marcados = 0; sqlInfo.Query = "SELECT IF(SUM(dias)>=0, SUM(dias), 0) " + "FROM rh_ausencias " + "WHERE createuser=" + Colaborador + " " + " AND activo=1 " + " AND (autorizado=1 " + " OR (autorizado=0 AND DATE_FORMAT(data_ini, '%Y.%m.%d')>DATE_FORMAT(now(), '%Y.%m.%d')))"; dtInfo = sqlInfo.Read(); if (dtInfo.Rows.Count > 0) { marcados = Convert.ToDecimal(dtInfo.Rows[0].ItemArray[0].ToString()); } sqlInfo.closeConnection(); return marcados; } /// /// Dias de ausências marcados por um colaborador agrupado por anos /// /// Id do colaborador /// DataTable public static DataTable Anos(int Colaborador) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); // DIAS MARCADOS sqlInfo.Query = "SELECT IF(SUM(dias)>=0, SUM(dias), 0) AS dias, DATE_FORMAT(data_ini, '%Y') AS ano " + "FROM rh_ausencias " + "WHERE createuser=" + Colaborador + " " + " AND activo=1 " + " AND (autorizado=1 " + " OR (autorizado=0 AND DATE_FORMAT(data_ini, '%Y.%m.%d')>DATE_FORMAT(now(), '%Y.%m.%d'))) " + "GROUP BY ano " + "ORDER BY ano DESC"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Dias de ausências marcados por um colaborador num determinado ano /// /// Id do colaborador /// Ano das marcações /// Número de dias marcados public static decimal Anos(int Colaborador, int Ano) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); // DIAS MARCADOS decimal marcados = 0; sqlInfo.Query = "SELECT IF(SUM(dias)>=0, SUM(dias), 0) " + "FROM rh_ausencias " + "WHERE createuser=" + Colaborador + " " + " AND DATE_FORMAT(data_ini, '%Y')=" + Ano + " " + " AND activo=1 " + " AND (autorizado=1 " + " OR (autorizado=0 AND DATE_FORMAT(data_ini, '%Y.%m.%d')>DATE_FORMAT(now(), '%Y.%m.%d')))"; dtInfo = sqlInfo.Read(); if (dtInfo.Rows.Count > 0) { marcados = Convert.ToDecimal(dtInfo.Rows[0].ItemArray[0].ToString()); } sqlInfo.closeConnection(); return marcados; } } public class Justificados { /// /// Dias de ausências justificados por um colaborador num determinado ano /// /// Id do colaborador /// Ano das marcações /// Número de dias marcados public static decimal Anos(int Colaborador, int Ano) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); // DIAS MARCADOS decimal marcados = 0; sqlInfo.Query = "SELECT IF(SUM(dias)>=0, SUM(dias), 0) " + "FROM rh_ausencias " + "WHERE createuser=" + Colaborador + " " + " AND DATE_FORMAT(data_ini, '%Y')=" + Ano + " " + " AND activo=1 " + " AND justificado=1 " + " AND (autorizado=1 " + " OR (autorizado=0 AND DATE_FORMAT(data_ini, '%Y.%m.%d')>DATE_FORMAT(now(), '%Y.%m.%d')))"; dtInfo = sqlInfo.Read(); if (dtInfo.Rows.Count > 0) { marcados = Convert.ToDecimal(dtInfo.Rows[0].ItemArray[0].ToString()); } sqlInfo.closeConnection(); return marcados; } } } } /// /// Gestão de ambas as "ausências" /// public class FeriasAusencias { /// /// Listagem de marcações de férias e ausências para determinado ano. Apenas marcações aprovadas. /// /// Ano da marcação /// DataTable public static DataTable Listagem(int Ano) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT f.id, " + " f.createuser, f.createdep, f.createdata, " + " f.edituser, f.editdep, f.editdata, " + " f.activo, " + " 'Férias' AS tipo, " + " DATE_FORMAT(f.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(f.data_fim, '%Y.%m.%d') AS data_fim, " + " f.dias, '' AS codigo, f.descricao, f.autorizado, '' AS justificado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura " + "FROM colaborador c, departamento d, rh_ferias f " + "WHERE c.id=f.createuser " + " AND d.id=f.createdep " + " AND f.activo=1 " + " AND f.autorizado=1 " + " AND DATE_FORMAT(f.data_ini, '%Y')=DATE_FORMAT('" + Ano + ".1.1', '%Y') " + "UNION " + "SELECT a.id, " + " a.createuser, a.createdep, a.createdata, " + " a.edituser, a.editdep, a.editdata, " + " a.activo, " + " 'Ausência' AS tipo, " + " DATE_FORMAT(a.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(a.data_fim, '%Y.%m.%d') AS data_fim, " + " a.dias, a.codigo AS codigo, a.descricao, a.autorizado, a.justificado AS justificado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura " + "FROM colaborador c, departamento d, rh_ausencias a " + "WHERE c.id=a.createuser " + " AND d.id=a.createdep " + " AND a.activo=1 " + " AND a.autorizado=1 " + " AND DATE_FORMAT(a.data_ini, '%Y')=DATE_FORMAT('" + Ano + ".1.1', '%Y') " + "ORDER BY data_ini, data_fim"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Listagem de marcações de férias e ausências para determinado ano. Apenas marcações aprovadas. /// /// Ano da marcação /// ID docolaborador que se pretende listar /// DataTable public static DataTable Listagem(int Ano, int Colaborador) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT f.id, " + " f.createuser, f.createdep, f.createdata, " + " f.edituser, f.editdep, f.editdata, " + " f.activo, " + " 'Férias' AS tipo, " + " DATE_FORMAT(f.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(f.data_fim, '%Y.%m.%d') AS data_fim, " + " f.dias, '' AS codigo, f.descricao, f.autorizado, '' AS justificado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura " + "FROM colaborador c, departamento d, rh_ferias f " + "WHERE c.id=f.createuser " + " AND d.id=f.createdep " + " AND c.id=" + Colaborador + " " + " AND f.activo=1 " + " AND f.autorizado=1 " + " AND DATE_FORMAT(f.data_ini, '%Y')=DATE_FORMAT('" + Ano + ".1.1', '%Y') " + "UNION " + "SELECT a.id, " + " a.createuser, a.createdep, a.createdata, " + " a.edituser, a.editdep, a.editdata, " + " a.activo, " + " 'Ausência' AS tipo, " + " DATE_FORMAT(a.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(a.data_fim, '%Y.%m.%d') AS data_fim, " + " a.dias, a.codigo AS codigo, a.descricao, a.autorizado, a.justificado AS justificado, " + " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, " + " d.nome AS departamento, d.abreviatura AS departamento_abreviatura " + "FROM colaborador c, departamento d, rh_ausencias a " + "WHERE c.id=a.createuser " + " AND d.id=a.createdep " + " AND c.id=" + Colaborador + " " + " AND a.activo=1 " + " AND a.autorizado=1 " + " AND DATE_FORMAT(a.data_ini, '%Y')=DATE_FORMAT('" + Ano + ".1.1', '%Y') " + "ORDER BY data_ini, data_fim"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } } } }