Statistieken
This commit is contained in:
		| @@ -1,61 +1,60 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * To change this license header, choose License Headers in Project Properties. | ||||
|  * To change this template file, choose Tools | Templates | ||||
|  * and open the template in the editor. | ||||
|  */ | ||||
|  | ||||
| namespace Inforbank\Application\Helper; | ||||
|  | ||||
| use Exception; | ||||
| use Inforbank\Application; | ||||
| use Inforbank\Application\Helper\Rekeningen; | ||||
|  | ||||
| /** | ||||
|  * Description of Overboekingen | ||||
|  * | ||||
|  * @author Sjelm | ||||
|  */ | ||||
| class Overboekingen | ||||
| { | ||||
|      | ||||
|     private static function isValidFloat($bedrag){ | ||||
| class Overboekingen { | ||||
|  | ||||
|     public static $EIGENAAR = 1; | ||||
|     public static $IBAN = 2; | ||||
|     public static $BANK = 3; | ||||
|     public static $BESTAAN = 4; | ||||
|     public static $ZELFDE = 5; | ||||
|     public static $GETAL = 6; | ||||
|     public static $POSITIEF = 7; | ||||
|     public static $SALDO = 8; | ||||
|     public static $OMSCHRIJVING = 9; | ||||
|  | ||||
|     private static function isValidFloat($bedrag) { | ||||
|         $hasdecimal = false; | ||||
|         $decimals = 0; | ||||
|         $voorcijfers = 0; | ||||
|         for($i = 0; $i < strlen($bedrag); $i++){ | ||||
|         for ($i = 0; $i < strlen($bedrag); $i++) { | ||||
|             $char = substr($bedrag, $i, 1); | ||||
|             $ascii = ord($char); | ||||
|             if($hasdecimal){ | ||||
|                 if($char === "." || $char === ","){ | ||||
|             if ($hasdecimal) { | ||||
|                 if ($char === "." || $char === ",") { | ||||
|                     //Twee komma's | ||||
|                     return false; | ||||
|                 }else if($ascii >= ord("0") && $ascii <= ord("9")){ | ||||
|                 } else if ($ascii >= ord("0") && $ascii <= ord("9")) { | ||||
|                     $decimals++; | ||||
|                     if($decimals > 2){ | ||||
|                     if ($decimals > 2) { | ||||
|                         //Meer dan twee cijfers achter de komma | ||||
|                         return false; | ||||
|                     } | ||||
|                 }else{ | ||||
|                 } else { | ||||
|                     //Ongeldig teken | ||||
|                     return false; | ||||
|                 } | ||||
|             }else if($char === "." || $char === ","){ | ||||
|             } else if ($char === "." || $char === ",") { | ||||
|                 $hasdecimal = true; | ||||
|             }else if($ascii >= ord("0") || $ascii <= ord("9")){ | ||||
|             } else if ($ascii >= ord("0") || $ascii <= ord("9")) { | ||||
|                 $voorcijfers++; | ||||
|                 if($voorcijfers > 9){ | ||||
|                 if ($voorcijfers > 9) { | ||||
|                     //Te veel cijfers voor de komma | ||||
|                     return false; | ||||
|                 } | ||||
|             }else{ | ||||
|             } else { | ||||
|                 //Ongeldig teken | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * | ||||
|      * @param IBAN $van De rekening waar het bedrag vanaf wordt gehaald | ||||
| @@ -64,59 +63,50 @@ class Overboekingen | ||||
|      * @param string $omschrijving De omschrijving van de overoeking | ||||
|      * $param string $type Het type overboeking | ||||
|      */ | ||||
|     public static function createOverboeking($van, $naar, $bedrag, $omschrijving, $type) | ||||
|     { | ||||
|         $rekeningen = Rekeningen::getCurrentUserRekeningen(); | ||||
|         $vanRekening = false; | ||||
|         //Controleer of de rekening wel van de ingelogde klant is | ||||
|         foreach ($rekeningen as $rek) { | ||||
|             if ($rek['iban'] === $van) { | ||||
|                 $vanRekening = $rek; | ||||
|                 break; | ||||
|             } | ||||
|         } | ||||
|     public static function createOverboeking($van, $naar, $bedrag, $omschrijving, $type) { | ||||
|         $vanRekening = Rekeningen::isEigenRekeningIBAN($van); | ||||
|         if (!$vanRekening) { | ||||
|             //error: rekening is niet van klant | ||||
|             throw new Exception("U bent niet de eigenaar van deze rekening"); | ||||
|             throw new Exception("U bent niet de eigenaar van deze rekening", Overboekingen::$EIGENAAR); | ||||
|         } | ||||
|         $ibanHelper = new IBAN(); | ||||
|         if (!$ibanHelper->isValidIBAN($naar)) { | ||||
|             //error: ongeldige iban | ||||
|             throw new Exception("De IBAN van de ontvanger is ongeldig"); | ||||
|             throw new Exception("De IBAN van de ontvanger is ongeldig", Overboekingen::$IBAN); | ||||
|         } elseif (!($ibanHelper->getLand($naar) == "NL" && $ibanHelper->getBank($naar) === "INFO")) { | ||||
|             //error: andere bank | ||||
|             throw new Exception("U kunt geen overboeking naar een andere bank doen"); | ||||
|             throw new Exception("U kunt geen overboeking naar een andere bank doen", Overboekingen::$BANK); | ||||
|         } | ||||
|         $naarRekeningnr = $ibanHelper->getRekeningNummer($naar); | ||||
|          | ||||
|  | ||||
|         //Controleer of de rekening bestaat | ||||
|         $db = Application::getContainer()->db; | ||||
|         $naarRekening = $db->rekeningen->where("rekeningnr", $naarRekeningnr); | ||||
|         if(count($naarRekening) !== 1){ | ||||
|         if (count($naarRekening) !== 1) { | ||||
|             //error: rekening bestaat niet | ||||
|             throw new Exception("De ontvangende rekening bestaat niet"); | ||||
|             throw new Exception("De ontvangende rekening bestaat niet", Overboekingen::$BESTAAN); | ||||
|         } | ||||
|         foreach($naarRekening as $rekening){ | ||||
|         foreach ($naarRekening as $rekening) { | ||||
|             $naarid = $rekening['id']; | ||||
|         } | ||||
|         if ($naarRekeningnr == $vanRekening['nr']) { | ||||
|             //error: afzender is hetzelfde als ontvanger | ||||
|             throw new Exception("De ontvangende rekening is hetzelfde als de verzendende"); | ||||
|             throw new Exception("De ontvangende rekening is hetzelfde als de verzendende", Overboekingen::$ZELFDE); | ||||
|         } | ||||
|         if(!Overboekingen::isValidFloat($bedrag)){ | ||||
|             throw new Exception("Geef als bedrag een getal op met maximaal 9 cijfers voor en 2 na de komma"); | ||||
|         if (!Overboekingen::isValidFloat($bedrag)) { | ||||
|             throw new Exception("Geef als bedrag een getal op met maximaal 9 cijfers voor en 2 na de komma", Overboekingen::$GETAL); | ||||
|         } | ||||
|          | ||||
|         if($bedrag <= 0){ | ||||
|             throw new Exception("Het bedrag moet positief zijn"); | ||||
|  | ||||
|         if ($bedrag <= 0) { | ||||
|             throw new Exception("Het bedrag moet positief zijn", Overboekingen::$POSITIEF); | ||||
|         } | ||||
|         $bedragvalue = doubleval(str_replace(",", ".", $bedrag)); | ||||
|         if($bedragvalue > $vanRekening['saldo']){ | ||||
|             throw new Exception("Te laag saldo"); | ||||
|         if ($bedragvalue > $vanRekening['saldo']) { | ||||
|             throw new Exception("Te laag saldo", Overboekingen::$SALDO); | ||||
|         } | ||||
|         if (strlen($omschrijving) > 40 && $type !== "id") { | ||||
|             //error: te lange omschrijving | ||||
|             throw new Exception("De omschrijving is te lang"); | ||||
|             throw new Exception("De omschrijving is te lang", Overboekingen::$OMSCHRIJVING); | ||||
|         } | ||||
|         //Voeg transactie toe | ||||
|         $db->transacties->insert([ | ||||
| @@ -124,24 +114,26 @@ class Overboekingen | ||||
|             "naar" => $naarRekeningnr, | ||||
|             "bedrag" => $bedrag, | ||||
|             "type" => $type, | ||||
|             "omschrijving" => $omschrijving | ||||
|             "omschrijving" => $omschrijving, | ||||
|             "datum" => date("Y-m-d") | ||||
|         ]); | ||||
|  | ||||
|         //Wijzig saldo | ||||
|         $db->rekeningen->where("rekeningnr", $vanRekening['nr'])->update([ | ||||
|             "saldo" => $vanRekening['saldo'] - $bedragvalue | ||||
|             ]); | ||||
|         ]); | ||||
|         $naarRekening[$naarid]->update([ | ||||
|             "saldo" => $naarRekening[$naarid]['saldo'] + $bedragvalue | ||||
|             ]); | ||||
|         ]); | ||||
|         //Stuur bericht bij laag saldo | ||||
|         if($vanRekening['saldo'] - $bedragvalue < 20){ | ||||
|         if ($vanRekening['saldo'] - $bedragvalue < 20) { | ||||
|             Berichten::newBericht(Application::getContainer()->auth->getUserID(), "De InforBank", "U heeft een laag saldo"); | ||||
|         } | ||||
|         //In de database worden de getallen met 10 cijfers voor de komma opgeslagen | ||||
|         //Als het saldo te hoog wordt heb je een probleem | ||||
|         if($naarRekening[$naarid]['saldo'] + $bedragvalue > 9000000000){ | ||||
|         if ($naarRekening[$naarid]['saldo'] + $bedragvalue > 9000000000) { | ||||
|             Berichten::newBericht($naarRekening[$naarid]['klantid'], "De InforBank", "Uw saldo is te hoog"); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -44,4 +44,30 @@ class Rekeningen | ||||
|  | ||||
|         return $returnArray; | ||||
|     } | ||||
|      | ||||
|     public static function isEigenRekeningIBAN($iban){ | ||||
|         $rekeningen = Rekeningen::getCurrentUserRekeningen(); | ||||
|         $vanRekening = false; | ||||
|         //Controleer of de rekening wel van de ingelogde klant is | ||||
|         foreach ($rekeningen as $rek) { | ||||
|             if ($rek['iban'] === $iban) { | ||||
|                 $vanRekening = $rek; | ||||
|                 break; | ||||
|             } | ||||
|         } | ||||
|         return $vanRekening; | ||||
|     } | ||||
|      | ||||
|     public static function isEigenRekeningnr($nr){ | ||||
|         $rekeningen = Rekeningen::getCurrentUserRekeningen(); | ||||
|         $vanRekening = false; | ||||
|         //Controleer of de rekening wel van de ingelogde klant is | ||||
|         foreach ($rekeningen as $rek) { | ||||
|             if ($rek['nr'] === $nr) { | ||||
|                 $vanRekening = $rek; | ||||
|                 break; | ||||
|             } | ||||
|         } | ||||
|         return $vanRekening; | ||||
|     } | ||||
| } | ||||
|   | ||||
							
								
								
									
										47
									
								
								src/Application/Helper/Statistieken.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								src/Application/Helper/Statistieken.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Inforbank\Application\Helper; | ||||
|  | ||||
| use Exception; | ||||
| use Inforbank\Application; | ||||
|  | ||||
| class Statistieken { | ||||
|     public static $EIGENAAR = 1; | ||||
|      | ||||
|     public static function getSaldoverloop($dagen, $rekeningNummer){ | ||||
|         if(!Rekeningen::isEigenRekeningnr($rekeningNummer)){ | ||||
|             throw new Exception("Dit is niet uw eigen rekening", Statistieken::$EIGENAAR); | ||||
|         } | ||||
|         $xas = array(); | ||||
|         for($i = $dagen; $i >= 0; $i--){ | ||||
|             $xas[] = date("d M", strtotime("-$i day")); | ||||
|         } | ||||
|         $container = Application::getContainer(); | ||||
|         $user = $container->auth->getUserID(); | ||||
|         $db = $container->db; | ||||
|         $saldo = $db->rekeningen->where("rekeningnr", $rekeningNummer)[array("rekeningnr" => $rekeningNummer)]['saldo']; | ||||
|         $eraf = $db->transacties->select("datum, SUM(bedrag) as bedr")->where("van", $rekeningNummer) | ||||
|                 ->group("datum")->order("datum ASC, id DESC"); | ||||
|         $erbij = $db->transacties->select("datum, SUM(bedrag) as bedr")->where("naar", $rekeningNummer) | ||||
|                 ->group("datum")->order("datum ASC, id DESC"); | ||||
|         $huidigSaldo = (double)$saldo; | ||||
|         $yas = array($huidigSaldo); | ||||
|         for($i = 1; $i <= $dagen; $i++){ | ||||
|             $af = (double)$eraf[array("datum" => date("Y-m-d", strtotime("-" . $i . " day")))]['bedr']; | ||||
|             $bij = (double)$erbij[array("datum" => date("Y-m-d", strtotime("-" . $i . " day")))]['bedr']; | ||||
|             if(!isset($af)){ | ||||
|                 $af = 0; | ||||
|             } | ||||
|             if(!isset($bij)){ | ||||
|                 $bij = 0; | ||||
|             } | ||||
|             $huidigSaldo += $af; | ||||
|             $huidigSaldo -= $bij; | ||||
|             array_unshift($yas, $huidigSaldo); | ||||
|         } | ||||
|         return [ | ||||
|             "x-as" => $xas, | ||||
|             "y-as" => $yas | ||||
|         ]; | ||||
|     } | ||||
| } | ||||
| @@ -47,7 +47,7 @@ class Overboeking | ||||
|                 Overboekingen::createOverboeking($ibanhelper->getIBAN($van), $naar, $bedrag, $omschrijving, "bg"); | ||||
|                 return Redirect::create($request, $response, "/rekeningen/$van"); | ||||
|             } catch (Exception $e) { | ||||
|                 return Redirect::create($request, $response, "/overboeking?error=" . $e->getMessage() . ""); | ||||
|                 return Redirect::create($request, $response, "/overboeking?error=" . $e->getCode() . ""); | ||||
|             } | ||||
|         })->add(new Middleware()); | ||||
|     } | ||||
|   | ||||
							
								
								
									
										36
									
								
								src/Application/Statistieken.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								src/Application/Statistieken.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | ||||
| <?php | ||||
|  | ||||
| /** | ||||
|  *  Informatica Eindproject D4p | ||||
|  *  6in3, Stedelijk Gymnasium Nijmegen | ||||
|  *  Docent: Hans de Wolf | ||||
|  * | ||||
|  *  ================== | ||||
|  * | ||||
|  *  Daniel Boutros, | ||||
|  *  Christiaan Goossens, | ||||
|  *  Jelmer Hinssen | ||||
|  */ | ||||
|  | ||||
| namespace Inforbank\Application; | ||||
|  | ||||
| use Inforbank\Application\Auth\Middleware; | ||||
| use Inforbank\Application\Helper\Header; | ||||
| use Inforbank\Application\Helper\Statistieken as StatistiekenHelper; | ||||
| use Slim\App; | ||||
|  | ||||
| class Statistieken { | ||||
|     public function __construct(App $app) | ||||
|     { | ||||
|         $app->get('/statistieken/{rekeningnummer}', function ($request, $response, $args) { | ||||
|             $verloop = StatistiekenHelper::getSaldoverloop(30, $args['rekeningnummer']); | ||||
|             return $this->renderer->render($response, "statistieken.phtml", [ | ||||
|             "header" => Header::getHeaderData(), | ||||
|             "statistieken" => [ | ||||
|                 "x-as" => $verloop['x-as'], | ||||
|                 "y-as" => $verloop['y-as'] | ||||
|             ] | ||||
|         ]); | ||||
|         })->add(new Middleware()); | ||||
|     } | ||||
| } | ||||
| @@ -45,7 +45,8 @@ class Transacties { | ||||
|             } | ||||
|             $container = Application::getContainer(); | ||||
|             $db = $container->db; | ||||
|             $transacties = $db->transacties->where('van', '12345678')->or('naar', $rekeningnr); | ||||
|             $transacties = $db->transacties->where('van', '12345678')->or('naar', $rekeningnr) | ||||
|                                 ->order("datum DESC, id DESC"); | ||||
|  | ||||
|             $returnArray = array(); | ||||
|  | ||||
| @@ -55,7 +56,8 @@ class Transacties { | ||||
|                 "naar" => $ibanhelper->getIBAN($transactie['naar']), | ||||
|                 "bedrag" => $transactie['bedrag'], | ||||
|                 "type" => $transactie['type'], | ||||
|                 "omschrijving" => $transactie['omschrijving'] | ||||
|                 "omschrijving" => $transactie['omschrijving'], | ||||
|                 "datum" => $transactie['datum'] | ||||
|                 ); | ||||
|             } | ||||
|             return $this->renderer->render($response, 'transacties.phtml', [ | ||||
|   | ||||
| @@ -134,6 +134,7 @@ new Inforbank\Application\Transacties($app); | ||||
| new Inforbank\Application\Overboeking($app); | ||||
| new Inforbank\Application\Rekeningen($app); | ||||
| new Inforbank\Application\Berichten($app); | ||||
| new Inforbank\Application\Statistieken($app); | ||||
|  | ||||
| /** | ||||
|  * Idob | ||||
|   | ||||
		Reference in New Issue
	
	Block a user