1061 lines
39 KiB
C#
1061 lines
39 KiB
C#
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<DataControlField>().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<DataControlField>().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<DataControlField>().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<DataControlField>().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<DataControlField>().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();
|
|
}
|
|
}
|