Exemplo n.º 1
0
        /// <summary>
        /// Realiza la adaptación de campos para registrar o actualizar
        /// </summary>
        /// <param name="data">Datos a registrar o actualizar</param>
        /// <returns>Entidad Datos a registrar</returns>
        public static FlujoAprobacionEntity RegistrarFlujoAprobacion(FlujoAprobacionRequest data)
        {
            FlujoAprobacionEntity flujoAprobacionEntity = new FlujoAprobacionEntity();

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

            //flujoAprobacionEntity.CodigoFlujoAprobacion = data.CodigoFlujoAprobacion;
            flujoAprobacionEntity.CodigoUnidadOperativa = new Guid(data.CodigoUnidadOperativa);
            //flujoAprobacionEntity.CodigoTipoServicio = null;//data.CodigoTipoServicio;
            flujoAprobacionEntity.IndicadorAplicaMontoMinimo   = data.IndicadorAplicaMontoMinimo.Value;
            flujoAprobacionEntity.EstadoRegistro               = data.EstadoRegistro;
            flujoAprobacionEntity.CodigoPrimerFirmante         = new Guid(data.CodigoPrimerFirmante);
            flujoAprobacionEntity.CodigoPrimerFirmanteOriginal = flujoAprobacionEntity.CodigoPrimerFirmante;

            if (data.CodigoSegundoFirmante != null)
            {
                flujoAprobacionEntity.CodigoSegundoFirmante         = new Guid(data.CodigoSegundoFirmante);
                flujoAprobacionEntity.CodigoSegundoFirmanteOriginal = flujoAprobacionEntity.CodigoSegundoFirmante;
            }

            if (data.CodigoPrimerFirmanteVinculada != null)
            {
                flujoAprobacionEntity.CodigoPrimerFirmanteVinculada = new Guid(data.CodigoPrimerFirmanteVinculada);
            }

            if (data.CodigoSegundoFirmanteVinculada != null)
            {
                flujoAprobacionEntity.CodigoSegundoFirmanteVinculada = new Guid(data.CodigoSegundoFirmanteVinculada);
            }


            return(flujoAprobacionEntity);
        }
Exemplo n.º 2
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);
        }