/** * Execute the console command. * * @return mixed */ public function handle() { if (Carbon::now()->toDateString() == Carbon::now()->startOfMonth()->toDateString()) { $users = User::where('type', 'ecole')->get(); foreach ($users as $user) { $sc = SchoolYear::where('user_id', $user->id)->where('current', 1)->first(); if ($sc->type == 'Semis' && Carbon::now()->between($sc->startch1, $sc->endch2)) { foreach ($user->children as $child) { foreach ($child->bills as $bill) { $getChild = Bill::where('child_id', $bill->child_id)->where('reduction', 1)->where('school_year_id', $sc->id)->orderBy('id', 'desc')->where('nbrMois', 1)->first(); if ($getChild) { $facture = new Bill(); $facture->start = $getChild->end->toDateString(); $facture->end = $getChild->end->addMonth()->toDateString(); $facture->status = 0; $facture->user_id = $getChild->user_id; $facture->nbrMois = $getChild->nbrMois; $facture->reductionPrix = $getChild->reductionPrix; $facture->school_year_id = $getChild->school_year_id; $facture->reduction = 1; $enfant = Child::where('user_id', $getChild->user_id)->where('id', $getChild->child_id)->first(); $taman = ''; if ($getChild->reduction == 1) { if ($enfant->transport == 1) { foreach ($enfant->levels as $level) { $getPriceOfLevel = PriceBill::where('niveau', $level->id)->where('user_id', $getChild->user_id)->first(); $taman = $getPriceOfLevel->prix; } $facture->somme = $taman - $getChild->reductionPrix + Transport::where('user_id', $getChild->user_id)->first()->somme; } elseif ($enfant->transport == 0) { foreach ($enfant->levels as $level) { $getPriceOfLevel = PriceBill::where('niveau', $level->id)->where('user_id', $getChild->user_id)->first(); $taman = $getPriceOfLevel->prix; } $facture->somme = $taman - $getChild->reductionPrix; } } $facture->child_id = $getChild->child_id; $facture->f_id = $getChild->f_id; $facture->save(); break; } } } } elseif ($sc->type == 'Trim' && Carbon::now()->between($sc->startch1, $sc->endch3)) { foreach ($user->children as $child) { foreach ($child->bills as $bill) { $getChild = Bill::where('child_id', $bill->child_id)->where('reduction', 1)->where('school_year_id', $sc->id)->where('nbrMois', 1)->orderBy('id', 'desc')->first(); if ($getChild) { $facture = new Bill(); $facture->start = $getChild->end->toDateString(); $facture->end = $getChild->end->addMonth()->toDateString(); $facture->status = 0; $facture->user_id = $getChild->user_id; $facture->nbrMois = $getChild->nbrMois; $facture->reductionPrix = $getChild->reductionPrix; $facture->school_year_id = $getChild->school_year_id; $facture->reduction = 1; $enfant = Child::where('user_id', $getChild->user_id)->where('id', $getChild->child_id)->first(); $taman = ''; if ($getChild->reduction == 1) { if ($enfant->transport == 1) { foreach ($enfant->levels as $level) { $getPriceOfLevel = PriceBill::where('niveau', $level->id)->where('user_id', $getChild->user_id)->first(); $taman = $getPriceOfLevel->prix; } $facture->somme = $taman - $getChild->reductionPrix + Transport::where('user_id', $getChild->user_id)->first()->somme; } elseif ($enfant->transport == 0) { foreach ($enfant->levels as $level) { $getPriceOfLevel = PriceBill::where('niveau', $level->id)->where('user_id', $getChild->user_id)->first(); $taman = $getPriceOfLevel->prix; } $facture->somme = $taman - $getChild->reductionPrix; } } $facture->child_id = $getChild->child_id; $facture->f_id = $getChild->f_id; $facture->save(); break; } } } } } } }
/** * Execute the console command. * * @return mixed */ public function handle() { $users = User::where('type', 'ecole')->get(); foreach ($users as $user) { $sc = SchoolYear::where('user_id', $user->id)->where('current', 1)->first(); if ($sc->type == 'Semis' && Carbon::now()->between($sc->startch1, $sc->endch2)) { foreach ($user->children as $child) { foreach ($child->bills as $bill) { $getChild = Bill::where('child_id', $bill->child_id)->where('reduction', 0)->where('school_year_id', $sc->id)->where('nbrMois', 3)->orderBy('id', 'desc')->first(); if ($getChild) { // give us from the end of bill to 3 months ahead $fromStartToNbrMois = $getChild->end->addMonths($getChild->nbrMois); if ($fromStartToNbrMois <= $sc->endch2) { if (Carbon::now() >= $getChild->end) { $facture = new Bill(); $facture->start = $getChild->end->toDateString(); $facture->end = $getChild->end->addMonths($getChild->nbrMois)->toDateString(); $facture->status = 0; $facture->user_id = $getChild->user_id; $facture->nbrMois = $getChild->nbrMois; $facture->reductionPrix = null; $facture->school_year_id = $getChild->school_year_id; $facture->reduction = 0; $enfant = Child::where('user_id', $getChild->user_id)->where('id', $getChild->child_id)->first(); $taman = ''; if ($getChild->reduction == 0) { if ($enfant->transport == 1) { foreach ($enfant->levels as $level) { $getPriceOfLevel = PriceBill::where('niveau', $level->id)->where('user_id', $getChild->user_id)->first(); $taman = $getPriceOfLevel->prix; } $TotalOnMonths = $taman * $getChild->nbrMois; $total_transport = Transport::where('user_id', $getChild->user_id)->first()->somme * $getChild->nbrMois; $prix_finale = $TotalOnMonths + $total_transport; $facture->somme = $prix_finale; } elseif ($enfant->transport == 0) { foreach ($enfant->levels as $level) { $getPriceOfLevel = PriceBill::where('niveau', $level->id)->where('user_id', $getChild->user_id)->first(); $taman = $getPriceOfLevel->prix; } $prix_finale = $taman * $getChild->nbrMois; $facture->somme = $prix_finale; } } $facture->child_id = $getChild->child_id; $facture->f_id = $getChild->f_id; $facture->save(); break; } } elseif ($fromStartToNbrMois > $sc->endch2) { $last_bill = Bill::where('child_id', $getChild->child_id)->where('reduction', 0)->where('school_year_id', $sc->id)->where('nbrMois', 1)->orderBy('id', 'desc')->first(); if (!$last_bill && Carbon::now() > $getChild->end) { $facture = new Bill(); $facture->start = $getChild->end->toDateString(); $facture->end = $getChild->end->addMonths(1)->toDateString(); $facture->status = 0; $facture->user_id = $getChild->user_id; $facture->nbrMois = 1; $facture->reductionPrix = null; $facture->school_year_id = $getChild->school_year_id; $facture->reduction = 0; $enfant = Child::where('user_id', $getChild->user_id)->where('id', $getChild->child_id)->first(); $taman = ''; if ($getChild->reduction == 0) { if ($enfant->transport == 1) { foreach ($enfant->levels as $level) { $getPriceOfLevel = PriceBill::where('niveau', $level->id)->where('user_id', $getChild->user_id)->first(); $taman = $getPriceOfLevel->prix; } $TotalOnMonths = $taman * 1; $total_transport = Transport::where('user_id', $getChild->user_id)->first()->somme * 1; $prix_finale = $TotalOnMonths + $total_transport; $facture->somme = $prix_finale; } elseif ($enfant->transport == 0) { foreach ($enfant->levels as $level) { $getPriceOfLevel = PriceBill::where('niveau', $level->id)->where('user_id', $getChild->user_id)->first(); $taman = $getPriceOfLevel->prix; } $prix_finale = $taman * 1; $facture->somme = $prix_finale; } } $facture->child_id = $getChild->child_id; $facture->f_id = $getChild->f_id; $facture->save(); break; } } } } } } elseif ($sc->type == 'Trim' && Carbon::now()->between($sc->startch1, $sc->endch3)) { foreach ($user->children as $child) { foreach ($child->bills as $bill) { $getChild = Bill::where('child_id', $bill->child_id)->where('reduction', 0)->where('school_year_id', $sc->id)->where('nbrMois', 3)->orderBy('id', 'desc')->first(); if ($getChild) { // give is from the end of bill to 3 months ahead $fromStartToNbrMois = $getChild->end->addMonths($getChild->nbrMois); if ($fromStartToNbrMois <= $sc->endch3) { if (Carbon::now() >= $getChild->end) { $facture = new Bill(); $facture->start = $getChild->end->toDateString(); $facture->end = $getChild->end->addMonths($getChild->nbrMois)->toDateString(); $facture->status = 0; $facture->user_id = $getChild->user_id; $facture->nbrMois = $getChild->nbrMois; $facture->reductionPrix = null; $facture->school_year_id = $getChild->school_year_id; $facture->reduction = 0; $enfant = Child::where('user_id', $getChild->user_id)->where('id', $getChild->child_id)->first(); $taman = ''; if ($getChild->reduction == 0) { if ($enfant->transport == 1) { foreach ($enfant->levels as $level) { $getPriceOfLevel = PriceBill::where('niveau', $level->id)->where('user_id', $getChild->user_id)->first(); $taman = $getPriceOfLevel->prix; } $TotalOnMonths = $taman * $getChild->nbrMois; $total_transport = Transport::where('user_id', $getChild->user_id)->first()->somme * $getChild->nbrMois; $prix_finale = $TotalOnMonths + $total_transport; $facture->somme = $prix_finale; } elseif ($enfant->transport == 0) { foreach ($enfant->levels as $level) { $getPriceOfLevel = PriceBill::where('niveau', $level->id)->where('user_id', $getChild->user_id)->first(); $taman = $getPriceOfLevel->prix; } $prix_finale = $taman * $getChild->nbrMois; $facture->somme = $prix_finale; } } $facture->child_id = $getChild->child_id; $facture->f_id = $getChild->f_id; $facture->save(); break; } } elseif ($fromStartToNbrMois >= $sc->endch3) { $last_bill = Bill::where('child_id', $getChild->child_id)->where('reduction', 0)->where('school_year_id', $sc->id)->where('nbrMois', 1)->orderBy('id', 'desc')->first(); if (!$last_bill && Carbon::now() > $getChild->end) { $facture = new Bill(); $facture->start = $getChild->end->toDateString(); $facture->end = $getChild->end->addMonths(1)->toDateString(); $facture->status = 0; $facture->user_id = $getChild->user_id; $facture->nbrMois = 1; $facture->reductionPrix = null; $facture->school_year_id = $getChild->school_year_id; $facture->reduction = 0; $enfant = Child::where('user_id', $getChild->user_id)->where('id', $getChild->child_id)->first(); $taman = ''; if ($getChild->reduction == 0) { if ($enfant->transport == 1) { foreach ($enfant->levels as $level) { $getPriceOfLevel = PriceBill::where('niveau', $level->id)->where('user_id', $getChild->user_id)->first(); $taman = $getPriceOfLevel->prix; } $TotalOnMonths = $taman * 1; $total_transport = Transport::where('user_id', $getChild->user_id)->first()->somme * 1; $prix_finale = $TotalOnMonths + $total_transport; $facture->somme = $prix_finale; } elseif ($enfant->transport == 0) { foreach ($enfant->levels as $level) { $getPriceOfLevel = PriceBill::where('niveau', $level->id)->where('user_id', $getChild->user_id)->first(); $taman = $getPriceOfLevel->prix; } $prix_finale = $taman * 1; $facture->somme = $prix_finale; } } $facture->child_id = $getChild->child_id; $facture->f_id = $getChild->f_id; $facture->save(); break; } } } } } } } }