using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using Newtonsoft; using Newtonsoft.Json.Linq; using Extensiones; using System.Text.RegularExpressions; //using Microsoft.Office.Interop.Excel; //using Excel = Microsoft.Office.Interop.Excel; //using Microsoft.Office.Core; using System.IO; using GemBox.Spreadsheet; public partial class GPS_RepPasajero : ClsPaginas { #region "P R O P I E D A D E S" private DataTable DtVueltas { get { return ((DataTable)(ViewState["DtVueltas"])); } set { ViewState["DtVueltas"] = value; } } private DataTable DtVueltasCostos { get { return ((DataTable)(ViewState["DtCostos"])); } set { ViewState["DtCostos"] = value; } } private DataTable DtKilometros { get { return ((DataTable)(ViewState["DtKilometros"])); } set { ViewState["DtKilometros"] = value; } } private DataTable DtKilometrosCostos { get { return ((DataTable)(ViewState["DtKilometrosCostos"])); } set { ViewState["DtKilometrosCostos"] = value; } } private DataTable DtDriving { get { return ((DataTable)(ViewState["DtDriving"])); } set { ViewState["DtDriving"] = value; } } #endregion //protected override void Page_PreInit(object sender, EventArgs e) //{ // MasterPageFile = "~/Masters/SiteGPS2.master"; //} protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { CargaGrupos(); CargaFecha(); UPFiltros.Update(); } } private void CargaGrupos() { ClsGPS ObjGPS = new ClsGPS(); if (ObjGPS.GruposGet(-1, UsuarioActual.CveCliente)) { DdlGrupo.DataSource = ObjGPS.DtResultados; } ObjGPS.Dispose(); DdlGrupo.DataBind(); } private void CargaFecha() { txtFechaI.Text = $"01/{DateTime.Now.ToString("MM")}/{DateTime.Now.Year} 00:00"; txtFechaF.Text = $"{DateTime.Now.ToString("dd/MM/yyyy")} 23:59"; } protected void BtnConsultar_Click(object sender, EventArgs e) { CargaDatos(); } private void CargaDatos() { int CveGrupo = DdlGrupo.SelectedValue.ToEntero(); if (CveGrupo > -2) { DateTime FechaI = txtFechaI.Text.ToDateTime(); DateTime FechaF = txtFechaF.Text.ToDateTime(); if (FechaF > FechaI) { using (ClsGPS ObjGPS = new ClsGPS()) { if (ObjGPS.GetRepPasajeros(CveGrupo, FechaI, FechaF, UsuarioActual.CveCliente)) { if (ObjGPS.DtSetResultados.Tables.Count > 0) { DtVueltas = ObjGPS.DtSetResultados.Tables[0]; DtVueltasCostos = ObjGPS.DtSetResultados.Tables[1]; DtKilometros = ObjGPS.DtSetResultados.Tables[2]; DtKilometrosCostos = ObjGPS.DtSetResultados.Tables[3]; DtDriving = ObjGPS.DtSetResultados.Tables[4]; CreaPlantillaVueltas(DtVueltas); CreaPlantillaCostos(DtVueltasCostos); CreaPlantillaKilometros(DtKilometros); CreaPlantillaKilometrosCostos(DtKilometrosCostos); CreaPlantillaDriving(DtDriving); GvVueltas.DataSource = DtVueltas; GvCostos.DataSource = DtVueltasCostos; GvKilometros.DataSource = DtKilometros; GvKilometrosCosto.DataSource = DtKilometrosCostos; GvDriving.DataSource = DtDriving; GvModalEditar.DataSource = DtVueltas.FiltraParametros("CveDispositivo > 0", "", new string[] { "CveDispositivo", "NoEconomico" }); GvModalKilometros.DataSource = DtKilometros.FiltraParametros("CveDispositivo > 0", "", new string[] { "CveDispositivo", "NoEconomico" }); GvVueltas.DataBind(); GvCostos.DataBind(); GvKilometros.DataBind(); GvKilometrosCosto.DataBind(); GvDriving.DataBind(); GvModalEditar.DataBind(); GvModalKilometros.DataBind(); CargaGraficaKilometros(); //CargaGrafica(); divContenido.Visible = true; //HpGrafica.Visible = true; LnkExportaExcel.Visible = true; } } } CargaGraficaEventos(); } else { GvVueltas.DataSource = null; GvCostos.DataSource = null; GvKilometros.DataSource = null; GvKilometrosCosto.DataSource = null; GvDriving.DataSource = null; GvVueltas.DataBind(); GvCostos.DataBind(); GvKilometros.DataBind(); GvKilometrosCosto.DataBind(); GvDriving.DataBind(); Alert("La 'Fecha Fin' debe ser mayor a la 'Fecha Inicio'.Favor de corregirlo.", ModExtensiones.TipoMensaje.MsgAdvertencia); } } else { Alert("Debe seleccionar un grupo.", ModExtensiones.TipoMensaje.MsgAdvertencia); } UpDatos.Update(); UpModalEditar.Update(); UpModalKilometros.Update(); UpModalGraficaKilometros.Update(); UpGraficaEventos.Update(); } //private void CargaGrafica() //{ // if (DtVueltas != null && DtVueltasCostos != null && DtKilometros != null && DtKilometrosCostos != null) // { // var DtVuelta = GenerateTransposedTable(DtVueltas.FiltraParametros("CveDispositivo IS NULL ")).FiltraParametros("CveDispositivo NOT IN('NoEconomico','PROMEDIO')"); // var DtCosto = GenerateTransposedTable(DtVueltasCostos.FiltraParametros("CveDispositivo IS NULL ")).FiltraParametros("CveDispositivo NOT IN('NoEconomico','PROMEDIO')"); // var DtKilo = GenerateTransposedTable(DtKilometros.FiltraParametros("CveDispositivo IS NULL ")).FiltraParametros("CveDispositivo NOT IN('NoEconomico','PROMEDIO')"); // var DtKiloCosto = GenerateTransposedTable(DtKilometrosCostos.FiltraParametros("CveDispositivo IS NULL ")).FiltraParametros("CveDispositivo NOT IN('NoEconomico','PROMEDIO')"); // var datosVueltas = new JArray() // { // from d in DtVuelta.AsEnumerable() // select d["Column1"].ToString().ToDecimal() // }; // var datosCostos = new JArray() // { // from d in DtCosto.AsEnumerable() // select d["Column1"].ToString().ToDecimal() // }; // var datosKilo = new JArray() // { // from d in DtKilo.AsEnumerable() // select d["Column1"].ToString().ToDecimal() // }; // var datosKiloCosto = new JArray() // { // from d in DtKiloCosto.AsEnumerable() // select d["Column1"].ToString().ToDecimal() // }; // var series = new JArray() // { // new JObject() // { // new JProperty("name","KILOMETROS RECORRIDOS (KM)"), // new JProperty("data",datosKilo), // new JProperty("color","#F10D0D") // }, // new JObject() // { // new JProperty("name","COSTO DE VUELTAS (MXN)"), // new JProperty("data",datosCostos), // new JProperty("color","#A4A4A4") // }, // new JObject() // { // new JProperty("name","NUMERO DE VUELTAS"), // new JProperty("data",datosVueltas), // new JProperty("color","#2E64FE") // }, // new JObject() // { // new JProperty("name","COSTO DE KILOMETROS RECORRIDOS (MXN)"), // new JProperty("data",datosKiloCosto), // new JProperty("color","#1BBC9B") // } // }; // var categories = new JArray() // { // from d in DtKilo.AsEnumerable() // select d["CveDispositivo"].ToString() // }; // var jsonGrafica = new JObject() // { // new JProperty("categories",categories), // new JProperty("series",series) // }; // HdnGraficaValores.Value = jsonGrafica.ToString(); // } //} private void CargaGraficaKilometros() { if (DtKilometros != null) { var DtKilo = DtKilometros.FiltraParametros("CveDispositivo IS NOT NULL"); var datosKilo = new JArray(); var categories = new JArray(); foreach (DataColumn dc in DtKilo.Columns) { if (!dc.ColumnName.Contiene("CveDispositivo", "NoEconomico", "PROMEDIO")) { categories.Add(dc.ColumnName); datosKilo.Add(DtKilo.SUM($"[{dc.ColumnName}]")); } } var series = new JArray() { new JObject() { new JProperty("name","KILOMETROS RECORRIDOS (KM)"), new JProperty("data",datosKilo), new JProperty("color","#4B77BE") } }; var jsonGrafica = new JObject() { new JProperty("categories",categories), new JProperty("series",series) }; HdnGraficaKilometros.Value = jsonGrafica.ToString(); } } private void CargaGraficaEventos() { using (var ObjGPS = new ClsGPS()) { if (ObjGPS.GetRepEventosDetalle(DdlGrupo.SelectedValue.ToEntero(), -1, txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), UsuarioActual.CveCliente, 5)) { var DtEventos = ObjGPS.DtResultados.FiltraParametros("CveEvento IS NOT NULL"); var datosKilo = new JArray(); var categories = new JArray(); foreach (DataRow Row in DtEventos.Rows) { categories.Add(Row["Evento"].ToString()); datosKilo.Add(Row["Total"].ToString().ToEntero()); } var series = new JArray() { new JObject() { new JProperty("name","Eventos Ocurridos"), new JProperty("data",datosKilo), new JProperty("color","#4B77BE") } }; var jsonGrafica = new JObject() { new JProperty("categories",categories), new JProperty("series",series) }; HdnGraficaEventos.Value = jsonGrafica.ToString(); } } } #region "P L A N T I L L A S - G R I D V I E W S" private void CreaPlantillaVueltas(DataTable DtVueltas) { int max = GvVueltas.Columns.Count - 1; for (int i = max; i > 0; i--) { GvVueltas.Columns.RemoveAt(i); } foreach (DataColumn DcVuelta in DtVueltas.Columns) { if (!DcVuelta.ColumnName.Contiene("CveDispositivo", "NoEconomico")) { BoundField bfield = new BoundField(); bfield.ItemStyle.HorizontalAlign = HorizontalAlign.Right; bfield.NullDisplayText = "-"; bfield.DataFormatString = "{0:N2}"; bfield.HeaderText = DcVuelta.ColumnName; bfield.DataField = DcVuelta.ColumnName; var existe = GvVueltas.Columns.Cast().Any(c => c.HeaderText == DcVuelta.ColumnName); if (!existe) { GvVueltas.Columns.Add(bfield); } } } } private void CreaPlantillaCostos(DataTable DtCostos) { int max = GvCostos.Columns.Count - 1; for (int i = max; i > 0; i--) { GvCostos.Columns.RemoveAt(i); } foreach (DataColumn DcCosto in DtCostos.Columns) { if (!DcCosto.ColumnName.Contiene("CveDispositivo", "NoEconomico")) { var arrayNames = DcCosto.ColumnName.Split('-'); BoundField bfield = new BoundField(); bfield.ItemStyle.HorizontalAlign = HorizontalAlign.Right; bfield.HeaderText = arrayNames[1]; bfield.NullDisplayText = "-"; bfield.DataFormatString = "{0:N2}"; bfield.DataField = DcCosto.ColumnName; var existe = GvCostos.Columns.Cast().Any(c => c.HeaderText == DcCosto.ColumnName); if (!existe) { GvCostos.Columns.Add(bfield); } } } GvCostos.ViewStateMode = ViewStateMode.Enabled; GvCostos.EnableViewState = true; } private void CreaPlantillaKilometros(DataTable DtKilom) { int max = GvKilometros.Columns.Count - 1; for (int i = max; i > 0; i--) { GvKilometros.Columns.RemoveAt(i); } foreach (DataColumn DcKilo in DtKilom.Columns) { if (!DcKilo.ColumnName.Contiene("CveDispositivo", "NoEconomico")) { BoundField bfield = new BoundField(); bfield.ItemStyle.HorizontalAlign = HorizontalAlign.Right; bfield.HeaderText = DcKilo.ColumnName; bfield.NullDisplayText = "-"; bfield.DataFormatString = "{0:N2}"; bfield.DataField = DcKilo.ColumnName; var existe = GvKilometros.Columns.Cast().Any(c => c.HeaderText == DcKilo.ColumnName); if (!existe) { GvKilometros.Columns.Add(bfield); } } } } private void CreaPlantillaKilometrosCostos(DataTable DtKilom) { int max = GvKilometrosCosto.Columns.Count - 1; for (int i = max; i > 0; i--) { GvKilometrosCosto.Columns.RemoveAt(i); } foreach (DataColumn DcCosto in DtKilom.Columns) { if (!DcCosto.ColumnName.Contiene("CveDispositivo", "NoEconomico")) { var arrayNames = DcCosto.ColumnName.Split('-'); BoundField bfield = new BoundField(); bfield.ItemStyle.HorizontalAlign = HorizontalAlign.Right; bfield.HeaderText = arrayNames[1]; bfield.NullDisplayText = "-"; bfield.DataFormatString = "{0:N2}"; bfield.DataField = DcCosto.ColumnName; var existe = GvKilometrosCosto.Columns.Cast().Any(c => c.HeaderText == DcCosto.ColumnName); if (!existe) { GvKilometrosCosto.Columns.Add(bfield); } } } } private void CreaPlantillaDriving(DataTable DtDriving) { int max = GvDriving.Columns.Count - 1; for (int i = max; i > 0; i--) { GvDriving.Columns.RemoveAt(i); } foreach (DataColumn DcEvento in DtDriving.Columns) { if (!DcEvento.ColumnName.Contiene("CveDispositivo", "NoEconomico")) { TemplateField TField = new TemplateField(); TField.ItemStyle.HorizontalAlign = HorizontalAlign.Right; //TField.ItemTemplate = new LinkTemplate(DcEvento.ColumnName); TField.HeaderText = DcEvento.ColumnName; var existe = GvDriving.Columns.Cast().Any(c => c.HeaderText == DcEvento.ColumnName); if (!existe) { GvDriving.Columns.Add(TField); } } } } protected void GvVueltas_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { switch (e.Row.DBCampo("NoEconomico")) { case "PROMEDIO": e.Row.CssClass = "Totales"; break; } } } protected void GvCostos_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { switch (e.Row.DBCampo("NoEconomico")) { case "PROMEDIO": e.Row.CssClass = "Totales"; break; } } } protected void GvKilometros_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { switch (e.Row.DBCampo("NoEconomico")) { case "PROMEDIO": e.Row.CssClass = "Totales"; break; } } } protected void GvKilometrosCosto_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { switch (e.Row.DBCampo("NoEconomico")) { case "PROMEDIO": e.Row.CssClass = "Totales"; break; } } } protected void GvDriving_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { switch (e.Row.DBCampo("NoEconomico")) { case "PROMEDIO": e.Row.CssClass = "Totales"; break; } for (int i = 0; i < DtDriving.Columns.Count; i++) { var DcDriving = DtDriving.Columns[i]; if (!DcDriving.ColumnName.Contiene("CveDispositivo", "NoEconomico")) { HyperLink hp = new HyperLink(); hp.ID = $"HpCosto{i}_{e.Row.RowIndex}"; hp.Text = e.Row.DBCampo(DcDriving.ColumnName).FormatoNumero(); if (string.IsNullOrEmpty(e.Row.DBCampo("CveDispositivo"))) { if (DcDriving.ColumnName.Contains("PROMEDIO")) { hp.NavigateUrl = $"javascript:CargaDetalleEventos({-1},'{DcDriving.ColumnName}',4);"; } else { hp.NavigateUrl = $"javascript:CargaDetalleEventos({-1},'{DcDriving.ColumnName}',2);"; ; } } else { if (DcDriving.ColumnName.Contains("PROMEDIO")) { hp.NavigateUrl = $"javascript:CargaDetalleEventos({e.Row.DBCampo("CveDispositivo")},'{DcDriving.ColumnName}',3);"; } else { hp.NavigateUrl = $"javascript:CargaDetalleEventos({e.Row.DBCampo("CveDispositivo")},'{DcDriving.ColumnName}',1);"; ; } hp.Style.Add("color", "black"); } e.Row.Cells[i - 1].Controls.Add(hp); } } } } protected void GvCostos_RowCreated(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.Header) { GridView Gv = (GridView)sender; GridViewRow HeaderRow = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert); HeaderRow.Width = new Unit($"100%"); decimal TotalRecorrer = (DtVueltasCostos.Columns.Count.ToString().ToDecimal() - 2m) / 3m; decimal porcentaje = (87.5m / TotalRecorrer); var EmptyCell = new TableCell(); EmptyCell.Text = ""; EmptyCell.HorizontalAlign = HorizontalAlign.Center; EmptyCell.Width = new Unit($"12.5%"); EmptyCell.Style.Add("border-right", "3px solid white"); EmptyCell.Style.Add("border-bottom", "3px solid white"); EmptyCell.Style.Add("border-top", "3px solid white"); EmptyCell.Style.Add("background-color", "white"); HeaderRow.Cells.Add(EmptyCell); for (int i = 2; i < DtVueltasCostos.Columns.Count; i += 3) { var DcCosto = DtVueltasCostos.Columns[i]; if (!DcCosto.ColumnName.Contains("PROMEDIO")) { var array = DcCosto.ColumnName.Split('-'); var FechaCell = new TableCell(); FechaCell.HorizontalAlign = HorizontalAlign.Center; FechaCell.ColumnSpan = 3; FechaCell.CssClass = "dataTables_scrollHead text-center bold"; FechaCell.Style.Add("border-right", "3px solid white"); FechaCell.Style.Add("background-color", "#95A5A6"); FechaCell.Style.Add("background-color", "#95A5A6"); FechaCell.Width = new Unit($"{porcentaje}%"); HyperLink hp = new HyperLink(); hp.NavigateUrl = $"javascript:CargaModal('{array[0]}')"; hp.Text = array[0]; FechaCell.Controls.Add(hp); HeaderRow.Cells.Add(FechaCell); } else { var array = DcCosto.ColumnName.Split('-'); var FechaCell = new TableCell(); FechaCell.Text = array[0]; FechaCell.ColumnSpan = 3; FechaCell.CssClass = "dataTables_scrollHead text-center bold"; FechaCell.Style.Add("border-right", "3px solid white"); FechaCell.Style.Add("background-color", "#95A5A6"); FechaCell.Style.Add("background-color", "#95A5A6"); FechaCell.Style.Add("color", "white"); FechaCell.Width = new Unit($"{porcentaje}%"); HeaderRow.Cells.Add(FechaCell); } } Gv.Controls[0].Controls.Add(HeaderRow); } } protected void GvKilometrosCosto_RowCreated(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.Header) { GridView Gv = (GridView)sender; //Table TableHeader = new Table(); //TableRow HeaderRow = new TableRow(); GridViewRow HeaderRow = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert); HeaderRow.Width = new Unit($"100%"); decimal TotalRecorrer = (DtVueltasCostos.Columns.Count.ToString().ToDecimal() - 2m) / 3m; decimal porcentaje = (87.5m / TotalRecorrer); var EmptyCell = new TableCell(); EmptyCell.Text = ""; EmptyCell.HorizontalAlign = HorizontalAlign.Center; EmptyCell.Width = new Unit($"12.5%"); EmptyCell.Style.Add("border-right", "3px solid white"); EmptyCell.Style.Add("border-bottom", "3px solid white"); EmptyCell.Style.Add("border-top", "3px solid white"); EmptyCell.Style.Add("background-color", "white"); HeaderRow.Cells.Add(EmptyCell); for (int i = 2; i < DtVueltasCostos.Columns.Count; i += 3) { var DcCosto = DtVueltasCostos.Columns[i]; if (!DcCosto.ColumnName.Contains("PROMEDIO")) { var array = DcCosto.ColumnName.Split('-'); var FechaCell = new TableCell(); FechaCell.HorizontalAlign = HorizontalAlign.Center; FechaCell.ColumnSpan = 3; FechaCell.CssClass = "dataTables_scrollHead text-center bold"; FechaCell.Style.Add("border-right", "3px solid white"); FechaCell.Style.Add("background-color", "#95A5A6"); FechaCell.Style.Add("background-color", "#95A5A6"); FechaCell.Width = new Unit($"{porcentaje}%"); HyperLink hp = new HyperLink(); hp.NavigateUrl = $"javascript:CargaModalKilometros('{array[0]}')"; hp.Text = array[0]; FechaCell.Controls.Add(hp); HeaderRow.Cells.Add(FechaCell); } else { var array = DcCosto.ColumnName.Split('-'); var FechaCell = new TableCell(); FechaCell.Text = array[0]; FechaCell.ColumnSpan = 3; FechaCell.CssClass = "dataTables_scrollHead text-center bold"; FechaCell.Style.Add("border-right", "3px solid white"); FechaCell.Style.Add("background-color", "#95A5A6"); FechaCell.Style.Add("background-color", "#95A5A6"); FechaCell.Style.Add("color", "white"); FechaCell.Width = new Unit($"{porcentaje}%"); HeaderRow.Cells.Add(FechaCell); } } Gv.Controls[0].Controls.Add(HeaderRow); //TableHeader.Rows.Add(HeaderRow); //// Create writers to render contents of controls into //StringWriter theStringWriter = new StringWriter(); //HtmlTextWriter theHtmlTextWriter = new HtmlTextWriter(theStringWriter); //// Render the table row control into the writer //TableHeader.RenderControl(theHtmlTextWriter); //HdnHeaderKMCosto.Value = theStringWriter.ToString(); } } #endregion protected void BtnGuardarCostos_Click1(object sender, EventArgs e) { bool TieneError = false; ClsGPS ObjGPS = new ClsGPS(); ObjGPS.IniciaTransacSQL(); try { if (ObjGPS.GetCortesChofer(-1, -1, -1)) { DataTable DtCortes = ObjGPS.DtResultados.Copy(); DateTime FechaOffset = HdnFechaValue.Value.ToDate(); foreach (GridViewRow GvRow in GvModalEditar.Rows) { if (GvRow.RowType == DataControlRowType.DataRow) { int CveDispositivo = GvRow.DataKey("CveDispositivo").ToEntero(); decimal Importe = GvRow.FCTextBox("TxtImporte").Text.ToDecimal(); DataRow DrCorte = DtCortes.FiltroPrimero($"CveDispositivo = {CveDispositivo} AND FechaOffset = '{FechaOffset}'"); if (DrCorte != null) { int CveCorteChofer = DrCorte["CveCorteChofer"].ToString().ToEntero(); TieneError = !ObjGPS.UpdateCorteChofer(CveCorteChofer, Importe); } else { TieneError = !ObjGPS.AddCorteChofer(CveDispositivo, FechaOffset, Importe, UsuarioActual.CveUsuario); } } } } } catch (Exception ex) { TieneError = true; this.OnError("Ocurrió un error al guardar los datos.", ex); } if (TieneError) { ObjGPS.RollBack(); Alert("Ocurrió un error al guardar los datos.", ModExtensiones.TipoMensaje.MsgError); } else { ObjGPS.Commit(); Alert("Los datos fueron guardados correctamente."); } ObjGPS.Dispose(); CargaDatos(); RegistraScript(" $('#DivModalVueltas').modal('hide');"); } private DataTable GenerateTransposedTable(DataTable inputTable) { DataTable outputTable = new DataTable(); // Add columns by looping rows // Header row's first column is same as in inputTable outputTable.Columns.Add(inputTable.Columns[0].ColumnName.ToString()); // Header row's second column onwards, 'inputTable's first column taken foreach (DataRow inRow in inputTable.Rows) { string newColName = inRow[0].ToString(); outputTable.Columns.Add(newColName); } // Add rows by looping columns for (int rCount = 1; rCount <= inputTable.Columns.Count - 1; rCount++) { DataRow newRow = outputTable.NewRow(); // First column is inputTable's Header row's second column newRow[0] = inputTable.Columns[rCount].ColumnName.ToString(); for (int cCount = 0; cCount <= inputTable.Rows.Count - 1; cCount++) { string colValue = inputTable.Rows[cCount][rCount].ToString(); newRow[cCount + 1] = colValue; } outputTable.Rows.Add(newRow); } return outputTable; } protected void LnkExportaExcel_Click(object sender, EventArgs e) { ExportarExcel("ReportePasajeros"); } public void ExportarExcel(string NombreArchivoXLSX) { NombreArchivoXLSX = Regex.Replace(NombreArchivoXLSX.Replace("[", "").Replace("]", ""), "[:\\/?*]", string.Empty); var DtVuetasExcel = DtVueltas.Copy(); DtVuetasExcel.Columns.RemoveAt(0); DtVuetasExcel.Columns[0].ColumnName = "Vehículo"; DtVuetasExcel.TableName = "NUMERO DE VUELTAS"; var DtKilometrosExcel = DtKilometros.Copy(); DtKilometrosExcel.Columns.RemoveAt(0); DtKilometrosExcel.Columns[0].ColumnName = "Vehículo"; DtKilometrosExcel.TableName = "KILOMETROS RECORRIDOS"; var DtCostosExcel = DtVueltasCostos.Copy(); DtCostosExcel.Columns.RemoveAt(0); DtCostosExcel.Columns[0].ColumnName = "Vehículo"; DtCostosExcel.TableName = "COSTO DE VUELTAS (MXN)"; var DtCostoskmExcel = DtKilometrosCostos.Copy(); DtCostoskmExcel.Columns.RemoveAt(0); DtCostoskmExcel.Columns[0].ColumnName = "Vehículo"; DtCostoskmExcel.TableName = "COSTO DE KM RECORRIDOS (MXN)"; var DtEventosExcel = DtDriving.Copy(); DtEventosExcel.Columns.RemoveAt(0); DtEventosExcel.Columns[0].ColumnName = "Vehículo"; DtEventosExcel.TableName = "Driving"; // If using Professional version, put your serial key below. SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet()); ExcelFile FileExcel = new ExcelFile(); FileExcel.Worksheets.Add("NUMERO DE VUELTAS").InsertDataTable(DtVuetasExcel, new InsertDataTableOptions() { ColumnHeaders = true, StartRow = 0, StartColumn = 0 }); ExcelWorksheet WSKM = FileExcel.Worksheets.Add("KILOMETROS RECORRIDOS"); var Base64ChartKM = HdnGraficaKilometros64.Value.Replace("data:image/png;base64,", ""); var ChartStreamKM = new MemoryStream(Convert.FromBase64String(Base64ChartKM)); WSKM.Pictures.Add(ChartStreamKM, ExcelPictureFormat.Png, new AnchorCell(WSKM.Columns[9], WSKM.Rows[21], 100000, 100000), 800d, 500d, LengthUnit.Pixel); WSKM.InsertDataTable(DtKilometrosExcel, new InsertDataTableOptions() { ColumnHeaders = true, StartRow = 0, StartColumn = 0 }); FileExcel.Worksheets.Add("COSTO DE VUELTAS (MXN)").InsertDataTable(DtCostosExcel, new InsertDataTableOptions() { ColumnHeaders = true, StartRow = 0, StartColumn = 0 }); FileExcel.Worksheets.Add("COSTO DE KM RECORRIDOS (MXN)").InsertDataTable(DtCostoskmExcel, new InsertDataTableOptions() { ColumnHeaders = true, StartRow = 0, StartColumn = 0 }); ExcelWorksheet WSDriving = FileExcel.Worksheets.Add("DRIVING"); WSDriving.InsertDataTable(DtEventosExcel, new InsertDataTableOptions() { ColumnHeaders = true, StartRow = 0, StartColumn = 0 }); var Base64ChartEventos = HdnGraficaEventos64.Value.Replace("data:image/png;base64,", ""); var ChartStreamEventos = new MemoryStream(Convert.FromBase64String(Base64ChartEventos)); WSDriving.Pictures.Add(ChartStreamEventos,ExcelPictureFormat.Png, new AnchorCell(WSDriving.Columns[9], WSDriving.Rows[21], 100000, 100000), 800d, 500d, LengthUnit.Pixel); foreach (ExcelWorksheet item in FileExcel.Worksheets) { item.Rows[0].Style.FillPattern.SetPattern(FillPatternStyle.Solid, SpreadsheetColor.FromArgb(75, 119, 190), SpreadsheetColor.FromArgb(255, 255, 255)); item.Rows[0].Style.Font.Color = SpreadsheetColor.FromArgb(255, 255, 255); foreach (var col in item.Columns) { col.AutoFit(1, item.Rows[1], item.Rows[item.Rows.Count - 1]); } } FileExcel.Save(this.Response, $"{NombreArchivoXLSX}.xlsx"); } protected void BtnGuardarCostosKilometros_Click(object sender, EventArgs e) { bool TieneError = false; ClsGPS ObjGPS = new ClsGPS(); ObjGPS.IniciaTransacSQL(); try { if (ObjGPS.GetCostosKilometros(-1, -1, -1)) { DataTable DtCortes = ObjGPS.DtResultados.Copy(); DateTime FechaOffset = HdnFechaKilometrosValue.Value.ToDate(); foreach (GridViewRow GvRow in GvModalKilometros.Rows) { if (GvRow.RowType == DataControlRowType.DataRow) { int CveDispositivo = GvRow.DataKey("CveDispositivo").ToEntero(); decimal Importe = GvRow.FCTextBox("TxtImporte").Text.ToDecimal(); DataRow DrCorte = DtCortes.FiltroPrimero($"CveDispositivo = {CveDispositivo} AND FechaOffset = '{FechaOffset}'"); if (DrCorte != null) { int CveCostoKilometro = DrCorte["CveCostoKilometro"].ToString().ToEntero(); TieneError = !ObjGPS.UpdateCostoKilometro(CveCostoKilometro, Importe); } else { TieneError = !ObjGPS.AddCostoKilometro(CveDispositivo, FechaOffset, Importe, UsuarioActual.CveUsuario); } } } } } catch (Exception ex) { TieneError = true; this.OnError("Ocurrió un error al guardar los datos.", ex); } if (TieneError) { ObjGPS.RollBack(); Alert("Ocurrió un error al guardar los datos.", ModExtensiones.TipoMensaje.MsgError); } else { ObjGPS.Commit(); Alert("Los datos fueron guardados correctamente."); } ObjGPS.Dispose(); CargaDatos(); RegistraScript(" $('#DivModalKilometros').modal('hide');"); } protected void LnkEventosDetalle_Click(object sender, EventArgs e) { using (var ObjGPS = new ClsGPS()) { switch (HdnOpcion.Value) { case "1": var FechaI = HdnFechaDetalle.Value.ToDateTime(); var FechaF = FechaI.AddDays(1); if (ObjGPS.GetRepEventosDetalle(-1, HdnDispositivo.Value.ToEntero(), FechaI, FechaF, UsuarioActual.CveCliente, 1)) { GvEventosDetalle.DataSource = ObjGPS.DtResultados; GvEventosDetalle.DataBind(); ModalTituloEventos.InnerText = $"Eventos ocurridos en el día {HdnFechaDetalle.Value}"; } break; case "2": var FechaI2 = HdnFechaDetalle.Value.ToDateTime(); var FechaF2 = FechaI2.AddDays(1); if (ObjGPS.GetRepEventosDetalle(DdlGrupo.SelectedValue.ToEntero(), -1, FechaI2, FechaF2, UsuarioActual.CveCliente, 2)) { GvEventosDetalle.DataSource = ObjGPS.DtResultados; GvEventosDetalle.DataBind(); ModalTituloEventos.InnerText = $"Eventos ocurridos en el día {HdnFechaDetalle.Value}"; } break; case "3": if (ObjGPS.GetRepEventosDetalle(-1, HdnDispositivo.Value.ToEntero(), txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), UsuarioActual.CveCliente, 3)) { GvEventosDetalle.DataSource = ObjGPS.DtResultados; GvEventosDetalle.DataBind(); ModalTituloEventos.InnerText = $"Eventos ocurridos desde {txtFechaI.Text} hasta {txtFechaF.Text}"; } break; case "4": if (ObjGPS.GetRepEventosDetalle(DdlGrupo.SelectedValue.ToEntero(), -1, txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), UsuarioActual.CveCliente, 4)) { GvEventosDetalle.DataSource = ObjGPS.DtResultados; GvEventosDetalle.DataBind(); ModalTituloEventos.InnerText = $"Eventos ocurridos desde {txtFechaI.Text} hasta {txtFechaF.Text}"; } break; } } UpEventos.Update(); UpGvEventos.Update(); RegistraScript("$('#DvEventos').modal('show');"); } protected void GvEventosDetalle_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { if (string.IsNullOrEmpty(e.Row.DBCampo("CveDispositivo"))) { e.Row.CssClass = "Totales"; } } } } public class LinkTemplate : ITemplate { public string Columna { get; set; } public LinkTemplate(string Columna) { this.Columna = Columna; } public void InstantiateIn(Control container) { DataControlFieldCell GVRow = (DataControlFieldCell)container; HyperLink hp = new HyperLink(); hp.DataBinding += Lnk_DataBinding; container.Controls.Add(hp); } private void Lnk_DataBinding(object sender, EventArgs e) { HyperLink l = (HyperLink)sender; GridViewRow container = (GridViewRow)l.NamingContainer; DataRowView Row = ((DataRowView)container.DataItem); l.Text = Row[Columna].ToString(); } private void Ltl_DataBinding(object sender, EventArgs e) { Literal l = (Literal)sender; GridViewRow container = (GridViewRow)l.NamingContainer; DataRowView Row = ((DataRowView)container.DataItem); l.Text = Row[Columna].ToString(); } }