コード例 #1
0
        /// <summary>
        /// Registra / Edita Flujo Aprobacion
        /// </summary>
        /// <param name="data"></param>
        /// <returns>Indicador con el resultado de la operación</returns>
        public ProcessResult <FlujoAprobacionRequest> RegistrarFlujoAprobacion(FlujoAprobacionRequest data)
        {
            ProcessResult <FlujoAprobacionRequest> resultado = new ProcessResult <FlujoAprobacionRequest>();

            try
            {
                FlujoAprobacionEntity entidad = FlujoAprobacionAdapter.RegistrarFlujoAprobacion(data);

                //var resultadoRepetido = flujoAprobacionLogicRepository.RepiteFlujoAprobacion(
                //    new Guid(data.CodigoUnidadOperativa),
                //    data.CodigoFormaEdicion,
                //    data.CodigoTipoServicio,
                //    data.CodigoTipoRequerimiento
                //);

                bool existeRepetido = false; //resultadoRepetido.Any(e => e.CodigoFlujoAprobacion != entidad.CodigoFlujoAprobacion);
                if (existeRepetido)
                {
                    resultado.IsSuccess = false;
                    resultado.Exception = new ApplicationLayerException <FlujoAprobacionService>(MensajesSistema.FlujoAprobacionExiste);
                }
                else
                {
                    if (data.CodigoFlujoAprobacion == null)
                    {
                        flujoAprobacionEntityRepository.Insertar(entidad);
                        flujoAprobacionEntityRepository.GuardarCambios();

                        foreach (var item in data.ListaTipoServicio)
                        {
                            //FlujoAprobacionTipoServicioEntity entidadFlujoAprobacionTipoServicio = new FlujoAprobacionTipoServicioEntity();
                            //entidadFlujoAprobacionTipoServicio.CodigoFlujoAprobacion = entidad.CodigoFlujoAprobacion;
                            //entidadFlujoAprobacionTipoServicio.CodigoFlujoAprobacionTipoServicio = Guid.NewGuid();
                            //entidadFlujoAprobacionTipoServicio.CodigoTipoServicio = item;
                            //flujoAprobacionTipoServicioEntityRepository.Insertar(entidadFlujoAprobacionTipoServicio);
                            //flujoAprobacionTipoServicioEntityRepository.GuardarCambios();

                            FlujoAprobacionTipoContratoEntity entidadFlujoAprobacionTipoContrato = new FlujoAprobacionTipoContratoEntity();
                            entidadFlujoAprobacionTipoContrato.CodigoFlujoAprobacion             = entidad.CodigoFlujoAprobacion;
                            entidadFlujoAprobacionTipoContrato.CodigoFlujoAprobacionTipoContrato = Guid.NewGuid();
                            entidadFlujoAprobacionTipoContrato.CodigoTipoContrato = item;
                            flujoAprobacionTipoContratoEntityRepository.Insertar(entidadFlujoAprobacionTipoContrato);
                            flujoAprobacionTipoContratoEntityRepository.GuardarCambios();
                        }

                        var datosDefecto = new FlujoAprobacionEstadioEntity()
                        {
                            CodigoFlujoAprobacionEstadio = Guid.NewGuid(),
                            CodigoFlujoAprobacion        = entidad.CodigoFlujoAprobacion,
                            Orden                   = 1,
                            Descripcion             = "Edición",
                            TiempoAtencion          = 1,
                            HorasAtencion           = 0,
                            IndicadorVersionOficial = false,
                            IndicadorPermiteCarga   = false,
                            IndicadorNumeroContrato = false,
                            EstadoRegistro          = "1"
                        };

                        flujoAprobacionEstadioEntityRepository.Insertar(datosDefecto);
                        //flujoAprobacionEstadioEntityRepository.GuardarCambios();
                    }
                    else
                    {
                        var entidadSincronizar = flujoAprobacionEntityRepository.GetById(entidad.CodigoFlujoAprobacion);
                        entidadSincronizar.CodigoFlujoAprobacion        = entidad.CodigoFlujoAprobacion;
                        entidadSincronizar.CodigoUnidadOperativa        = entidad.CodigoUnidadOperativa;
                        entidadSincronizar.CodigoPrimerFirmante         = entidad.CodigoPrimerFirmante;
                        entidadSincronizar.CodigoPrimerFirmanteOriginal = entidad.CodigoPrimerFirmante;

                        if (entidad.CodigoSegundoFirmante != null)
                        {
                            entidadSincronizar.CodigoSegundoFirmante         = entidad.CodigoSegundoFirmante;
                            entidadSincronizar.CodigoSegundoFirmanteOriginal = entidad.CodigoSegundoFirmante;
                        }

                        entidadSincronizar.CodigoPrimerFirmanteVinculada  = entidad.CodigoPrimerFirmanteVinculada;
                        entidadSincronizar.CodigoSegundoFirmanteVinculada = entidad.CodigoSegundoFirmanteVinculada;

                        //Detalle Flujo Aprobación Tipo de Contrato
                        List <FlujoAprobacionTipoContratoLogic> listadoFlujoAprobacionTipoContrato = flujoAprobacionLogicRepository.BuscarFlujoAprobacionTipoContrato(
                            null,
                            entidad.CodigoFlujoAprobacion,
                            null,
                            null
                            );

                        //Eliminar los tipos de contrato
                        foreach (var item in listadoFlujoAprobacionTipoContrato.Where(item => item.EstadoRegistro == DatosConstantes.EstadoRegistro.Activo).ToList())
                        {
                            flujoAprobacionTipoContratoEntityRepository.Eliminar(item.CodigoFlujoAprobacionTipoContrato);
                            flujoAprobacionTipoContratoEntityRepository.GuardarCambios();
                        }
                        //Editar o registrar tipos de contrato
                        foreach (var item in data.ListaTipoServicio)
                        {
                            FlujoAprobacionTipoContratoEntity entidadFlujoAprobacionTipoContrato = new FlujoAprobacionTipoContratoEntity();
                            var flujoAprobacionTipoContratoEditar = listadoFlujoAprobacionTipoContrato.Where(itemWhere => itemWhere.CodigoTipoContrato == item).FirstOrDefault();

                            if (flujoAprobacionTipoContratoEditar != null)
                            {
                                entidadFlujoAprobacionTipoContrato = flujoAprobacionTipoContratoEntityRepository.GetById(flujoAprobacionTipoContratoEditar.CodigoFlujoAprobacionTipoContrato);
                                entidadFlujoAprobacionTipoContrato.EstadoRegistro = DatosConstantes.EstadoRegistro.Activo;

                                flujoAprobacionTipoContratoEntityRepository.Editar(entidadFlujoAprobacionTipoContrato);
                            }
                            else
                            {
                                entidadFlujoAprobacionTipoContrato.CodigoFlujoAprobacion             = entidad.CodigoFlujoAprobacion;
                                entidadFlujoAprobacionTipoContrato.CodigoFlujoAprobacionTipoContrato = Guid.NewGuid();
                                entidadFlujoAprobacionTipoContrato.CodigoTipoContrato = item;
                                flujoAprobacionTipoContratoEntityRepository.Insertar(entidadFlujoAprobacionTipoContrato);
                            }
                            flujoAprobacionTipoServicioEntityRepository.GuardarCambios();
                        }

                        entidadSincronizar.IndicadorAplicaMontoMinimo = entidad.IndicadorAplicaMontoMinimo;
                        entidadSincronizar.EstadoRegistro             = entidad.EstadoRegistro;

                        flujoAprobacionEntityRepository.Editar(entidadSincronizar);
                    }

                    flujoAprobacionEstadioEntityRepository.GuardarCambios();
                }

                resultado.Result = data;
            }
            catch (Exception e)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <FlujoAprobacionService>(e);
            }

            return(resultado);
        }
