/// <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 FlujoAprobacionEstadioEntity RegistrarFlujoAprobacionEstadio(FlujoAprobacionEstadioRequest data)
        {
            FlujoAprobacionEstadioEntity flujoAprobacionEstadioEntity = new FlujoAprobacionEstadioEntity();

            if (data.CodigoFlujoAprobacionEstadio != null)
            {
                flujoAprobacionEstadioEntity.CodigoFlujoAprobacionEstadio = new Guid(data.CodigoFlujoAprobacionEstadio);
            }
            else
            {
                Guid code;
                code = Guid.NewGuid();
                flujoAprobacionEstadioEntity.CodigoFlujoAprobacionEstadio = code;
            }
            flujoAprobacionEstadioEntity.CodigoFlujoAprobacion = new Guid(data.CodigoFlujoAprobacion);
            flujoAprobacionEstadioEntity.Orden                   = data.Orden;
            flujoAprobacionEstadioEntity.Descripcion             = data.Descripcion;
            flujoAprobacionEstadioEntity.TiempoAtencion          = data.TiempoAtencion;
            flujoAprobacionEstadioEntity.HorasAtencion           = data.HorasAtencion;
            flujoAprobacionEstadioEntity.IndicadorVersionOficial = data.IndicadorVersionOficial;
            flujoAprobacionEstadioEntity.IndicadorPermiteCarga   = data.IndicadorPermiteCarga;
            flujoAprobacionEstadioEntity.IndicadorNumeroContrato = data.IndicadorNumeroContrato;
            flujoAprobacionEstadioEntity.EstadoRegistro          = data.EstadoRegistro;
            flujoAprobacionEstadioEntity.IndicadorIncluirVisto   = data.IndicadorIncluirVisto;

            return(flujoAprobacionEstadioEntity);
        }
