Esempio n. 1
0
        /// <summary>
        /// Metodo que permite crear una nueva Acta de Denuncia y Citacion.
        /// </summary>
        /// <param name="request">Infracccional Request.</param>
        /// <returns></returns>
        public InfraccionalResponse InfraccionalCreate(InfraccionalRequest request)
        {
            ActaDenunciaCitacionTO actaDenuncia = null;
            InfraccionalResponse   respuesta    = new InfraccionalResponse();
            int registro = 0;

            try
            {
                if (!string.IsNullOrEmpty(request.Json))
                {
                    actaDenuncia = _contextoSerializacion.Deserializar <ActaDenunciaCitacionTO>(request.Json);

                    if (actaDenuncia != null)
                    {
                        registro = _infraccionalComposite.InfraccionalNegocio.RegistrarActaDenunciaCitacion(actaDenuncia);

                        if (registro > 0)
                        {
                            respuesta = Respuesta.RespuestaPersonalizado("Acta registrada exitosamente", "SUCCESS_INSERT");
                        }
                    }
                }
                else
                {
                    respuesta = Respuesta.RespuestaPersonalizado("Para crear una Acta de Denuncia y Citacion debe enviar la entidad", "ERROR_PARAM");
                }
            }
            catch (Exception ex)
            {
                respuesta = Respuesta.RespuestaPersonalizado("Error al realizar insercion: " + ex.Message, "ERROR_INSERT");
            }

            return(respuesta);
        }
        /// <summary>
        /// Metodo que permite registrar actas de denuncia y citacion.
        /// </summary>
        /// <param name="actaDenuncia">Acta de Denuncia y Citación</param>
        /// <returns></returns>
        public int RegistrarActaDenunciaCitacion(ActaDenunciaCitacionTO actaDenuncia)
        {
            int registro = 0;
            ActaDenunciaCitacion actaDenunciaCitacion = null;

            try
            {
                Mapeo map = new Mapeo();
                actaDenunciaCitacion = new ActaDenunciaCitacion();

                actaDenunciaCitacion.ADC_FECHA_AUDIENCIA   = actaDenuncia.FechaAudiencia;
                actaDenunciaCitacion.ADC_FECHA_DENUNCIA    = actaDenuncia.FechaDenuncia;
                actaDenunciaCitacion.FechaIngreso          = actaDenuncia.FechaIngreso;
                actaDenunciaCitacion.ADC_NRO_FISCALIZACION = actaDenuncia.NumeroFiscalizacion;
                actaDenunciaCitacion.Sistema = 7;
                actaDenunciaCitacion.EntidadFiscalizadora = 1;
                //actaDenunciaCitacion.Infractor = actaDenuncia.Infractor;
                //actaDenunciaCitacion.SubMateria = actaDenuncia.SubMateria;
                actaDenunciaCitacion.Numero = actaDenuncia.Numero;

                Usuario usuario = _daoGenerico.Obtener <Usuario>("WHERE USR_EMAIL = '" + actaDenuncia.EmailUsuario + "'");

                if (usuario != null)
                {
                    actaDenunciaCitacion.UsuarioCreador = usuario.Identificador;
                    actaDenunciaCitacion.usuario        = usuario;
                }
                else
                {
                    log.Info("ERROR: El usuario con email " + actaDenuncia.EmailUsuario + " no existe en el sistema sancionatorio como inspector fiscalizador.");
                    throw new Exception("El usuario con email " + actaDenuncia.EmailUsuario + " no existe en el sistema sancionatorio como inspector fiscalizador");
                    //registro = 0;
                }

                try
                {
                    if (usuario != null && usuario.Oficina > 0)
                    {
                        actaDenunciaCitacion.OficinaUsuario = usuario.Oficina;
                    }
                }
                catch (Exception ex)
                {
                    throw new Exception("Error al obtener información del usuario fiscalizado", ex);
                }

                Usuario inspector = _daoGenerico.Obtener <Usuario>("WHERE USR_EMAIL = '" + actaDenuncia.EmailInspector + "'");

                if (inspector != null)
                {
                    actaDenunciaCitacion.Inspector = Int32.Parse(inspector.Identificador);
                }
                else
                {
                    registro = 0;
                }

                string regionSancionatorio = map.ObtenerValueRegion(actaDenuncia.Region);

                var rol = _daoGenerico.Ejecutar(new { P_ID_REGION = regionSancionatorio, P_ID_TIPO = 1 }, _procedimientoTraerRol);

                if (rol != null)
                {
                    var rolfinal = Convert.ToInt64(rol);
                    var v_Cont   = rolfinal.ToString().Substring(4);
                    v_Cont = (Int32.Parse(v_Cont) + 1).ToString();
                    var rolConvertido = DateTime.Now.ToString("yy") + regionSancionatorio + v_Cont;
                    actaDenunciaCitacion.Rol = Convert.ToInt64(rolConvertido);
                }

                int cuenta = _daoGenerico.ObtenerLista <Infractor>("WHERE IFR_IDENTIFICACION = '" + actaDenuncia.Infractor.Identificacion + "'").Count();

                Infractor x         = null;
                var       infractor = x;

                if (cuenta > 0)
                {
                    infractor = _daoGenerico.ObtenerLista <Infractor>("WHERE IFR_IDENTIFICACION = '" + actaDenuncia.Infractor.Identificacion + "'").First();
                }
                else
                {
                    ParametrosInfractor infraProcedimiento = new ParametrosInfractor()
                    {
                        P_ADC_COD_INFRACTOR  = 0,
                        P_ADC_NOMBRES        = actaDenuncia.Infractor.Nombre,
                        P_ADC_APELLIDO_PAT   = actaDenuncia.Infractor.ApellidoPaterno,
                        P_ADC_APELLIDO_MAT   = actaDenuncia.Infractor.ApellidoMaterno,
                        P_ADC_TIPO_ID        = actaDenuncia.Infractor.TipoIdentificacion,
                        P_ADC_IDENTIFICACION = actaDenuncia.Infractor.Identificacion,
                        P_ADC_TIPO_PERSONA   = actaDenuncia.Infractor.TipoPersona,
                        P_ADC_DOMICILIO      = actaDenuncia.Infractor.Direccion,
                        P_ADC_GENERO         = (actaDenuncia.Infractor.Genero != null) ? Convert.ToChar(actaDenuncia.Infractor.Genero) : '0',
                        P_ADC_COD_ACTIVIDAD  = actaDenuncia.Infractor.Actividad,
                        P_ADC_COD_PAIS       = (actaDenuncia.Infractor.Pais != null) ? Convert.ToChar(actaDenuncia.Infractor.Pais) : '0',
                        P_ADC_COD_COMUNA     = actaDenuncia.Infractor.Comuna,
                        P_ADC_FONO           = (actaDenuncia.Infractor.Fono != null) ? actaDenuncia.Infractor.Fono.ToString() : "",
                        P_ADC_EMAIL          = actaDenuncia.Infractor.Email,
                        P_ADC_DIR_POSTAL     = actaDenuncia.Infractor.Postal,
                        P_IFR_REP_LEG_RUT    = actaDenuncia.Infractor.RutRepresentanteLegal,
                        P_IFR_REP_LEG_NOM    = actaDenuncia.Infractor.NombreRepresentanteLegal,
                        P_MAX_INFRACTOR      = 0
                    };
                    _daoGenerico.AgregarRegistro(infraProcedimiento, _procedimientoCrearInfractor);
                    infractor = _daoGenerico.ObtenerLista <Infractor>("WHERE IFR_IDENTIFICACION = '" + actaDenuncia.Infractor.Identificacion + "'").First();
                }

                if (infractor != null)
                {
                    actaDenunciaCitacion.Infractor = infractor;
                }
                else
                {
                    actaDenunciaCitacion.Infractor = actaDenuncia.Infractor;
                }

                //// Revisión comuna y pais del infractor.
                string pa = infractor.Pais;
                string co = infractor.Comuna;



                List <ActaDenunciaCitacionDetalle> ADCdetalle = new List <ActaDenunciaCitacionDetalle>();

                try
                {
                    ADCdetalle = ObtenerADCdetalleSegunFiscalizacion(actaDenunciaCitacion.ADC_NRO_FISCALIZACION);
                }
                catch (Exception ex)
                {
                    throw new Exception("Error al obtener detalle del ADC desde fiscalización", ex);
                }



                string sub        = ADCdetalle[0].ID_SUB_MATERIA.ToString();
                var    submateria = Convert.ToInt32(map.ObtenerValueSubMateria(sub));
                pa = "45";
                co = ADCdetalle[0].idComuna.ToString();
                string folio = ADCdetalle[0].folio;
                co = map.ObtenerValueComuna(co);

                if (string.IsNullOrEmpty(co))
                {
                    co = "130101";
                }



                // Se cren y setean las variables para los datos del infractor
                var nombreInfractor    = "";
                var rutInfractor       = "";
                var apellidoPInfractor = "";
                var apellidoMInfractor = "";
                var direcciónInfractor = "";

                if (actaDenunciaCitacion.Infractor.TipoPersona == 2)
                {
                    nombreInfractor    = ADCdetalle[0].nombreEntidad;
                    rutInfractor       = ADCdetalle[0].rutEntidad;
                    direcciónInfractor = ADCdetalle[0].direccionEntidad;
                }
                else
                {
                    nombreInfractor    = actaDenunciaCitacion.Infractor.Nombre;
                    rutInfractor       = actaDenunciaCitacion.Infractor.Identificacion;
                    direcciónInfractor = actaDenunciaCitacion.Infractor.Direccion;
                    apellidoPInfractor = actaDenunciaCitacion.Infractor.ApellidoPaterno;
                    apellidoMInfractor = actaDenunciaCitacion.Infractor.ApellidoMaterno;
                }


                ActaDenunciaProcedimiento actaProcedimiento = new ActaDenunciaProcedimiento()
                {
                    //ADC
                    P_ADC_ID                = 0,
                    P_ADC_SISTEMA_ID        = actaDenunciaCitacion.Sistema,
                    P_ADC_TIPO_PROCESO      = 1,
                    P_ADC_COD_ENTIDAD       = actaDenunciaCitacion.EntidadFiscalizadora,
                    P_ADC_ROL               = actaDenunciaCitacion.Rol,
                    P_ADC_NUMERO            = actaDenunciaCitacion.Numero,
                    P_ADC_FECHA_AUDIENCIA   = actaDenunciaCitacion.ADC_FECHA_AUDIENCIA,
                    P_ADC_USUARIO           = actaDenunciaCitacion.usuario.Identificador,
                    P_ADC_ID_SUBMATERIA     = submateria,
                    P_ADC_FIN_ID            = null,
                    P_ADC_PROCESO_FIN       = '1',
                    P_ADC_RUT_INSPECTOR     = actaDenunciaCitacion.Inspector,
                    P_ADC_RUT_SUSTANCIADOR  = null,
                    P_ADC_OFICINA_USUARIO   = actaDenunciaCitacion.OficinaUsuario,
                    P_ADC_FECHA_INGRESO     = actaDenunciaCitacion.FechaIngreso,
                    P_ADC_FECHA_DENUNCIA    = actaDenunciaCitacion.ADC_FECHA_DENUNCIA,
                    P_ADC_NRO_FISCALIZACION = (folio == "-") ? "0" : folio,

                    // Infractor

                    P_ADC_COD_INFRACTOR = actaDenunciaCitacion.Infractor.Identificador,
                    P_ADC_NOMBRES       = nombreInfractor,
                    P_ADC_APELLIDO_PAT  = apellidoPInfractor,
                    P_ADC_APELLIDO_MAT  = apellidoMInfractor,

                    P_ADC_TIPO_ID        = actaDenunciaCitacion.Infractor.TipoIdentificacion,
                    P_ADC_IDENTIFICACION = rutInfractor,
                    P_ADC_TIPO_PERSONA   = actaDenunciaCitacion.Infractor.TipoPersona,

                    P_ADC_DOMICILIO     = direcciónInfractor,
                    P_ADC_GENERO        = ' ',
                    P_ADC_COD_ACTIVIDAD = null,
                    P_ADC_COD_PAIS      = Convert.ToInt32(pa),
                    P_ADC_COD_COMUNA    = co,
                    P_ADC_FONO          = null,
                    //P_ADC_EMAIL = actaDenunciaCitacion.Infractor.Email,
                    P_ADC_DIR_POSTAL  = null,
                    P_IFR_REP_LEG_RUT = ADCdetalle[0].rutRepresentante,
                    P_IFR_REP_LEG_NOM = ADCdetalle[0].nombreRepresentante
                };

                _daoGenerico.AgregarRegistro(actaProcedimiento, _procedimientoCrearADC);
                registro = 1;

                ActaDenunciaCitacion adcNuevo = new ActaDenunciaCitacion();
                adcNuevo = _daoGenerico.Obtener <ActaDenunciaCitacion>("WHERE ADC_ROL = '" + actaDenunciaCitacion.Rol + "'");

                ParametrosSubMateria subNueva = new ParametrosSubMateria()
                {
                    P_ASU_ID            = 0,
                    P_ASU_ADC_ID        = adcNuevo.ADC_ID,
                    P_ASU_SUBMATERIA_ID = submateria,
                    P_ACCION            = "I"
                };

                _daoGenerico.AgregarRegistro(subNueva, _procedimientoCrearSUBMATERIA);
            }
            catch (Exception ex)
            {
                registro = 0;
                throw ex;
            }

            return(registro);
        }