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 Requisicoes
{
///
/// Requisição de viaturas
///
public class Viaturas
{
///
/// Listagem de requisições ainda activas e/ou com KM's por preencher
///
/// Número da página a mostrar
/// DataTable
public static DataTable Listagem(int Pagina)
{
DataTable dtInfo = new DataTable();
int offset = Convert.ToInt16(WebConfigurationManager.AppSettings["offset"].ToString());
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT rv.id, "
+ " rv.createuser, rv.createdep, rv.createdata, "
+ " rv.edituser, rv.editdep, rv.editdata, "
+ " rv.activo, "
+ " DATE_FORMAT(rv.data_ini, '%Y.%m.%d') AS data, "
+ " DATE_FORMAT(rv.data_ini, '%H:%i') AS hora_ini, "
+ " DATE_FORMAT(rv.data_fim, '%H:%i') AS hora_fim, "
+ " rv.destino, rv.descricao, "
+ " v.marca, v.modelo, v.matricula, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, "
+ " IF(((TO_DAYS(rv.data_ini)-TO_DAYS(rv.createdata)) * 24 * 60 * 60) + (TIME_TO_SEC(rv.data_ini) - TIME_TO_SEC(rv.createdata))>86400, '', 'Vermelho') AS CssClass "
+ "FROM requisicao_viatura rv LEFT OUTER JOIN viatura v ON rv.viaturaid=v.id, "
+ " colaborador c, departamento d "
+ "WHERE c.id=rv.createuser "
+ " AND d.id=rv.createdep "
+ " AND (DATE_FORMAT(rv.data_fim, '%Y.%m.%d %H:%i')>DATE_FORMAT(now(), '%Y.%m.%d %H:%i') "
+ " OR (rv.km_ini=0 "
+ " AND rv.km_fim=0)) "
+ "ORDER BY rv.data_ini DESC, rv.data_fim DESC, rv.destino "
+ "LIMIT " + (Pagina * offset) + ", " + offset;
//AND rv.activo=1
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Retorna todas as requisições num determinado mês.
///
/// Ano da actividade
/// Mês da actividade
///
/// Retorna todas as requisições num detarminado mês.
///
public static DataTable Listagem(int Ano, int Mes)
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT rv.id, "
+ " rv.createuser, rv.createdep, rv.createdata, "
+ " rv.edituser, rv.editdep, rv.editdata, "
+ " rv.activo, "
+ " DATE_FORMAT(rv.data_ini, '%Y.%m.%d') AS data, "
+ " DATE_FORMAT(rv.data_ini, '%H:%i') AS hora_ini, "
+ " DATE_FORMAT(rv.data_fim, '%H:%i') AS hora_fim, "
+ " rv.destino, rv.descricao, "
+ " v.marca, v.modelo, v.matricula, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, "
+ " IF(((TO_DAYS(rv.data_ini)-TO_DAYS(rv.createdata)) * 24 * 60 * 60) + (TIME_TO_SEC(rv.data_ini) - TIME_TO_SEC(rv.createdata))>86400, '', 'Vermelho') AS CssClass "
+ "FROM requisicao_viatura rv LEFT OUTER JOIN viatura v ON rv.viaturaid=v.id, "
+ " colaborador c, departamento d "
+ "WHERE c.id=rv.createuser "
+ " AND d.id=rv.createdep "
+ " AND DATE_FORMAT(rv.data_ini, '%Y.%m')=DATE_FORMAT('" + Ano + "." + Mes + ".1', '%Y.%m') "
+ " AND rv.activo=1 "
+ "ORDER BY rv.data_ini, rv.data_fim, rv.destino";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Retorna todas as requisições num detarminado dia.
///
/// Ano da actividade
/// Mês da actividade
/// Dia da actividade
///
/// Retorna todas as requisições num detarminado dia.
///
public static DataTable Listagem(int Ano, int Mes, int Dia)
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT rv.id, "
+ " rv.createuser, rv.createdep, rv.createdata, "
+ " rv.edituser, rv.editdep, rv.editdata, "
+ " rv.activo, "
+ " DATE_FORMAT(rv.data_ini, '%Y.%m.%d') AS data, "
+ " DATE_FORMAT(rv.data_ini, '%H:%i') AS hora_ini, "
+ " DATE_FORMAT(rv.data_fim, '%H:%i') AS hora_fim, "
+ " rv.destino, rv.descricao, "
+ " v.marca, v.modelo, v.matricula, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, "
+ " IF(((TO_DAYS(rv.data_ini)-TO_DAYS(rv.createdata)) * 24 * 60 * 60) + (TIME_TO_SEC(rv.data_ini) - TIME_TO_SEC(rv.createdata))>86400, '', 'Vermelho') AS CssClass "
+ "FROM requisicao_viatura rv LEFT OUTER JOIN viatura v ON rv.viaturaid=v.id, "
+ " colaborador c, departamento d "
+ "WHERE c.id=rv.createuser "
+ " AND d.id=rv.createdep "
+ " AND DATE_FORMAT(rv.data_ini, '%Y.%c.%e')=DATE_FORMAT('" + Ano + "." + Mes + "." + Dia + "', '%Y.%c.%e') "
+ " AND rv.activo=1 "
+ "ORDER BY rv.data_ini, rv.data_fim, rv.destino";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Pesquisa de requisições ainda activas e/ou com KM's por preencher
///
/// DataTable
public static DataTable Pesquisa(string Pesquisa)
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT rv.id, "
+ " rv.createuser, rv.createdep, rv.createdata, "
+ " rv.edituser, rv.editdep, rv.editdata, "
+ " rv.activo, "
+ " DATE_FORMAT(rv.data_ini, '%Y.%m.%d') AS data, "
+ " DATE_FORMAT(rv.data_ini, '%H:%i') AS hora_ini, "
+ " DATE_FORMAT(rv.data_fim, '%H:%i') AS hora_fim, "
+ " rv.destino, rv.descricao, "
+ " v.marca, v.modelo, v.matricula, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, "
+ " IF(((TO_DAYS(rv.data_ini)-TO_DAYS(rv.createdata)) * 24 * 60 * 60) + (TIME_TO_SEC(rv.data_ini) - TIME_TO_SEC(rv.createdata))>86400, '', 'Vermelho') AS CssClass, "
+ " c.*, d.*, v.*, rv.* "
+ "FROM requisicao_viatura rv LEFT OUTER JOIN viatura v ON rv.viaturaid=v.id, "
+ " colaborador c, departamento d "
+ "WHERE c.id=rv.createuser "
+ " AND d.id=rv.createdep "
+ " AND (DATE_FORMAT(rv.data_fim, '%Y.%m.%d %H:%i')>DATE_FORMAT(now(), '%Y.%m.%d %H:%i') "
+ " OR (rv.km_ini=0 "
+ " AND rv.km_fim=0 "
+ " AND rv.activo=1)) "
+ "ORDER BY rv.data_ini, rv.data_fim, rv.destino";
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 rv.id, "
+ " rv.createuser, rv.createdep, rv.createdata, "
+ " rv.edituser, rv.editdep, rv.editdata, "
+ " rv.activo, "
+ " DATE_FORMAT(rv.data_ini, '%Y.%m.%d %H:%i') AS data_ini, "
+ " DATE_FORMAT(rv.data_fim, '%Y.%m.%d %H:%i') AS data_fim, "
+ " rv.destino, rv.descricao, "
+ " v.id AS viaturaid, v.marca, v.modelo, v.matricula, "
+ " rv.km_ini, rv.km_fim, rv.litros, rv.anomalias, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura "
+ "FROM requisicao_viatura rv LEFT OUTER JOIN viatura v ON rv.viaturaid=v.id, "
+ " colaborador c, departamento d "
+ "WHERE rv.id=" + Id + " "
+ " AND c.id=rv.createuser "
+ " AND d.id=rv.createdep";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Nova requisição
///
/// Destino da requisição
/// Data e hora de início
/// Data e hora de fim
/// Descrição do evento
/// 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 Destino, string Inicio, string Fim, string Descricao, int Activo, int CreateUser, int CreateDep)
{
bool gravado = false;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "INSERT INTO requisicao_viatura(destino, data_ini, data_fim, descricao, activo, createuser, createdep, createdata) "
+ "VALUES ('" + Destino + "',"
+ " '" + Inicio + "',"
+ " '" + Fim + "',"
+ " '" + Descricao + "',"
+ " " + Activo + " ,"
+ " " + CreateUser + " ,"
+ " " + CreateDep + " ,"
+ " now())";
gravado = sqlInfo.Write();
sqlInfo.closeConnection();
return gravado;
}
///
/// Editar requisição
///
/// Id do conteúdo a editar
/// Destino da requisição
/// Data e hora de início
/// Data e hora de fim
/// Descrição do evento
/// 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 Destino, string Inicio, string Fim, string Descricao, int Activo, int EditUser, int EditDep)
{
bool editado = false;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "UPDATE requisicao_viatura "
+ "SET viaturaid=0,"
+ " destino='" + Destino + "',"
+ " data_ini='" + Inicio + "',"
+ " data_fim='" + Fim + "',"
+ " descricao='" + Descricao + "',"
+ " activo=" + Activo + ","
+ " edituser=" + EditUser + ","
+ " editdep=" + EditDep + ","
+ " editdata=now() "
+ "WHERE id=" + Id;
editado = sqlInfo.Write();
sqlInfo.closeConnection();
return editado;
}
///
/// Atribui viatura a uma requisição
///
/// Id da requisição
/// Id da viatura
/// Id de quem cria o conteúdo
/// Departamento de quem cria o conteúdo
/// True ou False
public static Boolean Atribuir(int Requisicao, int Viatura, int EditUser, int EditDep)
{
bool editado = false;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "UPDATE requisicao_viatura "
+ "SET viaturaid=" + Viatura + ","
+ " edituser=" + EditUser + ","
+ " editdep=" + EditDep + ","
+ " editdata=now() "
+ "WHERE id=" + Requisicao;
editado = sqlInfo.Write();
sqlInfo.closeConnection();
return editado;
}
///
/// Adiciona os Km's à requisição (km's, litros e anomalias).
///
/// Id da requisição
/// Id da viatura (para verificação dos KM's da última requisição)
/// KM's à saída
/// KM's à chegada
/// Quantidade de listros no abastecimento
/// Anomalidas detectadas
/// Id de quem cria o conteúdo
/// Departamento de quem cria o conteúdo
/// True ou False
public static int KM(int Requisicao, int Viatura, int KM_Ini, int KM_Fim, decimal Litros, string Anomalias, int EditUser, int EditDep)
{
/* STATUS
* 0: Inserção OK
* 1: ERRO - KM's à saída inferiores aos KM's à chegada da última requisição
* 2: ERRO - Erro de inserção
*/
int editado = 0;
int km = 0;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
/* VERIFICAR SE OS KM's À SAÍDA SÃO SUPERIORES AOS KM's À CHEGADA DA ÚLTIMA REQUISIÇÃO */
DataTable dtDetalhes = Requisicoes.Viaturas.Detalhes(Requisicao);
sqlInfo.Query = "SELECT MAX(vr.km_fim) AS km_fim "
+ "FROM requisicao_viatura vr LEFT OUTER JOIN requisicao_viatura v ON v.id=vr.id "
+ "WHERE vr.viaturaid=" + Viatura + " "
+ " AND vr.data_ini<'" + dtDetalhes.Rows[0].ItemArray[8].ToString() + " " + dtDetalhes.Rows[0].ItemArray[9].ToString() + "'";
dtDetalhes = sqlInfo.Read();
if (dtDetalhes.Rows[0].ItemArray[0].ToString() != "") { km = Convert.ToInt16(dtDetalhes.Rows[0].ItemArray[0].ToString()); }
if (km > KM_Ini)
{
// KM's À SAÍDA SÃO INFERIORES AOS KM's À CHEGADA DA ÚLTIMA REQUISIÇÃO
editado = 1;
}
else
{
// ADICIONAR KM's À REQUISIÇÃO
sqlInfo.Query = "UPDATE requisicao_viatura "
+ "SET km_ini=" + KM_Ini + ","
+ " km_fim=" + KM_Fim + ","
+ " litros='" + Litros.ToString().Replace(",", ".") + "',"
+ " anomalias='" + Anomalias + "',"
+ " edituser=" + EditUser + ","
+ " editdep=" + EditDep + ","
+ " editdata=now() "
+ "WHERE id=" + Requisicao;
if (!sqlInfo.Write())
{
editado = 2;
}
sqlInfo.closeConnection();
}
return editado;
}
///
/// Listagem de todas as viaturas activas
///
/// DataTable
public static DataTable Activas()
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT * "
+ "FROM viatura "
+ "WHERE activo=1 "
+ "ORDER BY marca, modelo, matricula";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
}
///
/// Requisição de economato
///
public class Economato
{
public class Listagem
{
///
/// Listagem de requisições de economato
///
/// Número da página a mostrar
/// DataTable
public static DataTable Requisicao(int Pagina)
{
DataTable dtInfo = new DataTable();
int offset = Convert.ToInt16(WebConfigurationManager.AppSettings["offset"].ToString());
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT re.id, "
+ " re.createuser, re.createdep, re.createdata, "
+ " re.edituser, re.editdep, re.editdata, "
+ " re.activo, "
+ " DATE_FORMAT(re.createdata, '%Y.%m.%d') AS data, "
+ " re.numero, re.descricao, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura "
+ "FROM requisicao_economato re, "
+ " colaborador c, departamento d "
+ "WHERE c.id=re.createuser "
+ " AND d.id=re.createdep "
+ "ORDER BY re.createdata DESC "
+ "LIMIT " + (Pagina * offset) + ", " + offset;
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Retorna todas as requisições num determinado mês.
///
/// Ano da actividade
/// Mês da actividade
///
/// Retorna todas as requisições num detarminado mês.
///
public static DataTable Requisicao(int Ano, int Mes)
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT re.id, "
+ " re.createuser, re.createdep, re.createdata, "
+ " re.edituser, re.editdep, re.editdata, "
+ " re.activo, "
+ " DATE_FORMAT(re.createdata, '%Y.%m.%d') AS data, "
+ " re.numero, re.descricao, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura "
+ "FROM requisicao_economato re, "
+ " colaborador c, departamento d "
+ "WHERE c.id=re.createuser "
+ " AND d.id=re.createdep "
+ " AND DATE_FORMAT(re.createdata, '%Y.%m')=DATE_FORMAT('" + Ano + "." + Mes + ".1', '%Y.%m') "
+ "ORDER BY re.createdata DESC";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Retorna todas as requisições num detarminado dia.
///
/// Ano da actividade
/// Mês da actividade
/// Dia da actividade
///
/// Retorna todas as requisições num detarminado dia.
///
public static DataTable Requisicao(int Ano, int Mes, int Dia)
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT re.id, "
+ " re.createuser, re.createdep, re.createdata, "
+ " re.edituser, re.editdep, re.editdata, "
+ " re.activo, "
+ " DATE_FORMAT(re.createdata, '%Y.%m.%d') AS data, "
+ " re.numero, re.descricao, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura "
+ "FROM requisicao_economato re, "
+ " colaborador c, departamento d "
+ "WHERE c.id=re.createuser "
+ " AND d.id=re.createdep "
+ " AND DATE_FORMAT(re.data_ini, '%Y.%c.%e')=DATE_FORMAT('" + Ano + "." + Mes + "." + Dia + "', '%Y.%c.%e') "
+ "ORDER BY re.createdata DESC";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Material existênte para requisição
///
/// DataTable
public static DataTable Material()
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT * "
+ "FROM economato "
+ "WHERE activo=1 "
+ "ORDER BY categoria, nome";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Material de uma determinada requisição de economato
///
/// ID da requisição de economato
/// DataTable
public static DataTable Material(int Requisicao)
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT m.id, "
+ " m.requisicaoid, "
+ " e.categoria, m.materialid, m.material, "
+ " m.quantidade, "
+ " m.activo "
+ "FROM requisicao_economato_material m LEFT OUTER JOIN economato e ON m.materialid=e.id "
+ "WHERE m.requisicaoid=" + Requisicao + " "
+ "ORDER BY e.categoria, m.material, m.quantidade";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
}
public class Pesquisa
{
///
/// Pesquisa de requisições de economato
///
/// DataTable
public static DataTable Requisicao(string Pesquisa)
{
DataTable dtInfo = new DataTable();
int offset = Convert.ToInt16(WebConfigurationManager.AppSettings["offset"].ToString());
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT re.id, "
+ " re.createuser, re.createdep, re.createdata, "
+ " re.edituser, re.editdep, re.editdata, "
+ " re.activo, "
+ " DATE_FORMAT(re.createdata, '%Y.%m.%d') AS data, "
+ " re.numero, re.descricao, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, "
+ " c.*, d.*, re.*, rem.* "
+ "FROM colaborador c, departamento d, "
+ " requisicao_economato re LEFT OUTER JOIN requisicao_economato_material rem ON rem.requisicaoid=re.id "
+ "WHERE c.id=re.createuser "
+ " AND d.id=re.createdep "
+ "ORDER BY re.createdata 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;
}
}
public class Detalhes
{
///
/// Mostra o detalhe de uma requisição
///
/// Id do conteúdo a mostrar
/// DataTable
public static DataTable Requisicao(int Id)
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT re.id, "
+ " re.createuser, re.createdep, re.createdata, "
+ " re.edituser, re.editdep, re.editdata, "
+ " re.activo, "
+ " DATE_FORMAT(re.createdata, '%Y.%m.%d') AS data, "
+ " re.numero, re.descricao, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura "
+ "FROM requisicao_economato re, "
+ " colaborador c, departamento d "
+ "WHERE re.id=" + Id + " "
+ " AND c.id=re.createuser "
+ " AND d.id=re.createdep "
+ "ORDER BY re.createdata";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
}
public class Gravar
{
///
/// Nova requisição
///
/// Descrição do evento
/// Activo/Inactivo (1/0)
/// Id de quem cria o conteúdo
/// Departamento de quem cria o conteúdo
/// True ou False
public static Boolean Requisicao(string Descricao, int Activo, int CreateUser, int CreateDep)
{
bool gravado = false;
int numero = 0;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
// Verificar qual o último pedido de facturação
sqlInfo.Query = "SELECT MAX(numero) "
+ "FROM requisicao_economato "
+ "WHERE DATE_FORMAT(createdata, '%Y')='" + DateTime.Now.Year + "'";
DataTable dtMaxPedido = sqlInfo.Read();
if (dtMaxPedido.Rows[0].ItemArray[0].ToString() == "")
{
numero = 1;
}
else
{
numero = Convert.ToInt16(dtMaxPedido.Rows[0].ItemArray[0].ToString()) + 1;
}
sqlInfo.Query = "INSERT INTO requisicao_economato(numero, descricao, activo, createuser, createdep, createdata) "
+ "VALUES (" + numero + " ,"
+ " '" + Descricao + "' ,"
+ " " + Activo + " ,"
+ " " + CreateUser + " ,"
+ " " + CreateDep + " ,"
+ " now())";
gravado = sqlInfo.Write();
sqlInfo.closeConnection();
return gravado;
}
///
/// Nova requisição
///
/// ID da requisição de economato
/// Activo/Inactivo (1/0)
/// Id de quem cria o conteúdo
/// Departamento de quem cria o conteúdo
/// Retorna uma string com os campos da material requisitado [id, categoria, materialid, material, quantidade]
public static string Material(int Requisicao, int MaterialID, string Material, decimal Quantidade, int Activo, int CreateUser, int CreateDep)
{
string _material;
DataTable _material_adicionada;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "INSERT INTO requisicao_economato_material(requisicaoid, materialid, material, quantidade, activo, createuser, createdep, createdata) "
+ "VALUES (" + Requisicao + ","
+ " " + MaterialID + ","
+ " '" + Material + "',"
+ " '" + Quantidade.ToString().Replace(",", ".") + "',"
+ " 1,"
+ " " + CreateUser + ","
+ " " + CreateDep + ","
+ " now())";
sqlInfo.Write();
// Verificar dados inseridos
sqlInfo.Query = "SELECT m.id, e.categoria, m.materialid, m.material, m.quantidade "
+ "FROM requisicao_economato_material m LEFT OUTER JOIN economato e ON m.materialid=e.id "
+ "WHERE m.requisicaoid=" + Requisicao + " "
+ " AND m.materialid=" + MaterialID + " "
+ " AND m.material='" + Material + "' "
+ " AND m.quantidade='" + Quantidade.ToString().Replace(",", ".") + "' "
+ " AND m.quantidade='" + Quantidade.ToString().Replace(".", ",") + "'";
_material_adicionada = sqlInfo.Read();
if (_material_adicionada.Rows.Count > 0)
{
_material = _material_adicionada.Rows[0]["id"].ToString() + "\\s"
+ _material_adicionada.Rows[0]["categoria"].ToString() + "\\s"
+ _material_adicionada.Rows[0]["materialid"].ToString() + "\\s"
+ _material_adicionada.Rows[0]["material"].ToString() + "\\s"
+ _material_adicionada.Rows[0]["quantidade"].ToString();
}
else
{
_material = "";
}
return _material;
}
}
public class Editar
{
///
/// Editar requisição
///
/// Id do conteúdo a editar
/// Descrição do evento
/// Activo/Inactivo (1/0)
/// Id de quem cria o conteúdo
/// Departamento de quem cria o conteúdo
/// True ou False
public static Boolean Requisicao(int Id, string Descricao, int Activo, int EditUser, int EditDep)
{
bool editado = false;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "UPDATE requisicao_economato "
+ "SET descricao='" + Descricao + "',"
+ " activo=" + Activo + ","
+ " edituser=" + EditUser + ","
+ " editdep=" + EditDep + ","
+ " editdata=now() "
+ "WHERE id=" + Id;
editado = sqlInfo.Write();
sqlInfo.closeConnection();
return editado;
}
}
}
///
/// Requisição de edifícios, salas, etc.
///
public class Espacos
{
///
/// Listagem de requisições ainda por terminarem
///
/// Número da página a mostrar
/// DataTable
public static DataTable Listagem(int Pagina)
{
DataTable dtInfo = new DataTable();
int offset = Convert.ToInt16(WebConfigurationManager.AppSettings["offset"].ToString());
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT r.id, "
+ " r.createuser, r.createdep, r.createdata, "
+ " r.edituser, r.editdep, r.editdata, "
+ " r.activo, "
+ " DATE_FORMAT(r.data_ini, '%Y.%m.%d %H:%i') AS data_ini, "
+ " DATE_FORMAT(r.data_fim, '%Y.%m.%d %H:%i') AS data_fim, "
+ " r.espaco, r.actividade, r.descricao, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura "
+ "FROM requisicao_salas r, colaborador c, departamento d "
+ "WHERE c.id=r.createuser "
+ " AND d.id=r.createdep "
+ " AND DATE_FORMAT(r.data_fim, '%Y.%m.%d %H:%i')>DATE_FORMAT(now(), '%Y.%m.%d %H:%i') "
+ "ORDER BY r.data_ini, r.data_fim, r.espaco, r.actividade "
+ "LIMIT " + (Pagina * offset) + ", " + offset;
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Retorna todas as requisições num detarminado mês.
///
/// Ano da actividade
/// Mês da actividade
///
/// Retorna todas as requisições num detarminado mês.
///
public static DataTable Listagem(int Ano, int Mes)
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT r.id, "
+ " r.createuser, r.createdep, r.createdata, "
+ " r.edituser, r.editdep, r.editdata, "
+ " r.activo, "
+ " DATE_FORMAT(r.data_ini, '%Y.%m.%d %H:%i') AS data_ini, "
+ " DATE_FORMAT(r.data_fim, '%Y.%m.%d %H:%i') AS data_fim, "
+ " r.espaco, r.actividade, r.descricao, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura "
+ "FROM requisicao_salas r, colaborador c, departamento d "
+ "WHERE c.id=r.createuser "
+ " AND d.id=r.createdep "
+ " AND DATE_FORMAT(r.data_ini, '%Y.%m')=DATE_FORMAT('" + Ano + "." + Mes + ".1', '%Y.%m') "
+ " AND r.activo=1 "
+ "ORDER BY r.data_ini, r.data_fim, r.espaco, r.actividade";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Retorna todas as requisições num detarminado dia.
///
/// ID da peça.
/// Ano da actividade
/// Mês da actividade
/// Dia da actividade
///
/// Retorna todas as requisições num detarminado dia.
///
public static DataTable Listagem(int Ano, int Mes, int Dia)
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT r.id, "
+ " r.createuser, r.createdep, r.createdata, "
+ " r.edituser, r.editdep, r.editdata, "
+ " r.activo, "
+ " DATE_FORMAT(r.data_ini, '%Y.%m.%d %H:%i') AS data_ini, "
+ " DATE_FORMAT(r.data_fim, '%Y.%m.%d %H:%i') AS data_fim, "
+ " r.espaco, r.actividade, r.descricao, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura "
+ "FROM requisicao_salas r, colaborador c, departamento d "
+ "WHERE c.id=r.createuser "
+ " AND d.id=r.createdep "
+ " AND DATE_FORMAT(r.data_ini, '%Y.%c.%e')=DATE_FORMAT('" + Ano + "." + Mes + "." + Dia + "', '%Y.%c.%e') "
+ " AND r.activo=1 "
+ "ORDER BY r.data_ini, r.data_fim, r.espaco, r.actividade";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Pesquisa de requisições
///
/// DataTable
public static DataTable Pesquisa(string Pesquisa)
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT r.id, "
+ " r.createuser, r.createdep, r.createdata, "
+ " r.edituser, r.editdep, r.editdata, "
+ " r.activo, "
+ " DATE_FORMAT(r.data_ini, '%Y.%m.%d %H:%i') AS data_ini, "
+ " DATE_FORMAT(r.data_fim, '%Y.%m.%d %H:%i') AS data_fim, "
+ " r.espaco, r.actividade, r.descricao, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, "
+ " r.*, c.*, d.* "
+ "FROM requisicao_salas r, colaborador c, departamento d "
+ "WHERE c.id=r.createuser "
+ " AND d.id=r.createdep "
+ " AND DATE_FORMAT(r.data_fim, '%Y.%m.%d %H:%i')>DATE_FORMAT(now(), '%Y.%m.%d %H:%i') "
+ "ORDER BY r.data_ini, r.data_fim, r.espaco, r.actividade";
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 r.id, "
+ " r.createuser, r.createdep, r.createdata, "
+ " r.edituser, r.editdep, r.editdata, "
+ " r.activo, "
+ " DATE_FORMAT(r.data_ini, '%Y.%m.%d %H:%i') AS data_ini, "
+ " DATE_FORMAT(r.data_fim, '%Y.%m.%d %H:%i') AS data_fim, "
+ " r.espaco, r.actividade, r.descricao, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura "
+ "FROM requisicao_salas r, colaborador c, departamento d "
+ "WHERE r.id=" + Id + " "
+ " AND c.id=r.createuser "
+ " AND d.id=r.createdep";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Nova requisição
///
/// 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 Sala, string Inicio, string Fim, string Actividade, string Descricao, int Activo, int CreateUser, int CreateDep)
{
bool gravado = false;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "INSERT INTO requisicao_salas(espaco, data_ini, data_fim, actividade, descricao, activo, createuser, createdep, createdata) "
+ "VALUES ('" + Sala + "',"
+ " '" + Inicio + "',"
+ " '" + Fim + "',"
+ " '" + Actividade + "',"
+ " '" + Descricao + "',"
+ " " + Activo + " ,"
+ " " + CreateUser + " ,"
+ " " + CreateDep + " ,"
+ " now())";
gravado = sqlInfo.Write();
sqlInfo.closeConnection();
return gravado;
}
///
/// Editar requisição
///
/// Id do conteúdo a editar
/// 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, string Actividade, string Descricao, int Activo, int EditUser, int EditDep)
{
bool editado = false;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "UPDATE requisicao_salas "
+ "SET data_ini ='" + Inicio + "',"
+ " data_fim ='" + Fim + "',"
+ " actividade ='" + Actividade + "',"
+ " descricao ='" + Descricao + "',"
+ " activo = " + Activo + ","
+ " edituser = " + EditUser + ","
+ " editdep = " + EditDep + ","
+ " editdata = now() "
+ "WHERE id=" + Id;
editado = sqlInfo.Write();
sqlInfo.closeConnection();
return editado;
}
}
///
/// Processo de compra
///
public class Compras
{
///
/// IDENTIFICAÇÃO DA NECESSIDADE (#1)
///
public class Pedidos
{
///
/// Listagem de pedidos de compra
///
/// 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);
/*
* ETAPAS
* #0 - Cancelado
* #1 - Em aprovação
* #2 - Consulta ao mercado
* #3 - Parecer final
* #4 - Finalizado
*/
if (Permissao <= Intranet.Sistema.Permissoes.Total)
{
// Permissão total
// Vê todos os pedidos de compras
sqlInfo.Query = "SELECT pc.id, "
+ " pc.createuser, pc.createdep, pc.createdata, "
+ " pc.edituser, pc.editdep, pc.editdata, "
+ " pc.activo, "
+ " DATE_FORMAT(pc.createdata, '%Y.%m.%d') AS data, "
+ " DATE_FORMAT(pc.createdata, '%Y') AS ano, "
+ " pc.numero, pc.necessidade, pc.justificacao, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, "
+ " IF(cm.edituser, '4', "
+ " IF(cm.createuser, '3', "
+ " IF(a.createuser, "
+ " IF(a.activo=1, '2', '0' ), "
+ " '1' "
+ " ) "
+ " ) "
+ " ) AS etapa "
+ "FROM colaborador c, departamento d, "
+ " compra pc LEFT OUTER JOIN compra_2_aprovacao a ON a.compraid=pc.id, "
+ " compra_1_forncedores f, "
+ " compra_1_servicos s LEFT OUTER JOIN compra_3_consultamercado cm ON cm.servicoid=s.id "
+ "WHERE c.id=pc.createuser "
+ " AND d.id=pc.createdep "
+ " AND f.compraid=pc.id "
+ " AND s.compraid=pc.id "
+ "GROUP BY pc.id "
+ "ORDER BY pc.createdata DESC "
+ "LIMIT " + (Pagina * offset) + ", " + offset;
}
else
{
// Ler / Escrever / Editar
// Vê apenas os pedidos de compra do departamento
sqlInfo.Query = "SELECT pc.id, "
+ " pc.createuser, pc.createdep, pc.createdata, "
+ " pc.edituser, pc.editdep, pc.editdata, "
+ " pc.activo, "
+ " DATE_FORMAT(pc.createdata, '%Y.%m.%d') AS data, "
+ " DATE_FORMAT(pc.createdata, '%Y') AS ano, "
+ " pc.numero, pc.necessidade, pc.justificacao, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, "
+ " IF(cm.edituser, '4', "
+ " IF(cm.createuser, '3', "
+ " IF(a.createuser, "
+ " IF(a.activo=1, '2', '0' ), "
+ " '1' "
+ " ) "
+ " ) "
+ " ) AS etapa "
+ "FROM colaborador c, departamento d, "
+ " compra pc LEFT OUTER JOIN compra_2_aprovacao a ON a.compraid=pc.id, "
+ " compra_1_forncedores f, "
+ " compra_1_servicos s LEFT OUTER JOIN compra_3_consultamercado cm ON cm.servicoid=s.id, "
+ " sys_colaborador_departamento sys "
+ "WHERE sys.departamentoid=" + Departamento + " "
+ " AND c.id=sys.colaboradorid "
+ " AND sys.departamentoid=d.id "
+ " AND c.id=pc.createuser "
+ " AND d.id=pc.createdep "
+ " AND f.compraid=pc.id "
+ " AND s.compraid=pc.id "
+ "GROUP BY pc.id "
+ "ORDER BY pc.createdata DESC "
+ "LIMIT " + (Pagina * offset) + ", " + offset;
}
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Retorna todas os pedidos de comra num determinado mês.
///
/// Ano da actividade
/// Mês da actividade
///
/// Retorna todas os pedidos de comra compra num detarminado mês.
///
public static DataTable ListagemData(int Ano, int Mes)
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT re.id, "
+ " re.createuser, re.createdep, re.createdata, "
+ " re.edituser, re.editdep, re.editdata, "
+ " re.activo, "
+ " DATE_FORMAT(re.createdata, '%Y.%m.%d') AS data, "
+ " re.numero, re.descricao, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura "
+ "FROM requisicao_economato re, "
+ " colaborador c, departamento d "
+ "WHERE c.id=re.createuser "
+ " AND d.id=re.createdep "
+ " AND DATE_FORMAT(re.createdata, '%Y.%m')=DATE_FORMAT('" + Ano + "." + Mes + ".1', '%Y.%m') "
+ "ORDER BY re.createdata DESC";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Retorna todas os pedidos de compra num detarminado dia.
///
/// Ano da actividade
/// Mês da actividade
/// Dia da actividade
///
/// Retorna todas as requisições num detarminado dia.
///
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 re.id, "
+ " re.createuser, re.createdep, re.createdata, "
+ " re.edituser, re.editdep, re.editdata, "
+ " re.activo, "
+ " DATE_FORMAT(re.createdata, '%Y.%m.%d') AS data, "
+ " re.numero, re.descricao, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura "
+ "FROM requisicao_economato re, "
+ " colaborador c, departamento d "
+ "WHERE c.id=re.createuser "
+ " AND d.id=re.createdep "
+ " AND DATE_FORMAT(re.data_ini, '%Y.%c.%e')=DATE_FORMAT('" + Ano + "." + Mes + "." + Dia + "', '%Y.%c.%e') "
+ "ORDER BY re.createdata DESC";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Pesquisa de pedidos de compra
///
/// 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);
/*
* ETAPAS
* #0 - Cancelado
* #1 - Em aprovação
* #2 - Consulta ao mercado
* #3 - Parecer final
* #4 - Finalizado
*/
if (Permissao <= Intranet.Sistema.Permissoes.Total)
{
// Permissão total
// Vê todos os pedidos de compras
sqlInfo.Query = "SELECT pc.id, "
+ " pc.createuser, pc.createdep, pc.createdata, "
+ " pc.edituser, pc.editdep, pc.editdata, "
+ " pc.activo, "
+ " DATE_FORMAT(pc.createdata, '%Y.%m.%d') AS data, "
+ " DATE_FORMAT(pc.createdata, '%Y') AS ano, "
+ " pc.numero, pc.necessidade, pc.justificacao, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, "
+ " IF(cm.edituser, '4', "
+ " IF(cm.createuser, '3', "
+ " IF(a.createuser, "
+ " IF(a.activo=1, '2', '0' ), "
+ " '1' "
+ " ) "
+ " ) "
+ " ) AS etapa, "
+ " c.*, d.*, pc.*, a.*, f.*, s.*, cm.* "
+ "FROM colaborador c, departamento d, "
+ " compra pc LEFT OUTER JOIN compra_2_aprovacao a ON a.compraid=pc.id, "
+ " compra_1_forncedores f, "
+ " compra_1_servicos s LEFT OUTER JOIN compra_3_consultamercado cm ON cm.servicoid=s.id "
+ "WHERE c.id=pc.createuser "
+ " AND d.id=pc.createdep "
+ " AND f.compraid=pc.id "
+ " AND s.compraid=pc.id "
+ "GROUP BY pc.id "
+ "ORDER BY pc.createdata DESC";
}
else
{
// Ler / Escrever / Editar
// Vê apenas os pedidos de compra do departamento
sqlInfo.Query = "SELECT pc.id, "
+ " pc.createuser, pc.createdep, pc.createdata, "
+ " pc.edituser, pc.editdep, pc.editdata, "
+ " pc.activo, "
+ " DATE_FORMAT(pc.createdata, '%Y.%m.%d') AS data, "
+ " DATE_FORMAT(pc.createdata, '%Y') AS ano, "
+ " pc.numero, pc.necessidade, pc.justificacao, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura, "
+ " IF(cm.edituser, '4', "
+ " IF(cm.createuser, '3', "
+ " IF(a.createuser, "
+ " IF(a.activo=1, '2', '0' ), "
+ " '1' "
+ " ) "
+ " ) "
+ " ) AS etapa, "
+ " c.*, d.*, pc.*, a.*, f.*, s.*, cm.*, sys.* "
+ "FROM colaborador c, departamento d, "
+ " compra pc LEFT OUTER JOIN compra_2_aprovacao a ON a.compraid=pc.id, "
+ " compra_1_forncedores f, "
+ " compra_1_servicos s LEFT OUTER JOIN compra_3_consultamercado cm ON cm.servicoid=s.id, "
+ " sys_colaborador_departamento sys "
+ "WHERE sys.departamentoid=" + Departamento + " "
+ " AND c.id=sys.colaboradorid "
+ " AND sys.departamentoid=d.id "
+ " AND c.id=pc.createuser "
+ " AND d.id=pc.createdep "
+ " AND f.compraid=pc.id "
+ " AND s.compraid=pc.id "
+ "GROUP BY pc.id "
+ "ORDER BY pc.createdata 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 pedido de compra
///
/// Id do pedido de compra
/// DataTable
public static DataTable Detalhes(int Pedido)
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT pc.id, "
+ " pc.createuser, pc.createdep, pc.createdata, "
+ " pc.edituser, pc.editdep, pc.editdata, "
+ " pc.activo, "
+ " DATE_FORMAT(pc.createdata, '%Y.%m.%d') AS data, "
+ " DATE_FORMAT(pc.createdata, '%Y') AS ano, "
+ " pc.numero, pc.necessidade, pc.justificacao, "
+ " c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.nome AS departamento, d.abreviatura AS departamento_abreviatura "
+ "FROM compra pc, "
+ " colaborador c, departamento d "
+ "WHERE pc.id=" + Pedido + " "
+ " AND c.id=pc.createuser "
+ " AND d.id=pc.createdep "
+ "ORDER BY pc.createdata";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Novo pedido de compra
///
/// Necessidade da compra
/// Justificacção para a compra
/// 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 Necessidade, string Justificacao, int Activo, int CreateUser, int CreateDep)
{
bool gravado = false;
int numero = 0;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
// Verificar qual o último pedido de facturação
sqlInfo.Query = "SELECT MAX(numero) "
+ "FROM compra "
+ "WHERE DATE_FORMAT(createdata, '%Y')='" + DateTime.Now.Year + "'";
DataTable dtMaxPedido = sqlInfo.Read();
if (dtMaxPedido.Rows[0].ItemArray[0].ToString() == "")
{
numero = 1;
}
else
{
numero = Convert.ToInt16(dtMaxPedido.Rows[0].ItemArray[0].ToString()) + 1;
}
sqlInfo.Query = "INSERT INTO compra(numero, necessidade, justificacao, activo, createuser, createdep, createdata) "
+ "VALUES (" + numero + " ,"
+ " '" + Necessidade + "' ,"
+ " '" + Justificacao + "' ,"
+ " " + Activo + " ,"
+ " " + CreateUser + " ,"
+ " " + CreateDep + " ,"
+ " now())";
gravado = sqlInfo.Write();
sqlInfo.closeConnection();
return gravado;
}
///
/// Editar pedido de compra
///
/// Id do conteúdo a editar
/// Necessidade da compra
/// Justificacção para a compra
/// 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 Necessidade, string Justificacao, int Activo, int EditUser, int EditDep)
{
bool editado = false;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "UPDATE compra "
+ "SET necessidade='" + Necessidade + "',"
+ " justificacao='" + Justificacao + "',"
+ " activo=" + Activo + ","
+ " edituser=" + EditUser + ","
+ " editdep=" + EditDep + ","
+ " editdata=now() "
+ "WHERE id=" + Id;
editado = sqlInfo.Write();
sqlInfo.closeConnection();
return editado;
}
///
/// Serviços dos pedidos de compras
///
public class Servicos
{
///
/// Material/Serviços de um determinado pedido de compra
///
/// ID do pedido de compra
/// DataTable
public static DataTable Listagem(int Pedido)
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT * "
+ "FROM compra_1_servicos "
+ "WHERE compraid=" + Pedido + " "
+ "ORDER BY servico, quantidade";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Adicionar produtos/serviços ao pedido de compra
///
/// ID do pedido de compra
/// Produto/Serviço a adicionar
/// Activo/Inactivo (1/0)
/// Id de quem cria o conteúdo
/// Departamento de quem cria o conteúdo
/// Retorna uma string com os campos da material requisitado [id, quantidade, servico]
public static string Gravar(int Pedido, string Servico, decimal Quantidade, int CreateUser, int CreateDep)
{
string _servico;
DataTable _servico_adicionado;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "INSERT INTO compra_1_servicos(compraid, servico, quantidade, activo, createuser, createdep, createdata) "
+ "VALUES (" + Pedido + ","
+ " '" + Servico + "',"
+ " '" + Quantidade.ToString().Replace(",", ".") + "',"
+ " 1,"
+ " " + CreateUser + ","
+ " " + CreateDep + ","
+ " now())";
sqlInfo.Write();
// Verificar dados inseridos
sqlInfo.Query = "SELECT id, quantidade, servico "
+ "FROM compra_1_servicos "
+ "WHERE compraid=" + Pedido + " "
+ " AND servico='" + Servico + "' "
+ " AND quantidade='" + Quantidade.ToString().Replace(",", ".") + "'";
_servico_adicionado = sqlInfo.Read();
if (_servico_adicionado.Rows.Count > 0)
{
_servico = _servico_adicionado.Rows[0].ItemArray[0].ToString() + "\\s"
+ _servico_adicionado.Rows[0].ItemArray[1].ToString() + "\\s"
+ _servico_adicionado.Rows[0].ItemArray[2].ToString();
}
else
{
_servico = "";
}
return _servico;
}
}
///
/// Fornecedores dos pedidos de compras
///
public class Fornecedores
{
///
/// Material/Serviços de um determinado pedido de compra
///
/// ID do pedido de compra
/// DataTable
public static DataTable Listagem(int Pedido)
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT f.id AS id, "
+ " e.id AS empresaid, e.nome AS empresa, "
+ " f.activo "
+ "FROM compra_1_forncedores f, empresa e "
+ "WHERE f.compraid=" + Pedido + " "
+ " AND f.empresaid=e.id "
+ "ORDER BY e.nome";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Adicionar empresa à lista de fornecedores para um pedido de compra
///
/// ID do pedido de compra
/// ID da empresa fornecedora
/// Id de quem cria o conteúdo
/// Departamento de quem cria o conteúdo
/// Retorna uma string com os campos da empresa adicionada como fornecedora [id, empresaid, empresa, activo]
public static string Gravar(int Pedido, int Empresa, int CreateUser, int CreateDep)
{
string _empresa;
DataTable _empresa_adicionada;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "INSERT INTO compra_1_forncedores(compraid, empresaid, activo, createuser, createdep, createdata) "
+ "VALUES (" + Pedido + ","
+ " " + Empresa + ","
+ " 1,"
+ " " + CreateUser + ","
+ " " + CreateDep + ","
+ " now())";
sqlInfo.Write();
// Verificar dados inseridos
sqlInfo.Query = "SELECT f.id AS id, "
+ " e.id AS empresaid, e.nome AS empresa, "
+ " f.activo "
+ "FROM compra_1_forncedores f, empresa e "
+ "WHERE f.compraid=" + Pedido + " "
+ " AND f.empresaid=" + Empresa + " "
+ " AND f.empresaid=e.id "
+ "ORDER BY e.nome";
_empresa_adicionada = sqlInfo.Read();
if (_empresa_adicionada.Rows.Count > 0)
{
_empresa = _empresa_adicionada.Rows[0].ItemArray[0].ToString() + "\\s"
+ _empresa_adicionada.Rows[0].ItemArray[1].ToString() + "\\s"
+ _empresa_adicionada.Rows[0].ItemArray[2].ToString() + "\\s"
+ _empresa_adicionada.Rows[0].ItemArray[3].ToString();
}
else
{
_empresa = "";
}
return _empresa;
}
}
}
///
/// APROVAÇÃO DO PEDIDO DE COMPRA (#2)
///
public class Aprovacao
{
///
/// Detalhes das aprovação aos pedidos de compras
///
/// Id do pedido de compra
/// DataTable
public static DataTable Detalhes(int Pedido)
{
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(c.createdata, '%Y.%m.%d') AS data, "
+ " DATE_FORMAT(c.createdata, '%Y') AS ano, "
+ " c.numero, c.necessidade, c.justificacao, "
+ " a.descricao "
+ "FROM compra c LEFT OUTER JOIN compra_2_aprovacao a ON a.compraid=c.id "
+ "WHERE c.id=" + Pedido;
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Aprovação / Rejeição do pedido de compra
///
/// ID do pedido de compra
/// Descrição da aprovação
/// Aprovar/Rejeitar (1/0)
/// Id de quem cria o conteúdo
/// Departamento de quem cria o conteúdo
/// True ou False
public static Boolean Gravar(int Pedido, string Descricao, int Activo, int CreateUser, int CreateDep)
{
bool gravado = false;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
// Verificar se já existe aprovação para este pedido de compra
sqlInfo.Query = "SELECT id "
+ "FROM compra_2_aprovacao "
+ "WHERE compraid=" + Pedido;
if (sqlInfo.Read().Rows.Count > 0)
{
// EDITAR
sqlInfo.Query = "UPDATE compra_2_aprovacao "
+ "SET descricao='" + Descricao + "',"
+ " activo=" + Activo + ","
+ " edituser=" + CreateUser + ","
+ " editdep=" + CreateDep + ","
+ " editdata=now() "
+ "WHERE compraid=" + Pedido;
}
else
{
// INSERIR
sqlInfo.Query = "INSERT INTO compra_2_aprovacao(compraid, descricao, activo, createuser, createdep, createdata) "
+ "VALUES (" + Pedido + " ,"
+ " '" + Descricao + "' ,"
+ " " + Activo + " ,"
+ " " + CreateUser + " ,"
+ " " + CreateDep + " ,"
+ " now())";
}
gravado = sqlInfo.Write();
sqlInfo.closeConnection();
return gravado;
}
}
///
/// CONCULTA AO MERCADO (#3)
///
public class Consulta
{
///
/// Listagem de valores para os serviços/fornecedores de um determinado pedido de compra
///
/// ID do pedido de compra
/// DataTable
public static DataTable Listagem(int Pedido)
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT cm.id, "
+ " cm.createuser, cm.createdep, cm.createdata, "
+ " cm.edituser, cm.editdep, cm.editdata, "
+ " cm.activo, "
+ " cm.servicoid, "
+ " cm.fornecedorid, "
+ " cm.valor "
+ "FROM compra_3_consultamercado cm, "
+ " compra_1_servicos s, "
+ " compra c "
+ "WHERE cm.servicoid=s.id "
+ " AND s.compraid=c.id "
+ " AND c.id=" + Pedido;
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Adicionar valor a um serviço/produto de uma empresa
///
/// Id do pedido de compra
/// Id do serviço
/// Id da empresa fornecedora
/// Valor unitátio do serviço
/// Id de quem cria o conteúdo
/// Departamento de quem cria o conteúdo
/// Retorna o total proposto por uma empresa
public static string Adicionar(int Pedido, int Servico, int Fornecedor, decimal Valor, int CreateUser, int CreateDep)
{
bool gravado = false;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "INSERT INTO compra_3_consultamercado(servicoid, fornecedorid, valor, activo, createuser, createdep, createdata) "
+ "VALUES (" + Servico + ","
+ " " + Fornecedor + ","
+ " '" + Valor.ToString().Replace(",", ".") + "',"
+ " 0,"
+ " " + CreateUser + ","
+ " " + CreateDep + ","
+ " now())";
gravado = sqlInfo.Write();
if (gravado)
{
// VERIFICAR O TOTAL PROPOSTO POR ESTA EMPRESA
sqlInfo.Query = "SELECT SUM(cm.valor*s.quantidade) "
+ "FROM compra_3_consultamercado cm, compra_1_servicos s "
+ "WHERE cm.servicoid=s.id "
+ " AND s.compraid=" + Pedido + " "
+ " AND cm.fornecedorid=" + Fornecedor;
DataTable dtTotal = sqlInfo.Read();
sqlInfo.closeConnection();
return dtTotal.Rows[0].ItemArray[0].ToString();
}
else
{
sqlInfo.closeConnection();
return "ERRO";
}
}
///
/// Remove valor a um serviço/produto de uma empresa
///
/// Id do pedido de compra
/// Id do serviço
/// Id da empresa fornecedora
/// Retorna o total proposto por uma empresa
public static string Remover(int Pedido, int Servico, int Fornecedor)
{
bool gravado = false;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "DELETE FROM compra_3_consultamercado "
+ "WHERE servicoid=" + Servico
+ " AND fornecedorid=" + Fornecedor;
gravado = sqlInfo.Write();
if (gravado)
{
// VERIFICAR O TOTAL PROPOSTO POR ESTA EMPRESA
sqlInfo.Query = "SELECT SUM(cm.valor*s.quantidade) "
+ "FROM compra_3_consultamercado cm, compra_1_servicos s "
+ "WHERE cm.servicoid=s.id "
+ " AND s.compraid=" + Pedido + " "
+ " AND cm.fornecedorid=" + Fornecedor;
DataTable dtTotal = sqlInfo.Read();
sqlInfo.closeConnection();
return dtTotal.Rows[0].ItemArray[0].ToString();
}
else
{
sqlInfo.closeConnection();
return "ERRO";
}
}
}
}
///
/// Requisições Interdepartamentais e/ou Intercolaboradores
///
public class Interdepartamentais
{
///
/// Listagens de requisições recebidas e efectuadas
///
public class Listagem
{
///
/// Listagem de requisições recebidas
///
/// Número da página a mostrar
/// DataTable
public static DataTable Recebidas(int Pagina, int Colaborador, int Departamento)
{
DataTable dtInfo = new DataTable();
int offset = Convert.ToInt16(WebConfigurationManager.AppSettings["offset"].ToString());
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT r.id, "
+ " r.createuser, r.createdep, r.createdata, "
+ " r.edituser, r.editdep, r.editdata, "
+ " r.activo, "
+ " r.cancelado, "
+ " r.numero, "
+ " DATE_FORMAT(r.createdata, '%Y') AS ano, "
+ " CONCAT(r.numero, '/', DATE_FORMAT(r.createdata, '%Y')) AS numeroano, "
+ " r.requisicao, r.descricao, "
+ " DATE_FORMAT(r.data_limite, '%Y.%m.%d') AS data_limite, "
+ " DATE_FORMAT(r.data_conclusao, '%Y.%m.%d') AS data_conclusao, "
+ " c.id AS colaboradorid, c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.id AS departamentoid, d.nome AS departamento, d.abreviatura AS departamento_abreviatura "
+ "FROM requisicao_interdepartamental r, "
+ " colaborador c, "
+ " departamento d "
+ "WHERE r.createuser=c.id "
+ " AND r.createdep=d.id "
+ " AND (r.destinatario_colaborador=" + Colaborador + " "
+ " OR r.destinatario_departamento=" + Departamento + ") "
+ "ORDER BY r.activo, r.data_limite, r.requisicao "
+ "LIMIT " + (Pagina * offset) + ", " + offset;
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Listagem de requisições efectuadas
///
/// Número da página a mostrar
/// DataTable
public static DataTable Efectuadas(int Pagina, int Colaborador, int Departamento)
{
DataTable dtInfo = new DataTable();
int offset = Convert.ToInt16(WebConfigurationManager.AppSettings["offset"].ToString());
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT r.id, "
+ " r.createuser, r.createdep, r.createdata, "
+ " r.edituser, r.editdep, r.editdata, "
+ " r.activo, "
+ " r.cancelado, "
+ " r.numero, "
+ " DATE_FORMAT(r.createdata, '%Y') AS ano, "
+ " CONCAT(r.numero, '/', DATE_FORMAT(r.createdata, '%Y')) AS numeroano, "
+ " r.requisicao, r.descricao, "
+ " DATE_FORMAT(r.data_limite, '%Y.%m.%d') AS data_limite, "
+ " DATE_FORMAT(r.data_conclusao, '%Y.%m.%d') AS data_conclusao, "
+ " c.id AS colaboradorid, c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.id AS departamentoid, d.nome AS departamento, d.abreviatura AS departamento_abreviatura "
+ "FROM requisicao_interdepartamental r, "
+ " colaborador c, "
+ " departamento d "
+ "WHERE r.createuser=c.id "
+ " AND r.createdep=d.id "
+ " AND (r.createuser=" + Colaborador + " "
+ " OR r.createdep=" + Departamento + ") "
+ "ORDER BY r.activo, r.data_limite, r.requisicao "
+ "LIMIT " + (Pagina * offset) + ", " + offset;
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
}
///
/// Pesquisa de requisições recebidas
///
/// DataTable
public static DataTable Pesquisa(string Pesquisa)
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT r.id, "
+ " r.createuser, r.createdep, r.createdata, "
+ " r.edituser, r.editdep, r.editdata, "
+ " r.activo, "
+ " r.cancelado, "
+ " r.numero, "
+ " DATE_FORMAT(r.createdata, '%Y') AS ano, "
+ " CONCAT(r.numero, '/', DATE_FORMAT(r.createdata, '%Y')) AS numeroano, "
+ " r.requisicao, r.descricao, "
+ " DATE_FORMAT(r.data_limite, '%Y.%m.%d') AS data_limite, "
+ " DATE_FORMAT(r.data_conclusao, '%Y.%m.%d') AS data_conclusao, "
+ " c.id AS colaboradorid, c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.id AS departamentoid, d.nome AS departamento, d.abreviatura AS departamento_abreviatura, "
+ " r.*, c.*, d.* "
+ "FROM requisicao_interdepartamental r, "
+ " colaborador c, "
+ " departamento d "
+ "WHERE r.createuser=c.id "
+ " AND r.createdep=d.id "
+ "ORDER BY r.activo, r.data_limite, r.requisicao";
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 r.id, "
+ " r.createuser, r.createdep, r.createdata, "
+ " r.edituser, r.editdep, r.editdata, "
+ " r.activo, "
+ " r.cancelado, "
+ " r.numero, "
+ " DATE_FORMAT(r.createdata, '%Y') AS ano, "
+ " CONCAT(r.numero, '/', DATE_FORMAT(r.createdata, '%Y')) AS numeroano, "
+ " r.requisicao, r.descricao, "
+ " DATE_FORMAT(r.data_limite, '%Y.%m.%d') AS data_limite, "
+ " DATE_FORMAT(r.data_conclusao, '%Y.%m.%d') AS data_conclusao, "
+ " c.id AS colaboradorid, c.nome AS colaborador, c.abreviatura AS colaborador_abreviatura, "
+ " d.id AS departamentoid, d.nome AS departamento, d.abreviatura AS departamento_abreviatura, "
+ " r.*, c.*, d.* "
+ "FROM requisicao_interdepartamental r, "
+ " colaborador c, "
+ " departamento d "
+ "WHERE r.id=" + Id + " "
+ " AND r.createuser=c.id "
+ " AND r.createdep=d.id";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Nova requisição
///
/// Id de quem cria o conteúdo
/// Departamento de quem cria o conteúdo
/// True ou False
public static Boolean Gravar(int Colaborador, int Departamento,
string Requisicao, string Descricao,
string DataLimite,
int CreateUser, int CreateDep)
{
bool gravado = false;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
// NÚMERO DO REGISTO DA LAVANDARIA
DataTable dtRequisicao;
sqlInfo.Query = "SELECT IF(MAX(numero) IS NULL, 0, MAX(numero)) AS numero "
+ "FROM requisicao_interdepartamental "
+ "WHERE DATE_FORMAT(createdata, '%Y')='" + DateTime.Now.Year + "'";
dtRequisicao = sqlInfo.Read();
sqlInfo.Query = "INSERT INTO requisicao_interdepartamental(numero, "
+ " destinatario_colaborador, destinatario_departamento, "
+ " requisicao, descricao, "
+ " data_limite, "
+ " activo, createuser, createdep, createdata) "
+ "VALUES ( " + (Convert.ToInt16(dtRequisicao.Rows[0]["numero"].ToString()) + 1) + ","
+ " " + Colaborador + ","
+ " " + Departamento + ","
+ " '" + Requisicao + "',"
+ " '" + Descricao + "',"
+ " '" + DataLimite + "',"
+ " 0,"
+ " " + CreateUser + " ,"
+ " " + CreateDep + " ,"
+ " now())";
gravado = sqlInfo.Write();
sqlInfo.closeConnection();
return gravado;
}
///
/// Editar requisição
///
/// Id do conteúdo a editar
/// 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,
int Colaborador, int Departamento,
string Requisicao, string Descricao,
string DataLimite,
int Conclusao,
int EditUser, int EditDep)
{
bool editado = false;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
// VERIFICA A PROPRIEDADE DA REQUISIÇÃO
sqlInfo.Query = "SELECT id, "
+ " createuser, "
+ " createdep, "
+ " createdata, "
+ " activo "
+ "FROM requisicao_interdepartamental "
+ "WHERE id=" + Id;
DataTable dtRegisto = sqlInfo.Read();
if (dtRegisto.Rows.Count > 0)
{
if (Convert.ToInt16(dtRegisto.Rows[0]["createuser"].ToString()) == EditUser
||
Convert.ToInt16(dtRegisto.Rows[0]["createdep"].ToString()) == EditDep)
{
// Edição feita pelo PROPRIETÁRIO da requisição
sqlInfo.Query = "UPDATE requisicao_interdepartamental "
+ "SET destinatario_colaborador = " + Colaborador + ","
+ " destinatario_departamento = " + Departamento + ","
+ " requisicao ='" + Requisicao + "',"
+ " descricao ='" + Descricao + "',"
+ " data_limite ='" + DataLimite + "',"
+ " edituser = " + EditUser + ","
+ " editdep = " + EditDep + ","
+ " editdata = now() "
+ "WHERE id=" + Id;
}
else
{
// Edição feita pelo DESTINATÁRIO da requisição
if (Conclusao == 1
&&
Convert.ToInt16(dtRegisto.Rows[0]["activo"].ToString()) == 0)
{
// FECHO DA REQUISIÇÃO
sqlInfo.Query = "UPDATE requisicao_interdepartamental "
+ "SET activo = 1,"
+ " data_conclusao = now(),"
+ " edituser = " + EditUser + ","
+ " editdep = " + EditDep + ","
+ " editdata = now() "
+ "WHERE id=" + Id;
}
else
{
// Não altera a data de conclusão caso não seja a primeira vez que o campo seja alterado
sqlInfo.Query = "UPDATE requisicao_interdepartamental "
+ "SET activo = " + Conclusao + ","
+ " edituser = " + EditUser + ","
+ " editdep = " + EditDep + ","
+ " editdata = now() "
+ "WHERE id=" + Id;
}
}
}
editado = sqlInfo.Write();
sqlInfo.closeConnection();
return editado;
}
///
/// Conclusão da requisição
///
public class Conclusao
{
///
/// Entredas adicionadas à conclusão da requisição
///
/// ID da requisição
/// DataTable
public static DataTable Listagem(int Requisicao)
{
DataTable dtInfo = new DataTable();
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "SELECT r.id, "
+ " r.createuser, "
+ " r.activo, "
+ " DATE_FORMAT(r.data, '%Y.%m.%d') AS data, "
+ " r.descricao, "
+ " c.abreviatura AS colaborador, "
+ " d.abreviatura AS departamento "
+ "FROM requisicao_interdepartamental_conclusao r, "
+ " colaborador c, "
+ " departamento d "
+ "WHERE requisicaoid = " + Requisicao + " "
+ " AND r.createuser = c.id "
+ " AND r.createdep = d.id "
+ "ORDER BY r.data DESC, r.id DESC";
dtInfo = sqlInfo.Read();
sqlInfo.closeConnection();
return dtInfo;
}
///
/// Nova entrada de conclusão
///
/// ID da requisição
/// Activo/Inactivo (1/0)
/// Id de quem cria o conteúdo
/// Departamento de quem cria o conteúdo
/// Retorna uma string com os campos da material requisitado [id, data, descricao, departamento, colaborador]
public static string Gravar(int Requisicao,
string Data, string Descricao,
int Activo, int CreateUser, int CreateDep)
{
string _conclusao;
DataTable _conclusao_adicionada;
sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString);
sqlInfo.Query = "INSERT INTO requisicao_interdepartamental_conclusao(requisicaoid, "
+ " data, descricao, "
+ " activo, createuser, createdep, createdata) "
+ "VALUES (" + Requisicao + ","
+ " '" + Data + "',"
+ " '" + Descricao + "',"
+ " 1,"
+ " " + CreateUser + ","
+ " " + CreateDep + ","
+ " now())";
sqlInfo.Write();
// Verificar dados inseridos
sqlInfo.Query = "SELECT r.id, "
+ " DATE_FORMAT(r.data, '%Y.%m.%d') AS data, "
+ " r.descricao, "
+ " c.abreviatura AS colaborador, "
+ " d.abreviatura AS departamento "
+ "FROM requisicao_interdepartamental_conclusao r, "
+ " colaborador c, "
+ " departamento d "
+ "WHERE requisicaoid = " + Requisicao + " "
+ " AND r.createuser =c.id "
+ " AND r.createdep =d.id "
+ " AND data ='" + Data + "' "
+ " AND descricao ='" + Descricao + "' "
+ "ORDER BY r.id DESC";
_conclusao_adicionada = sqlInfo.Read();
if (_conclusao_adicionada.Rows.Count > 0)
{
_conclusao = _conclusao_adicionada.Rows[0]["id"].ToString() + "\\s"
+ _conclusao_adicionada.Rows[0]["data"].ToString() + "\\s"
+ _conclusao_adicionada.Rows[0]["descricao"].ToString() + "\\s"
+ _conclusao_adicionada.Rows[0]["departamento"].ToString() + "\\s"
+ _conclusao_adicionada.Rows[0]["colaborador"].ToString();
}
else
{
_conclusao = "";
}
return _conclusao;
}
}
}
}
}