コード例 #2
0
        /// <summary>
        /// Busca Bandeja Flujo Aprobacion
        /// </summary>
        /// <param name="filtro">Filtro de Flujo de Aprobación</param>
        /// <returns>Registros de flujo aprobacion</returns>
        public ProcessResult <List <FlujoAprobacionResponse> > BuscarBandejaFlujoAprobacion(FlujoAprobacionRequest filtro)
        {
            ProcessResult <List <FlujoAprobacionResponse> > resultado = new ProcessResult <List <FlujoAprobacionResponse> >();

            List <UnidadOperativaResponse> unidadOperativa = null;
            List <CodigoValorResponse>     tipoContrato    = null;
            List <CodigoValorResponse>     formaContrato   = null;

            var listaTrabajador = trabajadorService.BuscarTrabajador(new TrabajadorRequest()).Result;

            if (filtro.IndicadorObtenerDescripcion)
            {
                unidadOperativa = unidadOperativaService.BuscarUnidadOperativa(new FiltroUnidadOperativa()
                {
                    Nivel = "03"
                }).Result;
                tipoContrato  = politicaService.ListarTipoContrato().Result.OrderBy(item => item.Valor.ToString()).ToList();
                formaContrato = politicaService.ListarFormaContrato().Result;
            }
            try
            {
                Guid?CodigoFlujoAprobacion = (filtro.CodigoFlujoAprobacion != null && filtro.CodigoFlujoAprobacion != "") ? new Guid(filtro.CodigoFlujoAprobacion) : (Guid?)null;
                Guid?CodigoUnidadOperativa = (filtro.CodigoUnidadOperativa != null && filtro.CodigoUnidadOperativa != "") ? new Guid(filtro.CodigoUnidadOperativa) : (Guid?)null;

                List <FlujoAprobacionLogic> listado = flujoAprobacionLogicRepository.BuscarBandejaFlujoAprobacion(
                    CodigoFlujoAprobacion,
                    CodigoUnidadOperativa,
                    filtro.IndicadorAplicaMontoMinimo,
                    filtro.EstadoRegistro
                    );

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

                //Detalle Flujo Aprobación Tipo de Contrato
                List <FlujoAprobacionTipoContratoLogic> listadoFlujoAprobacionTipoServicio = flujoAprobacionLogicRepository.BuscarFlujoAprobacionTipoContrato(
                    null,
                    null,
                    null,//filtro.ListaTipoServicio == null ? null : filtro.ListaTipoServicio.Count == 1 ? filtro.ListaTipoServicio[0] : null,
                    filtro.EstadoRegistro
                    );

                foreach (var registro in listado)
                {
                    var objlistadoFlujoAprobacionTipoServicio = listadoFlujoAprobacionTipoServicio.FindAll(p => p.CodigoFlujoAprobacion == registro.CodigoFlujoAprobacion);

                    if (filtro.ListaTipoServicio != null)
                    {
                        if (!filtro.ListaTipoServicio.Any(itemAny => objlistadoFlujoAprobacionTipoServicio.Any(itemWhere => itemWhere.CodigoTipoContrato == itemAny)))
                        {
                            continue;
                        }
                    }

                    var flujoAprobacion = FlujoAprobacionAdapter.ObtenerFlujoAprobacion(registro, objlistadoFlujoAprobacionTipoServicio, unidadOperativa, tipoContrato);

                    var primerFirmante = listaTrabajador.Find(p => p.CodigoTrabajador == registro.CodigoPrimerFirmante.Value.ToString());
                    if (primerFirmante != null)
                    {
                        flujoAprobacion.NombrePrimerFirmante = primerFirmante.NombreCompleto;
                    }

                    if (registro.CodigoSegundoFirmante != null)
                    {
                        var segundoFirmante = listaTrabajador.Find(p => p.CodigoTrabajador == registro.CodigoSegundoFirmante.Value.ToString());
                        if (segundoFirmante != null)
                        {
                            flujoAprobacion.NombreSegundoFirmante = segundoFirmante.NombreCompleto;
                        }
                    }

                    resultado.Result.Add(flujoAprobacion);
                }

                resultado.Result = (from item in resultado.Result
                                    orderby item.DescripcionUnidadOperativa, item.IndicadorAplicaMontoMinimo, item.DescripcionTipoContrato ascending
                                    select item).ToList();
            }
            catch (Exception e)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <FlujoAprobacionService>(e);
            }
            return(resultado);
        }