/// <summary> /// Realiza el registro de un encabezado de acceso y sus detalles (entidades que accesan) /// </summary> /// <param name="id_patio">Ubicación de Patio</param> /// <param name="id_acceso">Id de Acceso del Patio (elemento de patio)</param> /// <param name="fecha_hora">Fecha y hora de acceso en formato yyyy-MM-ddTHH:mm:ss</param> /// <param name="entidades_xml">Conjunto de entidades que accesan al patio. Validar contra esquema correspondiente</param> /// <param name="id_usuario">Usuario que actualiza el Registro</param> /// <returns></returns> public string RegistraEntradaPatio(int id_patio, int id_acceso, string fecha_hora, string entidades_xml, int id_usuario) { //Declarando Objeto de Retorno RetornoOperacion resultado = null; //Obteniendo Fecha DateTime fecha = DateTime.MinValue; DateTime.TryParse(fecha_hora, out fecha); //Validando que el Patio exista if (id_patio > 0) { //Validando que el Acceso exista if (id_acceso > 0) { //Validando que exista la Fecha if (fecha != DateTime.MinValue) { try { //Declarando Objeto de Entidades XDocument documento = XDocument.Parse(entidades_xml); //Validando si tiene Entidades if (documento.Root.HasElements) { //Inicializando Transaccion using (TransactionScope transaccion = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Obteniendo Entidades IEnumerable <XElement> entidades = documento.Root.Elements(); //Insertando Acceso resultado = AccesoPatio.InsertaAccesoPatio(id_patio, id_acceso, AccesoPatio.TipoActualizacion.Mobil, AccesoPatio.TipoAcceso.Entrada, fecha, "", id_usuario); //Validando que el Acceso se Insertara correctamente if (resultado.OperacionExitosa) { //Obteniendo Acceso de Entrada int idAccesoEntrada = resultado.IdRegistro; //Recorriendo Ciclo foreach (XElement entidad in entidades) { //Insertando Detalle de Acceso resultado = DetalleAccesoPatio.InsertaDetalleAccesoPatio(idAccesoEntrada, 0, Convert.ToInt32(entidad.Attribute("idTransportista").Value), 0, 0, Convert.ToBoolean(entidad.Attribute("cargado").Value), fecha, Convert.ToByte(entidad.Attribute("idTipo").Value), entidad.Attribute("descripcion").Value, entidad.Attribute("identificacion").Value, 0, id_usuario); //Validando si se Inserto el Detalle if (!resultado.OperacionExitosa) { break; } } //Validando que la Operación fuese Exitosa if (resultado.OperacionExitosa) { //Instanciando Acceso de Patio resultado = new RetornoOperacion(idAccesoEntrada); //Completando Transacción transaccion.Complete(); } } } } } catch (Exception e) { //Devolviendo Excepcion resultado = new RetornoOperacion(e.Message); } } else//Instanciando Excepción { resultado = new RetornoOperacion("La Fecha es invalida"); } } else//Instanciando Excepción { resultado = new RetornoOperacion("El Acceso es invalido"); } } else//Instanciando Excepción { resultado = new RetornoOperacion("El Patio es invalido"); } //Devolviendo resultado Obtenido return(resultado.ToXMLString()); }
/// <summary> /// Realiza el registro de un encabezado de acceso y actualizar sus detalles (entidades que salen) /// </summary> /// <param name="id_patio">Id de Patio</param> /// <param name="id_acceso">Id de Acceso del Patio (elemento de patio)</param> /// <param name="fecha_hora">Fecha y hora de salida en formato yyyy-MM-ddTHH:mm:ss</param> /// <param name="entidades_xml">Conjunto de entidades que accesan al patio. Validar contra esquema correspondiente</param> /// <param name="id_usuario">Usuario que actualiza el Registro</param> /// <returns></returns> public string RegistraSalidaPatio(int id_patio, int id_acceso, string fecha_hora, string entidades_xml, int id_usuario) { //Declarando Objeto de Retorno RetornoOperacion resultado = null; //Validando que exista el Patio if (id_patio > 0) { //Validando que exista el Acceso if (id_acceso > 0) { //Obteniendo Fecha y Hora DateTime fec_sal; DateTime.TryParse(fecha_hora, out fec_sal); //Validando que exista la Fecha if (fec_sal != DateTime.MinValue) { try { //Declarando Objeto de Entidades XDocument documento = XDocument.Parse(entidades_xml); //Validando si tiene Entidades if (documento.Root.HasElements) { //Inicializando Transaccion using (TransactionScope transaccion = TSDK.Datos.Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Obteniendo Entidades IEnumerable <XElement> entidades = documento.Root.Elements(); //Insertando Acceso resultado = AccesoPatio.InsertaAccesoPatio(id_patio, id_acceso, AccesoPatio.TipoActualizacion.Mobil, AccesoPatio.TipoAcceso.Salida, fec_sal, "", id_usuario); //Validando que el Acceso se Insertara correctamente if (resultado.OperacionExitosa) { //Obteniendo Acceso de Entrada int idAccesoSalida = resultado.IdRegistro; //Recorriendo Ciclo foreach (XElement entidad in entidades) { //Instanciando Detalle de Acceso using (DetalleAccesoPatio dap = new DetalleAccesoPatio(Convert.ToInt32(entidad.Value))) { //Validando que exista el Detalle if (dap.id_detalle_acceso_patio > 0) { //Actualizando Salida del Detalle resultado = dap.ActualizaSalidaDetalleMobil(idAccesoSalida, id_usuario); //Validando si se Inserto el Detalle if (!resultado.OperacionExitosa) { break; } } else { break; } } } //Validando que el Acceso se Insertara correctamente if (resultado.OperacionExitosa) { //Completando Transacción transaccion.Complete(); //Instanciando Resultado de Acceso de Salida resultado = new RetornoOperacion(idAccesoSalida); } } } } } catch (Exception e) { //Instanciando Excepción resultado = new RetornoOperacion(e.Message); } } else { //Instanciando Excepción resultado = new RetornoOperacion("La Fecha es Invalida"); } } else { //Instanciando Excepción resultado = new RetornoOperacion("El Acceso es Invalido"); } } else { //Instanciando Excepción resultado = new RetornoOperacion("El Patio es Invalido"); } //Devolviendo resultado Obtenido return(resultado.ToXMLString()); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void gvEntidades_RowDataBound(object sender, GridViewRowEventArgs e) { //Recuperando controles de interés Image img = (Image)e.Row.FindControl("imgEstatus"); LinkButton lnkButton = (LinkButton)e.Row.FindControl("lnkEvidencias"); //Validando que exista el Control if (img != null) { //Validación de Datos if (((DataRowView)e.Row.DataItem).Row.ItemArray[5].ToString() != "") { //Instanciando Evento using (EventoDetalleAcceso eda = new EventoDetalleAcceso(Convert.ToInt32(((DataRowView)e.Row.DataItem).Row.ItemArray[5]))) //Instanciando Tipo de Evento using (TipoEvento te = new TipoEvento(eda.id_tipo_evento)) //Validando el Estatus del Tiempo switch (((DataRowView)e.Row.DataItem).Row.ItemArray[6].ToString()) { case "0": //Ninguno { //Quitando Imagen img.ImageUrl = ""; img.Visible = false; break; } case "1": //En Tiempo { //Carga if (te.naturaleza_evento == TipoEvento.NaturalezaEvento.Carga) { //Asignando Imagen Correspondiente img.ImageUrl = "~/Image/EntidadTiempoOKCarga.png"; } //Descarga else if (te.naturaleza_evento == TipoEvento.NaturalezaEvento.Descarga) { //Asignando Imagen Correspondiente img.ImageUrl = "~/Image/EntidadTiempoOKDescarga.png"; } //Estaciona else if (te.naturaleza_evento == TipoEvento.NaturalezaEvento.Estaciona) { //Asignando Imagen Correspondiente img.ImageUrl = "~/Image/EntidadTiempoOK.png"; } //Visualizando Control img.Visible = true; break; } case "2": //Fuera de Tiempo { //Carga if (te.naturaleza_evento == TipoEvento.NaturalezaEvento.Carga) { //Asignando Imagen Correspondiente img.ImageUrl = "~/Image/EntidadTiempoEXCarga.png"; } //Descarga else if (te.naturaleza_evento == TipoEvento.NaturalezaEvento.Descarga) { //Asignando Imagen Correspondiente img.ImageUrl = "~/Image/EntidadTiempoEXDescarga.png"; } //Estaciona else if (te.naturaleza_evento == TipoEvento.NaturalezaEvento.Estaciona) { //Asignando Imagen Correspondiente img.ImageUrl = "~/Image/EntidadTiempoEX.png"; } //Visualizando Control img.Visible = true; break; } } //Instanciando Detalle de Acceso using (DetalleAccesoPatio dap = new DetalleAccesoPatio(Convert.ToInt32(((DataRowView)e.Row.DataItem).Row.ItemArray[0]))) //Instanciando Acceso de Patio using (AccesoPatio ap = new AccesoPatio(dap.id_acceso_entrada)) //Instanciando Ubicación de Patio using (UbicacionPatio up = new UbicacionPatio(Convert.ToInt32(ddlPatio.SelectedValue))) { //Validando que la Unidad no sobrepase el Tiempo en Patio if (up.tiempo_limite > Convert.ToInt32((TSDK.Base.Fecha.ObtieneFechaEstandarMexicoCentro() - ap.fecha_acceso).TotalMinutes)) { //Asignando Color e.Row.Cells[4].ForeColor = System.Drawing.Color.DarkGreen; } else//Asignando Color { e.Row.Cells[4].ForeColor = System.Drawing.Color.DarkRed; } } } } //Validando que exista el Control if (lnkButton != null) { //Validación de Datos if (((DataRowView)e.Row.DataItem).Row.ItemArray[9].ToString() != "0") { //Mostrando Control lnkButton.Visible = true; } else { //Ocultando Control lnkButton.Visible = false; } } }