示例#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);
        }