/// <summary>
    /// Enviar comentario
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void sendButton_Click(object sender, EventArgs e)
    {
        try
        {
            String sql, strComment, segmentType = string.Empty, codLevels = string.Empty;
            string codSegm = string.Empty, codType = string.Empty, codLevel = string.Empty, seqLevel = string.Empty, seqLevelT = string.Empty; //,codMot=string.Empty;
            bool   edit = false;
            //vfin = false;
            Level    resultLevel = new Level();
            int      res;
            DataView dt = new DataView();

            strComment = txtComment.Text.Replace("'", "''");


            if (strComment.Equals(""))
            {
                wucMessageControl.Message = "Debe de proveer un comentario";
                wucMessageControl.ShowPopup();
            }
            else
            {
                /*Obtener las filas para insertar en el Logs*/
                dsIncidentNotification.OperationsLogsDataTable dtIncidentLogs = new dsIncidentNotification.OperationsLogsDataTable();
                dsIncidentNotificationTableAdapters.OperationsLogsTableAdapter taIncidentLogs = new dsIncidentNotificationTableAdapters.OperationsLogsTableAdapter();

                taIncidentLogs.FillByCodIncidence(dtIncidentLogs, Convert.ToInt16(hidIncidentNumber.Value));

                /*Obtener código de motivo de Validación*/
                dsIncidentNotification.IN_CAT_MOTIVESDataTable dtMotive = new dsIncidentNotification.IN_CAT_MOTIVESDataTable();
                dsIncidentNotificationTableAdapters.IN_CAT_MOTIVESTableAdapter taMotive = new dsIncidentNotificationTableAdapters.IN_CAT_MOTIVESTableAdapter();


                /**Segmento de código para verificar si se hace modificación en segmentos y tipos*/
                //if (trSegment.Visible == true && trType.Visible == true && trStatus.Visible == true)
                if (trSegment.Visible == true && trType.Visible == true)
                {
                    segmentType = string.Format(",COD_SEGMENT={0},COD_TYPE={1} ", ddlSegment.SelectedValue, ddlType.SelectedValue);
                    codSegm     = ddlSegment.SelectedValue;
                    codType     = ddlType.SelectedValue;

                    //El id de la secuencia del nivel del registro actual
                    resultLevel.GetLevelRec(decimal.Parse(dtIncidentLogs[0]["COD_LEVEL"].ToString()));
                    seqLevel  = resultLevel.LevelsTable.Rows[0]["LEVEL_SEQUENCE"].ToString();
                    codLevels = resultLevel.LevelsTable.Rows[0]["COD_LEVEL"].ToString(); //código del nivel

                    //Niveles del tipo seleccionado
                    resultLevel.GetLevelsType(decimal.Parse(ddlType.SelectedValue.ToString()));
                    foreach (DataRow item in resultLevel.LevelsTable.Rows)
                    {
                        seqLevelT = item["LEVEL_SEQUENCE"].ToString();
                        if (seqLevel == seqLevelT)
                        {
                            break;
                        }
                    }

                    if (seqLevelT != seqLevel)//(seqLevelT != seqLevel)
                    {
                        codLevel = codLevelChg;
                    }
                    else
                    {
                        codLevel = resultLevel.GetCodLevelTypeLevel(decimal.Parse(ddlType.SelectedValue.ToString()), decimal.Parse(seqLevel)).ToString();
                    }

                    //codLevel= codLevelChg;

                    /*if (ddlStatus.SelectedItem.Text.ToString().ToUpper().Contains("FIN"))
                     *  vfin = true;
                     */
                    edit = true;
                }



                taMotive.FillByOperations(dtMotive);
                decimal criticalityLevel = 0;
                if (!string.IsNullOrEmpty(dtIncidentLogs[0]["CRITICALITY"].ToString()))
                {
                    criticalityLevel = decimal.Parse(dtIncidentLogs[0]["CRITICALITY"].ToString());
                }

                sql = "DECLARE\n" +
                      "        cod_incidence_log DECIMAL;\n" +
                      "        message VARCHAR2(500);\n" +
                      "BEGIN\n";

                /* sql += "UPDATE IN_INCIDENCES\n" +
                 * /*   string.Format("SET COD_MOTIVE = {0}, \"MONITORING\" = '{1}'" /*+ ((vfin) ? " ,END_DATE=sysdate ": " "), ((edit) ? ddlStatus.SelectedValue : dtMotive.Rows[0][0], strComment) + segmentType + ((edit) ? string.Format(",COD_LEVEL={0}", codLevel) : "") +
                 * "\nWHERE COD_INCIDENCE = " + dtIncidentLogs[0]["COD_INCIDENCE"] + ";\n";*/

                sql += "UPDATE IN_INCIDENCES\n" +
                       string.Format("SET COD_MOTIVE = {0}, \"MONITORING\" = :Monitoring", dtMotive.Rows[0][0]) + segmentType + ((edit) ? string.Format(",COD_LEVEL={0}", codLevel) : "") +
                       "\nWHERE COD_INCIDENCE = " + dtIncidentLogs[0]["COD_INCIDENCE"] + ";\n";


                sql += "SELECT COD_INCIDENCE_LOG_SEQ.NEXTVAL INTO cod_incidence_log FROM DUAL;\n" +
                       "INSERT INTO IN_INCIDENCE_LOGS (COD_INCIDENCE_LOG,COD_INCIDENCE, COD_LEVEL, COD_MOTIVE, COD_SEGMENT, COD_TYPE, DESCRIPTION,INCIDENCE_CAUSE, \"MONITORING\",LOG_DATE, USERNAME, IS_LEVEL_CHANGE_LOG, RECEIVED_CALLS, SCRIPT, TYPOLOGY,CRITICALITY,IN_COUNTRY_PK,SUBJECT,MAINTENANCE)\n" +
                       String.Format("VALUES (cod_incidence_log,{7},{0},{1},{2},{3},'{4}','{5}',:Monitoring,sysdate,'{6}','N',{8},'{9}','{10}',{11},{12},'{13}','{14}');\n",
                                     (edit) ? codLevel : dtIncidentLogs[0]["COD_LEVEL"], /*((edit)? ddlStatus.SelectedValue:*/ dtMotive.Rows[0][0].ToString().Replace("'", "''"), (edit) ? codSegm : dtIncidentLogs[0]["COD_SEGMENT"], (edit) ? codType : dtIncidentLogs[0]["COD_TYPE"], dtIncidentLogs[0]["DESCRIPTION"].ToString().Replace("'", "''"), dtIncidentLogs[0]["INCIDENCE_CAUSE"].ToString().Replace("'", "''"),
                                     SafetyPad.GetUserLogin(), dtIncidentLogs[0]["COD_INCIDENCE"], dtIncidentLogs[0]["RECEIVED_CALLS"], dtIncidentLogs[0]["SCRIPT"].ToString().Replace("'", "''"), dtIncidentLogs[0]["TYPOLOGY"].ToString().Replace("'", "''"), criticalityLevel, dtIncidentLogs[0]["IN_COUNTRY_PK"], dtIncidentLogs[0]["SUBJECT"], dtIncidentLogs[0]["MAINTENANCE"]);

                sql += "\nCOMMIT;\nSELECT IN_OPERATIONS_API.INCIDENCE_REPORT_SENT_FUN(cod_incidence_log) INTO message FROM DUAL; ";
                sql += "\nEND;";

                try
                {
                    res = ConfigurationTool.ExecQueryParam(sql, strComment);
                    taMotive.FillByOperations(dtMotive);
                    /*taMotive.FillByCodMotive(dtMotive,decimal.Parse (ddlStatus.SelectedValue.ToString()));*/
                    lblState.Text = dtMotive.Rows[0][1].ToString();
                    populateGridComments(Convert.ToInt16(hidIncidentNumber.Value));
                    //txtIncident_TextChanged(null, null);
                    wucMessageControl.Message = "La notificaci&oacute;n se realiz&oacute; correctamente!";
                    wucMessageControl.Title   = "Mensaje";
                    wucMessageControl.Image   = "../include/imagenes/info_32.png";
                    wucMessageControl.ShowPopup();
                    txtComment.Text = String.Empty;

                    /*if (vfin)
                     * {
                     *  ddlSegment.Enabled = false;
                     *  ddlType.Enabled = false;
                     *  //ddlStatus.Enabled = false;
                     *  txtComment.Enabled = false;
                     *  sendButton.Enabled = false;
                     * }*/
                }
                catch (Exception ex)
                {
                    wucMessageControl.Message = ex.Message;
                    wucMessageControl.Title   = "Error";
                    wucMessageControl.Image   = "../include/imagenes/error_32.png";
                    SafetyPad.SetLogRecord("Operations.aspx.cs", ex.ToString());
                    wucMessageControl.ShowPopup();
                }
            }
        }
        catch (Exception ex)
        {
            SafetyPad.SetLogRecord("Operations.aspx.cs", ex.ToString());
        }
    }
    protected void txtIncident_TextChanged(object sender, EventArgs e)
    {
        try
        {
            Int16     l_noincident = Convert.ToInt16(((TextBox)sender).Text.Split('-')[0]);
            Solucion  result       = new Solucion();
            Segment   resp         = new Segment();
            Level     resultLevel  = new Level();
            DataTable myResult     = new DataTable();
            String    seqLevelT    = string.Empty;
            decimal   codSegm      = 0;
            decimal   codType      = 0;

            dsIncidentNotification.IN_CAT_MOTIVESDataTable dtMotives = new dsIncidentNotification.IN_CAT_MOTIVESDataTable();
            dsIncidentNotificationTableAdapters.IN_CAT_MOTIVESTableAdapter taMotives = new dsIncidentNotificationTableAdapters.IN_CAT_MOTIVESTableAdapter();

            taMotives.FillByIncidence(dtMotives, l_noincident);

            hidIncidentNumber.Value = l_noincident.ToString();

            if (dtMotives.Rows.Count > 0)
            {
                trState.Visible   = true;
                trSegment.Visible = true;
                trType.Visible    = true;
                //trStatus.Visible = true;

                //Se obtiene los valores, código segmento, código tipo y país.
                myResult = result.GetSegmentType(decimal.Parse(hidIncidentNumber.Value));
                if (myResult != null)
                {
                    //se guardan en variables
                    hdfCountry.Value = myResult.Rows[0]["IN_COUNTRY_PK"].ToString();
                    codSegm          = decimal.Parse(myResult.Rows[0]["COD_SEGMENT"].ToString());
                    codType          = decimal.Parse(myResult.Rows[0]["COD_TYPE"].ToString());

                    //Se obtienene solamente los segmentos según el país de la incidencia
                    resp.GetSegmentsByCountryAct(decimal.Parse(hdfCountry.Value));

                    //Se llena el combo de segmentos
                    ddlSegment.DataSource     = resp.SegmentsTable.Select("RECORD_STATUS = 1");;
                    ddlSegment.DataValueField = resp.SegmentsTable.COD_SEGMENTColumn.ColumnName;
                    ddlSegment.DataTextField  = resp.SegmentsTable.SEGMENT_NAMEColumn.ColumnName;



                    //Se le asigna el valor del segmento al combo
                    ddlSegment.SelectedValue = codSegm.ToString();
                    ddlSegment_SelectedIndexChanged(null, null); //Se cargan los tipos según el segmento seleccionado
                    try
                    {
                        ddlType.SelectedValue = codType.ToString(); //Se asigna el valor del tipo
                    }
                    catch
                    { }
                    if (String.IsNullOrEmpty(ddlType.SelectedValue.ToString()))
                    {
                        codLevelChg = resultLevel.GetCodLevelType(decimal.Parse(ddlType.SelectedValue)).ToString();
                    }
                    else
                    {
                        codLevelChg = "0";
                    }
                }

                //Verificar si están todas las configuraciones para mostrar los datos de Segmento y Tipo
                VerifyEditSegmentType();

                lblState.Text = dtMotives.Rows[0][1].ToString();
                populateGridComments(l_noincident);


                if (lblState.Text.Trim().Contains("FIN"))
                {
                    txtComment.Enabled = false;
                    sendButton.Enabled = false;
                    ddlSegment.Enabled = false;
                    ddlType.Enabled    = false;
                    //trStatus.Visible = false;
                }
                else
                {
                    txtComment.Enabled = true;
                    sendButton.Enabled = true;
                    ddlSegment.Enabled = true;
                    ddlType.Enabled    = true;
                    // trStatus.Visible = true;
                }
            }
            else
            {
                trState.Visible = false;
            }
        }
        catch (Exception ex)
        { }
    }