/// <summary>
        /// Obtiene una entidad de Unidad Operativa
        /// </summary>
        /// <param name="data">Data</param>
        /// <returns>Entity de Unidad Operativa</returns>
        public static UnidadOperativaEntity ObtenerUnidadOperativaEntity(DataUnidadOperativaRequest data)
        {
            var unidadOperativaEntity = new UnidadOperativaEntity();

            if (data.CodigoUnidadOperativa != null)
            {
                unidadOperativaEntity.Codigo = new Guid(data.CodigoUnidadOperativa);
            }
            else
            {
                Guid code;
                code = Guid.NewGuid();
                unidadOperativaEntity.Codigo = code;
            }
            unidadOperativaEntity.Nombre = data.Nombre;
            unidadOperativaEntity.CodigoIdentificacion       = data.CodigoIdentificacion;
            unidadOperativaEntity.CodigoNivelJerarquia       = data.CodigoNivelJerarquia;
            unidadOperativaEntity.CodigoUnidadOperativaPadre = data.CodigoUnidadOperativaPadre != null ? new Guid(data.CodigoUnidadOperativaPadre) : (Guid?)null;
            unidadOperativaEntity.CodigoTipoUnidadOperativa  = data.CodigoTipoUnidadOperativa;
            unidadOperativaEntity.IndicadorActiva            = data.IndicadorActiva;
            unidadOperativaEntity.CodigoResponsable          = data.CodigoResponsable != null ? new Guid(data.CodigoResponsable) : (Guid?)null;
            unidadOperativaEntity.CodigoPrimerRepresentante  = data.CodigoPrimerRepresentante != null ? new Guid(data.CodigoPrimerRepresentante) : (Guid?)null;
            unidadOperativaEntity.CodigoSegundoRepresentante = data.CodigoSegundoRepresentante != null ? new Guid(data.CodigoSegundoRepresentante) : (Guid?)null;
            unidadOperativaEntity.CodigoTercerRepresentante  = data.CodigoTercerRepresentante != null ? new Guid(data.CodigoTercerRepresentante) : (Guid?)null;
            unidadOperativaEntity.CodigoCuartoRepresentante  = data.CodigoCuartoRepresentante != null ? new Guid(data.CodigoCuartoRepresentante) : (Guid?)null;
            unidadOperativaEntity.Direccion         = data.Direccion;
            unidadOperativaEntity.CodigoZonaHoraria = data.CodigoZonaHoraria != null ? new Guid(data.CodigoZonaHoraria) : (Guid?)null;

            return(unidadOperativaEntity);
        }
        /// <summary>
        /// Registra una unidad operativa
        /// </summary>
        /// <param name="data">Parámetros de Búsqueda</param>
        /// <returns>Resultado del Proceso</returns>
        public ProcessResult <DataUnidadOperativaRequest> RegistrarUnidadOperativa(DataUnidadOperativaRequest data)
        {
            ProcessResult <DataUnidadOperativaRequest> resultado = new ProcessResult <DataUnidadOperativaRequest>();

            try
            {
                UnidadOperativaEntity entidad = UnidadOperativaAdapter.ObtenerUnidadOperativaEntity(data);

                var resultadoRepetidoCI = unidadOperativaLogicRepository.RepiteCI(
                    data.CodigoIdentificacion
                    );
                var resultadoRepetidoNombre = unidadOperativaLogicRepository.RepiteNombre(
                    data.Nombre
                    );
                bool existeRepetidoCI     = resultadoRepetidoCI.Any(e => e.CodigoUnidadOperativa != entidad.Codigo);
                bool existeRepetidoNombre = resultadoRepetidoNombre.Any(e => e.CodigoUnidadOperativa != entidad.Codigo);

                if (existeRepetidoCI || existeRepetidoNombre)
                {
                    resultado.IsSuccess = false;
                    if (existeRepetidoCI)
                    {
                        resultado.Exception = new ApplicationLayerException <UnidadOperativaService>(MensajesSistema.UOCIExiste);
                    }
                    if (existeRepetidoNombre)
                    {
                        resultado.Exception = new ApplicationLayerException <UnidadOperativaService>(MensajesSistema.UONombreExiste);
                    }
                }
                else
                {
                    if (data.CodigoUnidadOperativa == null)
                    {
                        entidad.CodigoPrimerRepresentanteOriginal  = entidad.CodigoPrimerRepresentante;
                        entidad.CodigoSegundoRepresentanteOriginal = entidad.CodigoSegundoRepresentante;
                        entidad.CodigoTercerRepresentanteOriginal  = entidad.CodigoTercerRepresentante;
                        entidad.CodigoCuartoRepresentanteOriginal  = entidad.CodigoCuartoRepresentante;
                        unidadOperativaEntityRepository.Insertar(entidad);
                    }
                    else
                    {
                        var entidadEditar = unidadOperativaEntityRepository.GetById(entidad.Codigo);
                        entidadEditar.Nombre = entidad.Nombre;
                        entidadEditar.CodigoIdentificacion               = entidad.CodigoIdentificacion;
                        entidadEditar.IndicadorActiva                    = entidad.IndicadorActiva;
                        entidadEditar.CodigoNivelJerarquia               = entidad.CodigoNivelJerarquia;
                        entidadEditar.CodigoUnidadOperativaPadre         = entidad.CodigoUnidadOperativaPadre;
                        entidadEditar.CodigoTipoUnidadOperativa          = entidad.CodigoTipoUnidadOperativa;
                        entidadEditar.CodigoResponsable                  = entidad.CodigoResponsable ?? entidadEditar.CodigoResponsable;
                        entidadEditar.CodigoPrimerRepresentante          = entidad.CodigoPrimerRepresentante ?? entidadEditar.CodigoPrimerRepresentante;
                        entidadEditar.CodigoSegundoRepresentante         = entidad.CodigoSegundoRepresentante ?? entidadEditar.CodigoSegundoRepresentante;
                        entidadEditar.CodigoTercerRepresentante          = entidad.CodigoTercerRepresentante ?? entidadEditar.CodigoTercerRepresentante;
                        entidadEditar.CodigoCuartoRepresentante          = entidad.CodigoCuartoRepresentante ?? entidadEditar.CodigoCuartoRepresentante;
                        entidadEditar.CodigoPrimerRepresentanteOriginal  = entidad.CodigoPrimerRepresentante ?? entidadEditar.CodigoPrimerRepresentante;
                        entidadEditar.CodigoSegundoRepresentanteOriginal = entidad.CodigoSegundoRepresentante ?? entidadEditar.CodigoSegundoRepresentante;
                        entidadEditar.CodigoTercerRepresentanteOriginal  = entidad.CodigoTercerRepresentante ?? entidadEditar.CodigoTercerRepresentante;
                        entidadEditar.CodigoCuartoRepresentanteOriginal  = entidad.CodigoCuartoRepresentante ?? entidadEditar.CodigoCuartoRepresentante;
                        entidadEditar.Direccion = entidad.Direccion ?? entidadEditar.Direccion;

                        unidadOperativaEntityRepository.Editar(entidadEditar);
                    }
                    unidadOperativaEntityRepository.GuardarCambios();
                    resultado.Result = data;
                }
            }
            catch (Exception e)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <UnidadOperativaService>(e);
            }
            return(resultado);
        }