示例#2
0
        /// <summary>
        /// Registra / Edita Flujo Aprobacion Estadios
        /// </summary>
        /// <param name="data">Datos de estadio</param>
        /// <param name="responsable">Responsable de estadio</param>
        /// <param name="informados">Informados de estadio</param>
        /// <param name="responsableVinculadas">Responsable de vinculadas</param>
        /// <returns>Indicador con el resultado de la operación</returns>
        public ProcessResult <FlujoAprobacionEstadioRequest> RegistrarFlujoAprobacionEstadio(FlujoAprobacionEstadioRequest data, List <FlujoAprobacionEstadioRequest> responsable, List <FlujoAprobacionEstadioRequest> informados, List <FlujoAprobacionEstadioRequest> responsableVinculadas)
        {
            ProcessResult <FlujoAprobacionEstadioRequest> resultado = new ProcessResult <FlujoAprobacionEstadioRequest>();
            string flagRegistrar = "I";

            try
            {
                string codigoResponsable             = "";
                FlujoAprobacionEstadioEntity entidad = FlujoAprobacionEstadioAdapter.RegistrarFlujoAprobacionEstadio(data);

                var resultadoRepetidoOrden = flujoAprobacionLogicRepository.RepiteFlujoAprobacionEstadioOrden(
                    new Guid(data.CodigoFlujoAprobacion),
                    data.Orden
                    );
                bool existeRepetidoOrden = resultadoRepetidoOrden.Any(e => e.CodigoFlujoAprobacionEstadio != entidad.CodigoFlujoAprobacionEstadio);
                var  numeroOrden         = resultadoRepetidoOrden.Select(e => e.Orden);


                var resultadoRepetidoDescripcion = flujoAprobacionLogicRepository.RepiteFlujoAprobacionEstadioDescripcion(
                    new Guid(data.CodigoFlujoAprobacion),
                    data.Descripcion
                    );
                bool existeRepetidoDescripcion = resultadoRepetidoDescripcion.Any(e => e.CodigoFlujoAprobacionEstadio != entidad.CodigoFlujoAprobacionEstadio);


                if (data.IndicadorVersionOficial)
                {
                    flujoAprobacionEstadioEntityRepository.ActualizaIndicadorVersionOficial(
                        entidad.CodigoFlujoAprobacion
                        );
                }

                if (data.IndicadorNumeroContrato)
                {
                    flujoAprobacionEstadioEntityRepository.ActualizaIndicadorNumeroContrato(
                        entidad.CodigoFlujoAprobacion
                        );
                }


                if (existeRepetidoDescripcion)
                {
                    resultado.IsSuccess = false;
                    resultado.Exception = new ApplicationLayerException <FlujoAprobacionService>(MensajesSistema.FlujoAprobacionEstadioDescripcionExiste);
                    return(resultado);
                }

                if (data.CodigoFlujoAprobacionEstadio == null)
                {
                    if (numeroOrden.FirstOrDefault() == 1)
                    {
                        resultado.IsSuccess = false;
                        resultado.Exception = new ApplicationLayerException <FlujoAprobacionService>(MensajesSistema.FlujoAprobacionOrdenIgualUno);
                        return(resultado);
                    }

                    flujoAprobacionEstadioEntityRepository.DesplazarOrden(
                        entidad,
                        flagRegistrar
                        );

                    flujoAprobacionEstadioEntityRepository.Insertar(entidad);
                }
                else
                {
                    if (numeroOrden.FirstOrDefault() >= 1)
                    {
                        flagRegistrar = "U";
                        flujoAprobacionEstadioEntityRepository.DesplazarOrden(
                            entidad,
                            flagRegistrar
                            );
                        var entidadSincronizar = flujoAprobacionEstadioEntityRepository.GetById(entidad.CodigoFlujoAprobacionEstadio);
                        entidadSincronizar.CodigoFlujoAprobacion = entidad.CodigoFlujoAprobacion;
                        entidadSincronizar.Orden                   = entidad.Orden;
                        entidadSincronizar.Descripcion             = entidad.Descripcion;
                        entidadSincronizar.TiempoAtencion          = entidad.TiempoAtencion;
                        entidadSincronizar.HorasAtencion           = entidad.HorasAtencion;
                        entidadSincronizar.IndicadorNumeroContrato = entidad.IndicadorNumeroContrato;
                        entidadSincronizar.IndicadorPermiteCarga   = entidad.IndicadorPermiteCarga;
                        entidadSincronizar.IndicadorVersionOficial = entidad.IndicadorVersionOficial;
                        entidadSincronizar.EstadoRegistro          = entidad.EstadoRegistro;
                        entidadSincronizar.IndicadorIncluirVisto   = entidad.IndicadorIncluirVisto;
                        flujoAprobacionEstadioEntityRepository.Editar(entidadSincronizar);
                    }
                    if (existeRepetidoOrden)
                    {
                        resultado.IsSuccess = false;
                        resultado.Exception = new ApplicationLayerException <FlujoAprobacionService>(MensajesSistema.FlujoAprobacionOrdenIgualUno);
                        return(resultado);
                    }
                }

                flujoAprobacionLogicRepository.EliminaParticipante(
                    entidad.CodigoFlujoAprobacionEstadio
                    );

                //Registrar Participante Responsable (R)
                if (responsable.Count > 0)
                {
                    foreach (var item in responsable)
                    {
                        codigoResponsable = item.Responsable;
                    }

                    this.RegistrarFlujoAprobacionParticipante(new FlujoAprobacionParticipanteRequest()
                    {
                        CodigoFlujoAprobacionEstadio = entidad.CodigoFlujoAprobacionEstadio.ToString(),
                        CodigoTrabajador             = codigoResponsable,
                        CodigoTipoParticipante       = DatosConstantes.FlujoAprobacionTipoParticipante.Responsable
                    });
                }

                //Registrar Participante Informador (I)
                if (informados.Count > 0)
                {
                    foreach (var item in informados)
                    {
                        this.RegistrarFlujoAprobacionParticipante(new FlujoAprobacionParticipanteRequest()
                        {
                            CodigoFlujoAprobacionEstadio = entidad.CodigoFlujoAprobacionEstadio.ToString(),
                            CodigoTrabajador             = item.Informados,
                            CodigoTipoParticipante       = DatosConstantes.FlujoAprobacionTipoParticipante.Informado
                        });
                    }
                }

                //Registrar Participante Responsable de Vinculadas (V)
                if (responsableVinculadas != null)
                {
                    foreach (var item in responsableVinculadas)
                    {
                        this.RegistrarFlujoAprobacionParticipante(new FlujoAprobacionParticipanteRequest()
                        {
                            CodigoFlujoAprobacionEstadio = entidad.CodigoFlujoAprobacionEstadio.ToString(),
                            CodigoTrabajador             = item.Responsable,
                            CodigoTipoParticipante       = DatosConstantes.FlujoAprobacionTipoParticipante.ResponsableVinculadas
                        });
                    }
                }

                flujoAprobacionEstadioEntityRepository.GuardarCambios();

                resultado.Result = data;
            }
            catch (Exception e)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <FlujoAprobacionService>(e);
            }
            return(resultado);
        }
示例#3
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);
        }