/// <summary> /// Função que pesquisa informações de tranferencias /// Dependendo do tipo de usuário retorna todas as transferencias (tipo governo) /// ou as transferencias ligadas ao hospital solicitante (tipo hospital) /// </summary> /// <returns> Retorna lista de transferencias de acordo com o tipo de usuário</returns> public BindingList <Transferencias> PesquisaTransferencias() { LocalDatabase db = new LocalDatabase(); string query; //Preenche query de solicitação de acordo com tipo de usuário if ((Tipos_de_Usuario)this.Tipo_Usuario == Tipos_de_Usuario.GOVERNO) { query = $"SELECT * FROM Transferencias "; //WHERE Status == 'p'"; } else { query = $"SELECT * FROM Transferencias WHERE ID_Hospital_Origem == (SELECT ID_Hospital FROM Hospital WHERE ID_Usuario = {this.ID_Usuario})"; } SQLiteDataReader sqlite_datareader = db.Query(query); BindingList <Transferencias> transferencias = new BindingList <Transferencias>(); //Preenche lista de transferencias com informações lidas while (sqlite_datareader.Read()) { Transferencias transferencia = new Transferencias(); transferencia.ID_Transferencia = (Int64)sqlite_datareader[nameof(Transferencias.ID_Transferencia)]; transferencia.ID_Hospital_Origem = (Int64)sqlite_datareader[nameof(Transferencias.ID_Hospital_Origem)]; transferencia.ID_Hospital_Destino = (Int64)sqlite_datareader[nameof(Transferencias.ID_Hospital_Destino)]; transferencia.UTI_Adulto = (Int64)sqlite_datareader[nameof(Transferencias.UTI_Adulto)]; transferencia.UTI_Neonatal = (Int64)sqlite_datareader[nameof(Transferencias.UTI_Neonatal)]; transferencia.UTI_Pediatrica = (Int64)sqlite_datareader[nameof(Transferencias.UTI_Pediatrica)]; transferencia.Emergencia = (Int64)sqlite_datareader[nameof(Transferencias.Emergencia)]; transferencia.Status = (string)sqlite_datareader[nameof(Transferencias.Status)]; transferencias.Add(transferencia); } sqlite_datareader.Dispose(); db.Close(); return(transferencias); }
private void ContextResolverTransferencia_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { Transferencias transferenciaSelecionada = (Transferencias)this.dgvTransferencias.CurrentRow.DataBoundItem; LocalDatabase db = new LocalDatabase(); if (e.ClickedItem.Text == ACAO.Gerar_Relatorio.ToString()) { string mensagemRelatorio; string query = $"SELECT Nome_Hospital FROM Hospital WHERE ID_HOspital == {transferenciaSelecionada.ID_Hospital_Origem} "; SQLiteDataReader sqlite_datareader = db.Query(query); sqlite_datareader.Read(); string hospitalOrigem = (string)sqlite_datareader[nameof(Hospital.Nome_Hospital)]; query = $"SELECT Nome_Hospital FROM Hospital WHERE ID_HOspital == {transferenciaSelecionada.ID_Hospital_Destino} "; sqlite_datareader = db.Query(query); sqlite_datareader.Read(); string hospitalDestino = (string)sqlite_datareader[nameof(Hospital.Nome_Hospital)]; mensagemRelatorio = $"A transferencia do {hospitalOrigem} para o {hospitalDestino}, envolvendo "; if (transferenciaSelecionada.UTI_Adulto > 0) { mensagemRelatorio += $" {transferenciaSelecionada.UTI_Adulto} vaga(s) de" + $" {nameof(transferenciaSelecionada.UTI_Adulto)},"; } if (transferenciaSelecionada.UTI_Pediatrica > 0) { mensagemRelatorio += $" {transferenciaSelecionada.UTI_Pediatrica} vaga(s) de " + $"{nameof(transferenciaSelecionada.UTI_Pediatrica)},"; } if (transferenciaSelecionada.UTI_Neonatal > 0) { mensagemRelatorio += $" {transferenciaSelecionada.UTI_Neonatal} vaga(s) de" + $" {nameof(transferenciaSelecionada.UTI_Neonatal)},"; } if (transferenciaSelecionada.Emergencia > 0) { mensagemRelatorio += $" {transferenciaSelecionada.Emergencia} vaga(s) de " + $"{nameof(transferenciaSelecionada.Emergencia)},"; } switch (transferenciaSelecionada.Status) { case "p": mensagemRelatorio += " encontra-se pendente."; break; case "r": mensagemRelatorio += " foi rejeitada."; break; case "a": default: mensagemRelatorio += " foi aprovada."; break; } string nomeArquivo = $"Relatorio_Transferencia_{transferenciaSelecionada.ID_Transferencia}.txt"; File.WriteAllTextAsync(nomeArquivo, mensagemRelatorio); } else { if (transferenciaSelecionada.Status == "p") { //se aprovar, decrementa vagas do hospital de origem. Todas serão 0, exceto as que foram solicitadas realmente. if (e.ClickedItem.Text == ACAO.Aprovar.ToString()) { //atualiza contagem de vagas no hospital destino string queryLeitos = $"UPDATE Hospital SET {nameof(Hospital.UTI_Pediatrica)} = {nameof(Hospital.UTI_Pediatrica)} - {transferenciaSelecionada.UTI_Pediatrica}, " + $"{nameof(Hospital.UTI_Adulto)} = {nameof(Hospital.UTI_Adulto)} - {transferenciaSelecionada.UTI_Adulto}, " + $"{nameof(Hospital.UTI_Neonatal)} = {nameof(Hospital.UTI_Neonatal)} - {transferenciaSelecionada.UTI_Neonatal}, " + $"{nameof(Hospital.Emergencia)} ={nameof(Hospital.Emergencia)} - {transferenciaSelecionada.Emergencia} " + $"WHERE {nameof(Hospital.ID_Hospital)} == {transferenciaSelecionada.ID_Hospital_Destino}"; db.UpdateQuery(queryLeitos); } string novoStatus = e.ClickedItem.Text == ACAO.Aprovar.ToString() ? "a" : "r"; string query = $"UPDATE {nameof(Transferencias)} SET {nameof(Transferencias.Status)} = '{novoStatus}' WHERE {nameof(Transferencias.ID_Transferencia)} = {transferenciaSelecionada.ID_Transferencia} "; db.UpdateQuery(query); } } this.FormGerenciaTransferencias_Load(null, null); }