Manuestaire / megacorporation

2 stars 1 forks source link

Banqueros #30

Closed DamageESP closed 11 years ago

DamageESP commented 11 years ago

Estoy terminando la sección de banqueros, para comprobar si el solicitante puede o no solicitar el préstamo y asignar los beneficios.

@Manuestaire @NiciusB

DamageESP commented 11 years ago

Función:


function solicitar($id_user){
$user_datos=mysql_fetch_array(mysql_query("SELECT ingresos FROM usuarios WHERE nick='".$_SESSION['nick']."'"));
$user_prestamista=mysql_fetch_array(mysql_query("SELECT prestamo, prestamo_percent, id FROM usuarios WHERE id=$id_user"));
if(empty($user_prestamista['id'])) return "ERROR";
$solicitar="";
$necesario = (($user_prestamista['prestamo'] * (1 + ($user_prestamista['prestamo_percent']/100)))/7);

// Ejemplo: 10.000.000 € al 40 %.

// 1. Recoge la cantidad (10.000.000 €) del prestamo que se va a solicitar en "prestamo".
// 2. Divide la cantidad de intereses "prestamo_percent" entre 100, de forma que quede un decimal, 0.4.
// 3. Se le suma 1 a la cantidad obtenida en la anterior operación, para obtener un multiplicador
// que nos diga la cantidad total que se debe pagar, 1.4 por la cantidad 10.000.000 es igual a 14.000.000.
// 4. Sabiendo el total, lo dividimos en 7 plazos, de modo que se obtiene la cuota diaria.

if (($user_datos['ingresos']/2) >= $necesario)

// 5. Si la mitad de los ingresos del solicitante es mayor o igual a la cantidad diaria, lo puede obtener.
// Necesitas 2.000.000 € de ingresos para obtener el préstamo. (14.000.000 / 7)

{
$solicitar = $solicitar."<a href='banqueros.action.php?id=$id_user'>Solicitar</a>";
return $solicitar;
}
else{$solicitar = $solicitar."No puedes permitirtelo"; return $solicitar;}
}
Manuestaire commented 11 years ago

Creo que estáan mal los paréntesis:

(($user_prestamista['prestamo'] * (1 + ($user_prestamista['prestamo_percent']/100)))/7)

DamageESP commented 11 years ago

Arreglados los paréntesis.

Préstamos listos para ser solicitados, solo necesito que Nuno cree el campo "beneficios", y ahi se sumara o restara los beneficios o la cuota diaria.

if (isset($_GET['id'])) 
{
$_GET['id'] = mysql_real_escape_string($_GET['id']);
if ($_GET['id'] == $user_datos['id']) {echo "<script>alert('No puedes solicitar tu propio crédito.'); document.location=('banqueros.php');</script>";}else{
$comprobar = mysql_query("SELECT id, prestamo, prestamo_percent, prestamo_plazo FROM usuarios WHERE id='$_GET[id]'");
    if($row = mysql_fetch_array($comprobar))
    {
        $cant_diaria = (($row['prestamo'] * (1 + ($row['prestamo_percent']/100)))/$row['prestamo_plazo']);
        if (($user_datos['ingresos']/2) >= $cant_diaria && $user_datos['prestamo'] == 0){
        $texto_prestamista= "Han solicitado su prestamo";
        $texto_solicitante= "Has solicitado un prestamo";
        mysql_query("UPDATE usuarios SET beneficios = beneficios + '$cant_diaria' WHERE id='$row[id]'");
        mysql_query("UPDATE usuarios SET beneficios = beneficios - '$cant_diaria' WHERE id='$user_datos[id]'");
        mysql_query("UPDATE usuarios SET dinero = dinero + '$row[prestamo]' WHERE id='$user_datos[id]'");
        mysql_query("INSERT INTO mensajes (para_quien,fecha, tipo, mensaje) VALUES ('$row[id]','".time()."', 3, '$texto_prestamista')");
        mysql_query("INSERT INTO mensajes (para_quien,fecha, tipo, mensaje) VALUES ('$user_datos[id]','".time()."', 3, '$texto_solicitante')");
        mysql_query("UPDATE usuarios SET prestamo = 0 WHERE id='$row[id]'");
        mysql_query("UPDATE usuarios SET prestamo_percent = 0 WHERE id='$row[id]'");
        echo "<script>alert('Préstamo solicitado. Ahora deberá pagar las cuotas diariamente.'); document.location=('banqueros.php');</script>";
        }
        else {echo "<script>alert('No ganas lo suficiente como para pagar este crédito o tienes un crédito a la espera de ser solicitado.'); document.location=('banqueros.php');</script>";}
    }
    else {echo "<script>alert('Crédito o usuario inexistente.'); document.location=('banqueros.php');</script>";}
}
}

Algo que me haya olvidado? Los requisitos para préstamos los debatimos en el issue que le corresponde.

También hay que hacer que se registre la fecha de solicitud y se almacene durante una semana, y yo no sé hacerlo xD.

