예제 #1
0
        /// <summary>
        /// Realiza la adaptación de campos para registrar o actualizar
        /// </summary>
        /// <param name="data"></param>
        /// <returns>Indicador con el resultado de la operación</returns>
        public static ProcesoAuditoriaEntity RegistrarFlujoAuditoria(ProcesoAuditoriaRequest data)
        {
            ProcesoAuditoriaEntity procesoAuditoriaEntity = new ProcesoAuditoriaEntity();

            if (data.CodigoAuditoria != null)
            {
                procesoAuditoriaEntity.CodigoAuditoria = new Guid(data.CodigoAuditoria);
            }
            else
            {
                Guid code;
                code = Guid.NewGuid();
                procesoAuditoriaEntity.CodigoAuditoria = code;
            }

            procesoAuditoriaEntity.CodigoUnidadOperativa = new Guid(data.CodigoUnidadOperativa);
            if (!string.IsNullOrWhiteSpace(data.FechaPlanificadaString))
            {
                procesoAuditoriaEntity.FechaPlanificada = DateTime.ParseExact(data.FechaPlanificadaString, DatosConstantes.Formato.FormatoFecha, System.Globalization.CultureInfo.InvariantCulture);
            }
            if (!string.IsNullOrWhiteSpace(data.FechaEjecucionString))
            {
                procesoAuditoriaEntity.FechaEjecucion = DateTime.ParseExact(data.FechaEjecucionString, DatosConstantes.Formato.FormatoFecha, System.Globalization.CultureInfo.InvariantCulture);
            }
            else
            {
                procesoAuditoriaEntity.FechaEjecucion = null;
            }
            procesoAuditoriaEntity.CantidadAuditadas  = data.CantidadAuditadas;
            procesoAuditoriaEntity.CantidadObservadas = data.CantidadObservadas;
            procesoAuditoriaEntity.ResultadoAuditoria = data.ResultadoAuditoria;

            return(procesoAuditoriaEntity);
        }
예제 #2
0
        /// <summary>
        /// Registra o Actualiza un Proceso Auditoria
        /// </summary>
        /// <param name="data">Datos a registrar</param>
        /// <returns>Identificador de registro</returns>
        public ProcessResult <ProcesoAuditoriaRequest> RegistrarProcesoAuditoria(ProcesoAuditoriaRequest data)
        {
            ProcessResult <ProcesoAuditoriaRequest> resultado = new ProcessResult <ProcesoAuditoriaRequest>();

            try
            {
                ProcesoAuditoriaEntity entidad = ProcesoAuditoriaAdapter.RegistrarFlujoAuditoria(data);


                DateTime fechaPlanificada = entidad.FechaPlanificada;
                DateTime?fechaEjecucion   = entidad.FechaEjecucion;


                if (fechaPlanificada > fechaEjecucion)
                {
                    resultado.IsSuccess = false;
                    resultado.Exception = new ApplicationLayerException <ProcesoAuditoriaService>("El campo Fecha Planificada debe ser menor a la Fecha Ejecución");
                }
                else
                {
                    Guid codigoUnidadOperativa = new Guid(data.CodigoUnidadOperativa);
                    var  resultadoRepetido     = procesoAuditoriaLogicRepository.RepiteProcesoAuditoria(
                        codigoUnidadOperativa,
                        entidad.FechaPlanificada
                        );
                    bool existeRepetido = resultadoRepetido.Any(e => e.CodigoAuditoria != entidad.CodigoAuditoria);
                    if (existeRepetido)
                    {
                        resultado.IsSuccess = false;
                        resultado.Exception = new ApplicationLayerException <ProcesoAuditoriaService>(MensajesSistema.ProcesoAuditoriaExiste);
                    }
                    else
                    {
                        if (data.CodigoAuditoria == null)
                        {
                            procesoAuditoriaEntityRepository.Insertar(entidad);
                        }
                        else
                        {
                            var entidadSincronizar = procesoAuditoriaEntityRepository.GetById(entidad.CodigoAuditoria);
                            entidadSincronizar.CodigoUnidadOperativa = entidad.CodigoUnidadOperativa;
                            entidadSincronizar.FechaPlanificada      = entidad.FechaPlanificada;
                            entidadSincronizar.FechaEjecucion        = entidad.FechaEjecucion;
                            entidadSincronizar.CantidadAuditadas     = entidad.CantidadAuditadas;
                            entidadSincronizar.CantidadObservadas    = entidad.CantidadObservadas;
                            entidadSincronizar.ResultadoAuditoria    = entidad.ResultadoAuditoria;
                            procesoAuditoriaEntityRepository.Editar(entidadSincronizar);
                        }
                        procesoAuditoriaEntityRepository.GuardarCambios();
                    }
                }
            }
            catch (Exception e)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <ProcesoAuditoriaService>(e);
            }
            return(resultado);
        }
예제 #3
0
        /// <summary>
        /// Busca Procesos de Auditoria
        /// </summary>
        /// <param name="filtro"></param>
        /// <returns>Procesos de Auditoria</returns>
        public ProcessResult <List <ProcesoAuditoriaResponse> > BuscarBandejaProcesoAuditoria(ProcesoAuditoriaRequest filtro)
        {
            ProcessResult <List <ProcesoAuditoriaResponse> > resultado = new ProcessResult <List <ProcesoAuditoriaResponse> >();
            var unidadOperativa = unidadOperativaService.BuscarUnidadOperativa(new FiltroUnidadOperativa()
            {
                Nivel = "03"
            });

            try
            {
                Guid?codigoAuditoria       = (filtro.CodigoAuditoria != null && filtro.CodigoAuditoria != "") ? new Guid(filtro.CodigoAuditoria) : (Guid?)null;
                Guid?codigoUnidadOperativa = (filtro.CodigoUnidadOperativa != null && filtro.CodigoUnidadOperativa != "") ? new Guid(filtro.CodigoUnidadOperativa) : (Guid?)null;

                DateTime?fechaPlanificada = null;
                DateTime?fechaEjecucion   = null;

                if (!string.IsNullOrWhiteSpace(filtro.FechaPlanificadaString))
                {
                    fechaPlanificada = DateTime.ParseExact(filtro.FechaPlanificadaString, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);;
                }
                else
                {
                    fechaPlanificada = filtro.FechaPlanificada;
                }

                if (!string.IsNullOrWhiteSpace(filtro.FechaEjecucionString))
                {
                    fechaEjecucion = DateTime.ParseExact(filtro.FechaEjecucionString, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);;
                }
                else
                {
                    fechaEjecucion = filtro.FechaEjecucion;
                }


                List <ProcesoAuditoriaLogic> listado = procesoAuditoriaLogicRepository.BuscarBandejaProcesoAuditoria(
                    codigoAuditoria,
                    codigoUnidadOperativa,
                    fechaPlanificada,
                    fechaEjecucion,
                    filtro.EstadoRegistro
                    );

                resultado.Result = new List <ProcesoAuditoriaResponse>();

                foreach (var registro in listado)
                {
                    var procesoAuditoria = ProcesoAuditoriaAdapter.ObtenerProcesoAuditoria(registro, unidadOperativa.Result);
                    resultado.Result.Add(procesoAuditoria);
                }
            }
            catch (Exception e)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <ProcesoAuditoriaService>(e);
            }
            return(resultado);
        }