Beispiel #1
0
//Definición de los métodos de la clase Pedido
Pedido::Pedido (Usuario_Pedido& up, Pedido_Articulo& pa, Usuario& u, const Tarjeta& t, const Fecha& f) : num_(N_pedidos + 1), tarjeta_(&t), fecha_(f), total_(0) {
    if (t.caducidad() < f) throw Tarjeta::Caducada(t.caducidad());
    if (&u != t.titular()) throw Pedido::Impostor(u);
    Fecha actual = Fecha();
    for(auto& i : u.compra()) {
        if (LibroDigital* ld = dynamic_cast<LibroDigital*> (i.first)) {
            if (ld->f_expir() < actual)
                u.compra(*ld, 0);
        }
        else {
            ArticuloAlmacenable* pa = dynamic_cast<ArticuloAlmacenable*> (i.first);
            if (i.second > pa->stock()){
                Articulo& aux = *(i.first);
                vaciar_carrito(u);
                throw Pedido::SinStock(aux);
            }
        }
    }
    if (u.n_articulos() == 0) throw Pedido::Vacio(u);
    for(auto& i : u.compra()) {
        if (ArticuloAlmacenable* aa = dynamic_cast<ArticuloAlmacenable*> (i.first)){
            aa->stock() = aa->stock() - 1;
        }
        pa.pedir (*this, *(i.first), (i.first)->precio(), i.second);
        total_ += (i.first)->precio() * i.second;
        u.compra (*(i.first), 0);
    }
    up.asocia(u, *this);
    N_pedidos++;
}
Eleccion* ABMEleccion::GetEleccion(int idEleccion){

	if (ExistsKey(idEleccion)){

		Element * el = this->bpPlusTree->findExact(idEleccion);
		char* data = el->getData();

		//data = fecha|idcargo|distritos

		int sfecha;
		vector<int> distritos;
		int idCargo;
		ProcessData::obtenerDataEleccion(data, el->getDataSize(), sfecha, idCargo, distritos);
		//TODO: no anda bien obtenerData para devolver la fecha

		Fecha fecha = Fecha(Helper::IntToString(sfecha));

		//Busco  los distritos
		Eleccion * eleccion =  new Eleccion(idCargo, fecha, idEleccion);

		for(int i = 0; i < distritos.size(); i++){
			eleccion->AddDistrito(distritos[i]);
		}

		return eleccion;
	}
	else {
		return NULL;
	}
}
Beispiel #3
0
Fecha::Fecha(const char* cad)
{
        int d,m,a;
        if(sscanf(cad,"%d/%d/%d",&d,&m,&a)!=3)
                throw Invalida(" Formato incorrecto");
        else
                *this = Fecha(d,m,a);


}
Eleccion* ABMConteo::GenerateEleccion(string idEleccion){

	vector<string> splitedEleccion = Helper::split(idEleccion, '_');
	int idCargo = Helper::StringToInt(splitedEleccion[1]);

	Fecha fecha = Fecha(splitedEleccion[0]);
	Eleccion* e = new Eleccion(idCargo, fecha);

	return e;
}
Beispiel #5
0
Tarjeta::Tarjeta(Tarjeta::Tipo t, const Numero& num, Usuario& u,const Fecha& f)
:tipo_{t}, num_{num}, titular_{&u}, f_cad_{f}
{

        if(caducidad() < Fecha())
                throw Tarjeta::Caducada(caducidad());
        else
        {
                titular_facial_= u.nombre() +" "+u.apellidos();

                for(int i = 0; i<titular_facial_.length(); i++)
                        titular_facial_[i]= std::toupper(titular_facial_[i]);

                u.es_titular_de(*this);
        }
}
Beispiel #6
0
Fecha operator -( const Fecha& f, int dias)
{


       return Fecha( f ) += -dias;
}