void OfertaLaboral::AltaAsignacionCargo(Date* fechaEfectivizacion, int sueldo)
{
    EstudianteController* ec = EstudianteController::getInstance();
    Estudiante* e = ec->getEstudiante();
    IIterator * it = e->getInscripciones()->getIterator();
    bool noEncontrada = true;
    while((it->hasCurrent())&&(noEncontrada))
    {
        Inscripcion* insc;
        if ((insc = dynamic_cast<Inscripcion*> (it->getCurrent())) != NULL )
        {
            if (insc->EstInscripto(this->numExpediente))
            {
                Efectivizacion* efe = new Efectivizacion(sueldo, fechaEfectivizacion);
                insc->setEfectivizacion(efe);
                noEncontrada = false;
            }

        } else
        {
            throw "OfertaLaboral-> El objeto no es de la clase Inscripcion.";
        }
        it->next();
    }
    delete it;
}
// DarDeBajaLlamado
void cmdDarDeBajaLlamado::ejecutarComando()
{
    string numExpediente;
    Fabrica* fab = Fabrica::getInstance();
    IOfertaLaboralController *ctrlOL = fab->getIOfertaLaboralController();

    try
    {
        // muestro las ofertas
        IDictionary* dataOfertas = ctrlOL->ListarOfertas();

        cout << "Lista de Ofertas Laborales:\n";

        IIterator *it = dataOfertas->getIterator();
        while (it->hasCurrent())
        {
            DataOfertaLaboral *dOferta;
            if ( (dOferta = dynamic_cast<DataOfertaLaboral*> (it->getCurrent())) != NULL )
            {
                cout << "NRO. EXPEDIENTE: " << dOferta->getNumExpediente() << ", TITULO:" << dOferta->getTitulo() << "\n";
            } else
            {
                throw "cmdDarDeBajaLlamado -> El objeto no es de la clase DataOfertaLaboral.";
            }
            it->next();
        }
        delete it;

        // selecciono el llamado
        cout<< "Seleccione una Oferta Laboral indicando el Nro. Expediente: \n> ";
        cin >> numExpediente;

        ctrlOL->SeleccionarOferta(numExpediente, dataOfertas);

        // borro el llamado
        ctrlOL->DarBajaLlamado();

        cout << "\n- El Llamado se ha dado de baja correctamente.\n\n";
    }
    catch (const char* e)
    {
    	throw;
    }
}
Ejemplo n.º 3
0
ICollection *Empresa::getDataSucursales()
{
    List* result = new List();
    IIterator * it = this->sucursales->getIterator();
    while(it->hasCurrent())
    {
        Sucursal *suc;
        if ((suc = dynamic_cast<Sucursal*> (it->getCurrent())) != NULL )
        {
            result->add(suc->getDataSucursal());
        } else
        {
            throw "Empresa -> El objeto no es de la clase Sucursal.";
        }
        it->next();
    }
    delete it;

    return result;
}
void cmdAnotarBorrarNotificaciones::ejecutarComando()
{
    string cedEstudiante;

    Fabrica* fab = Fabrica::getInstance();
    IEstudianteController* cEstudiante = fab->getIEstudianteController();
    IEmpresaController* cEmpresa = fab->getIEmpresaController();

    try
    {
        //LISTAR ESTUDIANTES
        IDictionary *dataEstudiantes = cEstudiante->ListarEstudiantesRegistrados();
        cout << "Lista de Estudiantes registrados en el Sistema:\n";
        IIterator *it = dataEstudiantes->getIterator();
        while(it->hasCurrent())
        {
            DataEstudiante* dEstudiante;
            if ((dEstudiante = dynamic_cast<DataEstudiante*> (it->getCurrent())) != NULL)
            {
                cout << "Cedula: " + dEstudiante->getCedula() + ", Apellido: " + dEstudiante->getApellido() + "\n";
            } else
            {
                throw "cmdListarNotificacionesEstudiante -> El objeto no es de la clase DataEstudiante.";
            }
            it->next();
        }
        delete it;

        //SELECCIONA ESTUDIANTE
        cout<< "Seleccione un Estudiante indicando la cedula: \n";
        cin >> cedEstudiante;
        cEstudiante->SeleccionarEstudiante(cedEstudiante, dataEstudiantes);

        //ANOTAR O BORRAR ESTUDIANTE DE NOTIFICACIONES
        Estudiante* estRecordado =cEstudiante->getEstudiante();
        char opcion;
        cout<< "Indique si desea anotar (A) o borrar (B) a el estudiante seleccionado de las notificaciones: \n";
        cin >> opcion;
        IDictionary* empresas = cEmpresa->getEmpresas();
        IIterator *it2 = empresas->getIterator();
        while (it2->hasCurrent())
        {
            Empresa* emp;
            if ((emp = dynamic_cast<Empresa*> (it2->getCurrent())) != NULL)
            {
                IDictionary* sucursales = emp->getSucursales();
                IIterator *it3 = sucursales->getIterator();
                while(it3->hasCurrent())
                {
                    Sucursal* suc;
                    if ((suc = dynamic_cast<Sucursal*> (it3->getCurrent())) != NULL)
                    {
                        IDictionary* secciones = suc->getSecciones();
                        IIterator *it4 = secciones->getIterator();
                        while (it4->hasCurrent())
                        {
                            Seccion* secc;
                            if ((secc = dynamic_cast<Seccion*> (it4->getCurrent())) != NULL)
                            {
                                //IObserver *iobs = dynamic_cast<IObserver*> (estRecordado);
                                IObserver *iobs = estRecordado;
                                switch (opcion)
                                {
                                    case 'A':
                                        secc->addObserver(iobs);
                                        break;
                                    case 'B':
                                        secc->removeObserver(iobs);
                                    break;
                                }
                            } else
                            {
                                throw "cmdAnotarBorrarNotificaciones -> El objeto no es de la clase Seccion.";
                            }
                            it4->next();
                        }
                        delete it4;
                    } else
                    {
                        throw "cmdAnotarBorrarNotificaciones -> El objeto no es de la clase Sucursal.";
                    }
                    it3->next();
                }
                delete it3;
            } else
            {
                throw "cmdAnotarBorrarNotificaciones -> El objeto no es de la clase Empresa.";
            }
            it2->next();
        }
        delete it2;

        switch (opcion)
        {
            case 'A':
                cout << "\n- El Estudiante se ha Anotado a las Notificaciones.\n\n";
                break;
            case 'B':
                cout << "\n- El Estudiante se ha Borrado de las Notificaciones.\n\n";
            break;
        }

    }
    catch (const char* e)
    {
    	throw;
    }
}
Ejemplo n.º 5
0
// Sugiere una materia de las asignaturas seleccionadas tal que algun Estudiante haya aprobada.
// En caso que no exista se retorna un ICollection vacio (List).
IDictionary *Criterio2::devolverListaAsignatura(IDictionary* asigsUsuario)
{
    	// pedimos los estudiantes al manejador y vamos recorriendo uno a uno hasta encontrar alguno que tenga materias
	// aprobadas, en ese caso retornamos esa lista
    ManejadorEstudiante *eMgr = ManejadorEstudiante::getInstance();
    IDictionary *e = eMgr->getEstudiantes();

    bool found = false;

    ICollection *aprobadas;
    IDictionary *asignaturasNuevas = new OrderedDictionary();
    IIterator * it = e->getIterator();
    Estudiante *est;
    ICollectible *col;
    ICollectible *col2;
    ICollectible *col3;
    while(it->hasCurrent() && !found)
    {
        col = it->getCurrent();
        if ((est = dynamic_cast<Estudiante*> (col)) != NULL)
        {
            if(est->getAprobadas() != NULL)
            {
                aprobadas = est->getAprobadas();
                IIterator * it2 = aprobadas->getIterator();
                while(it2->hasCurrent() && !found)
                {
                    col2 = it2->getCurrent();
                    Aprobacion* apro;
                    if ((apro = dynamic_cast<Aprobacion*> (col2)) != NULL)
                    {
                        Asignatura* asig = apro->getAsignatura();
                        
                        IIterator * it3 = asigsUsuario->getIterator();
                        while(it3->hasCurrent() && !found)
                        {
                            col3 = it3->getCurrent();
                            Asignatura* asigUsu;
                            if ((asigUsu = dynamic_cast<Asignatura*> (col3)) != NULL)
                            {                                
                                if(asig->getCodigo() == asigUsu->getCodigo())
                                {
                                    Integer* cod = new Integer(asig->getCodigo());
                                    asignaturasNuevas->add(cod, asigUsu);
                                    found = true;
                                }
                            } else {
                                throw "Criterio1: el parametro no es del tipo Asignatura";
                            }
                            it3->next();
                        }
                        delete it3;
                    } else {
                        throw "Criterio1: el parametro no es del tipo Aprobacion";
                    }
                    it2->next();
                }
                delete it2;
            }
        } else {
            throw "Criterio1: el parametro no es del tipo Estudiante";
        }
        it->next();
    }
    delete it;
    
    //if(!found)
        //asignaturas = new OrderedDictionary();
    
    return asignaturasNuevas;
}