Manuestaire commented 11 years ago

PD: aconsejo reemplazar 7 por una constante, que represente el plazo, así en el futuro se podrían poner prestamos con distintos plazos, más fácilmente.

DamageESP commented 11 years ago

Listo, ahora añadire los inputs para seleccionar el plazo y se almacenará en la BD.

Tengo pensado reorganizar la BD, Nuno tiene razón, he hecho demasiados campos en la tabla usuarios.

Puede que un dia me ponga y haga una tabla para cada sección, más que nada es cuestión de organización.

DamageESP commented 11 years ago

Por cierto, creo que una forma de hacer lo de los préstamos es ir restandole 1 al campo prestamo_plazo hasta que sea 0, aunque no es demasiado eficiente, ya que la hora no se almacenaría.

Manuestaire commented 11 years ago

Ya nos meteremos con lo de los plazos de los préstamos, de momento con que lo dejes preparado creo que sobra...

Lo de meterlo como constante es eso, simplemente para clarificar el código, si se pone un 7 y no se dice por qué luego es un rollo mirar a ver por qué...

Manuestaire commented 11 years ago

PD: sin tener ni puta idea de mysql, tener todo en la misma tabla, no es mejor a la hora de tener que borrar un usuario?

DamageESP commented 11 years ago

Los plazos estan listos.

Sí, pero por ejemplo digamos que estas creando la seccion prestamos y quieres tener todos los datos de prestamos de un usuario. Si lo tuviesemos todo en la misma tabla y seleccionaramos todo lo que hay en esa tabla, el array que nos resulte de la consulta sería gigantesco, a no ser que en la consulta pongamos los campos que queremos seleccionar..

Ej:

// Si esta todo en la misma tabla.

mysql_query("SELECT id, nick, prestamo, prestamo_percent, prestamo_plazo FROM usuarios WHERE id='id_del_usuario' ");

// Si esta cada apartado en su tabla.

mysql_query("SELECT * FROM prestamos WHERE id='id_del_usuario' ");

Sí es cierto que a la hora de borrar el usuario con una sola consulta estaría terminado. No sé, sería cuestión de hablarlo. La principal ventaja es que queda todo mucho más organizado.

Manuestaire commented 11 years ago

Pues sí casi mejor que la segunda opción...

NiciusB commented 11 years ago

Sep, yo también había pensado eso xDD

DamageESP commented 11 years ago

Necesito que estén disponibles los impuestos y los beneficios para que se puedan asignar los beneficios diarios.

Issue: #10

DamageESP commented 11 years ago

Supongo que con lo de los impuestos esto se da por acabado.

NiciusB commented 11 years ago

Los beneficios no son calculados nunca, además que no sirven para nada xD Reabro para que te cobre y te de dinero una vez abierto el prestamo

NiciusB commented 11 years ago

Además, si los beneficios esos funcionaran, serían para siempre

DamageESP commented 11 years ago

Lo de los préstamos se podría hacer registrando el día en que se solicita en la BD + 7, y cada minuto se va comprobando si coincide la fecha. Ejemplo:

// Se solicita el préstamo el día 11/11/2012 a las 15:06.
// Llamemos a la fecha actual $fechaactual.

mysql_query("INSERT INTO prestamos (fecha_expiracion) VALUES ('$fechaactual' + $_POST['plazo']) WHERE id = $user_datos['id']");

// Ahora en el cron de minutos se comprobarian los prestamos.

if($fechalimite = mysql_fetch_array(mysql_query("SELECT * FROM prestamos WHERE fecha_expiracion = NOW()"))){

mysql_query("INSERT INTO mensajes etc etc");
mysql_query("UPDATE usuarios SET beneficios = etc etc");
mysql_query("DELETE FROM prestamos WHERE id = $fechalimite['id']");

}
NiciusB commented 11 years ago

Corrigiendo

// Se solicita el préstamo el día 11/11/2012 a las 15:06.
// Llamemos a la fecha actual time()
// hay que mirar si el post plazo esta entre los limites
$plazo=$_POST['plazo']*60*60*24;

mysql_query("INSERT INTO prestamos (fecha_expiracion) VALUES ('".time() ."+$plazo') WHERE id = $user_datos[id]");

// Ahora en el cron de minutos se comprobarian los prestamos.

$queryprestamos=mysql_query("SELECT * FROM prestamos WHERE fecha_expiracion <= ".time());
while($fechalimite = mysql_fetch_array($queryprestamos)){
mysql_query("INSERT INTO mensajes etc etc");
mysql_query("UPDATE usuarios SET beneficios = etc etc");
mysql_query("DELETE FROM prestamos WHERE id = $fechalimite['id']");
}
DamageESP commented 11 years ago

Pues eso xD

NiciusB commented 11 years ago

Parece que ya están terminados. Si lo están completamente cerramos

DamageESP commented 11 years ago

Listo, he puesto una cosilla que faltaba.

Cierro.