chiccosimo ha scritto:
posta un pò di codice così è un pò difficile aiutarti.
Metodo eseguito dall'evento OnSelectedIndexChangedprotected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
//Mostro il Pannello dell'operatore
PanelDettaglioChiamata.Visible = true;
//imposto la connessione al DB
string StringaConnessione = WebConfigurationManager.ConnectionStrings["IntranetConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(StringaConnessione);
string SQLDettagliRichiesta = "SELECT RICHIESTE_ASSISTENZA.ID_RICHIESTA, RICHIESTE_ASSISTENZA.DATA_APERTURA, RICHIESTE_ASSISTENZA.UTENTE, RICHIESTE_ASSISTENZA.PC, ";
SQLDettagliRichiesta += "RICHIESTE_ASSISTENZA.DESCRIZIONE_RICHIESTA, RICHIESTE_ASSISTENZA.PRIORITA, RICHIESTE_ASSISTENZA.PRESA_IN_CARICO, RICHIESTE_ASSISTENZA.STADIO, STANZE.DESCRIZIONE_STANZA, STANZE.INTERNO, STANZE.PIANO, ";
SQLDettagliRichiesta += "REPARTI.DESCRIZIONE_REPARTO, STRUTTURE.DESCRIZIONE_STRUTTURA FROM RICHIESTE_ASSISTENZA INNER JOIN ";
SQLDettagliRichiesta += "STRUTTURE ON RICHIESTE_ASSISTENZA.IDSTRUTTURA = STRUTTURE.ID_STRUTTURA INNER JOIN ";
SQLDettagliRichiesta += "REPARTI ON RICHIESTE_ASSISTENZA.REPARTO = REPARTI.ID_REPARTO INNER JOIN ";
SQLDettagliRichiesta += "STANZE ON RICHIESTE_ASSISTENZA.POSIZIONE = STANZE.ID_STANZA ";
SQLDettagliRichiesta += "WHERE RICHIESTE_ASSISTENZA.ID_RICHIESTA=@PrID_RICHIESTA";
//RECUPERO L'ID DELLA RICHIESTA DI ASSISTENZA
var ID = GridView1.SelectedDataKey.Value.ToString();
SqlCommand cmd = new SqlCommand(SQLDettagliRichiesta, conn);
SqlDataReader reader;
// Aggiungo il parametro per recuperare i dati
cmd.Parameters.AddWithValue("@PrID_RICHIESTA", ID);
//prova ad aprire la connessione col DB
try
{
conn.Open();
reader = cmd.ExecuteReader();
reader.Read();
LblUtente.Text = reader["UTENTE"].ToString();
LblIdRichiesta.Text = reader["ID_RICHIESTA"].ToString();
LblDataApertura.Text = reader["DATA_APERTURA"].ToString();
LblPc.Text = reader["PC"].ToString();
txtRichiesta.Text = reader["DESCRIZIONE_RICHIESTA"].ToString();
LblStanza.Text = reader["DESCRIZIONE_STANZA"].ToString();
LblReparto.Text = reader["DESCRIZIONE_REPARTO"].ToString();
LblInterno.Text = reader["INTERNO"].ToString();
LblPiano.Text = reader["PIANO"].ToString();
DrDnElencoPriorita.SelectedValue = reader["PRIORITA"].ToString();
if (reader["PRESA_IN_CARICO"].ToString() == User.Identity.Name.ToUpper().ToString())
{
CheckBoxCaricoChiamata.Checked = true;
}
else
{
CheckBoxCaricoChiamata.Checked = false;
}
if (reader["STADIO"].ToString() != null)
{
DrDnStadioRichiesta.SelectedValue = reader["STADIO"].ToString();
}
reader.Close();
}
catch (Exception err)
{
errore.Text = "Errore nel recuperare i dati.";
errore.Text += err.Message;
errore.Text += err.Source;
}
finally
{
conn.Close();
}
}
Metodo Eseguito quando L'ID arriva tramite http protected void DettagliRichiesta(string strQueryStringvalue)
{
if (strQueryStringvalue != null)
{
string ID = strQueryStringvalue;
//Mostro il Pannello dell'operatore
PanelDettaglioChiamata.Visible = true;
//imposto la connessione al DB
string StringaConnessione = WebConfigurationManager.ConnectionStrings["IntranetConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(StringaConnessione);
string SQLDettagliRichiesta = "SELECT RICHIESTE_ASSISTENZA.ID_RICHIESTA, RICHIESTE_ASSISTENZA.DATA_APERTURA, RICHIESTE_ASSISTENZA.UTENTE, RICHIESTE_ASSISTENZA.PC, ";
SQLDettagliRichiesta += "RICHIESTE_ASSISTENZA.DESCRIZIONE_RICHIESTA, RICHIESTE_ASSISTENZA.PRIORITA, RICHIESTE_ASSISTENZA.PRESA_IN_CARICO, RICHIESTE_ASSISTENZA.STADIO, STANZE.DESCRIZIONE_STANZA, STANZE.INTERNO, STANZE.PIANO, ";
SQLDettagliRichiesta += "REPARTI.DESCRIZIONE_REPARTO, STRUTTURE.DESCRIZIONE_STRUTTURA FROM RICHIESTE_ASSISTENZA INNER JOIN ";
SQLDettagliRichiesta += "STRUTTURE ON RICHIESTE_ASSISTENZA.IDSTRUTTURA = STRUTTURE.ID_STRUTTURA INNER JOIN ";
SQLDettagliRichiesta += "REPARTI ON RICHIESTE_ASSISTENZA.REPARTO = REPARTI.ID_REPARTO INNER JOIN ";
SQLDettagliRichiesta += "STANZE ON RICHIESTE_ASSISTENZA.POSIZIONE = STANZE.ID_STANZA ";
SQLDettagliRichiesta += "WHERE RICHIESTE_ASSISTENZA.ID_RICHIESTA=@PrID_RICHIESTA";
SqlCommand cmd = new SqlCommand(SQLDettagliRichiesta, conn);
SqlDataReader reader;
// Aggiungo il parametro per recuperare i dati
cmd.Parameters.AddWithValue("@PrID_RICHIESTA", ID);
//prova ad aprire la connessione col DB
try
{
conn.Open();
reader = cmd.ExecuteReader();
reader.Read();
LblUtente.Text = reader["UTENTE"].ToString();
LblIdRichiesta.Text = reader["ID_RICHIESTA"].ToString();
LblDataApertura.Text = reader["DATA_APERTURA"].ToString();
LblPc.Text = reader["PC"].ToString();
txtRichiesta.Text = reader["DESCRIZIONE_RICHIESTA"].ToString();
LblStanza.Text = reader["DESCRIZIONE_STANZA"].ToString();
LblReparto.Text = reader["DESCRIZIONE_REPARTO"].ToString();
LblInterno.Text = reader["INTERNO"].ToString();
LblPiano.Text = reader["PIANO"].ToString();
DrDnElencoPriorita.SelectedValue = reader["PRIORITA"].ToString();
if (reader["PRESA_IN_CARICO"].ToString() == User.Identity.Name.ToUpper().ToString())
{
CheckBoxCaricoChiamata.Checked = true;
}
else
{
CheckBoxCaricoChiamata.Checked = false;
}
if (reader["STADIO"].ToString() != null)
{
DrDnStadioRichiesta.SelectedValue = reader["STADIO"].ToString();
}
reader.Close();
}
catch (Exception err)
{
errore.Text = "Errore nel recuperare i dati.";
errore.Text += err.Message;
errore.Text += err.Source;
}
finally
{
conn.Close();
}
}
}
come puoi vedere il codice è lo stesso cambia solo la prima parte del metodo
Codice che elabora la richiesta Una volta premuto il pulsante protected void OnButtonClick_SalvaModifiche(object Sender, EventArgs e)
{
//imposto la connessione al DB
string StringaConnessione = WebConfigurationManager.ConnectionStrings["IntranetConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(StringaConnessione);
var DataChiusura = DateTime.Now.ToString();
string SqlAggiornaRichiesta = "";
string SqlTimer = ""; // query eseguita per tenere traccia del tempo impiegato per la lavorazione di una richesta
string SqlTimerDurata = "UPDATE TIMER_RICHIESTE SET DURATA = @PrDurata WHERE ID_RICHIESTA = @PrIdRichiesta"; //query da eseguire dopo la sospensione
string SqlInserisciStorico = "INSERT INTO CRONOLOGIA (UTENTE, DATA_OPERAZIONE, OPERATORE, NOTE_OPERATORE, POSTAZIONE, ID_RICHIESTA_ASSISTENZA) ";
SqlInserisciStorico += "VALUES(@PrUtente, @PrDataChiusura, @PrOperatoreHelpDesk, @PrNoteOperatore, @PrPostazione, @PrIdRichiesta)";
//Preparo la Query per aggiornare i record e verifico se la chiamata è stata chiusa
// 0 = chiusa, 1 = aperta
string StatoRichiesta = DrDnStatoRichiesta.SelectedValue.ToString();
switch (StatoRichiesta)
{
case "0":
SqlAggiornaRichiesta = "UPDATE RICHIESTE_ASSISTENZA SET DATA_CHIUSURA=@PrDataChiusura, PRIORITA=@PrPriorita, STATO_RICHIESTA=@PrStatoRichiesta, OPERATORE_HELPDESK=@PrOperatoreHelpdesk, PRIORITA_ASSEGNATA=@PrPrioritaAssegnata, NOTE_OPERATORE=@PrNoteOperatore, PRESA_IN_CARICO=@PrPresaInCarico, STADIO=@PrStadio WHERE ID_RICHIESTA=@PrIdRichiesta";
break;
case "1":
SqlAggiornaRichiesta = "UPDATE RICHIESTE_ASSISTENZA SET PRIORITA=@PrPriorita, STATO_RICHIESTA=@PrStatoRichiesta, OPERATORE_HELPDESK=@PrOperatoreHelpdesk, PRIORITA_ASSEGNATA=@PrPrioritaAssegnata, NOTE_OPERATORE=@PrNoteOperatore, PRESA_IN_CARICO=@PrPresaInCarico, STADIO=@PrStadio WHERE ID_RICHIESTA=@PrIdRichiesta";
break;
}
// controllo sul tipo di selezione effettuata sul controllo DrDnStadioRichiesta per iniziare o fermare il calcolo del tempo impiegato
string Scelta = DrDnStadioRichiesta.SelectedValue.ToString();
switch (Scelta)
{
case "2":
SqlTimer = "INSERT INTO TIMER_RICHIESTE (ID_RICHIESTA, DATA_INIZIO, IN_SOSPESO) VALUES (@PrIdRichiesta, @PrDatainizio, @PrFlagFalse)";
break;
case "3":
SqlTimer = "UPDATE TIMER_RICHIESTE SET DATA_SOSPENSIONE = @PrDataSospensione, IN_SOSPESO = @PrFlag WHERE ID_RICHIESTA = @PrIdRichiesta";
break;
}
SqlCommand cmd = new SqlCommand(SqlAggiornaRichiesta, conn);
SqlCommand cmdArchivio = new SqlCommand(SqlInserisciStorico, conn);
SqlCommand cmdTimer = new SqlCommand(SqlTimer, conn);
SqlCommand cmdTimerDurata = new SqlCommand(SqlTimerDurata, conn);
//Imposto i parametri per la query di aggiornamento
cmd.Parameters.AddWithValue("@PrDataChiusura", DataChiusura);
cmd.Parameters.AddWithValue("@PrPriorita", DrDnElencoPriorita.SelectedValue);
cmd.Parameters.AddWithValue("@PrStatoRichiesta", DrDnStatoRichiesta.SelectedValue);
cmd.Parameters.AddWithValue("@PrOperatoreHelpdesk", User.Identity.Name.ToUpper());
cmd.Parameters.AddWithValue("@PrPrioritaAssegnata", DrDnElencoPriorita.SelectedValue);
cmd.Parameters.AddWithValue("@PrNoteOperatore", TxtNoteOperatore.Text);
cmd.Parameters.AddWithValue("@PrIdRichiesta", LblIdRichiesta.Text);
cmd.Parameters.AddWithValue("@PrUtente", LblUtente.Text);
cmd.Parameters.AddWithValue("@PrPostazione", LblStanza.Text);
if (CheckBoxCaricoChiamata.Checked)
{
cmd.Parameters.AddWithValue("@PrPresaInCarico", User.Identity.Name.ToUpper());
}
else if (DrDnInoltroChiamata.SelectedValue == "...Seleziona")
{
cmd.Parameters.AddWithValue("@PrPresaIncarico", "");
}
else
{
cmd.Parameters.AddWithValue("PrPresaInCarico", DrDnInoltroChiamata.SelectedValue);
}
cmd.Parameters.AddWithValue("@PrStadio", DrDnStadioRichiesta.SelectedValue);
//Parametri per la query del timer
cmdTimer.Parameters.AddWithValue("@PrIdRichiesta", LblIdRichiesta.Text);
cmdTimer.Parameters.AddWithValue("@PrDataInizio", DataChiusura);
cmdTimer.Parameters.AddWithValue("@PrDataSospensione", DataChiusura);
cmdTimer.Parameters.AddWithValue("@PrDataFine", DataChiusura);
cmdTimer.Parameters.AddWithValue("@PrFlag", true);
cmdTimer.Parameters.AddWithValue("@PrFlagFalse", false);
cmdArchivio.Parameters.AddWithValue("@PrUtente", LblUtente.Text);
cmdArchivio.Parameters.AddWithValue("@PrDataChiusura", DataChiusura);
cmdArchivio.Parameters.AddWithValue("@PrOperatoreHelpdesk", User.Identity.Name.ToUpper());
if (DrDnStatoRichiesta.SelectedValue == "0")
{
if (TxtNoteOperatore.Text != "")
{
cmdArchivio.Parameters.AddWithValue("@PrNoteOperatore", "Richiesta Chiusa. " + TxtNoteOperatore.Text);
}
else
{
cmdArchivio.Parameters.AddWithValue("@PrNoteOperatore", "Richiesta Chiusa.");
}
}
else
{
cmdArchivio.Parameters.AddWithValue("@PrNoteOperatore", TxtNoteOperatore.Text);
}
cmdArchivio.Parameters.AddWithValue("@PrPostazione", LblStanza.Text);
cmdArchivio.Parameters.AddWithValue("@PrIdRichiesta", LblIdRichiesta.Text);
//prova ad aprire la connessione col DB
try
{
conn.Open();
cmd.ExecuteNonQuery();
cmdArchivio.ExecuteNonQuery();
// Controllo lo stato impostato sulla richiesta
switch (Scelta)
{
case "2":
cmdTimer.ExecuteNonQuery();
break;
case "3":
cmdTimer.ExecuteNonQuery();
cmdTimerDurata.Parameters.AddWithValue("@PrDurata", DurataAttivita(LblIdRichiesta.Text));
cmdTimerDurata.Parameters.AddWithValue("@PrIdRichiesta", LblIdRichiesta.Text);
cmdTimerDurata.ExecuteNonQuery();
break;
}
}
catch (Exception err)
{
errore.Visible = true;
errore.Text = "Errori durante la query di aggiornamento. ";
errore.Text += err.Message;
}
finally
{
conn.Close();
errore.Visible = false;
PanelDettaglioChiamata.Visible = false;
GridView1.DataBind();
Response.Redirect("~/Richieste/Admin/ElencoAssistenza.aspx");
}
}
}