Ejemplo n.º 1
0
        public AnexoResponse SaveAnexo(AnexoRequest request)
        {
            var errors = _anexoValidacion.ValidarNuevoAdjunto(request);

            if (errors.Any())
            {
                xHelper.AbortWithValidationErrors(errors);
            }

            Modelo.anexo anexo = null;
            try
            {
                _uow.BeginTransaction();

                StatusResponse result = _anexoProceso.EjecutaRegistrar(request);

                anexo = (Modelo.anexo)result.Value;

                _uow.Commit();
            }
            catch (Exception e)
            {
                _uow.Rollback();
                xHelper.AbortWithInternalError();
            }

            return(new AnexoResponse
            {
                id_anexo = anexo.ID_ANEXO,
                num_documento_anexo = anexo.NUM_DOCUMENTO_ANEXO
            });
        }
Ejemplo n.º 2
0
        protected override StatusResponse Registrar(AnexoRequest request)
        {
            var sr = new StatusResponse {
                Value = 0
            };

            //============================================================================
            // OBTENCION DE CORRELATIVO Y DATOS DEL DOCUMENTO
            //============================================================================
            var documento      = _context.Query <Modelo.documento>().Where(x => x.ID_DOCUMENTO == request.id_documento).FirstOrDefault();
            var documento_cont = _context.Query <Modelo.documento_cont>().FirstOrDefault(x => x.ID_DOCUMENTO == request.id_documento);
            var correlativo    = _context.Query <Modelo.anexo>().Where(x => x.ID_DOCUMENTO == request.id_documento && x.ESTADO_ADJUNTO != ESTADO_ADJUNTO.ANULADO).Select(x => x.CORRELATIVO).DefaultIfEmpty(0).Max() + 1;

            //============================================================================
            // OBTENCION DE DEPENDENCIA DESTINO: ULTIMA DEPENDENCIA PENDIENTE
            //============================================================================
            var dependencia_pendiente = _context.Query <Modelo.movimiento_documento>().Include(x => x.dependencia_destino)
                                        .Where(x => x.ID_DOCUMENTO == request.id_documento && x.derivado == 0 && x.finalizado == 0)
                                        .OrderByDescending(x => x.AUDIT_MOD).Select(x => x.dependencia_destino).FirstOrDefault();

            //============================================================================
            // OBTENCION DE PERSONA DESTINO
            //============================================================================
            var trabajador_destino = _context.Query <Modelo.vw_dat_trabajador>()
                                     .Where(x => x.CODIGO_DEPENDENCIA == dependencia_pendiente.CODIGO_DEPENDENCIA && x.ESTADO == "ACTIVO" && x.DIRECTOR == 1).FirstOrDefault();

            //============================================================================
            // INSERCION EN LA TABLA ANEXO
            //============================================================================
            var anexo = new Modelo.anexo
            {
                ID_ANEXO            = _context.Query <Modelo.anexo>().Max(x => x.ID_ANEXO) + 1,
                ID_DOCUMENTO        = request.id_documento.Value,
                ID_TIPO_ANEXO       = request.id_tipo_anexo.Value,
                NUM_DOCUMENTO_ANEXO = $"{documento.NUM_TRAM_DOCUMENTARIO}-{correlativo}",
                ID_PERSONA_DESTINO  = trabajador_destino.CODIGO_TRABAJADOR,
                FOLIOS         = request.folios.Value,
                CONTENIDO      = request.contenido,
                OBSERVACIONES  = string.IsNullOrEmpty(request.observaciones) ? "" : request.observaciones,
                USUARIO        = request.usuario,
                AUDIT_MOD      = DateTime.Now,
                coddep         = request.coddep,
                ID_PERSONA     = request.id_persona,
                CORRELATIVO    = correlativo,
                ESTADO_ADJUNTO = ESTADO_ADJUNTO.ACTIVO
            };

            _context.Add(anexo);
            _uow.Save();

            //======================================================================================================
            // INSERCION EN LA TABLA DOCUMENTO
            //======================================================================================================
            var documento_adjunto = new Modelo.documento
            {
                INDICATIVO_OFICIO          = "ADJUNTO",
                ID_ESTADO_DOCUMENTO        = ESTADO_DOCUMENTO.REGISTRADO,
                ID_TIPO_DOCUMENTO          = TIPO_DOCUMENTO.INTERNO,
                FECHA_RECEPCION            = " ",
                ID_CLASE_DOCUMENTO_INTERNO = CLASE_DOCUMENTO_INTERNO.SIN_DOCUMENTO,
                ASUNTO        = "SE ENVÍA ADJUNTO " + anexo.NUM_DOCUMENTO_ANEXO,
                OBSERVACIONES = "SIN OBSERVACIONES",
                AUDITMOD      = DateTime.Now,
                USUARIO       = request.usuario,
                coddep        = request.coddep
            };

            _context.Add(documento_adjunto);
            _uow.Save();

            //======================================================================================================
            // ACTUALIZACION DEL ID EN LA TABLA ANEXO
            //======================================================================================================
            anexo.ID_DOCUMENTO_ADJUNTO = documento_adjunto.ID_DOCUMENTO;
            _context.Update(anexo);

            //======================================================================================================
            // ACTUALIZACION DEL MOVIMIENTO DOCUMENTO REFERENTE A LA DEPENDENCIA DESTINO
            //======================================================================================================
            _context.Query <Modelo.movimiento_documento>()
            .Where(x =>
                   x.ID_DOCUMENTO == request.id_documento &&
                   x.ID_DEPENDENCIA_DESTINO == dependencia_pendiente.CODIGO_DEPENDENCIA).ToList().ForEach(mov =>
            {
                mov.derivado   = 1;
                mov.finalizado = 0;
                mov.AUDIT_REC  = DateTime.Now;
                _context.Update(mov);
            });

            //======================================================================================================
            // INSERCION DE NUEVO MOVIMIENTO PARA EL DOCUMENTO ADJUNTO
            //======================================================================================================
            var nuevo_movimiento = new Modelo.movimiento_documento
            {
                enviado                = 1,
                ID_DOCUMENTO           = request.id_documento.Value,
                ID_DEPENDENCIA_ORIGEN  = DEPENDENCIA_PRODUCE.OGDA,
                ID_DEPENDENCIA_DESTINO = dependencia_pendiente.CODIGO_DEPENDENCIA,
                ID_OFICIO              = documento_adjunto.ID_DOCUMENTO,
                AUDIT_MOD              = DateTime.Now
            };

            _context.Add(nuevo_movimiento);
            _uow.Save();

            //=====================================================================================================
            // ACTUALIZANDO TABLA DOCUMENTO_CONT
            //=====================================================================================================

            if (documento_cont != null)
            {
                documento_cont.CANT_ADJUNTOS = _context.Query <Modelo.anexo>().Where(x => x.ID_DOCUMENTO == documento.ID_DOCUMENTO && x.ESTADO_ADJUNTO == ESTADO_ADJUNTO.ACTIVO).Count();
                _context.Update(documento_cont);
                _uow.Save();
            }
            else
            {
                _uow.InsertarDocumentoCont(documento.ID_DOCUMENTO);
            }

            sr.Value = anexo;
            return(sr);
        }