Your IP : 216.73.217.174
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
bootstrap="vendor/autoload.php"
colors="true"
>
<testsuites>
<testsuite name="Unit">
<directory suffix="Test.php">./tests/Unit</directory>
</testsuite>
<testsuite name="Feature">
<directory suffix="Test.php">./tests/Feature</directory>
</testsuite>
</testsuites>
<coverage processUncoveredFiles="true">
<include>
<directory suffix=".php">./app</directory>
</include>
</coverage>
<php>
<server name="APP_ENV" value="testing"/>
<server name="BCRYPT_ROUNDS" value="4"/>
<server name="CACHE_DRIVER" value="array"/>
<!-- <server name="DB_CONNECTION" value="sqlite"/> -->
<!-- <server name="DB_DATABASE" value=":memory:"/> -->
<server name="MAIL_MAILER" value="array"/>
<server name="QUEUE_CONNECTION" value="sync"/>
<server name="SESSION_DRIVER" value="array"/>
<server name="TELESCOPE_ENABLED" value="false"/>
</php>
</phpunit>
<?php
return [
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
'accepted' => 'The :attribute must be accepted.',
'accepted_if' => 'The :attribute must be accepted when :other is :value.',
'active_url' => 'The :attribute is not a valid URL.',
'after' => 'The :attribute must be a date after :date.',
'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
'alpha' => 'The :attribute must only contain letters.',
'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.',
'alpha_num' => 'The :attribute must only contain letters and numbers.',
'array' => 'The :attribute must be an array.',
'before' => 'The :attribute must be a date before :date.',
'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
'between' => [
'numeric' => 'The :attribute must be between :min and :max.',
'file' => 'The :attribute must be between :min and :max kilobytes.',
'string' => 'The :attribute must be between :min and :max characters.',
'array' => 'The :attribute must have between :min and :max items.',
],
'boolean' => 'The :attribute field must be true or false.',
'confirmed' => 'The :attribute confirmation does not match.',
'current_password' => 'The password is incorrect.',
'date' => 'The :attribute is not a valid date.',
'date_equals' => 'The :attribute must be a date equal to :date.',
'date_format' => 'The :attribute does not match the format :format.',
'different' => 'The :attribute and :other must be different.',
'digits' => 'The :attribute must be :digits digits.',
'digits_between' => 'The :attribute must be between :min and :max digits.',
'dimensions' => 'The :attribute has invalid image dimensions.',
'distinct' => 'The :attribute field has a duplicate value.',
'email' => 'The :attribute must be a valid email address.',
'ends_with' => 'The :attribute must end with one of the following: :values.',
'exists' => 'The selected :attribute is invalid.',
'file' => 'The :attribute must be a file.',
'filled' => 'The :attribute field must have a value.',
'gt' => [
'numeric' => 'The :attribute must be greater than :value.',
'file' => 'The :attribute must be greater than :value kilobytes.',
'string' => 'The :attribute must be greater than :value characters.',
'array' => 'The :attribute must have more than :value items.',
],
'gte' => [
'numeric' => 'The :attribute must be greater than or equal :value.',
'file' => 'The :attribute must be greater than or equal :value kilobytes.',
'string' => 'The :attribute must be greater than or equal :value characters.',
'array' => 'The :attribute must have :value items or more.',
],
'image' => 'The :attribute must be an image.',
'in' => 'The selected :attribute is invalid.',
'in_array' => 'The :attribute field does not exist in :other.',
'integer' => 'The :attribute must be an integer.',
'ip' => 'The :attribute must be a valid IP address.',
'ipv4' => 'The :attribute must be a valid IPv4 address.',
'ipv6' => 'The :attribute must be a valid IPv6 address.',
'json' => 'The :attribute must be a valid JSON string.',
'lt' => [
'numeric' => 'The :attribute must be less than :value.',
'file' => 'The :attribute must be less than :value kilobytes.',
'string' => 'The :attribute must be less than :value characters.',
'array' => 'The :attribute must have less than :value items.',
],
'lte' => [
'numeric' => 'The :attribute must be less than or equal :value.',
'file' => 'The :attribute must be less than or equal :value kilobytes.',
'string' => 'The :attribute must be less than or equal :value characters.',
'array' => 'The :attribute must not have more than :value items.',
],
'max' => [
'numeric' => 'The :attribute must not be greater than :max.',
'file' => 'The :attribute must not be greater than :max kilobytes.',
'string' => 'The :attribute must not be greater than :max characters.',
'array' => 'The :attribute must not have more than :max items.',
],
'mimes' => 'The :attribute must be a file of type: :values.',
'mimetypes' => 'The :attribute must be a file of type: :values.',
'min' => [
'numeric' => 'The :attribute must be at least :min.',
'file' => 'The :attribute must be at least :min kilobytes.',
'string' => 'The :attribute must be at least :min characters.',
'array' => 'The :attribute must have at least :min items.',
],
'multiple_of' => 'The :attribute must be a multiple of :value.',
'not_in' => 'The selected :attribute is invalid.',
'not_regex' => 'The :attribute format is invalid.',
'numeric' => 'The :attribute must be a number.',
'password' => 'The password is incorrect.',
'present' => 'The :attribute field must be present.',
'regex' => 'The :attribute format is invalid.',
'required' => 'The :attribute field is required.',
'required_if' => 'The :attribute field is required when :other is :value.',
'required_unless' => 'The :attribute field is required unless :other is in :values.',
'required_with' => 'The :attribute field is required when :values is present.',
'required_with_all' => 'The :attribute field is required when :values are present.',
'required_without' => 'The :attribute field is required when :values is not present.',
'required_without_all' => 'The :attribute field is required when none of :values are present.',
'prohibited' => 'The :attribute field is prohibited.',
'prohibited_if' => 'The :attribute field is prohibited when :other is :value.',
'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.',
'same' => 'The :attribute and :other must match.',
'size' => [
'numeric' => 'The :attribute must be :size.',
'file' => 'The :attribute must be :size kilobytes.',
'string' => 'The :attribute must be :size characters.',
'array' => 'The :attribute must contain :size items.',
],
'starts_with' => 'The :attribute must start with one of the following: :values.',
'string' => 'The :attribute must be a string.',
'timezone' => 'The :attribute must be a valid timezone.',
'unique' => 'The :attribute has already been taken.',
'uploaded' => 'The :attribute failed to upload.',
'url' => 'The :attribute must be a valid URL.',
'uuid' => 'The :attribute must be a valid UUID.',
/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap our attribute placeholder
| with something more reader friendly such as "E-Mail Address" instead
| of "email". This simply helps us make our message more expressive.
|
*/
'attributes' => [],
];
<?php
return [
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
'previous' => '« Previous',
'next' => 'Next »',
];
<?php
return [
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
'reset' => 'Your password has been reset!',
'sent' => 'We have emailed your password reset link!',
'throttled' => 'Please wait before retrying.',
'token' => 'This password reset token is invalid.',
'user' => "We can't find a user with that email address.",
];
<?php
return [
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
'failed' => 'These credentials do not match our records.',
'password' => 'The provided password is incorrect.',
'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
];
<?php
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
return [
'accepted' => 'Le champ :attribute doit être accepté.',
'active_url' => 'Le champ :attribute n\'est pas une URL valide.',
'after' => 'Le champ :attribute doit être une date postérieure au :date.',
'after_or_equal' => 'Le champ :attribute doit être une date postérieure ou égale au :date.',
'alpha' => 'Le champ :attribute doit contenir uniquement des lettres.',
'alpha_dash' => 'Le champ :attribute doit contenir uniquement des lettres, des chiffres et des tirets.',
'alpha_num' => 'Le champ :attribute doit contenir uniquement des chiffres et des lettres.',
'array' => 'Le champ :attribute doit être un tableau.',
'attached' => ':attribute est déjà attaché(e).',
'before' => 'Le champ :attribute doit être une date antérieure au :date.',
'before_or_equal' => 'Le champ :attribute doit être une date antérieure ou égale au :date.',
'between' => [
'array' => 'Le tableau :attribute doit contenir entre :min et :max éléments.',
'file' => 'La taille du fichier de :attribute doit être comprise entre :min et :max kilo-octets.',
'numeric' => 'La valeur de :attribute doit être comprise entre :min et :max.',
'string' => 'Le texte :attribute doit contenir entre :min et :max caractères.',
],
'boolean' => 'Le champ :attribute doit être vrai ou faux.',
'confirmed' => 'Le champ de confirmation :attribute ne correspond pas.',
'current_password' => 'Le mot de passe est incorrect.',
'date' => 'Le champ :attribute n\'est pas une date valide.',
'date_equals' => 'Le champ :attribute doit être une date égale à :date.',
'date_format' => 'Le champ :attribute ne correspond pas au format :format.',
'different' => 'Les champs :attribute et :other doivent être différents.',
'digits' => 'Le champ :attribute doit contenir :digits chiffres.',
'digits_between' => 'Le champ :attribute doit contenir entre :min et :max chiffres.',
'dimensions' => 'La taille de l\'image :attribute n\'est pas conforme.',
'distinct' => 'Le champ :attribute a une valeur en double.',
'email' => 'Le champ :attribute doit être une adresse email valide.',
'ends_with' => 'Le champ :attribute doit se terminer par une des valeurs suivantes : :values',
'exists' => 'Le champ :attribute sélectionné est invalide.',
'file' => 'Le champ :attribute doit être un fichier.',
'filled' => 'Le champ :attribute doit avoir une valeur.',
'gt' => [
'array' => 'Le tableau :attribute doit contenir plus de :value éléments.',
'file' => 'La taille du fichier de :attribute doit être supérieure à :value kilo-octets.',
'numeric' => 'La valeur de :attribute doit être supérieure à :value.',
'string' => 'Le texte :attribute doit contenir plus de :value caractères.',
],
'gte' => [
'array' => 'Le tableau :attribute doit contenir au moins :value éléments.',
'file' => 'La taille du fichier de :attribute doit être supérieure ou égale à :value kilo-octets.',
'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :value.',
'string' => 'Le texte :attribute doit contenir au moins :value caractères.',
],
'image' => 'Le champ :attribute doit être une image.',
'in' => 'Le champ :attribute est invalide.',
'in_array' => 'Le champ :attribute n\'existe pas dans :other.',
'integer' => 'Le champ :attribute doit être un entier.',
'ip' => 'Le champ :attribute doit être une adresse IP valide.',
'ipv4' => 'Le champ :attribute doit être une adresse IPv4 valide.',
'ipv6' => 'Le champ :attribute doit être une adresse IPv6 valide.',
'json' => 'Le champ :attribute doit être un document JSON valide.',
'lt' => [
'array' => 'Le tableau :attribute doit contenir moins de :value éléments.',
'file' => 'La taille du fichier de :attribute doit être inférieure à :value kilo-octets.',
'numeric' => 'La valeur de :attribute doit être inférieure à :value.',
'string' => 'Le texte :attribute doit contenir moins de :value caractères.',
],
'lte' => [
'array' => 'Le tableau :attribute doit contenir au plus :value éléments.',
'file' => 'La taille du fichier de :attribute doit être inférieure ou égale à :value kilo-octets.',
'numeric' => 'La valeur de :attribute doit être inférieure ou égale à :value.',
'string' => 'Le texte :attribute doit contenir au plus :value caractères.',
],
'max' => [
'array' => 'Le tableau :attribute ne peut contenir plus de :max éléments.',
'file' => 'La taille du fichier de :attribute ne peut pas dépasser :max kilo-octets.',
'numeric' => 'La valeur de :attribute ne peut être supérieure à :max.',
'string' => 'Le texte de :attribute ne peut contenir plus de :max caractères.',
],
'mimes' => 'Le champ :attribute doit être un fichier de type : :values.',
'mimetypes' => 'Le champ :attribute doit être un fichier de type : :values.',
'min' => [
'array' => 'Le tableau :attribute doit contenir au moins :min éléments.',
'file' => 'La taille du fichier de :attribute doit être supérieure à :min kilo-octets.',
'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :min.',
'string' => 'Le texte :attribute doit contenir au moins :min caractères.',
],
'multiple_of' => 'La valeur de :attribute doit être un multiple de :value',
'not_in' => 'Le champ :attribute sélectionné n\'est pas valide.',
'not_regex' => 'Le format du champ :attribute n\'est pas valide.',
'numeric' => 'Le champ :attribute doit contenir un nombre.',
'password' => 'Le mot de passe est incorrect',
'present' => 'Le champ :attribute doit être présent.',
'prohibited' => 'Le champ :attribute est interdit.',
'prohibited_if' => 'Le champ :attribute est interdit quand :other a la valeur :value.',
'prohibited_unless' => 'Le champ :attribute est interdit à moins que :other est l\'une des valeurs :values.',
'regex' => 'Le format du champ :attribute est invalide.',
'relatable' => ':attribute n\'est sans doute pas associé(e) avec cette donnée.',
'required' => 'Le champ :attribute est obligatoire.',
'required_if' => 'Le champ :attribute est obligatoire quand la valeur de :other est :value.',
'required_unless' => 'Le champ :attribute est obligatoire sauf si :other est :values.',
'required_with' => 'Le champ :attribute est obligatoire quand :values est présent.',
'required_with_all' => 'Le champ :attribute est obligatoire quand :values sont présents.',
'required_without' => 'Le champ :attribute est obligatoire quand :values n\'est pas présent.',
'required_without_all' => 'Le champ :attribute est requis quand aucun de :values n\'est présent.',
'same' => 'Les champs :attribute et :other doivent être identiques.',
'size' => [
'array' => 'Le tableau :attribute doit contenir :size éléments.',
'file' => 'La taille du fichier de :attribute doit être de :size kilo-octets.',
'numeric' => 'La valeur de :attribute doit être :size.',
'string' => 'Le texte de :attribute doit contenir :size caractères.',
],
'starts_with' => 'Le champ :attribute doit commencer avec une des valeurs suivantes : :values',
'string' => 'Le champ :attribute doit être une chaîne de caractères.',
'timezone' => 'Le champ :attribute doit être un fuseau horaire valide.',
'unique' => 'La valeur du champ :attribute est déjà utilisée.',
'uploaded' => 'Le fichier du champ :attribute n\'a pu être téléversé.',
'url' => 'Le format de l\'URL de :attribute n\'est pas valide.',
'uuid' => 'Le champ :attribute doit être un UUID valide',
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
'attributes' => [
'address' => 'adresse',
'age' => 'âge',
'available' => 'disponible',
'city' => 'ville',
'content' => 'contenu',
'country' => 'pays',
'current_password' => 'mot de passe actuel',
'date' => 'date',
'day' => 'jour',
'description' => 'description',
'email' => 'adresse email',
'excerpt' => 'extrait',
'first_name' => 'prénom',
'gender' => 'genre',
'hour' => 'heure',
'last_name' => 'nom',
'minute' => 'minute',
'mobile' => 'portable',
'month' => 'mois',
'name' => 'nom',
'password' => 'mot de passe',
'password_confirmation' => 'confirmation du mot de passe',
'phone' => 'téléphone',
'second' => 'seconde',
'sex' => 'sexe',
'size' => 'taille',
'time' => 'heure',
'title' => 'titre',
'username' => 'nom d\'utilisateur',
'year' => 'année',
],
];
<?php
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
return [
'next' => 'Suivant »',
'previous' => '« Précédent',
];
<?php
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
return [
'reset' => 'Votre mot de passe a été réinitialisé !',
'sent' => 'Nous vous avons envoyé par email le lien de réinitialisation du mot de passe !',
'throttled' => 'Veuillez patienter avant de réessayer.',
'token' => 'Ce jeton de réinitialisation du mot de passe n\'est pas valide.',
'user' => 'Aucun utilisateur n\'a été trouvé avec cette adresse email.',
];
{
"30 Days": "30 jours",
"60 Days": "60 jours",
"90 Days": "90 jours",
":amount Total": ":amount Total",
":days day trial": ":days jours d'essai",
":resource Details": "Détails :resource",
":resource Details: :title": " Détails :resource :title :",
"A new verification link has been sent to the email address you provided during registration.": "Un nouveau lien de vérification a été envoyé à l'adresse email que vous avez indiquée lors de votre inscription.",
"Accept Invitation": "Acceptez l'invitation",
"Action": "Action",
"Action Happened At": "Arrivé à",
"Action Initiated By": "Initié par",
"Action Name": "Nom",
"Action Status": "Statut",
"Action Target": "Cible",
"Actions": "Actions",
"Add": "Ajouter",
"Add a new team member to your team, allowing them to collaborate with you.": "Ajouter un nouveau membre de l'équipe à votre équipe, permettant de collaborer avec vous.",
"Add additional security to your account using two factor authentication.": "Ajouter une sécurité supplémentaire à votre compte en utilisant l'authentification à deux facteurs.",
"Add row": "Ajouter un rang",
"Add Team Member": "Ajouter un membre d'équipe",
"Add VAT Number": "Ajouter le numéro de TVA",
"Added.": "Ajouté",
"Address": "Adresse",
"Address Line 2": "Adresse ligne 2",
"Afghanistan": "Afghanistan",
"Aland Islands": "Åland Islands",
"Albania": "Albanie",
"Algeria": "Algérie",
"All of the people that are part of this team.": "Toutes les personnes qui font partie de cette équipe.",
"All resources loaded.": "Tous les données ont été chargées.",
"All rights reserved.": "Tous droits réservés.",
"Already registered?": "Déjà inscrit(e) ?",
"American Samoa": "Samoa américaines",
"An error occured while uploading the file.": "Une erreur est apparue pendant l'upload du file.",
"An unexpected error occurred and we have notified our support team. Please try again later.": "Une erreur non souhaitée est apparue, et nous avons notifié notre équipe support. Veuillez ré-essayer plus tard.",
"Andorra": "Andorre",
"Angola": "Angola",
"Anguilla": "Anguilla",
"Another user has updated this resource since this page was loaded. Please refresh the page and try again.": "Une autre personne a mis à jour cette donnée depuis que la page a été chargée. Veuillez raffraîchir la page et ré-essayer.",
"Antarctica": "Antarctique",
"Antigua And Barbuda": "Antigua-et-Barbuda",
"Antigua and Barbuda": "Antigua-et-Barbuda",
"API Token": "Jeton API",
"API Token Permissions": "Autorisations de jeton API",
"API Tokens": "Jeton API",
"API tokens allow third-party services to authenticate with our application on your behalf.": "Les jetons API permettent à des services tiers de s'authentifier auprès de notre application en votre nom.",
"Apply": "Appliquer",
"Apply Coupon": "Appliquer Coupon",
"April": "Avril",
"Are you sure you want to delete the selected resources?": "Etes-vous sûr(e) de vouloir supprimer les données sélectionnées ?",
"Are you sure you want to delete this file?": "Etes-vous sûr(e) de vouloir supprimer ce fichier ?",
"Are you sure you want to delete this resource?": "Etes-vous sûr(e) de vouloir supprimer cette donnée ?",
"Are you sure you want to delete this team? Once a team is deleted, all of its resources and data will be permanently deleted.": "Êtes-vous sûr de vouloir supprimer cette équipe ? Lorsqu'une équipe est supprimée, toutes les données associées seront supprimées de manière définitive.",
"Are you sure you want to delete your account? Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.": "Êtes-vous sûr de vouloir supprimer votre compte ? Une fois que votre compte est supprimé, toutes les données associées seront supprimées définitivement. Pour confirmer que vous voulez supprimer définitivement votre compte, renseignez votre mot de passe.",
"Are you sure you want to detach the selected resources?": "Etes-vous sûr(e) de vouloir détacher les données sélectionnées ?",
"Are you sure you want to detach this resource?": "Etes-vous sûr(e) de vouloir détacher cette donnée ?",
"Are you sure you want to force delete the selected resources?": "Etes-vous sûr(e) de vouloir forcer la suppression des données sélectionnées ?",
"Are you sure you want to force delete this resource?": "Etes-vous sûr(e) de vouloir forcer la suppression de cette donnée ?",
"Are you sure you want to restore the selected resources?": "Etes-vous sûr(e) de vouloir restaurer les données sélectionnées ?",
"Are you sure you want to restore this resource?": "Etes-vous sûr(e) de vouloir restaurer cette donnée ?",
"Are you sure you want to run this action?": "Etes-vous sûr(e) de vouloir lancer cette action ?",
"Are you sure you would like to delete this API token?": "Êtes-vous sûr de vouloir supprimer ce jeton API ?",
"Are you sure you would like to leave this team?": "Êtes-vous sûr de vouloir quitter cette équipe ?",
"Are you sure you would like to remove this person from the team?": "Êtes-vous sûr de vouloir supprimer cette personne de cette équipe ?",
"Argentina": "Argentine",
"Armenia": "Arménie",
"Aruba": "Aruba",
"Attach": "Attacher",
"Attach & Attach Another": "Attacher & Attacher un autre",
"Attach :resource": "Attacher :resource",
"August": "Août",
"Australia": "Australie",
"Austria": "Autriche",
"Azerbaijan": "Azerbaïdjan",
"Bahamas": "Bahamas",
"Bahrain": "Bahreïn",
"Bangladesh": "Bangladesh",
"Barbados": "Barbades",
"Belarus": "Biélorussie",
"Belgium": "Belgique",
"Belize": "Bélize",
"Benin": "Bénin",
"Bermuda": "Bermudes",
"Bhutan": "Bhoutan",
"Billing Information": "Informations de facturation",
"Billing Management": "Gestion de la facturation",
"Bolivia": "Bolivie",
"Bolivia, Plurinational State of": "Bolivie",
"Bonaire, Sint Eustatius and Saba": "Bonaire, Saint-Eustache et Saba",
"Bosnia And Herzegovina": "Bosnie-Herzégovine",
"Bosnia and Herzegovina": "Bosnie-Herzégovine",
"Botswana": "Botswana",
"Bouvet Island": "Île Bouvet",
"Brazil": "Brésil",
"British Indian Ocean Territory": "Territoire britannique de l'océan indien",
"Browser Sessions": "Sessions de navigateur",
"Brunei Darussalam": "Brunéi Darussalam",
"Bulgaria": "Bulgarie",
"Burkina Faso": "Burkina Faso",
"Burundi": "Burundi",
"Cambodia": "Cambodge",
"Cameroon": "Cameroun",
"Canada": "Canada",
"Cancel": "Annuler",
"Cancel Subscription": "Annuler la souscription",
"Cape Verde": "Cap Vert",
"Card": "Carte",
"Cayman Islands": "Îles Caïmans",
"Central African Republic": "République centrafricaine",
"Chad": "Tchad",
"Change Subscription Plan": "Changer le plan de souscription",
"Changes": "Changements",
"Chile": "Chili",
"China": "Chine",
"Choose": "Choisir",
"Choose :field": "Choisir :field",
"Choose :resource": "Choisir :resource",
"Choose an option": "Choisir une option",
"Choose date": "Choisir date",
"Choose File": "Choisir Fichier",
"Choose Type": "Choisir Type",
"Christmas Island": "Île Christmas",
"City": "Ville",
"Click to choose": "Cliquez pour choisir",
"Close": "Fermer",
"Cocos (Keeling) Islands": "Îles Cocos - Keeling",
"Code": "Code",
"Colombia": "Colombie",
"Comoros": "Comores",
"Confirm": "Confirmer",
"Confirm Password": "Confirmez votre mot de passe",
"Confirm Payment": "Choisir Paiement",
"Confirm your :amount payment": "Choisir votre paiement de :amount",
"Congo": "Congo",
"Congo, Democratic Republic": "République démocratique du Congo",
"Congo, the Democratic Republic of the": "République démocratique du Congo",
"Constant": "Toujours",
"Cook Islands": "Îles Cook",
"Costa Rica": "Costa Rica",
"Cote D'Ivoire": "Côte d'Ivoire",
"could not be found.": "ne peut être trouvé.",
"Country": "Pays",
"Coupon": "Coupon",
"Create": "Créer",
"Create & Add Another": "Créer & Ajouter un autre",
"Create :resource": "Créer :resource",
"Create a new team to collaborate with others on projects.": "Créer une nouvelle équipe pour collaborer avec d'autres personnes sur des projets.",
"Create Account": "Créez un compte",
"Create API Token": "Créer un jeton API",
"Create New Team": "Créer une nouvelle équipe",
"Create Team": "Créer l'équipe",
"Created.": "Créé(e).",
"Croatia": "Croatie",
"Cuba": "Cuba",
"Curaçao": "Curaçao",
"Current Password": "Mot de passe actuel",
"Current Subscription Plan": "Plan actuel de souscription",
"Currently Subscribed": "Actuellement souscrit",
"Customize": "Personnaliser",
"Cyprus": "Chypre",
"Czech Republic": "République tchèque",
"Côte d'Ivoire": "Côte d'Ivoire",
"Dashboard": "Tableau de bord",
"December": "Décembre",
"Decrease": "Diminuer",
"Delete": "Supprimer",
"Delete Account": "Supprimer le compte",
"Delete API Token": "Supprimer le jeton API",
"Delete File": "Supprimer Fichier",
"Delete Resource": "Supprimer Donnée",
"Delete Selected": "Supprimer Sélectionné",
"Delete Team": "Supprimer l'équipe",
"Denmark": "Danemark",
"Detach": "Détacher",
"Detach Resource": "Détacher Donnée",
"Detach Selected": "Détacher Sélectionné",
"Details": "Détails",
"Disable": "Désactiver",
"Djibouti": "Djibouti",
"Do you really want to leave? You have unsaved changes.": "Voulez-vous vraiment partier ? Vous avez des données non sauvegardées.",
"Dominica": "Dominique",
"Dominican Republic": "République dominicaine",
"Done.": "Terminé.",
"Download": "Télécharger",
"Download Receipt": "Télécharger le reçu",
"Ecuador": "Equateur",
"Edit": "Editer",
"Edit :resource": "Editer :resource",
"Edit Attached": "Editer Joint",
"Egypt": "Egypte",
"El Salvador": "El Salvador",
"Email": "Email",
"Email Address": "Adresse Email",
"Email Addresses": "Adresses Email",
"Email Password Reset Link": "Lien de réinitialisation du mot de passe",
"Enable": "Activer",
"Ensure your account is using a long, random password to stay secure.": "Assurez-vous d'utiliser un mot de passe long et aléatoire pour sécuriser votre compte",
"Equatorial Guinea": "Guinée équatoriale",
"Eritrea": "Érythrée",
"Estonia": "Estonie",
"Ethiopia": "Ethiopie",
"ex VAT": "ex TVA",
"Extra Billing Information": "Plus d'informations sur la facturation",
"Extra confirmation is needed to process your payment. Please confirm your payment by filling out your payment details below.": "Une confirmation supplémentaire est nécessaire pour traiter votre paiement. Veuillez confirmer votre paiement en remplissant vos coordonnées de paiement ci-dessous.",
"Extra confirmation is needed to process your payment. Please continue to the payment page by clicking on the button below.": "Une confirmation supplémentaire est nécessaire pour traiter votre paiement. Veuillez continuer à la page de paiement en cliquant sur le bouton ci-dessous.",
"Falkland Islands (Malvinas)": "Îles Malouines",
"Faroe Islands": "Îles Féroé",
"February": "Février",
"Fiji": "Fidji",
"Finland": "Finlande",
"For your security, please confirm your password to continue.": "Par mesure de sécurité, veuillez confirmer votre mot de passe pour continuer.",
"Forbidden": "Interdit",
"Force Delete": "Forcer la Suppression",
"Force Delete Resource": "Forcer la Suppression de la Donnée",
"Force Delete Selected": "Forcer la Suppression du Sélectionné",
"Forgot your password?": "Vous avez oublié votre mot de passe ?",
"Forgot Your Password?": "Vous avez oublié votre mot de passe ?",
"Forgot your password? No problem. Just let us know your email address and we will email you a password reset link that will allow you to choose a new one.": "Mot de passe oublié ? Pas de soucis. Veuillez nous indiquer votre adresse email et nous vous enverrons un lien de réinitialisation du mot de passe.",
"France": "France",
"French Guiana": "Guyane française",
"French Polynesia": "Polynésie française",
"French Southern Territories": "Terres australes françaises",
"Full name": "Nom complet",
"Gabon": "Gabon",
"Gambia": "Gambie",
"Georgia": "Géorgie",
"Germany": "Allemagne",
"Ghana": "Ghana",
"Gibraltar": "Gibraltar",
"Go back": "Revenir en arrière",
"Go Home": "Aller à l'accueil",
"Go to page :page": "Aller à la page :page",
"Great! You have accepted the invitation to join the :team team.": "Super ! Vous avez accepté l'invitation à rejoindre l'équipe :team",
"Greece": "Grèce",
"Greenland": "Groenland",
"Grenada": "Grenade",
"Guadeloupe": "Guadeloupe",
"Guam": "Guam",
"Guatemala": "Guatemala",
"Guernsey": "Guernesey",
"Guinea": "Guinée",
"Guinea-Bissau": "Guinée-Bissau",
"Guyana": "Guyana",
"Haiti": "Haïti",
"Have a coupon code?": "Avez-vous un code coupon ?",
"Having second thoughts about cancelling your subscription? You can instantly reactive your subscription at any time until the end of your current billing cycle. After your current billing cycle ends, you may choose an entirely new subscription plan.": "Vous avez des doutes sur l'annulation de votre abonnement ? Vous pouvez réactiver instantanément votre abonnement à tout moment jusqu'à la fin de votre cycle de facturation actuel. Une fois votre cycle de facturation actuel terminé, vous pouvez choisir un tout nouveau plan d'abonnement.",
"Heard Island & Mcdonald Islands": "Îles Heard et MacDonald",
"Heard Island and McDonald Islands": "Îles Heard et MacDonald",
"Hello!": "Bonjour !",
"Hide Content": "Cacher le contenu",
"Hold Up!": "Un instant !",
"Holy See (Vatican City State)": "Cité du Vatican",
"Honduras": "Honduras",
"Hong Kong": "Hong Kong",
"Hungary": "Hongrie",
"I accept the terms of service": "J'accepte les termes de service",
"I agree to the :terms_of_service and :privacy_policy": "Je suis d'accord avec :terms_of_service et :privacy_policy",
"Iceland": "Islande",
"ID": "ID",
"If necessary, you may log out of all of your other browser sessions across all of your devices. Some of your recent sessions are listed below; however, this list may not be exhaustive. If you feel your account has been compromised, you should also update your password.": "Si nécessaire, vous pouvez vous déconnecter de toutes vos sessions de navigateur de tous vos appareils. Certaines de vos sessions sont listées plus bas ; pourtant, cette liste peut ne pas être exhaustive. Si vous sentez que votre compte a été compromis, vous pouvez aussi mettre à jour votre mot de passe.",
"If you already have an account, you may accept this invitation by clicking the button below:": "Si vous avez déjà un compte, vous pouvez accepter cette invitation en cliquant sur le bouton ci-dessous :",
"If you did not create an account, no further action is required.": "Si vous n'avez pas créé de compte, vous pouvez ignorer ce message.",
"If you did not expect to receive an invitation to this team, you may discard this email.": "Si vous n'attendiez pas d'invitation de cette équipe, vous pouvez supprimer cet e-mail.",
"If you did not request a password reset, no further action is required.": "Si vous n'avez pas demandé de réinitialisation de mot de passe, vous pouvez ignorer ce message.",
"If you do not have an account, you may create one by clicking the button below. After creating an account, you may click the invitation acceptance button in this email to accept the team invitation:": "Si vous n'avez pas de compte, vous pouvez en créer un en cliquant sur le bouton ci-dessous. Ensuite, vous pourrez cliquer sur le bouton de cet e-mail pour accepter l'invitation de rejoindre l'équipe :",
"If you need to add specific contact or tax information to your receipts, like your full business name, VAT identification number, or address of record, you may add it here.": "Si vous devez ajouter des coordonnées ou des informations fiscales spécifiques à vos reçus, tels que le nom complet de votre entreprise, votre numéro d'identification TVA ou votre adresse d'enregistrement, vous pouvez les ajouter ici.",
"If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "Si le bouton \":actionText\" ne fonctionne pas, copiez\/collez l'adresse ci-dessous dans votre navigateur :\n",
"If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "Si le bouton \":actionText\" ne fonctionne pas, copiez\/collez l'adresse ci-dessous dans votre navigateur :\n",
"Increase": "Augmenter",
"India": "Inde",
"Indonesia": "Indonésie",
"Iran, Islamic Republic Of": "Iran",
"Iran, Islamic Republic of": "Iran,",
"Iraq": "Irak",
"Ireland": "Irlande",
"Isle Of Man": "Île de Man",
"Isle of Man": "Île de Man",
"Israel": "Israël",
"It looks like you do not have an active subscription. You may choose one of the subscription plans below to get started. Subscription plans may be changed or cancelled at your convenience.": "Il semble que vous n'ayez pas d'abonnement actif. Vous pouvez choisir l'un des plans d'abonnement ci-dessous pour commencer. Les plans d'abonnement peuvent être modifiés ou annulés à votre convenance.",
"Italy": "Italie",
"Jamaica": "Jamaïque",
"Jane Doe": "Madame Dupont",
"January": "Janvier",
"Japan": "Japon",
"Jersey": "Jersey",
"Jordan": "Jordanie",
"July": "Juillet",
"June": "Juin",
"Kazakhstan": "Kazakhstan",
"Kenya": "Kenya",
"Key": "Clé",
"Kiribati": "Kiribati",
"Korea": "Corée du Sud",
"Korea, Democratic People's Republic of": "Corée du Nord",
"Korea, Republic of": "Corée du Sud",
"Kosovo": "Kosovo",
"Kuwait": "Koweït",
"Kyrgyzstan": "Kirghizistan",
"Lao People's Democratic Republic": "Laos",
"Last active": "Dernier actif",
"Last used": "Dernière utilisation",
"Latvia": "Lettonie",
"Leave": "Quitter",
"Leave Team": "Quitter l'équipe",
"Lebanon": "Liban",
"Lens": "Objectif",
"Lesotho": "Lesotho",
"Liberia": "Libéria",
"Libyan Arab Jamahiriya": "Libye",
"Liechtenstein": "Liechtenstein",
"Lithuania": "Lituanie",
"Load :perPage More": "Charger :perPage plus",
"Log in": "Connexion",
"Log Out": "Déconnexion",
"Log Out Other Browser Sessions": "Déconnecter les sessions ouvertes sur d'autres navigateurs",
"Login": "Connexion",
"Logout": "Déconnexion",
"Luxembourg": "Luxembourg",
"Macao": "Macao",
"Macedonia": "Macédoine",
"Macedonia, the former Yugoslav Republic of": "Macédoine",
"Madagascar": "Madagascar",
"Malawi": "Malawi",
"Malaysia": "Malaisie",
"Maldives": "Maldives",
"Mali": "Mali",
"Malta": "Malte",
"Manage Account": "Gérer le compte",
"Manage and log out your active sessions on other browsers and devices.": "Gérer et déconnecter vos sessions actives sur les autres navigateurs et appareils.",
"Manage API Tokens": "Gérer les jetons API",
"Manage Role": "Gérer le rôle",
"Manage Team": "Gérer l'équipe",
"Managing billing for :billableName": "Gestion de la facturation pour :billableName",
"March": "Mars",
"Marshall Islands": "Îles Marshall",
"Martinique": "Martinique",
"Mauritania": "Mauritanie",
"Mauritius": "Maurice",
"May": "Mai",
"Mayotte": "Mayotte",
"Mexico": "Mexique",
"Micronesia, Federated States Of": "Micronésie",
"Micronesia, Federated States of": "Micronésie",
"Moldova": "Moldavie",
"Moldova, Republic of": "Moldavie",
"Monaco": "Monaco",
"Mongolia": "Mongolie",
"Montenegro": "Monténégro",
"Month To Date": "Mois du jour",
"Monthly": "Mensuellement",
"monthly": "mensuellement",
"Montserrat": "Montserrat",
"Morocco": "Maroc",
"Mozambique": "Mozambique",
"Myanmar": "Myanmar",
"Name": "Nom",
"Namibia": "Namibie",
"Nauru": "Nauru",
"Nepal": "Népal",
"Netherlands": "Pays-Bas",
"Netherlands Antilles": "Antilles néerlandaises",
"Nevermind, I'll keep my old plan": "Peu importe, je vais garder mon ancien plan",
"New": "Nouveau",
"New :resource": "Nouveau :resource",
"New Caledonia": "Nouvelle Calédonie",
"New Password": "Nouveau mot de passe",
"New Zealand": "Nouvelle Zélande",
"Next": "Suivant",
"Nicaragua": "Nicaragua",
"Niger": "Niger",
"Nigeria": "Nigéria",
"Niue": "Niue",
"No": "Non",
"No :resource matched the given criteria.": "Aucune :resource ne correspond aux critières demandés.",
"No additional information...": "Pas d'information supplémentaire...",
"No Current Data": "Pas de donnée actuelle",
"No Data": "Pas de donnée",
"no file selected": "pas de fichier sélectionné",
"No Increase": "Ne pas augmenter",
"No Prior Data": "Aucune donnée prioritaire",
"No Results Found.": "Aucun résultat trouvé.",
"Norfolk Island": "Île Norfolk",
"Northern Mariana Islands": "Îles Mariannes du Nord",
"Norway": "Norvège",
"Not Found": "Non trouvé",
"Nova User": "Utilisateur Nova",
"November": "Novembre",
"October": "Octobre",
"of": "de",
"Oh no": "Oh non",
"Oman": "Oman",
"Once a team is deleted, all of its resources and data will be permanently deleted. Before deleting this team, please download any data or information regarding this team that you wish to retain.": "Une fois qu'une équipe est supprimée, toutes ses données seront supprimées définitivement. Avant de supprimer cette équipe, veuillez télécharger toutes données ou informations de cette équipe.",
"Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.": "Une fois que votre compte est supprimé, toutes vos données sont supprimées définitivement. Avant de supprimer votre compte, veuillez télécharger vos données.",
"Only Trashed": "Seulement les mis à la corbeille",
"Original": "Original",
"Our billing management portal allows you to conveniently manage your subscription plan, payment method, and download your recent invoices.": "Notre portail de gestion de la facturation vous permet de gérer facilement votre abonnement, votre mode de paiement et de télécharger vos factures récentes.",
"Page Expired": "Page expirée",
"Pagination Navigation": "Pagination",
"Pakistan": "Pakistan",
"Palau": "Palaos",
"Palestinian Territory, Occupied": "Territoire palestinien",
"Panama": "Panama",
"Papua New Guinea": "Papouasie Nouvelle Guinée",
"Paraguay": "Paraguay",
"Password": "Mot de passe",
"Pay :amount": "Payer :amount",
"Payment Cancelled": "Paiement annulé",
"Payment Confirmation": "Confirmation de paiement",
"Payment Information": "Information de paiement",
"Payment Method": "Moyen de paiement",
"Payment Successful": "Paiement effectué",
"Pending Team Invitations": "Invitations d'équipe en attente",
"Per Page": "Par Page",
"Permanently delete this team.": "Supprimer définitivement cette team.",
"Permanently delete your account.": "Supprimer définitivement ce compte.",
"Permissions": "Permissions",
"Peru": "Pérou",
"Philippines": "Philippines",
"Photo": "Image",
"Pitcairn": "Pitcairn Islands",
"Please accept the terms of service.": "Veuillez accepter les termes de service.",
"Please click the button below to verify your email address.": "Veuillez cliquer sur le bouton ci-dessous pour vérifier votre adresse email :",
"Please confirm access to your account by entering one of your emergency recovery codes.": "Veuillez confirmer l'accès à votre compte en entrant l'un des codes de récupération d'urgence.",
"Please confirm access to your account by entering the authentication code provided by your authenticator application.": "Veuillez confirmer l'accès à votre compte en entrant le code d'authentification fourni par votre application d'authentification.",
"Please copy your new API token. For your security, it won't be shown again.": "Veuillez copier votre nouveau token API. Pour votre sécurité, il ne sera pas ré-affiché.",
"Please enter your password to confirm you would like to log out of your other browser sessions across all of your devices.": "Veuillez entrer votre mot de passe pour confirmer que vous voulez déconnecter toutes les autres sessions navigateur sur l'ensemble de vos appareils.",
"Please provide a maximum of three receipt emails addresses.": "Veuillez fournir un maximum de trois adresses e-mail de réception.",
"Please provide the email address of the person you would like to add to this team.": "Veuillez indiquer l'adresse email de la personne que vous souhaitez ajouter à cette équipe.",
"Please provide your name.": "Veuillez indiquer votre nom.",
"Poland": "Pologne",
"Portugal": "Portugal",
"Press \/ to search": "Presser \/ pour faire une recherche",
"Preview": "Aperçu",
"Previous": "Précédent",
"Privacy Policy": "Politique de confidentialité",
"Profile": "Profil",
"Profile Information": "Information du profil",
"Puerto Rico": "Porto Rico",
"Qatar": "Qatar",
"Quarter To Date": "Trimestre du jour",
"Receipt Email Addresses": "Réception Adresses E-Mail",
"Receipts": "Réceptions",
"Recovery Code": "Code de récupération",
"Regards": "Cordialement",
"Regenerate Recovery Codes": "Régénérer les codes de récupération",
"Register": "Inscription",
"Reload": "Recharger",
"Remember me": "Se souvenir de moi",
"Remember Me": "Se souvenir de moi",
"Remove": "Supprimer",
"Remove Photo": "Supprimer l'image",
"Remove Team Member": "Supprimer le membre d'équipe",
"Resend Verification Email": "Renvoyer l'email de vérification",
"Reset Filters": "Réinitialisation des filtres",
"Reset Password": "Réinitialisation du mot de passe",
"Reset Password Notification": "Notification de réinitialisation du mot de passe",
"resource": "donnée",
"Resources": "Données",
"resources": "données",
"Restore": "Restaurer",
"Restore Resource": "Restaurer Donnée",
"Restore Selected": "Restaurer Sélectionné",
"results": "résultats",
"Resume Subscription": "Reprendre la souscription",
"Return to :appName": "Retour à :appName",
"Reunion": "Réunion",
"Role": "Rôle",
"Romania": "Roumanie",
"Run Action": "Lancer l'action",
"Russian Federation": "Russie",
"Rwanda": "Rwanda",
"Réunion": "Réunion",
"Saint Barthelemy": "Saint-Barthélémy",
"Saint Barthélemy": "Saint-Barthélemy",
"Saint Helena": "Sainte-Hélène",
"Saint Kitts And Nevis": "Saint-Kitts-et-Nevis",
"Saint Kitts and Nevis": "Saint-Kitts-et-Nevis",
"Saint Lucia": "Sainte-Lucie",
"Saint Martin": "Saint-Martin",
"Saint Martin (French part)": "Saint Martin",
"Saint Pierre And Miquelon": "Saint-Pierre-et-Miquelon",
"Saint Pierre and Miquelon": "Saint-Pierre-et-Miquelon",
"Saint Vincent And Grenadines": "Saint-Vincent-et-les Grenadines",
"Saint Vincent and the Grenadines": "Saint-Vincent-et-les Grenadines",
"Samoa": "Samoa",
"San Marino": "Saint-Marin",
"Sao Tome And Principe": "Sao Tomé-et-Principe",
"Sao Tome and Principe": "Sao Tomé-et-Principe",
"Saudi Arabia": "Arabie Saoudite",
"Save": "Sauvegarder",
"Saved.": "Sauvegardé.",
"Search": "Rechercher",
"Select": "Sélectionner",
"Select a different plan": "Sélectionner un plan différent",
"Select A New Photo": "Sélectionner une nouvelle image",
"Select Action": "Sélectionner Action",
"Select All": "Sélectionner Tous",
"Select All Matching": "Sélectionnez tous les correspondants",
"Send Password Reset Link": "Envoyer le lien de réinitialisation du mot de passe",
"Senegal": "Sénégal",
"September": "Septembre",
"Serbia": "Serbie",
"Server Error": "Erreur serveur",
"Service Unavailable": "Service indisponible",
"Seychelles": "Seychelles",
"Show All Fields": "Montrer Tous les Champs",
"Show Content": "Montrer Contenu",
"Show Recovery Codes": "Voir les codes de récupération",
"Showing": "Montrant",
"Sierra Leone": "Sierra Léone",
"Signed in as": "Signé en tant que",
"Singapore": "Singapour",
"Sint Maarten (Dutch part)": "Sint Maarten",
"Slovakia": "Slovaquie",
"Slovenia": "Slovénie",
"Solomon Islands": "Îles Salomon",
"Somalia": "Somalie",
"Something went wrong.": "Quelque chose s'est mal passé.",
"Sorry! You are not authorized to perform this action.": "Désolé ! Vous n'êtes pas autorisé(e) à effectuer cette action.",
"Sorry, your session has expired.": "Désolé, votre session a expiré.",
"South Africa": "Afrique du Sud",
"South Georgia And Sandwich Isl.": "Géorgie du Sud et les îles Sandwich du Sud",
"South Georgia and the South Sandwich Islands": "Géorgie du Sud et les îles Sandwich du Sud",
"South Sudan": "Sud Soudan",
"Spain": "Espagne",
"Sri Lanka": "Sri Lanka",
"Standalone Actions": "Actions Autonomes",
"Start Polling": "Démarrer le vote",
"State \/ County": "Etat \/ Région",
"Stop Polling": "Arrêter le vote",
"Store these recovery codes in a secure password manager. They can be used to recover access to your account if your two factor authentication device is lost.": "Enregistrez ces codes dans un gestionnaire de mot de passe sécurisé. Ils peuvent être réutilisés pour accéder à votre compte si l'authentification à deux facteurs n'aboutit pas.",
"Subscribe": "Souscrire",
"Subscription Information": "Information de souscription",
"Subscription Pending": "Abonnement en attente",
"Sudan": "Soudan",
"Suriname": "Suriname",
"Svalbard And Jan Mayen": "Svalbard et Île Jan Mayen",
"Svalbard and Jan Mayen": "Svalbard et Jan Mayen",
"Swaziland": "Eswatini",
"Sweden": "Suède",
"Switch Teams": "Permuter les équipes",
"Switzerland": "Suisse",
"Syrian Arab Republic": "Syrie",
"Taiwan": "Taiwan",
"Taiwan, Province of China": "Taiwan",
"Tajikistan": "Tadjikistan",
"Tanzania": "Tanzanie",
"Tanzania, United Republic of": "Tanzanie",
"Team Details": "Détails de l'équipe",
"Team Invitation": "Invitation d'équipe",
"Team Members": "Membres de l'équipe",
"Team Name": "Nom de l'équipe",
"Team Owner": "Propriétaire de l'équipe",
"Team Settings": "Préférences de l'équipe",
"Terms of Service": "Conditions d'utilisation",
"Thailand": "Thaïlande",
"Thanks for signing up! Before getting started, could you verify your email address by clicking on the link we just emailed to you? If you didn't receive the email, we will gladly send you another.": "Merci de vous être inscrit(e) ! Avant de commencer, veuillez vérifier votre adresse email en cliquant sur le lien que nous venons de vous envoyer. Si vous n'avez pas reçu cet email, nous vous en enverrons un nouveau avec plaisir.",
"Thanks for your continued support. We've attached a copy of your invoice for your records. Please let us know if you have any questions or concerns.": "Merci pour votre soutien continu. Nous avons joint une copie de votre facture pour vos dossiers. Veuillez nous faire savoir si vous avez des questions ou des préoccupations.",
"Thanks,": "Merci,",
"The :attribute must be a valid role.": "Le :attribute doit être un rôle valide.",
"The :attribute must be at least :length characters and contain at least one number.": "Le champ :attribute doit avoir au moins :length caractères et contenir au moins un chiffre.",
"The :attribute must be at least :length characters and contain at least one special character and one number.": "Le champ :attribute doit avoir au moins :length caractères et contenir au moins un caractère spécial et un nombre.",
"The :attribute must be at least :length characters and contain at least one special character.": "Le champ :attribute doit avoir au moins :length caractères et contenir au moins un caractère spécial.",
"The :attribute must be at least :length characters and contain at least one uppercase character and one number.": "Le champ :attribute doit avoir au moins :length caractères et contenir au moins une majuscule et un chiffre.",
"The :attribute must be at least :length characters and contain at least one uppercase character and one special character.": "Le champ :attribute doit avoir au moins :length caractères et contenir au moins une majuscule et un caractère spécial.",
"The :attribute must be at least :length characters and contain at least one uppercase character, one number, and one special character.": "Le champ :attribute doit avoir au moins :length caractères, et contenir au moins une majuscule, un chiffre et un caractère spécial.",
"The :attribute must be at least :length characters and contain at least one uppercase character.": "Le champ :attribute doit avoir au moins :length caractères et au moins une majuscule.",
"The :attribute must be at least :length characters.": "Le champ :attribute doit avoir au moins :length caractères.",
"The :attribute must contain at least one letter.": "Le champ :attribute doit avoir au moins une lettre.",
"The :attribute must contain at least one number.": "Le champ :attribute doit avoir au moins un numéro.",
"The :attribute must contain at least one symbol.": "Le champ :attribute doit avoir au moins un symbole.",
"The :attribute must contain at least one uppercase and one lowercase letter.": "Le champ :attribute doit avoir au moins une lettre majuscule et une lettre minuscule.",
"The :resource was created!": "La donnée :resource a été créée !",
"The :resource was deleted!": "La donnée :resource a été supprimée !",
"The :resource was restored!": "La donnée :resource a été restaurée !",
"The :resource was updated!": "La donnée :resource a été mise à jour !",
"The action ran successfully!": "L'action s'est déroulée avec succès !",
"The file was deleted!": "Le fichier a été supprimé !",
"The given :attribute has appeared in a data leak. Please choose a different :attribute.": "La valeur du champ :attribute est apparue dans une fuite de données. Veuillez choisir une valeur différente.",
"The government won't let us show you what's behind these doors": "Le gouvernement ne nous laissera pas vous montrer ce qui se cache derrière ces portes",
"The HasOne relationship has already been filled.": "La relation a déjà été remplie.",
"The password is incorrect.": "The password is incorrect.",
"The payment was successful.": "Le paiement a réussi.",
"The provided coupon code is invalid.": "Le code de coupon fourni n'est pas valide.",
"The provided password does not match your current password.": "Le mot de passe indiqué ne correspond pas à votre mot de passe actuel.",
"The provided password was incorrect.": "Le mot de passé indiqué est incorrect.",
"The provided two factor authentication code was invalid.": "Le code d'authentification double facteur fourni est incorrect.",
"The provided VAT number is invalid.": "Le numéro de TVA fourni n'est pas valide.",
"The receipt emails must be valid email addresses.": "Les emails de réception doivent être des adresses email valides.",
"The resource was updated!": "La donnée a été mise à jour !",
"The selected country is invalid.": "Le pays sélectionné est invalide.",
"The selected plan is invalid.": "Le plan sélectionné est invalide.",
"The team's name and owner information.": "Les informations concernant l'équipe et son propriétaire.",
"There are no available options for this resource.": "Il n'y a pas d'options disponibles pour cette donnée.",
"There is no active subscription.": "Il n'y a pas d'abonnement actif.",
"There was a problem executing the action.": "Il y avait un problème lors de l'exécution de l'action.",
"There was a problem submitting the form.": "Il y avait un problème pour soumettre le formulaire.",
"These people have been invited to your team and have been sent an invitation email. They may join the team by accepting the email invitation.": "Ces personnes ont été invité à rejoindre votre équipe et ont été prévenues avec une email d'invitation. Ils peuvent rejoindre l'équipe grâce à l'email d'invitation.",
"This account does not have an active subscription.": "Ce compte n'est pas de souscription active.",
"This action is unauthorized.": "Cette action n'est pas autorisée.",
"This device": "Cet appareil",
"This file field is read-only.": "Ce champ de fichier est en lecture seule.",
"This image": "Cette image",
"This is a secure area of the application. Please confirm your password before continuing.": "C'est une zone sécurisée de l'application. Veuillez confirmer votre mot de passe avant de continuer.",
"This password does not match our records.": "Ce mot de passe ne correspond pas à nos enregistrements.",
"This password reset link will expire in :count minutes.": "Ce lien de réinitialisation du mot de passe expirera dans :count minutes.",
"This payment was already successfully confirmed.": "Ce paiement a déjà été confirmé avec succès.",
"This payment was cancelled.": "Ce paiement a été annulé.",
"This resource no longer exists": "Cette donnée n'existe plus",
"This subscription cannot be resumed. Please create a new subscription.": "Cet abonnement ne peut pas être repris. Veuillez créer un nouvel abonnement.",
"This subscription has expired and cannot be resumed. Please create a new subscription.": "Cette souscription a expiré et ne peut être reprise. Veuillez en créer une nouvelle.",
"This user already belongs to the team.": "Cet utilisateur appartient déjà à l'équipe.",
"This user has already been invited to the team.": "Cet utilisateur a déjà été invité à rejoindre l'équipe.",
"Timor-Leste": "Timor oriental",
"to": "à",
"Today": "Aujourd'hui",
"Toggle navigation": "Basculer la navigation",
"Togo": "Togo",
"Tokelau": "Tokelau",
"Token Name": "Nom du jeton",
"Tonga": "Tonga",
"Too Many Requests": "Trop de requêtes",
"total": "total",
"Total:": "Total:",
"Trashed": "Mettre à la corbeille",
"Trinidad And Tobago": "Trinidad et Tobago",
"Trinidad and Tobago": "Trinidad et Tobago",
"Tunisia": "Tunisie",
"Turkey": "Turquie",
"Turkmenistan": "Turkménistan",
"Turks And Caicos Islands": "Îles Turks et Caïques",
"Turks and Caicos Islands": "Îles Turks et Caïques",
"Tuvalu": "Tuvalu",
"Two Factor Authentication": "Double authentification",
"Two factor authentication is now enabled. Scan the following QR code using your phone's authenticator application.": "L'authentification à deux facteurs est maintenant activée. Enregistrez ce QR code dans votre application d'authentification.",
"Uganda": "Ouganda",
"Ukraine": "Ukraine",
"Unauthorized": "Non autorisé",
"United Arab Emirates": "Emirats Arabes Unis",
"United Kingdom": "Royaume-Uni",
"United States": "Etats-Unis",
"United States Minor Outlying Islands": "Îles Mineures Éloignées des États-Unis",
"United States Outlying Islands": "Îles Mineures Éloignées des États-Unis",
"Update": "Mettre à jour",
"Update & Continue Editing": "Mettre à jour & Continuer à éditer",
"Update :resource": "Mettre à jour :resource",
"Update :resource: :title": "Mettre à jour :resource : :title",
"Update attached :resource: :title": "Mettre à jour :resource attaché : :title",
"Update Password": "Mettre à jour le mot de passe",
"Update Payment Information": "Mettre à jour les informations de paiement",
"Update Payment Method": "Mettre à jour le moyen de paiement",
"Update your account's profile information and email address.": "Modifier le profil associé à votre compte ainsi que votre adresse email.",
"Uruguay": "Uruguay",
"Use a recovery code": "Utilisez un code de récupération",
"Use an authentication code": "Utilisez un code d'authentification",
"Uzbekistan": "Ouzbékistan",
"Value": "Valeur",
"Vanuatu": "Vanuatu",
"VAT Number": "Numéro de TVA",
"Venezuela": "Vénézuela",
"Venezuela, Bolivarian Republic of": "Vénézuela",
"Verify Email Address": "Vérification de l'adresse email",
"Viet Nam": "Vietnam",
"View": "Vue",
"View Receipt": "Voir le reçu",
"Virgin Islands, British": "Îles Vierges britanniques",
"Virgin Islands, U.S.": "Îles Vierges des États-Unis",
"Wallis And Futuna": "Wallis et Futuna",
"Wallis and Futuna": "Wallis et Futuna",
"We are processing your subscription. Once the subscription has successfully processed, this page will update automatically. Typically, this process should only take a few seconds.": "Nous traitons votre abonnement. Une fois l'abonnement traité avec succès, cette page se mettra à jour automatiquement. Généralement, ce processus ne devrait prendre que quelques secondes.",
"We are unable to process your payment. Please contact customer support.": "Nous ne sommes pas en mesure de traiter votre paiement. Veuillez contacter le support client.",
"We were unable to find a registered user with this email address.": "Nous n'avons pas pu trouver un utilisateur enregistré avec cette adresse e-mail.",
"We will send a receipt download link to the email addresses that you specify below. You may separate multiple email addresses using commas.": "Nous enverrons un lien de téléchargement de reçu aux adresses e-mail que vous spécifiez ci-dessous. Vous pouvez séparer plusieurs adresses e-mail à l'aide de virgules.",
"We're lost in space. The page you were trying to view does not exist.": "Nous sommes perdus dans l'espce. La page que vous essayez de voir n'existe pas.",
"Welcome Back!": "Bienvenue !",
"Western Sahara": "Sahara occidental",
"When two factor authentication is enabled, you will be prompted for a secure, random token during authentication. You may retrieve this token from your phone's Google Authenticator application.": "Lorsque l'authentification à deux facteurs est activée, vous serez invité à saisir un jeton aléatoire sécurisé lors de l'authentification. Vous pouvez récupérer ce jeton depuis l'application Google Authenticator de votre téléphone.",
"Whoops": "Oups",
"Whoops!": "Oups !",
"Whoops! Something went wrong.": "Oups ! Un problème est survenu.",
"With Trashed": "Avec ceux mis à la corbeille",
"Write": "Ecrire",
"Year To Date": "Année du Jour",
"Yearly": "Annuellement",
"Yemen": "Yémen",
"Yes": "Oui",
"You are already subscribed.": "Vous êtes déjà abonné(e).",
"You are currently within your free trial period. Your trial will expire on :date.": "Vous êtes actuellement dans votre période d'essai gratuit. Votre essai expirera le: date.",
"You are receiving this email because we received a password reset request for your account.": "Vous recevez cet email car nous avons reçu une demande de réinitialisation de mot de passe pour votre compte.",
"You have been invited to join the :team team!": "Vous avez été invité à rejoindre l'équipe :team !",
"You have enabled two factor authentication.": "Vous avez activé la double authentification.",
"You have not enabled two factor authentication.": "Vous n'avez pas activé la double authentification.",
"You may accept this invitation by clicking the button below:": "Vous pouvez accepter cette invitation en cliquant sur le bouton ci-dessous :",
"You may cancel your subscription at any time. Once your subscription has been cancelled, you will have the option to resume the subscription until the end of your current billing cycle.": "Vous pouvez résilier votre abonnement à tout moment. Une fois votre abonnement annulé, vous aurez la possibilité de le reprendre jusqu'à la fin de votre cycle de facturation actuel.",
"You may delete any of your existing tokens if they are no longer needed.": "Vous pouvez supprimer n'importe lequel de vos jetons existants s'ils ne sont plus nécessaires.",
"You may not delete your personal team.": "Vous ne pouvez pas supprimer votre équipe personnelle.",
"You may not leave a team that you created.": "Vous ne pouvez pas quitter une équipe que vous avez créée.",
"Your :invoiceName invoice is now available!": "Votre facture :invoiceName est maintenant disponible !",
"Your card was declined. Please contact your card issuer for more information.": "Votre carte a été refusée. Veuillez contacter l'émetteur de votre carte pour plus d'informations.",
"Your current payment method is :paypal.": "Votre moyen de paiement actuel est :paypal.",
"Your current payment method is a credit card ending in :lastFour that expires on :expiration.": "Votre mode de paiement actuel est une carte de crédit se terminant par :lastFour qui expire le :expiration.",
"Your registered VAT Number is :vatNumber.": "Votre numéro de TVA enregistré est :vatNumber.",
"Zambia": "Zambie",
"Zimbabwe": "Zimbabwe",
"Zip \/ Postal Code": "Code postal",
"Åland Islands": "Les îles d'Åland"
}
<?php
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
return [
'accepted' => 'Ce champ doit être accepté.',
'active_url' => 'Ce n\'est pas une URL valide',
'after' => 'La date doit être postérieure au :date.',
'after_or_equal' => 'La date doit être postérieure ou égale au :date.',
'alpha' => 'Ce champ doit contenir uniquement des lettres',
'alpha_dash' => 'Ce champ doit contenir uniquement des lettres, des chiffres et des tirets.',
'alpha_num' => 'Ce champ doit contenir uniquement des chiffres et des lettres.',
'array' => 'Ce champ doit être un tableau.',
'attached' => 'Ce champ est déjà attaché.',
'before' => 'Ce champ doit être une date antérieure au :date.',
'before_or_equal' => 'Ce champ doit être une date antérieure ou égale au :date.',
'between' => [
'array' => 'Le tableau doit contenir entre :min et :max éléments.',
'file' => 'La taille du fichier doit être comprise entre :min et :max kilo-octets.',
'numeric' => 'La valeur doit être comprise entre :min et :max.',
'string' => 'Le texte doit contenir entre :min et :max caractères.',
],
'boolean' => 'Ce champ doit être vrai ou faux.',
'confirmed' => 'Le champ de confirmation ne correspond pas.',
'current_password' => 'Le mot de passe est incorrect.',
'date' => 'Ce n\'est pas une date valide.',
'date_equals' => 'La date doit être égale à :date.',
'date_format' => 'Ce champ ne correspond pas au format :format.',
'different' => 'Cette valeur doit être différente de :other.',
'digits' => 'Ce champ doit contenir :digits chiffres.',
'digits_between' => 'Ce champ doit contenir entre :min et :max chiffres.',
'dimensions' => 'La taille de l\'image n\'est pas conforme.',
'distinct' => 'Ce champ a une valeur en double.',
'email' => 'Ce champ doit être une adresse email valide.',
'ends_with' => 'Ce champ doit se terminer par une des valeurs suivantes : :values',
'exists' => 'Ce champ sélectionné est invalide.',
'file' => 'Ce champ doit être un fichier.',
'filled' => 'Ce champ doit avoir une valeur.',
'gt' => [
'array' => 'Le tableau doit contenir plus de :value éléments.',
'file' => 'La taille du fichier doit être supérieure à :value kilo-octets.',
'numeric' => 'La valeur doit être supérieure à :value.',
'string' => 'Le texte doit contenir plus de :value caractères.',
],
'gte' => [
'array' => 'Le tableau doit contenir au moins :value éléments.',
'file' => 'La taille du fichier doit être supérieure ou égale à :value kilo-octets.',
'numeric' => 'La valeur doit être supérieure ou égale à :value.',
'string' => 'Le texte doit contenir au moins :value caractères.',
],
'image' => 'Ce champ doit être une image.',
'in' => 'Ce champ est invalide.',
'in_array' => 'Ce champ n\'existe pas dans :other.',
'integer' => 'Ce champ doit être un entier.',
'ip' => 'Ce champ doit être une adresse IP valide.',
'ipv4' => 'Ce champ doit être une adresse IPv4 valide.',
'ipv6' => 'Ce champ doit être une adresse IPv6 valide.',
'json' => 'Ce champ doit être un document JSON valide.',
'lt' => [
'array' => 'Le tableau doit contenir moins de :value éléments.',
'file' => 'La taille du fichier doit être inférieure à :value kilo-octets.',
'numeric' => 'La valeur doit être inférieure à :value.',
'string' => 'Le texte doit contenir moins de :value caractères.',
],
'lte' => [
'array' => 'Le tableau doit contenir au plus :value éléments.',
'file' => 'La taille du fichier doit être inférieure ou égale à :value kilo-octets.',
'numeric' => 'La valeur doit être inférieure ou égale à :value.',
'string' => 'Le texte doit contenir au plus :value caractères.',
],
'max' => [
'array' => 'Le tableau ne peut contenir plus de :max éléments.',
'file' => 'La taille du fichier ne peut pas dépasser :max kilo-octets.',
'numeric' => 'La valeur ne peut être supérieure à :max.',
'string' => 'Le texte ne peut contenir plus de :max caractères.',
],
'mimes' => 'Le fichier doit être de type : :values.',
'mimetypes' => 'Le fichier doit être de type : :values.',
'min' => [
'array' => 'Le tableau doit contenir au moins :min éléments.',
'file' => 'La taille du fichier doit être supérieure à :min kilo-octets.',
'numeric' => 'La valeur doit être supérieure ou égale à :min.',
'string' => 'Le texte doit contenir au moins :min caractères.',
],
'multiple_of' => 'La valeur doit être un multiple de :value',
'not_in' => 'Le champ sélectionné n\'est pas valide.',
'not_regex' => 'Le format du champ n\'est pas valide.',
'numeric' => 'Ce champ doit contenir un nombre.',
'password' => 'Le mot de passe est incorrect',
'present' => 'Ce champ doit être présent.',
'prohibited' => 'Ce champ est interdit',
'prohibited_if' => 'Ce champ est interdit quand :other a la valeur :value.',
'prohibited_unless' => 'Ce champ est interdit à moins que :other ait l\'une des valeurs :values.',
'regex' => 'Le format du champ est invalide.',
'relatable' => 'Ce champ n\'est sans doute pas associé avec cette donnée.',
'required' => 'Ce champ est obligatoire.',
'required_if' => 'Ce champ est obligatoire quand la valeur de :other est :value.',
'required_unless' => 'Ce champ est obligatoire sauf si :other est :values.',
'required_with' => 'Ce champ est obligatoire quand :values est présent.',
'required_with_all' => 'Ce champ est obligatoire quand :values sont présents.',
'required_without' => 'Ce champ est obligatoire quand :values n\'est pas présent.',
'required_without_all' => 'Ce champ est requis quand aucun de :values n\'est présent.',
'same' => 'Ce champ doit être identique à :other.',
'size' => [
'array' => 'Le tableau doit contenir :size éléments.',
'file' => 'La taille du fichier doit être de :size kilo-octets.',
'numeric' => 'La valeur doit être :size.',
'string' => 'Le texte doit contenir :size caractères.',
],
'starts_with' => 'Ce champ doit commencer avec une des valeurs suivantes : :values',
'string' => 'Ce champ doit être une chaîne de caractères.',
'timezone' => 'Ce champ doit être un fuseau horaire valide.',
'unique' => 'La valeur est déjà utilisée.',
'uploaded' => 'Le fichier n\'a pu être téléversé.',
'url' => 'Le format de l\'URL n\'est pas valide.',
'uuid' => 'Ce champ doit être un UUID valide',
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
'attributes' => [],
];
<?php
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
return [
'failed' => 'Ces identifiants ne correspondent pas à nos enregistrements.',
'password' => 'Le mot de passe fourni est incorrect.',
'throttle' => 'Tentatives de connexion trop nombreuses. Veuillez essayer de nouveau dans :seconds secondes.',
];
@extends('layout')
@section('contenu')
@include('/partials/modalModifierOperation')
@include('/partials/modalConfirmSuppOperation')
@include('/partials/modalAjouterOperation')
@include('/partials/modalDetailsOperation')
@include('partials/modalRapport')
<section
style="background-image: url('/img/board.png'); background-attachment: fixed; background-repeat: no-repeat; background-size: cover; min-height: 93.2vh;"
class="section p-3 mt-0 mb-0 mx-2-touch columns mx-0 is-centered is-flex-desktop is-flex-direction-column is-justify-content-center">
<nav class="panel mx-auto is-info column is-half p-0">
<p class="panel-heading">
Les transactions
</p>
<p class="panel-tabs has-background-white">
<a id="default" class="tab" onclick="openContent(event, 'tout')">Tout</a>
<a class="tab" onclick="openContent(event, 'depenses')">Dépenses</a>
<a class="tab" onclick="openContent(event, 'encaissements')">Encaissements</a>
</p>
<div class="mb-5" style="background: #E4E9F2; height: 25rem; overflow-y: auto">
<div class="has-text-centered p-3">
<a onclick="openForm('modalAjouterOperation')" class="button is-info is-rounded mr-3">
<strong>Ajouter Transaction</strong>
</a>
<a onclick="openForm('modalRapport')" class="button is-info is-rounded">
<strong>Rapport</strong>
</a>
</div>
<div id="tout" class="contenu-block columns m-0">
<div class="column px-0">
@foreach ($operations as $operation)
<span class="columns is-flex m-auto">
<span class="column is-three-quarters">
<span class="panel-block">
<span class="panel-icon">
<i class="fas fa-money-bill" aria-hidden="true"></i>
</span>
{{ $operation->libelle }}({{ $operation->type_operation }}) par
{{ $operation->user != null ? $operation->user->prenom . ' ' . $operation->user->nom : 'UPGROUP-PAY' }}
{{ $operation->statut == 'annule' ? ' (Annulee)' : '' }}
</span>
</span>
@if (auth()->user()->administrateur == 1)
<span class="column px-0 is-flex is-justify-content-right">
<a class="icon is-medium"
onclick="openForm('modalDetailsOperation'); get_ref_det('{{ $operation->reference }}'); get_libelle_det('{{ addslashes($operation->libelle) }}'); get_type_det('{{ $operation->type_operation }}'); get_descr_det('{{ addslashes($operation->description == null ? '' : $operation->description) }}'); get_montant_det('{{ $operation->montant }}'); get_author_det('{{ $operation->user != null ? $operation->user->prenom . ' ' . $operation->user->nom : 'UPGROUP-PAY' }}'); get_date_det('{{ date('d/m/Y', strtotime($operation->created_at)) }}'); get_update_det('{{ date('d/m/Y', strtotime($operation->updated_at)) }}'); get_statut_det('{{ $operation->statut }}');">
<i title="Détails" class="fas fa-info" aria-hidden="true"></i>
</a>
<a class="icon is-medium"
onclick="openForm('modalModifierOperation'); get_id_operation({{ $operation->id }}); get_libelle_operation('{{ addslashes($operation->libelle) }}'); get_type_operation('{{ $operation->type_operation }}'); get_descr('{{ addslashes($operation->description == null ? '' : $operation->description) }}'); get_montant('{{ $operation->montant }}');">
<i title="Modifier" class="fas fa-edit" aria-hidden="true"></i>
</a>
<a class="icon is-medium"
onclick="get_id_operation({{ $operation->id }}); openForm('modalSuppOperation')">
<i title="Supprimer" class="fas fa-trash-alt" aria-hidden="true"></i>
</a>
</span>
@endif
</span>
@endforeach
</div>
</div>
<div id="depenses" class="contenu-block columns m-0">
<div class="column">
@foreach ($depenses as $operation)
<span class="columns is-flex m-auto">
<span class="column is-three-quarters">
<span class="panel-block">
<span class="panel-icon">
<i class="fas fa-money-bill" aria-hidden="true"></i>
</span>
{{ $operation->libelle }} par
{{ $operation->user != null ? $operation->user->prenom . ' ' . $operation->user->nom : 'UPGROUP-PAY' }}
{{ $operation->statut == 'annule' ? ' (Annulee)' : '' }}
</span>
</span>
<span class="column is-flex is-justify-content-right">
<a class="icon is-medium"
onclick="openForm('modalDetailsOperation'); get_ref_det('{{ $operation->reference }}'); get_libelle_det('{{ addslashes($operation->libelle) }}'); get_type_det('{{ $operation->type_operation }}'); get_descr_det('{{ addslashes($operation->description == null ? '' : $operation->description) }}'); get_montant_det('{{ $operation->montant }}'); get_author_det('{{ $operation->user != null ? $operation->user->prenom . ' ' . $operation->user->nom : 'UPGROUP-PAY' }}'); get_date_det('{{ date('d/m/Y', strtotime($operation->created_at)) }}'); get_update_det('{{ date('d/m/Y', strtotime($operation->updated_at)) }}'); get_statut_det('{{ $operation->statut }}');">
<i title="Détails" class="fas fa-info" aria-hidden="true"></i>
</a>
<a title="Modifier" class="icon is-medium"
onclick="openForm('modalModifierOperation'); get_id_operation({{ $operation->id }}); get_libelle_operation('{{ addslashes($operation->libelle) }}'); get_type_operation('{{ $operation->type_operation }}'); get_descr('{{ addslashes($operation->description == null ? '' : $operation->description) }}'); get_montant('{{ $operation->montant }}');">
<i class="fas fa-edit" aria-hidden="true"></i>
</a>
<a title="Supprimer" class="icon is-medium"
onclick="get_id_matiere({{ $operation->id }}); openForm('modalSuppMatiere')">
<i class="fas fa-trash-alt" aria-hidden="true"></i>
</a>
</span>
</span>
@endforeach
</div>
</div>
<div id="encaissements" class="contenu-block columns m-0">
<div class="column">
@foreach ($encaissements as $operation)
<span class="columns is-flex m-auto">
<span class="column is-three-quarters">
<span class="panel-block">
<span class="panel-icon">
<i class="fas fa-money-bill" aria-hidden="true"></i>
</span>
{{ $operation->libelle }} par
{{ $operation->user != null ? $operation->user->prenom . ' ' . $operation->user->nom : 'UPGROUP-PAY' }}
{{ $operation->statut == 'annule' ? ' (Annulee)' : '' }}
</span>
</span>
<span class="column is-flex is-justify-content-right">
<a class="icon is-medium"
onclick="openForm('modalDetailsOperation'); get_ref_det('{{ $operation->reference }}'); get_libelle_det('{{ addslashes($operation->libelle) }}'); get_type_det('{{ $operation->type_operation }}'); get_descr_det('{{ addslashes($operation->description == null ? '' : $operation->description) }}'); get_montant_det('{{ $operation->montant }}'); get_author_det('{{ $operation->user != null ? $operation->user->prenom . ' ' . $operation->user->nom : 'UPGROUP-PAY' }}'); get_date_det('{{ date('d/m/Y', strtotime($operation->created_at)) }}'); get_update_det('{{ date('d/m/Y', strtotime($operation->updated_at)) }}'); get_statut_det('{{ $operation->statut }}');">
<i title="Détails" class="fas fa-info" aria-hidden="true"></i>
</a>
<a title="Modifier" class="icon is-medium"
onclick="openForm('modalModifierOperation'); get_id_operation({{ $operation->id }}); get_libelle_operation('{{ addslashes($operation->libelle) }}'); get_type_operation('{{ $operation->type_operation }}'); get_descr('{{ addslashes($operation->description == null ? '' : $operation->description) }}'); get_montant('{{ $operation->montant }}');">
<i class="fas fa-edit" aria-hidden="true"></i>
</a>
<a title="Supprimer" class="icon is-medium"
onclick="get_id_matiere({{ $operation->id }}); openForm('modalSuppMatiere')">
<i class="fas fa-trash-alt" aria-hidden="true"></i>
</a>
</span>
</span>
@endforeach
</div>
</div>
</div>
<div class="columns"></div>
<div style="position: relative;" class="is-flex is-justify-content-center">
<img src="/img/upschool.svg" width="200" alt="">
</div>
</nav>
</section>
@include('/partials/operationJs')
@endsection
@php
header('cache-Control: no-store, no-cache, must-revalidate');
header('cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
@endphp
<!DOCTYPE html>
<html id="html" lang="{{ app()->getLocale() }}">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="csrf-token" content="{{ csrf_token() }}">
<link href="https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css"
integrity="sha384-DyZ88mC6Up2uqS4h/KRgHuoeGwBcD4Ng9SiP4dIRy0EXTlnuz47vAwmeGwVChigm" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="/css/connexion.css">
<link rel="stylesheet" href="/css/style.css">
<title>UpSchool</title>
<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk="
crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/cleave.js@1.6.0/dist/cleave.min.js"
integrity="sha256-frGUwmSN4CLLjyk5m59ECdXsDMUxTW5O6hdceNHVCJo=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/cleave.js@1.6.0/dist/addons/cleave-phone.sn.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.3/additional-methods.min.js"
integrity="sha512-XZEy8UQ9rngkxQVugAdOuBRDmJ5N4vCuNXCh8KlniZgDKTvf7zl75QBtaVG1lEhMFe2a2DuA22nZYY+qsI2/xA=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
<link rel="icon" href="/img/upschool-favicon.png">
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<style>
h1 {
font-family: 'New Century Schoolbook', 'TeX Gyre Schola', 'serif';
}
@media print {
/* Appliquer une marge sur toutes les pages */
@page {
margin-top: 20; /* ajustez top/right/left/bottom selon besoin */
}
}
* {
-webkit-print-color-adjust: exact !important;
/* Chrome, Safari, Edge */
color-adjust: exact !important;
/*Firefox*/
}
</style>
</head>
<body class="has-background-white my-0 is-family-monospace">
<div class="container is-flex is-flex-direction-column is-align-items-center">
<h1 class="title is-4 my-5">Rapport des paiements : {{ $month }}</h1>
<h3 class="title is-6">{{ $classe->libelle }}</h3>
<div class="is-flex is-justify-content-space-between">
<div class="mr-6">
<h3 class="title is-6">Payants</h3>
@foreach ($eleves as $eleve)
@if ($eleve->payements->where('promo', $promo)->where('mois', $month)->first()->paye)
<p class="mb-2">{{ $eleve->prenom }} {{ $eleve->nom }}</p>
@endif
@endforeach
</div>
<div class="ml-6">
<h3 class="title is-6">Non Payants</h3>
@foreach ($eleves as $eleve)
@if (!$eleve->payements->where('promo', $promo)->where('mois', $month)->first()->paye)
<p class="mb-2">{{ $eleve->prenom }} {{ $eleve->nom }}</p>
@endif
@endforeach
</div>
</div>
<div class="mt-6">
<p>{{ date_format(now(), 'd/m/Y') }}</p>
</div>
</div>
</body>
</html>
@extends('layout')
@section('contenu')
@if (auth()->user()->administrateur == 1)
<!-- Modal Creation compte ============================================= -->
@include('/partials/modalCreationCompte')
<!-- end creation compte =========================================================== -->
<section
style="background-image: url('/img/board.png'); background-attachment: fixed; background-repeat: no-repeat; background-size: cover; min-height: 93.2vh;"
class="section p-3 mt-0 mb-0 mx-2-touch columns mx-0 is-centered is-flex-desktop is-flex-direction-column is-justify-content-center">
<nav class="panel mx-auto is-info column is-two-thirds p-0">
<p class="panel-heading">
Les Comptes des utilisateurs
</p>
<p class="panel-tabs has-background-white">
<a id="default" class="tab" onclick="openContent(event, 'tout')">Tout</a>
<a class="tab" onclick="openContent(event, 'administration')">Administration</a>
<a class="tab" onclick="openContent(event, 'surveillants')">Surveillants</a>
<a class="tab" onclick="openContent(event, 'administrateurs')">Administrateurs</a>
</p>
<div class="mb-5" style="background: #E4E9F2; height: 25rem; overflow-y: auto">
<p class="has-text-centered p-3">
<a onclick="openForm('modalCreationCompte')" class="button is-info is-rounded">
<strong>Créer un compte</strong>
</a>
</p>
<div id="tout" class="contenu-block columns mx-0">
<div class="column m-2">
@foreach ($comptes->sortBy('nom') as $compte)
@if ($compte->role == 'administration' || $compte->role == 'surveillant')
<a href="/accueil/comptes/compte/{{ $compte->slug }}" class="panel-block">
<span class="panel-icon">
<i class="fas fa-user" aria-hidden="true"></i>
</span>
{{ $compte->prenom }} {{ $compte->nom }}
</a>
@endif
@endforeach
</div>
</div>
<div id="administration" class="contenu-block columns mx-0">
<div class="column m-2">
@foreach ($comptes->sortBy('nom') as $compte)
@if ($compte->administrateur == 0 && $compte->role == 'administration')
<a href="/accueil/comptes/compte/{{ $compte->slug }}" class="panel-block">
<span class="panel-icon">
<i class="fas fa-user" aria-hidden="true"></i>
</span>
{{ $compte->prenom }} {{ $compte->nom }}
</a>
@endif
@endforeach
</div>
</div>
<div id="surveillants" class="contenu-block columns mx-0">
<div class="column m-2">
@foreach ($comptes->sortBy('nom') as $compte)
@if ($compte->administrateur == 0 && $compte->role == 'surveillant')
<a href="/accueil/comptes/compte/{{ $compte->slug }}" class="panel-block">
<span class="panel-icon">
<i class="fas fa-user" aria-hidden="true"></i>
</span>
{{ $compte->prenom }} {{ $compte->nom }}
</a>
@endif
@endforeach
</div>
</div>
<div id="administrateurs" class="contenu-block columns mx-0">
<div class="column m-2">
@foreach ($comptes->sortBy('nom') as $compte)
@if ($compte->administrateur == 1 && $compte->role == 'administration')
<a href="/accueil/comptes/compte/{{ $compte->slug }}" class="panel-block">
<span class="panel-icon">
<i class="fas fa-user" aria-hidden="true"></i>
</span>
{{ $compte->prenom }} {{ $compte->nom }}
</a>
@endif
@endforeach
</div>
</div>
</div>
<div class="columns"></div>
<div style="position: relative;" class="is-flex is-justify-content-center">
<img src="/img/upschool.svg" width="200" alt="">
</div>
</nav>
</section>
@include('/partials/creationCompteJs')
@else
<script>
window.location.replace('/accueil');
</script>
@endif
@endsection
<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Page Not Found</title>
</head>
<body style="background-color: #0d575c; color: aliceblue;" class="hero is-fullheight is-block">
<section class="hero-body">
<div>
<script src="https://unpkg.com/@lottiefiles/lottie-player@latest/dist/lottie-player.js"></script>
<lottie-player src="https://assets8.lottiefiles.com/packages/lf20_rDB3bm.json" background="transparent"
speed="1" loop autoplay></lottie-player>
</div>
</section>
</body>
</html>
@php
header('cache-Control: no-store, no-cache, must-revalidate');
header('cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
@endphp
<!DOCTYPE html>
<html id="html" lang="{{ app()->getLocale() }}">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="csrf-token" content="{{ csrf_token() }}">
<link href="https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css"
integrity="sha384-DyZ88mC6Up2uqS4h/KRgHuoeGwBcD4Ng9SiP4dIRy0EXTlnuz47vAwmeGwVChigm" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="/css/connexion.css">
<link rel="stylesheet" href="/css/style.css">
<title>UPSchool</title>
<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk="
crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/cleave.js@1.6.0/dist/cleave.min.js"
integrity="sha256-frGUwmSN4CLLjyk5m59ECdXsDMUxTW5O6hdceNHVCJo=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/cleave.js@1.6.0/dist/addons/cleave-phone.sn.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.3/additional-methods.min.js"
integrity="sha512-XZEy8UQ9rngkxQVugAdOuBRDmJ5N4vCuNXCh8KlniZgDKTvf7zl75QBtaVG1lEhMFe2a2DuA22nZYY+qsI2/xA=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
<link rel="icon" href="/img/upschool-favicon.png">
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script defer src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"></script>
<script src="https://unpkg.com/@lottiefiles/lottie-player@latest/dist/lottie-player.js"></script>
<link rel="manifest" href="/manifest.json">
<style>
#loader {
position: fixed;
width: 300px;
height: 300px;
top: 30%;
left: 40%;
z-index: 999;
}
@media only screen and (max-width: 600px) {
#loader {
left: 30px;
}
}
</style>
</head>
</head>
<body class="has-navbar-fixed-top hero is-fullheight is-block">
<!-- navigation =========================================================== -->
@include('/partials/navigation')
<!-- end navigation =========================================================== -->
<!-- Modal inscription ============================================= -->
@include('/partials/modalInscription')
<!-- end inscription =========================================================== -->
<!-- Modal Promo ============================================= -->
@include('/partials/modalPromo')
<!-- end Promo =========================================================== -->
<lottie-player id="loader" class="is-hidden" src="https://assets1.lottiefiles.com/packages/lf20_aidqj9aw.json"
background="transparent" speed="1" style="" loop autoplay></lottie-player>
<div>
<div x-data="{ show: true }" x-init="setTimeout(() => show = false, 4000)" x-show="show" style="position: absolute;">
@include('flash::message')
</div>
@yield('contenu')
</div>
@if (auth()->user()->administration == 1 || auth()->user()->administrateur == 1)
<div id="btn-set-env" class="dropdown is-up" style="position: fixed; bottom: 0; right: 2px">
<div class="dropdown-trigger">
<button
onclick="$('#btn-set-env').hasClass('is-active') ? $('#btn-set-env').removeClass('is-active') : $('#btn-set-env').addClass('is-active')"
class="button" aria-haspopup="true" aria-controls="dropdown-menu">
<span>Année Scolaire</span>
<span class="icon is-small">
<i class="fas fa-angle-up" aria-hidden="true"></i>
</span>
</button>
</div>
<div class="dropdown-menu" id="dropdown-menu" role="menu">
<div class="dropdown-content">
<div style="max-height: 10rem; overflow: scroll">
@foreach ($promos as $promo)
<form action="{{ route('setSchoolYearValue.post') }}" method="POST">
@csrf
<input name="newYear" class="is-hidden" type="text" value="{{ $promo->libelle }}">
<button style="border: 0" type="submit"
class="dropdown-item button {{ $promo->libelle == auth()->user()->current_year ? 'is-active' : '' }}">
{{ $promo->libelle }}
</button>
</form>
@endforeach
</div>
@if (auth()->user()->administrateur == 1)
<hr class="dropdown-divider" />
<button style="border: 0" class="dropdown-item button"
onclick="openForm('modalFormPromo')">Nouvelle</button>
@endif
</div>
</div>
</div>
@endif
@include('/partials/inscriptionJs')
@include('/partials/promoJs')
<script src="/js/script.js"></script>
</body>
</html>
@extends('layout')
@section('contenu')
@include('/partials/modalModifierEvaluation')
@include('/partials/modalConfirmSuppEvaluation')
<section
style="background-image: url('/img/bgclasse.png'); background-attachment: fixed; background-repeat: no-repeat; background-size: cover; min-height: 93.2vh"
class="section mt-0 columns mx-0 mb-0 is-centered">
<section class="section container column is-two-thirds">
<section class="section is-link is-light p-0">
<h1 class="title is-1 is-size-3-touch has-text-centered has-text-white">{{ $classe->libelle }}</h1>
<h1 class="subtitle is-6 has-text-centered has-text-white">{{ $classe->type }}</h1>
</section>
<nav class="panel has-background-light is-info mt-2">
<p class="panel-heading mb-3">
L'historique des évaluations dans cette classe
</p>
@if (count($evaluations) == 0)
<p class="title is-6 has-text-centered pb-4">Il n'y pas encore d'évaluations dans cette classe</p>
@else
@foreach ($evaluations->sortByDesc('id') as $evaluation)
<div class="content box has-background-light">
<div class="has-text-weight-bold has-text-success"><span
class="has-text-weight-bold">Date:</span>
{{ date('d/m/Y', strtotime($evaluation->date)) }}</div>
@foreach ($matieres as $matiere)
@if ($matiere->id == $evaluation->matiere_id)
<div><span class="has-text-weight-bold">Matière:</span> {{ $matiere->libelle }}</div>
@endif
@endforeach
@if ($classe->type == 'Secondaire')
<div><span class="has-text-weight-bold">Trimestre/Semestre:</span> {{ $evaluation->semestre }}</div>
@else
<div><span class="has-text-weight-bold">Trimestre:</span> {{ $evaluation->semestre }}</div>
@endif
<div class="buttons">
@if (auth()->user()->administrateur == 1)
<a type="button" class="button is-info is-light"
onclick="get_classe_slug('{{$classe->slug}}'); get_eval_id({{ $evaluation->id }}); get_classe_libelle('{{ $classe->libelle }}'); openForm('modalSuppEvaluation')">Supprimer</a>
<a type="button" class="button is-info is-light"
onclick="get_classe_slug('{{$classe->slug}}') ; getOldMatiere({{ $evaluation->matiere_id }}); getOldDate('{{ date('Y-m-d', strtotime($evaluation->date)) }}'); get_eval_id({{ $evaluation->id }}); get_classe_libelle('{{ $classe->libelle }}'); openForm('modal_modifier_evaluation');">Modifier</a>
@endif
<a href="/accueil/classe/{{ $classe->slug }}/evaluationHistory/{{ $evaluation->slug }}/details"
type="button" class="button supp_cours is-info is-light">Détails</a>
</div>
</div>
@endforeach
@endif
</nav>
</section>
</section>
@include('/partials/evaluationJs')
@endsection
@extends('layout')
@include('/partials/modalBulletinPromo')
@section('contenu')
<section
style="background-image: url('/img/bgclasse.png'); background-attachment: fixed; background-repeat: no-repeat; background-size: cover; min-height: 93.2vh"
class="section p-0 mt-0 columns mx-0 mb-0 is-centered">
<section class="section container column is-two-thirds">
<section class="section is-link is-light pb-4">
<h1 class="title is-1 is-size-3-touch has-text-centered has-text-white">{{ $classe->libelle }}
({{ request('promo') }})</h1>
<h1 class="subtitle is-6 has-text-centered has-text-white">{{ $classe->type }}</h1>
</section>
<div class="tile is-ancestor has-text-centered">
<div class="tile is-parent">
<article class="tile is-child box">
<p class="title is-4">Effectif</p>
<p class="subtitle">{{ count($eleves) }}</p>
</article>
</div>
</div>
<nav class="panel is-info has-background-light">
<p class="panel-heading">
Liste des élèves
</p>
<div
class="has-text-centered is-flex is-justify-content-center is-justify-content-space-around is-flex-wrap-wrap">
<div class="panel-block columns mx-0 is-centered my-1">
<button class="button is-rounded is-info" onclick="openForm('modalBulletinPromo')">
<span class="icon">
<i class="fas fa-clipboard"></i>
</span>
<span>Bulletins</span>
</button>
</div>
</div>
@if (count($eleves) == 0)
<p class="title is-6 has-text-centered py-4">Aucun élève à afficher dans cette promo</p>
@else
@foreach ($eleves as $eleve)
<div class="columns mx-0 px-2 is-flex is-flex-wrap-nowrap">
<div class="column is-narrow">
<a href="#" class="panel-block">
<span class="panel-icon">
<i class="fas fa-user-graduate" aria-hidden="true"></i>
</span>
{{ $eleve->prenom }} {{ $eleve->nom }}
</a>
</div>
</div>
@endforeach
@endif
</nav>
</section>
</section>
@endsection
@extends('layout')
@section('contenu')
@include('/partials/modalModifierCours')
@include('/partials/modalConfirmSuppCours')
<section
style="background-image: url('/img/bgclasse.png'); background-attachment: fixed; background-repeat: no-repeat; background-size: cover; min-height: 93.2vh"
class="section mt-0 columns mx-0 mb-0 is-centered">
<section class="section container column is-two-thirds">
<section class="section is-link is-light p-0">
<h1 class="title is-1 is-size-3-touch has-text-centered has-text-white">{{ $classe->libelle }}</h1>
<h1 class="subtitle is-6 has-text-centered has-text-white">{{ $classe->type }}</h1>
</section>
<nav class="panel is-info has-background-light mt-2">
<p class="panel-heading mb-3">
L'historique des cours déroulés dans cette classe
</p>
@if (count($cours) == 0)
<p class="title is-6 has-text-centered pb-4">Il n'y pas encore de cours dans cette classe</p>
@else
@if (auth()->user()->role == 'administration' || auth()->user()->role == 'surveillant')
@foreach ($cours->sortByDesc('id') as $unCours)
<div class="content box">
<div class="has-text-weight-bold has-text-success"><span
class="has-text-weight-bold">Date:</span>
{{ date('d/m/Y', strtotime($unCours->created_at)) }}</div>
<div><span class="has-text-weight-bold">Détails:</span> {!! nl2br($unCours->description) !!}</div>
@foreach ($professeurs as $professeur)
@if ($professeur->id == $unCours->professeur_id)
<div><span class="has-text-weight-bold">Professeur:</span>
{{ $professeur->prenom }}
{{ $professeur->nom }}</div>
@endif
@endforeach
@foreach ($matieres as $matiere)
@if ($matiere->id == $unCours->matiere_id)
<div><span class="has-text-weight-bold">Matière:</span> {{ $matiere->libelle }}
</div>
@endif
@endforeach
<div><span class="has-text-weight-bold">Heure de début:</span>
{{ date('H:i', strtotime($unCours->debut)) }}</div>
<div><span class="has-text-weight-bold">Heure de fin:</span>
{{ date('H:i', strtotime($unCours->fin)) }}</div>
@if (auth()->user()->administrateur == 1)
<div class="buttons">
<a type="button" class="button is-info is-light"
onclick="getCoursId({{ $unCours->id }}); getClasseLib('{{ $classe->libelle }}'); get_classe_slug('{{ $classe->slug }}'); openForm('modalSuppCours')">Supprimer</a>
<a type="button" class="button is-info is-light"
onclick="getCoursId({{ $unCours->id }}); getClasseLib('{{ $classe->libelle }}'); get_classe_slug('{{ $classe->slug }}'); openForm('modal_modifier_cours'); getOldDescrip('{!! str_replace(["\r\n", "\n"], '\n', addslashes($unCours->description)) !!}'); getOldProf({{ $unCours->professeur_id }}); getOldMatiere({{ $unCours->matiere_id }}); getOldDebut('{{ date('H:i', strtotime($unCours->debut)) }}'); getOldFin('{{ date('H:i', strtotime($unCours->fin)) }}');">Modifier</a>
</div>
@endif
</div>
@endforeach
@else
@foreach ($cours->sortByDesc('id') as $unCours)
@foreach ($professeurs as $professeur)
@if (str_replace(' ', '', $professeur->telephone) == auth()->user()->nom_utilisateur && $unCours->professeur_id == $professeur->id)
<div class="content box">
<div class="has-text-weight-bold has-text-success"><span
class="has-text-weight-bold">Date:</span>
{{ date('d/m/Y', strtotime($unCours->created_at)) }}</div>
<div><span class="has-text-weight-bold">Détails:</span> {!! nl2br($unCours->description) !!}
</div>
@if ($professeur->id == $unCours->professeur_id)
<div><span class="has-text-weight-bold">Professeur:</span>
{{ $professeur->prenom }}
{{ $professeur->nom }}</div>
@endif
@foreach ($matieres as $matiere)
@if ($matiere->id == $unCours->matiere_id)
<div><span class="has-text-weight-bold">Matière:</span>
{{ $matiere->libelle }}
</div>
@endif
@endforeach
<div><span class="has-text-weight-bold">Heure de début:</span>
{{ date('H:i', strtotime($unCours->debut)) }}</div>
<div><span class="has-text-weight-bold">Heure de fin:</span>
{{ date('H:i', strtotime($unCours->fin)) }}</div>
@if (auth()->user()->administrateur == 1)
<div class="buttons">
<a type="button" class="button is-info is-light"
onclick="getCoursId({{ $unCours->id }}); getClasseLib('{{ $classe->libelle }}'); get_classe_slug('{{ $classe->slug }}'); openForm('modalSuppCours')">Supprimer</a>
<a type="button" class="button is-info is-light"
onclick="getCoursId({{ $unCours->id }}); getClasseLib('{{ $classe->libelle }}'); get_classe_slug('{{ $classe->slug }}'); openForm('modal_modifier_cours'); getOldDescrip('{!! str_replace(["\r\n", "\n"], '\n', addslashes($unCours->description)) !!}'); getOldProf({{ $unCours->professeur_id }}); getOldMatiere({{ $unCours->matiere_id }}); getOldDebut('{{ date('H:i', strtotime($unCours->debut)) }}'); getOldFin('{{ date('H:i', strtotime($unCours->fin)) }}');">Modifier</a>
</div>
@endif
</div>
@endif
@endforeach
@endforeach
@endif
@endif
</nav>
</section>
</section>
@include('/partials/coursJs')
@endsection
@extends('layout')
@section('contenu')
<section
style="background-image: url('/img/bgclasse.png'); background-attachment: fixed; background-repeat: no-repeat; background-size: cover; min-height: 93.2vh"
class="section mt-0 columns mx-0 mb-0 is-centered">
<section class="section container column is-two-thirds">
<section class="section is-link is-light p-0">
<h1 class="title is-1 is-size-3-touch has-text-centered has-text-white">{{ $classe->libelle }}</h1>
<h1 class="subtitle is-6 has-text-centered has-text-white">{{ $classe->type }}</h1>
</section>
<nav class="panel is-info has-background-light mt-2">
<p class="panel-heading">
@foreach ($matieres as $matiere)
@if ($matiere->id == $evaluation->matiere_id)
Evaluation {{ $matiere->libelle }} du {{ date('d/m/Y', strtotime($evaluation->date)) }}
@endif
@endforeach
<br>
@if ($classe->type == 'Secondaire')
Trimestre/Semestre {{$evaluation->semestre}}
@else
Trimestre {{$evaluation->semestre}}
@endif
</p>
<div class="content">
@foreach ($eleves->sortBy('nom') as $eleve)
<div class="panel-block is-flex is-justify-content-space-between">
<div class="has-text-dark">
<span class="panel-icon mt-1">
<i class="fas fa-user-graduate" aria-hidden="true"></i>
</span>
{{ $eleve->prenom }} {{ $eleve->nom }}
</div>
@foreach ($notes as $note)
@if ($note->eleve_id == $eleve->id)
<div>
<input id="{{ $eleve->id }}" min="0" max="20" type="number"
class="input is-info is-rounded note_eleve" title="Entre 0 et 20"
name="note{{ $eleve->id }}" placeholder="00" value="{{ $note->valeur }}"
disabled required>
</div>
@endif
@endforeach
<span hidden>{{ $existe = 0 }}</span>
@foreach ($notes as $note)
@if ($note->eleve_id == $eleve->id)
<span hidden>{{ $existe++ }}</span>
@endif
@endforeach
@if ($existe == 0)
<div>
<input id="{{ $eleve->id }}" min="0" max="20" type="number"
class="input is-info is-rounded note_eleve" title="Entre 0 et 20"
name="note{{ $eleve->id }}" placeholder="00" disabled required>
</div>
@endif
</div>
@endforeach
</div>
</nav>
</section>
</section>
@include('/partials/evaluationJs')
@endsection
@extends('layout')
@section('contenu')
@include('/partials/modalCours')
@include('/partials/modalNotes')
@include('/partials/modalBulletin')
@include('/partials/modalFacture')
@include('/partials/modalClassPromos')
@include('/partials/modalRapportPaiement')
<section
style="background-image: url('/img/bgclasse.png'); background-attachment: fixed; background-repeat: no-repeat; background-size: cover; min-height: 93.2vh"
class="section p-0 mt-0 columns mx-0 mb-0 is-centered">
<section class="section container column is-two-thirds">
<section class="section is-link is-light p-0">
<h1 class="title is-1 is-size-3-touch has-text-centered has-text-white">{{ $classe->libelle }}</h1>
<h1 class="subtitle is-6 has-text-centered has-text-white">{{ $classe->type }}</h1>
</section>
<section class="info-tiles">
<div
class="has-text-centered is-flex is-justify-content-center is-justify-content-space-around is-flex-wrap-wrap">
<a onclick="openForm('modal_cours')" class="button is-info is-rounded mb-3">
<span>Remplir cahier de texte</span>
</a>
<a href="/accueil/classe/{{ $classe->slug }}/coursHistory" class="button is-info is-rounded mb-3">
<span>Historique des cours</span>
</a>
<a href="/accueil/classe/{{ $classe->slug }}/evaluationHistory" class="button is-info is-rounded mb-3">
<span>Historique des évaluations</span>
</a>
<a onclick="get_classe_slug('{{ $classe->slug }}') ; openForm('modal_notes')"
class="button is-info is-rounded mb-3">
<span>Enregistrer des notes</span>
</a>
</div>
<div class="tile is-ancestor has-text-centered">
<div class="tile is-parent">
<article class="tile is-child box">
<p class="title is-4">Effectif</p>
<p class="subtitle">{{ $classe->effectif }}</p>
</article>
</div>
<div class="tile is-parent">
<article class="tile is-child box">
<p class="title is-4">Evaluations</p>
<p class="subtitle">
{{ count($classe->evaluations->where('promo', auth()->user()->current_year)) }}</p>
</article>
</div>
<div class="tile is-parent">
<article class="tile is-child box">
<p class="title is-4">Moyenne</p>
<p class="subtitle">{{ round($moyenneClasse, 2) }}</p>
</article>
</div>
</div>
</section>
<div class="box is-flex is-justify-content-center is-justify-content-space-around is-flex-wrap-wrap">
@if ($evaluations1->count() != 0)
<div class="box mb-4">
<canvas id="chartClasse1"></canvas>
</div>
@endif
@if ($evaluations2->count() != 0)
<div class="box mb-4">
<canvas id="chartClasse2"></canvas>
</div>
@endif
@if ($evaluations3->count() != 0)
<div class="box mb-4">
<canvas id="chartClasse3"></canvas>
</div>
@endif
</div>
<nav class="panel is-info has-background-light">
<p class="panel-heading">
Liste des élèves
</p>
@if (auth()->user()->role == 'administration' || auth()->user()->role == 'surveillant')
<div
class="has-text-centered is-flex is-justify-content-center is-justify-content-space-around is-flex-wrap-wrap">
<div class="panel-block columns mx-0 is-centered my-1">
<button class="button is-rounded is-info" onclick="openForm('modalBulletin')">
<span class="icon">
<i class="fas fa-clipboard"></i>
</span>
<span>Bulletins</span>
</button>
</div>
@if (auth()->user()->role == 'administration')
<div class="panel-block columns mx-0 is-centered my-1">
<button class="button is-rounded is-info" onclick="openForm('modal_facture')">
<span class="icon">
<i class="fas fa-solid fa-file-invoice-dollar"></i>
</span>
<span>Factures</span>
</button>
</div>
@endif
@if (auth()->user()->role == 'administration')
<div class="panel-block columns mx-0 is-centered my-1">
<button class="button is-rounded is-info" onclick="openForm('modal_rapport_paiement')">
<span class="icon">
<i class="fas fa-solid fa-receipt"></i>
</span>
<span>Rapport</span>
</button>
</div>
@endif
<div class="panel-block columns mx-0 is-centered my-1">
<button class="button is-rounded is-info" onclick="openForm('modalClassPromos')">
<span class="icon">
<i class="fas fa-solid fa-graduation-cap"></i>
</span>
<span>Promos</span>
</button>
</div>
</div>
@endif
@if (count($classe->eleves) == 0)
<p class="title is-6 has-text-centered pb-4">Aucun élève n'est inscrit dans cette classe</p>
@else
@foreach ($classe->eleves->where('promo', auth()->user()->current_year)->sortBy('nom') as $eleve)
<div class="columns mx-0 px-2 is-flex is-flex-wrap-nowrap">
<div class="column is-narrow">
<a href="/accueil/classe/{{ $classe->slug }}/eleve/{{ $eleve->slug }}" class="panel-block">
<span class="panel-icon">
<i class="fas fa-user-graduate" aria-hidden="true"></i>
</span>
{{ $eleve->prenom }} {{ $eleve->nom }}
</a>
</div>
</div>
@endforeach
@endif
</nav>
</section>
</section>
@include('/partials/coursJs')
@include('/partials/classeJs')
@include('/partials/facturesJs')
@include('/partials/notesJs')
@include('/partials/rapportPaiementJs')
@endsection
@extends('layout')
@section('contenu')
<section
style="background-image: url('/img/login.png'); background-attachment: fixed; background-repeat: no-repeat; background-size: cover; min-height: 93.2vh"
class="section">
<section class="section is-link is-light">
<h1 class="title is-1 is-size-3-touch has-text-centered has-text-white"> Bienvenue sur UpSchool </h1>
<h1 class="subtitle is-6 has-text-centered has-text-white"> Une meilleure vision de l'éducation</h1>
</section>
<!-- LES CLASSES ============================================================= -->
<section>
<!-- Ajouter classe ======================================================= -->
@include('/partials/modalClasse')
@include('/partials/modalModifierClasse')
<!-- Supprimer classe -->
@include('/partials/modalConfirmSuppClasse')
@include('/partials/modalDetailsOperation')
@include('/partials/modalAjouterOperation')
@include('/partials/modalModifierOperation')
@include('/partials/modalConfirmSuppOperation')
<!-- end =================================================================== -->
<!-- Panel ================================================================= -->
<div class="columns mx-0">
<div class="column mr-1 mt-2 mb-0 is-half box">
<canvas id="myChartPrimaire"></canvas>
</div>
<div class="column mt-2 is-half box">
<canvas id="myChartSecondaire"></canvas>
</div>
</div>
<div class="columns mx-0 mt-6">
<div class="column p-5-desktop mx-3-desktop mx-0-mobile p-0-mobile">
<article class="panel has-background-white">
<p class="panel-heading">
Classes
</p>
@if (auth()->user()->administrateur == 1)
<div class="panel-block is-justify-content-center">
<div>
<a onclick="openForm('modalFormClasse')" class="button is-info is-rounded">
<strong>Ajouter une classe</strong>
</a>
</div>
</div>
@endif
<div style="height: 20rem; overflow-y: auto;">
@if (auth()->user()->role == 'administration' || auth()->user()->role == 'surveillant')
@foreach ($classes as $classe)
<div class="columns is-flex mx-0">
<div class="column p-0 pt-4 is-three-quarters">
<a href="/accueil/classe/{{ $classe->slug }}" class="panel-block">
<span class="panel-icon">
<i class="fas fa-graduation-cap" aria-hidden="true"></i>
</span>
{{ $classe->libelle }}
</a>
</div>
@if (auth()->user()->administrateur == 1)
<div class="column p-0 pt-4 is-flex is-justify-content-right">
<a style="color: #3E8ED0" title="Modifier"
class="icon is-medium btn_modifier_classe"
onclick="openForm('modal_modifier_classe'); get_libelle_classe('{{ $classe->libelle }}'); get_id_classe({{ $classe->id }}); get_type_classe('{{ $classe->type }}')">
<i class="fas fa-edit" aria-hidden="true"></i>
</a>
<a style="color: #3E8ED0" title="Supprimer" class="icon is-medium"
onclick="get_id_classe({{ $classe->id }}); openForm('modalSuppClasse');">
<i class="fas fa-trash-alt" aria-hidden="true"></i>
</a>
</div>
@endif
</div>
@endforeach
@elseif(auth()->user()->role == 'professeur')
@foreach ($professeurs as $professeur)
@if (str_replace(' ', '', $professeur->telephone) == auth()->user()->nom_utilisateur)
@foreach ($professeur->classes as $classe)
<div class="columns is-flex mx-0">
<div class="column p-0 pt-4 is-three-quarters">
<a href="/accueil/classe/{{ $classe->slug }}" class="panel-block">
<span class="panel-icon">
<i class="fas fa-graduation-cap" aria-hidden="true"></i>
</span>
{{ $classe->libelle }}
</a>
</div>
</div>
@endforeach
@endif
@endforeach
@endif
</div>
</article>
</div>
@if (auth()->user()->role == 'administration')
<div class="column p-5-desktop mx-3-desktop mx-0-mobile p-0-mobile">
<article class="panel is-info has-background-white">
<p class="panel-heading">
Transactions
</p>
<div class="panel-block is-justify-content-center">
<div>
<a onclick="openForm('modalAjouterOperation')" class="button is-info is-rounded">
<strong>Ajouter transaction</strong>
</a>
</div>
</div>
<div style="height: 20rem;overflow-y: auto;">
@if (auth()->user()->administrateur == 1)
@if (count($operations) == 0)
<div class="panel-block is-justify-content-center">
<strong>Aucune Transaction</strong>
</div>
@else
@foreach ($operations as $operation)
<span class="columns is-flex m-auto">
<span class="column is-three-quarters">
<span class="panel-block">
<span class="panel-icon">
<i class="fas fa-money-bill" aria-hidden="true"></i>
</span>
{{ $operation->libelle }}({{ $operation->type_operation }}) par
{{ $operation->user != null ? $operation->user->prenom . ' ' . $operation->user->nom : 'UPGROUP-PAY' }}
{{ $operation->statut == 'annule' ? ' (Annulee)' : '' }}
</span>
</span>
<span class="column px-0 is-flex is-justify-content-right">
<a class="icon is-medium"
onclick="openForm('modalDetailsOperation'); get_ref_det('{{ $operation->reference }}'); get_libelle_det('{{ addslashes($operation->libelle) }}'); get_type_det('{{ $operation->type_operation }}'); get_descr_det('{{ addslashes($operation->description == null ? '' : $operation->description) }}'); get_montant_det('{{ $operation->montant }}'); get_author_det('{{ $operation->user != null ? $operation->user->prenom . ' ' . $operation->user->nom : 'UPGROUP-PAY' }}'); get_date_det('{{ date('d/m/Y', strtotime($operation->created_at)) }}'); get_update_det('{{ date('d/m/Y', strtotime($operation->updated_at)) }}');">
<i title="Détails" class="fas fa-info" aria-hidden="true"></i>
</a>
<a class="icon is-medium"
onclick="openForm('modalModifierOperation'); get_id_operation({{ $operation->id }}); get_libelle_operation('{{ addslashes($operation->libelle) }}'); get_type_operation('{{ $operation->type_operation }}'); get_descr('{{ addslashes($operation->description == null ? '' : $operation->description) }}'); get_montant('{{ $operation->montant }}');">
<i title="Modifier" class="fas fa-edit" aria-hidden="true"></i>
</a>
<a class="icon is-medium"
onclick="get_id_operation({{ $operation->id }}); openForm('modalSuppOperation')">
<i title="Supprimer" class="fas fa-trash-alt"
aria-hidden="true"></i>
</a>
</span>
</span>
@endforeach
@endif
@else
@foreach ($userOperations as $operation)
<span class="columns is-flex m-auto">
<span class="column is-three-quarters">
<span class="panel-block">
<span class="panel-icon">
<i class="fas fa-money-bill" aria-hidden="true"></i>
</span>
{{ $operation->libelle }}({{ $operation->type_operation }})
{{ $operation->statut == 'annule' ? ' (Annulee)' : '' }}
</span>
</span>
<span class="column px-2 is-flex is-justify-content-right">
<a class="icon is-medium"
onclick="openForm('modalDetailsOperation'); get_ref_det('{{ $operation->reference }}'); get_libelle_det('{{ addslashes($operation->libelle) }}'); get_type_det('{{ $operation->type_operation }}'); get_descr_det('{{ addslashes($operation->description == null ? '' : $operation->description) }}'); get_montant_det('{{ $operation->montant }}'); get_author_det('{{ $operation->user != null ? $operation->user->prenom . ' ' . $operation->user->nom : 'UPGROUP-PAY' }}'); get_date_det('{{ date('d/m/Y', strtotime($operation->created_at)) }}'); get_update_det('{{ date('d/m/Y', strtotime($operation->updated_at)) }}');">
<i title="Détails" class="fas fa-info" aria-hidden="true"></i>
</a>
</span>
</span>
@endforeach
@endif
</div>
</article>
</div>
@if (auth()->user()->role == 'administration')
<div class="column p-5-desktop mx-3-desktop mx-0-mobile p-0-mobile">
<article class="panel has-background-white">
<p class="panel-heading">
Actions
</p>
<div class="panel-block is-justify-content-center">
<div>
<a style="cursor: grab" class="button is-white is-rounded">
<strong>Les dernières actions</strong>
</a>
</div>
</div>
<div style="height: 20rem;overflow-y: auto;">
@if (count($notifications) == 0)
<div class="panel-block is-justify-content-center">
<strong>Aucune Action</strong>
</div>
@else
@foreach ($notifications as $notification)
<span class="panel-block">
<span class="panel-icon">
<i class="fas fa-bell" aria-hidden="true"></i>
</span>
<span class="subtitle is-6">{{ $notification->message }} le
{{ date('d-m-Y', strtotime($notification->date)) }}</span>
</span>
@endforeach
@endif
</div>
</article>
</div>
@endif
@endif
</div>
</section>
</section>
<!-- End panel ============================================================= -->
@include('/partials/homeJs')
@include('/partials/operationJs')
@endsection
@php
header('cache-Control: no-store, no-cache, must-revalidate');
header('cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
@endphp
<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="csrf-token" content="{{ csrf_token() }}">
<link rel="stylesheet" href="/css/style.css">
<link href="https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css"
integrity="sha384-DyZ88mC6Up2uqS4h/KRgHuoeGwBcD4Ng9SiP4dIRy0EXTlnuz47vAwmeGwVChigm" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="/css/connexion.css">
<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk="
crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.min.js"></script>
<link rel="icon" href="/img/upschool-favicon.png">
<title>Authentificaion-UpSchool</title>
</head>
<body>
<section style="background-image: url('/img/bg.jpg') ; background-size: cover;" class="hero is-fullheight p-0">
<div style="position: absolute; left: 1rem; right: 1rem; top: 0.75rem"
class="columns mx-0 p-0 section is-centered">
<div style="" class="column p-0 is-half">
@include('flash::message')
</div>
</div>
<div class="hero-body py-0 has-text-centered">
<div style="background-color: aliceblue;" class="login">
<h1 class="title is-4 px-6 is-size-6-touch has-text-centered"> Nouveau mot de passe </h1>
<form id="form_reinitialiser">
@csrf
<div class="field">
<div class="control">
<p class="control has-icons-left">
<input id="nv_mot_de_passe_id"
class="input is-info is-rounded
@error('nv_mot_de_passe') is-invalid @enderror"
type="password" placeholder="Saisissez le nouveau mot de passe"
name="nv_mot_de_passe" required autocomplete="new-password" />
<span class="icon is-small is-left">
<i class="fas fa-lock"></i>
</span>
</p>
@error('nv_mot_de_passe')
<div class="help is-danger error is-flex is-justify-content-left">{{ $message }}</div>
@enderror
</div>
</div>
<div class="field is-flex is-justify-content-left">
<div class="control">
<label class="checkbox">
<input id="afficher_mot_de_passe" type="checkbox">
Afficher le mot de passe
</label>
</div>
</div>
<div class="field">
<div class="control">
<p class="control has-icons-left">
<input id="nv_mot_de_passe_confirm_id"
class="input is-info is-rounded
@error('nv_mot_de_passe_confirm') is-invalid @enderror"
type="password" placeholder="Confirmez le mot de passe"
name="nv_mot_de_passe_confirm" required autocomplete="new-password" />
<span class="icon is-small is-left">
<i class="fas fa-lock"></i>
</span>
</p>
@error('nv_mot_de_passe_confirm')
<div class="help is-danger error is-flex is-justify-content-left">{{ $message }}</div>
@enderror
</div>
</div>
<br />
<button onclick="get_user_slug('{{ auth()->user()->slug }}')" id="btn_reinitialiser"
class="button is-block is-fullwidth is-info is-medium is-rounded" type="submit">
Réinitialiser
</button>
</form>
<br>
<img src="/img/upschoollogo.png" width="150px" />
</div>
</div>
</section>
@include('/partials/reinitialisationJs')
</body>
</html>
@php
header('cache-Control: no-store, no-cache, must-revalidate');
header('cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
@endphp
<!DOCTYPE html>
<html id="html" lang="{{ app()->getLocale() }}">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="csrf-token" content="{{ csrf_token() }}">
<link href="https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css"
integrity="sha384-DyZ88mC6Up2uqS4h/KRgHuoeGwBcD4Ng9SiP4dIRy0EXTlnuz47vAwmeGwVChigm" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="/css/connexion.css">
<link rel="stylesheet" href="/css/style.css">
<title>UpSchool</title>
<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk="
crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/cleave.js@1.6.0/dist/cleave.min.js"
integrity="sha256-frGUwmSN4CLLjyk5m59ECdXsDMUxTW5O6hdceNHVCJo=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/cleave.js@1.6.0/dist/addons/cleave-phone.sn.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.3/additional-methods.min.js"
integrity="sha512-XZEy8UQ9rngkxQVugAdOuBRDmJ5N4vCuNXCh8KlniZgDKTvf7zl75QBtaVG1lEhMFe2a2DuA22nZYY+qsI2/xA=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
<link rel="icon" href="/img/upschool-favicon.png">
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<style>
h1 {
font-family: 'New Century Schoolbook', 'TeX Gyre Schola', 'serif';
}
@media print {
@page {
size: A4;
margin: 5mm;
}
body {
zoom: 0.85;
/* ajuste si besoin : 0.8 / 0.75 */
}
.page-break {
page-break-after: always;
break-after: page;
}
}
* {
-webkit-print-color-adjust: exact !important;
/* Chrome, Safari, Edge */
color-adjust: exact !important;
/*Firefox*/
}
</style>
</head>
<body style="background-image: url('/img/bgbulletin.png'); background-size: contain;"
class="has-background-white px-5 my-0 m-auto is-family-monospace" id="print">
<div
class="container columns is-centered is-multiline mx-0 mt-3 is-flex is-justify-content-center is-justify-content-space-around is-flex-wrap-wrap">
@php
$counter = 0;
@endphp
@foreach ($eleves as $eleve)
@if ($counter % 4 == 0 && $counter != 0)
<div class="page-break"></div>
@endif
<div class="column is-half">
<div class="has-text-centered">
<h1 class="title mb-0">{{ env('SCHOOL_NAME') }}</h1>
<p>{{ env('SCHOOL_ADDRESS') }}</p>
<p>{{ env('SCHOOL_AUT') }}</p>
<p>{{ env('SCHOOL_PHONE') }}</p>
@php
$reliquat = 0;
$toPay = $eleve->payements
->where('paye', 0)
->where('mois', $month)
->where('promo', env('SCHOOL_YEAR'))
->first();
$allToPay = $eleve->payements->where('paye', 0)->where('promo', env('SCHOOL_YEAR'));
$otherToPay = $eleve->payements
->where('paye', 0)
->where('promo', env('SCHOOL_YEAR'))
->where('type', '!=', 'Inscription')
->where('type', '!=', 'Mensualité');
if (isset($toPay)) {
foreach ($allToPay as $oneToPay) {
if ($oneToPay->mois != $toPay->mois && $oneToPay->id < $toPay->id) {
$reliquat = $reliquat + $oneToPay->montant;
}
}
}
@endphp
<h1 class="title is-4 my-3">Facture : {{ $month }}</h1>
</div>
<p>Nom : {{ $eleve->nom }}</p>
<p>Prénom : {{ $eleve->prenom }}</p>
<p>Classe : {{ $classe->libelle }}</p>
<p>Mensualité : {{ number_format($eleve->mensualite, 0, ',', ' ') }} CFA</p>
<p>Reliquat : {{ number_format($reliquat, 0, ',', ' ') }} CFA</p>
@if ($toPay != null)
<h1 class="title is-5 mt-3">Net à payer :
{{ number_format($reliquat + $toPay->montant, 0, ',', ' ') }} CFA</h1>
@else
<h1 class="title is-5 mt-3">Net à payer :
0 CFA</h1>
@endif
@if ($otherToPay->count() > 0)
<h2 class="subtitle is-6 mb-1 has-text-weight-semibold">Autres frais à régler :</h2>
<ul class="mb-1">
@foreach ($otherToPay as $other)
<li>{{ $other->type }} :
{{ number_format($other->montant, 0, ',', ' ') }} CFA
</li>
@endforeach
</ul>
@endif
<p class="mb-3">NB : Les parents doivent s'acquitter des frais de scolarité au plus tard le
{{ $limit }} du mois. Passé cette date, les élèves ne seront reçus à l'école qu'après
réglement.</p>
<p class="has-text-right">Merci de votre confiance<br>La Direction<br>{{ date_format(now(), 'd/m/Y') }}
</p>
</div>
@php
$counter++;
@endphp
@endforeach
</div>
</body>
</html>
@extends('layout')
@section('contenu')
@include('partials/modalAjouterProf')
<section
style="background-image: url('/img/board.png'); background-attachment: fixed; background-repeat: no-repeat; background-size: cover; min-height: 93.2vh;"
class="section p-3 mt-0 mb-0 mx-2-touch columns mx-0 is-centered is-flex-desktop is-flex-direction-column is-justify-content-center">
<nav class="panel mx-auto is-info column is-two-thirds p-0">
<p class="panel-heading">
Les professeurs
</p>
<p class="panel-tabs has-background-white">
<a id="default" class="tab" onclick="openContent(event, 'tout')">Tout</a>
<a class="tab" onclick="openContent(event, 'primaire')">Primaire</a>
<a class="tab" onclick="openContent(event, 'secondaire')">Secondaire</a>
</p>
<div class="mb-5" style="background: #E4E9F2; height: 25rem; overflow-y: auto">
<div class="has-text-centered p-3">
<a onclick="openForm('modalAjouterProf')" class="button is-info is-rounded">
<strong>Ajouter Professeur</strong>
</a>
</div>
<div id="tout" class="contenu-block columns mx-0">
<div class="column m-2">
@foreach ($professeurs as $professeur)
<a href="/accueil/professeurs/detailsProf/{{ $professeur->slug }}" class="panel-block">
<span class="panel-icon">
<i class="fas fa-chalkboard-teacher" aria-hidden="true"></i>
</span>
{{ $professeur->prenom }} {{ $professeur->nom }}
</a>
@endforeach
</div>
</div>
<div id="primaire" class="contenu-block columns mx-0">
<div class="column m-2">
@foreach ($professeurs as $professeur)
@if ($professeur->niveau == 'Primaire')
<a href="/accueil/professeurs/detailsProf/{{ $professeur->slug }}" class="panel-block">
<span class="panel-icon">
<i class="fas fa-chalkboard-teacher" aria-hidden="true"></i>
</span>
{{ $professeur->prenom }} {{ $professeur->nom }}
</a>
@endif
@endforeach
</div>
</div>
<div id="secondaire" class="contenu-block columns mx-0">
<div class="column m-2">
@foreach ($professeurs as $professeur)
@if ($professeur->niveau == 'Secondaire')
<a href="/accueil/professeurs/detailsProf/{{ $professeur->slug }}" class="panel-block">
<span class="panel-icon">
<i class="fas fa-chalkboard-teacher" aria-hidden="true"></i>
</span>
{{ $professeur->prenom }} {{ $professeur->nom }}
</a>
@endif
@endforeach
</div>
</div>
</div>
<div class="columns"></div>
<div style="position: relative;" class="is-flex is-justify-content-center">
<img src="/img/upschool.svg" width="200" alt="">
</div>
</nav>
</section>
@include('partials/professeursJs')
@endsection
@php
header('cache-Control: no-store, no-cache, must-revalidate');
header('cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
@endphp
<!DOCTYPE html>
<html id="html" lang="{{ app()->getLocale() }}">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="csrf-token" content="{{ csrf_token() }}">
<link href="https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css"
integrity="sha384-DyZ88mC6Up2uqS4h/KRgHuoeGwBcD4Ng9SiP4dIRy0EXTlnuz47vAwmeGwVChigm" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="/css/connexion.css">
<link rel="stylesheet" href="/css/style.css">
<title>UpSchool</title>
<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk="
crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/cleave.js@1.6.0/dist/cleave.min.js"
integrity="sha256-frGUwmSN4CLLjyk5m59ECdXsDMUxTW5O6hdceNHVCJo=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/cleave.js@1.6.0/dist/addons/cleave-phone.sn.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.3/additional-methods.min.js"
integrity="sha512-XZEy8UQ9rngkxQVugAdOuBRDmJ5N4vCuNXCh8KlniZgDKTvf7zl75QBtaVG1lEhMFe2a2DuA22nZYY+qsI2/xA=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
<link rel="icon" href="/img/upschool-favicon.png">
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<style>
h1 {
font-family: 'New Century Schoolbook', 'TeX Gyre Schola', 'serif';
}
@media print {
@page {
margin-top: 0;
margin-bottom: 0;
}
}
* {
-webkit-print-color-adjust: exact !important;
/* Chrome, Safari, Edge */
color-adjust: exact !important;
/*Firefox*/
}
</style>
</head>
<body style="background-image: url('/img/bgbulletin.png'); background-size: contain;"
class="has-background-white px-5 my-0 m-auto is-family-monospace" id="print">
<div class="content is-small">
<div
class="container columns is-centered is-multiline mx-0 mt-3 is-flex is-justify-content-center is-justify-content-space-around is-flex-wrap-wrap">
<div class="column is-half">
<div class="has-text-centered">
<h1 class="subtitle is-6 mb-0">{{ env('SCHOOL_NAME') }}</h1>
<p>{{ env('SCHOOL_ADDRESS') }}</p>
<p class="has-text-weight-semibold my-3">Reçu de paiement :
{{ $paye->mois == 'Délai défini' ? $paye->type : $paye->mois }}</p>
</div>
<p class="my-0">Nom : {{ $eleve->nom }}</p>
<p class="my-0">Prénom : {{ $eleve->prenom }}</p>
<p class="my-0">Classe : {{ $classe->libelle }}</p>
<p class="my-0">Somme versée : {{ number_format($paye->montant, 0, ',', ' ') }} CFA</p>
<p class="my-0">Date de paiement : {{ date_format($paye->updated_at, 'd/m/Y') }}</p>
<p class="has-text-right mt-3">Merci de votre confiance<br>{{ date_format(now(), 'd/m/Y') }}
</p>
</div>
</div>
</div>
</body>
</html>
@php
header('cache-Control: no-store, no-cache, must-revalidate');
header('cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
@endphp
<!DOCTYPE html>
<html id="html" lang="{{ app()->getLocale() }}">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="csrf-token" content="{{ csrf_token() }}">
<link href="https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css"
integrity="sha384-DyZ88mC6Up2uqS4h/KRgHuoeGwBcD4Ng9SiP4dIRy0EXTlnuz47vAwmeGwVChigm" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="/css/connexion.css">
<link rel="stylesheet" href="/css/style.css">
<title>UpSchool</title>
<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk="
crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/cleave.js@1.6.0/dist/cleave.min.js"
integrity="sha256-frGUwmSN4CLLjyk5m59ECdXsDMUxTW5O6hdceNHVCJo=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/cleave.js@1.6.0/dist/addons/cleave-phone.sn.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.3/additional-methods.min.js"
integrity="sha512-XZEy8UQ9rngkxQVugAdOuBRDmJ5N4vCuNXCh8KlniZgDKTvf7zl75QBtaVG1lEhMFe2a2DuA22nZYY+qsI2/xA=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
<link rel="icon" href="/img/upschool-favicon.png">
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<style>
h1 {
font-family: 'New Century Schoolbook', 'TeX Gyre Schola', 'serif';
}
@media print {
@page {
margin-top: 0;
margin-bottom: 0;
}
}
* {
-webkit-print-color-adjust: exact !important;
/* Chrome, Safari, Edge */
color-adjust: exact !important;
/*Firefox*/
}
</style>
</head>
<body style="background-image: url('/img/bgbulletin.png'); background-size: contain;"
class="has-background-white px-5 my-0 is-family-monospace" id="print">
{{-- <button id="btn_print" onclick="printDiv('print')">Print</button> --}}
@php
$rang = 1;
$rangEleve = 1;
$laMoyennePrec = 0;
@endphp
@foreach ($bulletins as $bulletin)
<section style="page-break-after:always;">
<section class="columns mx-0 mt-2 is-flex is-flex-wrap-nowrap">
<div class="column pb-0">
<h1 style="font-family: New Century Schoolbook, TeX Gyre Schola, serif"
class="title is-3 has-text-weight-bold">{{ env('SCHOOL_NAME') }}</h1>
</div>
<div class="column is-flex is-justify-content-flex-end pb-0">
<h5 class="title is-7 has-text-weight-normal pt-5">ANNEE SCOLAIRE {{ env('SCHOOL_YEAR') }}</h3>
</div>
</section>
<section class="columns mx-0">
<div class="column pt-0">
<p class="is-size-7">{{ env('SCHOOL_ADDRESS') }}</p>
<p class="is-size-7">{{ env('SCHOOL_AUT') }}</p>
<p class="is-size-7">Tel: {{ env('SCHOOL_PHONE') }}</p>
</div>
</section>
<section class="is-flex is-justify-content-center mb-2">
@switch($periode)
@case('trimestre1')
<h1 class="title is-4">BULLETIN DE NOTES DU 1<sup>er</sup> TRIMESTRE</h1>
@break
@case('trimestre2')
<h1 class="title is-4">BULLETIN DE NOTES DU 2<sup>e</sup> TRIMESTRE</h1>
@break
@case('trimestre3')
<h1 class="title is-4">BULLETIN DE NOTES DU 3<sup>e</sup> TRIMESTRE</h1>
@break
@case('semestre1')
<h1 class="title is-4">BULLETIN DE NOTES DU 1<sup>er</sup> SEMESTRE</h1>
@break
@default
<h1 class="title is-4">BULLETIN DE NOTES DU 2<sup>e</sup> SEMESTRE</h1>
@endswitch
</section>
<section class="columns mx-0 is-flex is-flex-wrap-nowrap">
<div class="column is-1">
</div>
<div class="column pb-0 has-text-weight-bold">
<span class="has-text-weight-bold">Prénom : </span>{{ $bulletin['eleve']->prenom }}
</div>
<div class="column is-flex is-justify-content-flex-end pb-0 has-text-weight-bold">
<span class="has-text-weight-bold">Nom : </span>{{ $bulletin['eleve']->nom }}
</div>
<div class="column is-1">
</div>
</section>
<section class="columns mx-0 is-flex is-flex-wrap-nowrap">
<div class="column is-1">
</div>
<div class="column pt-0 pb-0">
<span class="has-text-weight-bold">Date et lieu de naissance :
</span>{{ date('d/m/Y', strtotime($bulletin['eleve']->date_naissance)) }} à
{{ $bulletin['eleve']->lieu_naissance }}
</div>
</section>
<section class="columns mx-0 is-flex is-flex-wrap-nowrap">
<div class="column is-1">
</div>
<div class="column pt-0 pb-0">
<span class="has-text-weight-bold">Classe : </span>{{ $classe->libelle }}
</div>
<div class="column is-flex is-justify-content-flex-end pt-0">
<span class="has-text-weight-bold">Nbre d'élèves : </span>{{ $classe->effectif }}
</div>
<div class="column is-1">
</div>
</section>
<table class="table is-bordered is-fullwidth has-text-centered is-size-7">
<thead>
<tr>
<th>Matières</th>
@if ($classe->type == 'Primaire')
<th>Notes CC</th>
<th>Compo.</th>
<th>Moyennes</th>
<th>Sur</th>
<th>Moy. * Bar.</th>
@else
<th>Notes Dev. /20</th>
<th>Exam. /20</th>
<th>Moyennes /20</th>
<th>Coef.</th>
<th>Moy. * Coef.</th>
@endif
<th>Rangs</th>
<th>Appréciations</th>
</tr>
</thead>
<tbody>
@foreach ($bulletin['resultats'] as $resultat)
<tr>
<th>{{ $resultat['matiere']->libelle }}</th>
<td>{{ $resultat['noteDevoir'] }}</td>
<td>{{ $resultat['noteExam'] }}</td>
<td>{{ $resultat['moyenne'] }}</td>
<td>{{ $resultat['coef'] }}</td>
<td>{{ $resultat['moyenneCoef'] }}</td>
@php
$arrayRangsMatiere = [];
foreach ($rangsMatieresEleves as $rangMatieresEleve) {
foreach ($rangMatieresEleve['rangsMatieres'] as $rangMatiereEleve) {
if ($resultat['matiere'] == $rangMatiereEleve['matiere']) {
$arrayRangsMatiere[] = [
'moy' => $rangMatiereEleve['moyenneCoef'],
'eleve' => $rangMatieresEleve['eleve'],
];
}
}
}
arsort($arrayRangsMatiere);
$rangMat = 1;
$moyPrec = 0;
$rangEleveMat = 1;
@endphp
@foreach ($arrayRangsMatiere as $rangsMatiere)
@php
if ($moyPrec != $rangsMatiere['moy']) {
$rangEleveMat = $rangMat;
}
@endphp
@if ($rangsMatiere['eleve']->id == $bulletin['eleve']->id)
<td>{{ $rangEleveMat }}</td>
@endif
@php
$rangMat++;
@endphp
@php
$moyPrec = $rangsMatiere['moy'];
@endphp
@endforeach
@if ($classe->type == 'Primaire')
@if (($resultat['moyenne'] * 10) / $resultat['coef'] == 10)
<td>Très Bien</td>
@elseif (($resultat['moyenne'] * 10) / $resultat['coef'] >= 7 && ($resultat['moyenne'] * 10) / $resultat['coef'] < 10)
<td>Bien</td>
@elseif (($resultat['moyenne'] * 10) / $resultat['coef'] >= 6 && ($resultat['moyenne'] * 10) / $resultat['coef'] < 7)
<td>Assez Bien</td>
@elseif (($resultat['moyenne'] * 10) / $resultat['coef'] >= 5 && ($resultat['moyenne'] * 10) / $resultat['coef'] < 6)
<td>Passable</td>
@elseif (($resultat['moyenne'] * 10) / $resultat['coef'] >= 0 && ($resultat['moyenne'] * 10) / $resultat['coef'] < 5)
<td>Insuffisant</td>
@endif
@else
@if ($resultat['moyenne'] >= 19)
<td>Excellent</td>
@elseif ($resultat['moyenne'] >= 16 && $resultat['moyenne'] < 19)
<td>Très Bien</td>
@elseif ($resultat['moyenne'] >= 14 && $resultat['moyenne'] < 16)
<td>Bien</td>
@elseif ($resultat['moyenne'] >= 12 && $resultat['moyenne'] < 14)
<td>Assez Bien</td>
@elseif ($resultat['moyenne'] >= 10 && $resultat['moyenne'] < 12)
<td>Passable</td>
@elseif ($resultat['moyenne'] >= 8 && $resultat['moyenne'] < 10)
<td>Médiocre</td>
@elseif ($resultat['moyenne'] >= 4 && $resultat['moyenne'] < 8)
<td>Mal</td>
@elseif ($resultat['moyenne'] >= 0 && $resultat['moyenne'] < 4)
<td>Très Mal</td>
@endif
@endif
</tr>
@endforeach
</tbody>
@php
$moyenneAnnuelle = 0;
@endphp
<tfoot>
@if ($periode != 'semestre2' && $periode != 'trimestre3')
<tr>
<th class="is-vcentered is-size-7" colspan="3" rowspan="2">Total :
{{ $bulletin['total'] }}
</th>
@if ($laMoyennePrec != $bulletin['laMoyenne'])
@php
$rangEleve = $rang;
@endphp
@endif
<th class="is-vcentered is-size-7" colspan="2" rowspan="2">Rang :
{{ $rangEleve <= 10 ? $rangEleve : '' }}</th>
<th class="is-vcentered is-size-7" colspan="2" rowspan="2">Moyenne :
{{ $bulletin['laMoyenne'] }}</th>
<th>Retards : </th>
</tr>
<tr>
<th>Absences :
{{ count($bulletin['eleve']->absences->where('promo', env('SCHOOL_YEAR'))) }}</th>
</tr>
@else
<tr>
@if ($periode == 'trimestre3')
<th class="is-vcentered is-size-7" colspan="3" rowspan="5">Total :
{{ $bulletin['total'] }}</th>
@else
<th class="is-vcentered is-size-7" colspan="3" rowspan="4">Total :
{{ $bulletin['total'] }}</th>
@endif
@switch($periode)
@case('semestre2')
@php
$rangEleve1 = 1;
$rang1 = 1;
$moyennePrec1 = 0;
@endphp
@foreach ($bulletins1 as $bulletin1)
@if ($bulletin1['laMoyenne'] != $moyennePrec1)
@php
$rangEleve1 = $rang1;
@endphp
@endif
@if ($bulletin1['eleve']->id == $bulletin['eleve']->id)
<th class="is-vcentered is-size-7" colspan="2">Rang 1<sup>er</sup> Semestre :
{{ $rangEleve1 <= 10 ? $rangEleve1 : '' }}</th>
<th class="is-vcentered is-size-7" colspan="3">Moyenne 1<sup>er</sup> Semestre :
{{ $bulletin1['laMoyenne'] }}</th>
@php
$moyenneAnnuelle = $bulletin['laMoyenne'] + $bulletin1['laMoyenne'];
@endphp
@endif
@php
$moyennePrec1 = $bulletin1['laMoyenne'];
$rang1++;
@endphp
@endforeach
@break
@case('trimestre3')
@php
$rangEleve1 = 1;
$rang1 = 1;
$moyennePrec1 = 0;
@endphp
@foreach ($bulletins1 as $bulletin1)
@if ($bulletin1['laMoyenne'] != $moyennePrec1)
@php
$rangEleve1 = $rang1;
@endphp
@endif
@if ($bulletin1['eleve']->id == $bulletin['eleve']->id)
<th class="is-vcentered is-size-7" colspan="2">Rang 1<sup>er</sup> Trimestre :
{{ $rangEleve1 <= 10 ? $rangEleve1 : '' }}</th>
<th class="is-vcentered is-size-7" colspan="3">Moyenne 1<sup>er</sup> Trimestre :
{{ $bulletin1['laMoyenne'] }}</th>
@php
$moyenneAnnuelle = $bulletin['laMoyenne'] + $bulletin1['laMoyenne'];
@endphp
@endif
@php
$moyennePrec1 = $bulletin1['laMoyenne'];
$rang1++;
@endphp
@endforeach
@break
@endswitch
</tr>
<tr>
@switch($periode)
@case('semestre2')
@if ($laMoyennePrec != $bulletin['laMoyenne'])
@php
$rangEleve = $rang;
@endphp
@endif
<th class="is-vcentered is-size-7" colspan="2">Rang 2<sup>e</sup> Semestre :
{{ $rangEleve <= 10 ? $rangEleve : '' }}</th>
<th class="is-vcentered is-size-7" colspan="3">Moyenne 2<sup>e</sup> Semestre :
{{ $bulletin['laMoyenne'] }}</th>
@break
@case('trimestre3')
@php
$rangEleve2 = 1;
$rang2 = 1;
$moyennePrec2 = 0;
@endphp
@foreach ($bulletins2 as $bulletin2)
@if ($bulletin2['laMoyenne'] != $moyennePrec2)
@php
$rangEleve2 = $rang2;
@endphp
@endif
@if ($bulletin2['eleve']->id == $bulletin['eleve']->id)
<th class="is-vcentered is-size-7" colspan="2">Rang 2<sup>e</sup> Trimestre :
{{ $rangEleve2 <= 10 ? $rangEleve2 : '' }}</th>
<th class="is-vcentered is-size-7" colspan="3">Moyenne 2<sup>e</sup> Trimestre :
{{ $bulletin2['laMoyenne'] }}</th>
@php
$moyenneAnnuelle = $moyenneAnnuelle + $bulletin2['laMoyenne'];
@endphp
@endif
@php
$moyennePrec2 = $bulletin2['laMoyenne'];
$rang2++;
@endphp
@endforeach
@break
@endswitch
</tr>
@if ($periode == 'trimestre3')
<tr>
@if ($laMoyennePrec != $bulletin['laMoyenne'])
@php
$rangEleve = $rang;
@endphp
@endif
<th class="is-vcentered is-size-7" colspan="2">Rang 3<sup>e</sup> Trimestre :
{{ $rangEleve <= 10 ? $rangEleve : '' }}</th>
<th class="is-vcentered is-size-7" colspan="3">Moyenne 3<sup>e</sup> Trimestre :
{{ $bulletin['laMoyenne'] }}</th>
</tr>
@endif
<tr>
@php
$rangAn = 1;
$rangAnEl = 1;
$moyAnPrec = 0.0;
@endphp
@foreach ($moyennesAnnuelles as $moyenneAnnuelleEl)
@if ($moyenneAnnuelleEl['eleve']->id == $bulletin['eleve']->id)
@if ($moyenneAnnuelleEl['moyenneAnnuelle'] != $moyAnPrec)
@php
$rangAnEl = $rangAn;
@endphp
@endif
<th class="is-vcentered is-size-7" colspan="2" rowspan="2">Rang annuel :
{{ $rangAnEl <= 10 ? $rangAnEl : '' }}</th>
@php
$moyAnPrec = $moyenneAnnuelleEl['moyenneAnnuelle'];
@endphp
@endif
@php
$rangAn++;
@endphp
@endforeach
@if ($classe->type == 'Primaire')
<th class="is-vcentered is-size-7" colspan="2" rowspan="2">Moyenne annuelle :
{{ round($moyenneAnnuelle / 3, 2) }}</th>
@else
@if ($periode == 'trimestre3')
<th class="is-vcentered is-size-7" colspan="2" rowspan="2">Moyenne annuelle
:
{{ round($moyenneAnnuelle / 3, 2) }}</th>
@elseif ($periode == 'semestre2')
<th class="is-vcentered is-size-7" colspan="2" rowspan="2">Moyenne annuelle
:
{{ round($moyenneAnnuelle / 2, 2) }}</th>
@endif
@endif
<th>Retards : </th>
</tr>
<tr>
<th>Absences :
{{ count($bulletin['eleve']->absences->where('promo', env('SCHOOL_YEAR'))) }}</th>
</tr>
@endif
<tr>
<td>Félicitations</td>
<td colspan="2">Encouragement</td>
<td colspan="2">Tableau d'honneur</td>
<td>Avertissement</td>
<td colspan="2">Blame</td>
</tr>
</tfoot>
</table>
<section class="">
<div class="">
@if ($periode == 'semestre2' || $periode == 'trimestre3')
<table class="table is-bordered is-fullwidth has-text-centered is-size-7">
<thead>
<th>Passe en classe supérieure</th>
<th>Autorisé(e) à redoubler</th>
<th>Exclus(e) définitivement</th>
</thead>
</table>
@else
<table class="table is-bordered is-fullwidth has-text-centered is-size-7">
<thead>
<th>TB</th>
<th>B</th>
<th>AB</th>
<th>PAS</th>
<th>MED</th>
<th>MAL</th>
<th>TR MAL</th>
</thead>
<tbody>
<tr>
<td>Excellent</td>
<td>Doit persévérer dans son effort</td>
<td>Doit redoubler d'effort</td>
<td>Progrès insuffisants</td>
<td>Doit se mettre au travail</td>
<td>Risque de redoubler</td>
<td>Risque de ne pas être conservé</td>
</tr>
</tbody>
</table>
@endif
</div>
<div class="columns mx-0">
<div class="ml-5 is-italic column mt-4">Ce bulletin n'est délivré qu'une seule fois</div>
<div class="is-flex is-justify-content-flex-end mt-4 column">
<span class="title is-5 is-underlined">Le chef de l'établissement</span>
</div>
</div>
</section>
</section>
@php
$rang += 1;
$laMoyennePrec = $bulletin['laMoyenne'];
@endphp
@endforeach
{{-- <script>
function printDiv(divName) {
var printContents = document.getElementById(divName).innerHTML;
var originalContents = document.body.innerHTML;
document.body.innerHTML = printContents;
window.print();
document.body.innerHTML = originalContents;
}
</script> --}}
</body>
</html>
@extends('layout')
@section('contenu')
@include('/partials/modalConfirmSuppCompte')
@include('/partials/modalConfirmReinPassword')
@if (auth()->user()->administrateur == 1)
<section
style="background-image: url('/img/board.png'); background-attachment: fixed; background-repeat: no-repeat; background-size: cover; min-height: 93.2vh;"
class="section p-3 mt-0 columns mx-0 mb-0 is-centered">
<div
class="container column is-half mt-6 has-background-light p-6 is-flex is-flex-direction-column is-justify-content-center">
<div class="panel-block columns mx-0 is-centered my-1">
<button class="button is-rounded is-info" onclick="openForm('modalReinPassword')">
<span class="icon">
<i class="fas fa-key"></i>
</span>
<span>Restaurer accès</span>
</button>
</div>
<form id="info_compte">
@csrf
<div class="field">
<label class="label title is-6" for="prenom_user_id">Prénom</label>
<p class="control">
<input id="prenom_user_id"
class="input is-info is-rounded
@error('prenom_user') is-invalid @enderror"
type="text" placeholder="Papa Abdou" name="prenom_user" required
value="{{ $compte->prenom }}" disabled />
</p>
@error('prenom_user')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="nom_user_id">Nom</label>
<p class="control">
<input id="nom_user_id"
class="input is-info is-rounded
@error('nom_user') is-invalid @enderror"
type="text" placeholder="Mbodji" name="nom_user" required value="{{ $compte->nom }}"
disabled />
</p>
@error('nom_user')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="nom_utilisateur_user_id">Nom d'utilisateur</label>
<p class="control">
<input id="nom_utilisateur_user_id"
class="input is-info is-rounded
@error('nom_utilisateur_user') is-invalid @enderror"
type="text" placeholder="mbodji" name="nom_utilisateur_user" required
value="{{ $compte->nom_utilisateur }}" autocomplete="username" disabled />
</p>
@error('nom_utilisateur_user')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="mot_de_passe_user_id">Mot de passe actuel</label>
<p class="control">
<input id="mot_de_passe_user_id"
class="input mot_de_passe is-info is-rounded
@error('mot_de_passe_user') is-invalid @enderror"
type="password" placeholder="Saisissez l'ancien mot de passe" name="mot_de_passe_user"
required value="************" autocomplete="current-password" disabled />
</p>
@error('mot_de_passe_user')
<div class="help is-danger error">{{ $message }}</div>
@enderror
<div id="error_mot_de_passe" class="help is-danger error erreur"></div>
</div>
<div id="nv_mot_de_passe" class="field is-hidden">
<label class="label title is-6" for="nv_mot_de_passe_user_id">Nouveau mot de passe</label>
<p class="control">
<input id="nv_mot_de_passe_user_id"
class="input is-info is-rounded
@error('nv_mot_de_passe_user') is-invalid @enderror"
type="password" placeholder="Saisissez le nouveau mot de passe" name="nv_mot_de_passe_user"
required autocomplete="new-password" />
</p>
@error('nv_mot_de_passe_user')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div id="confirm_mot_de_passe" class="field is-hidden">
<label class="label title is-6" for="nv_mot_de_passe_user_confirm_id">Confirmation nouveau mot de
passe</label>
<p class="control">
<input id="nv_mot_de_passe_user_confirm_id"
class="input is-info is-rounded
@error('nv_mot_de_passe_user_confirm') is-invalid @enderror"
type="password" placeholder="Saisissez le nouveau mot de passe"
name="nv_mot_de_passe_user_confirm" required autocomplete="new-password" />
</p>
@error('nv_mot_de_passe_user_confirm')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="buttons is-centered mt-5">
<button onclick="get_compte_slug('{{$compte->slug}}'); openForm('modalSuppCompte')" type="button" id="" class="button is-info is-light">Supprimer</button>
<button id="btn_modif_compte" type="button" class="button is-info is-light"
onclick="modifier('info_compte')">Modifier mot de passe</button>
<button id="btn_enr_compte" class="button is-info is-light" onclick="get_compte_slug('{{$compte->slug}}'); get_id({{ $compte->id }})"
disabled>Enregistrer</button>
</div>
</form>
</div>
@else
<script>
window.location.replace('/accueil');
</script>
</section>
@endif
@include('/partials/detailsCompteJs')
@endsection
@extends('layout')
@section('contenu')
@include('/partials/modalConfirmSuppProf')
@include('/partials/modalConfirmReinPassword')
<section
style="background-image: url('/img/board.png'); background-attachment: fixed; background-repeat: no-repeat; background-size: cover; min-height: 94.8vh;"
class="section columns p-0 mt-0 mx-0 mb-0 is-centered">
<article class="panel is-info column is-8">
<p class="panel-heading is-flex is-justify-content-space-between">
{{ $professeur->prenom }} {{ $professeur->nom }}
@if (auth()->user()->role == 'administration')
<button class="button is-rounded is-info is-light" onclick="openForm('modalReinPassword')">
<span class="icon">
<i class="fas fa-key"></i>
</span>
<span>Restaurer accès</span>
</button>
@endif
</p>
<p class="panel-tabs has-background-white is-flex is-justify-content-space-around">
<a title="informations" id="default" onclick="openContent(event, 'info')"
class="is-size-7-mobile tab icon-text">
<span class="icon">
<i class="fas fa-info-circle"></i>
</span>
<span class="is-hidden-touch">Informations</span>
</a>
<a title="Cours" onclick="openContent(event, 'cours')" class="is-size-7-touch tab icon-text">
<span class="icon">
<i class="fas fa-edit"></i>
</span>
<span class="is-hidden-touch">Cours</span>
</a>
<a title="Salaires" onclick="openContent(event, 'salaires')" class="is-size-7-touch tab icon-text">
<span class="icon">
<i class="fas fa-money-check-alt"></i>
</span>
<span class="is-hidden-touch">Salaires</span>
</a>
</p>
<div id="info" class="panel-block is-justify-content-center" style="background: #E4E9F2; display: none">
<div class="content column is-10">
<div class="is-flex is-justify-content-center mb-5">
<figure class="image is-128x128">
<img class="is-rounded" src="https://bulma.io/assets/images/placeholders/128x128.png">
</figure>
</div>
<form id="info_prof">
@csrf
<div class="columns mb-0">
<div class="field column">
<label class="label title is-6" for="prenom_prof_id">Prénom</label>
<p class="control">
<input id="prenom_prof_id"
class="input is-info is-rounded
@error('prenom_prof') is-invalid @enderror"
type="text" placeholder="Papa Abdou" name="prenom_prof" required
value="{{ $professeur->prenom }}" disabled />
</p>
@error('prenom_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field column">
<label class="label title is-6" for="nom_prof_id">Nom</label>
<p class="control">
<input id="nom_prof_id"
class="input is-info is-rounded
@error('nom_prof') is-invalid @enderror"
type="text" placeholder="Mbodji" name="nom_prof" required
value="{{ $professeur->nom }}" disabled />
</p>
@error('nom_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
</div>
<div class="columns mb-0">
<div class="field column">
<label class="label title is-6" for="date_naissance_prof_id">Date de naissance</label>
<p class="control">
<input id="date_naissance_prof_id"
class="input is-info is-rounded
@error('date_naissance_prof') is-invalid @enderror"
type="date" placeholder="01/01/2000" name="date_naissance_prof" required
value="{{ $professeur->date_naissance }}" disabled />
</p>
@error('date_naissance_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field column">
<label class="label title is-6" for="lieu_naissance_prof_id">Lieu de naissance</label>
<p class="control">
<input id="lieu_naissance_prof_id"
class="input is-info is-rounded
@error('lieu_naissance_prof') is-invalid @enderror"
type="text" placeholder="Dakar" name="lieu_naissance_prof" required
value="{{ $professeur->lieu_naissance }}" disabled />
</p>
@error('lieu_naissance_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
</div>
<div class="field">
<label class="label title is-6" for="adresse_prof_id">Adresse</label>
<p class="control">
<input id="adresse_prof_id"
class="input is-info is-rounded
@error('adresse_prof') is-invalid @enderror"
type="text" placeholder="Cambérène Quartier Deggo" name="adresse_prof" required
value="{{ $professeur->adresse }}" disabled />
</p>
@error('adresse_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="columns mb-0">
<div class="field column">
<label class="label title is-6" for="telephone_prof_id">Téléphone</label>
<p class="control">
<input id="telephone_prof_id"
class="input input-phone is-info is-rounded
@error('telephone_prof_id') is-invalid @enderror"
type="text" placeholder="76 141 22 78" name="telephone_prof" required
value="{{ $professeur->telephone }}" disabled />
</p>
@error('telephone_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field column">
<label class="label title is-6" for="email_prof_id">Email</label>
<p class="control">
<input id="email_prof_id"
class="input is-info is-rounded
@error('email_prof') is-invalid @enderror"
type="email" placeholder="abdoumbodji1401@gmail.com" name="email_prof" required
value="{{ $professeur->email }}" disabled />
</p>
@error('email_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
</div>
<div class="columns mb-0">
@if (auth()->user()->administrateur == 1)
<div class="field column">
<label class="label title is-6" for="salaire_prof_id">Salaire</label>
<p class="control">
<input id="salaire_prof_id"
class="input input-numeral is-info is-rounded
@error('salaire_prof') is-invalid @enderror"
type="text" placeholder="Salaire du professeur" name="salaire_prof" required
value="{{ $professeur->salaire }}" disabled />
</p>
@error('salaire_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
@endif
<div class="field column">
<label class="label title is-6" for="niveau_prof_id">Niveau</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="niveau_prof_id" name="niveau_prof"
class="@error('niveau_prof') is-invalid @enderror" required disabled>
<option value="{{ $professeur->niveau }}">{{ $professeur->niveau }}
</option>
@if ($professeur->niveau != 'Primaire')
<option value="Primaire">Primaire</option>
@else
<option value="Secondaire">Secondaire</option>
@endif
</select>
</div>
</div>
@error('niveau_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
</div>
<div class="columns mb-0">
<div class="field column">
<label class="label title is-6">Classes</label>
<div id="classes_prof_id" style="height: 10rem; overflow-y: auto;">
@foreach ($classes as $classe)
@if ($classe->type == 'Primaire')
<label class="checkbox column classe_prof_primaire is-hidden">
<input class="classe_prof" type="checkbox" value="{{ $classe->id }}" disabled>
{{ $classe->libelle }}
</label>
@else
<label class="checkbox column classe_prof_secondaire is-hidden">
<input class="classe_prof" type="checkbox" value="{{ $classe->id }}" disabled>
{{ $classe->libelle }}
</label>
@endif
@endforeach
</div>
</div>
<div class="field column">
<label class="label title is-6" for="matieres_prof_id">Matières</label>
<div style="height: 10rem; overflow-y: auto;">
@foreach ($matieres as $matiere)
@if ($matiere->niveau == 'Primaire')
<label class="checkbox column matiere_prof_primaire is-hidden">
<input class="matiere_prof" type="checkbox" value="{{ $matiere->id }}" disabled>
{{ $matiere->libelle }}
</label>
@else
<label class="checkbox column matiere_prof_secondaire is-hidden">
<input class="matiere_prof" type="checkbox" value="{{ $matiere->id }}" disabled>
{{ $matiere->libelle }}
</label>
@endif
@endforeach
</div>
</div>
</div>
@if (auth()->user()->administrateur == 1)
<div class="buttons is-centered">
<button type="button" id="" class="button is-info is-light"
onclick="openForm('modalSuppProf')">Supprimer</button>
<button id="btn_modif" type="button" class="button is-info is-light"
onclick="modifier('info_prof')">Modifier</button>
<button id="btn_enr" class="button is-info is-light" disabled>Enregistrer</button>
</div>
@endif
</form>
</div>
</div>
<div id="cours" class="panel-block is-justify-content-center" style="background: #E4E9F2">
<div class="content column is-10">
@if ($professeur->cours->where('promo', auth()->user()->current_year)->count() == 0)
<div class="title is-6 has-text-centered">Pas encore de cours</div>
@else
@foreach ($professeur->cours->where('promo', auth()->user()->current_year)->sortByDesc('id') as $cour)
<div class="content box has-background-light">
<div class="has-text-weight-bold has-text-success"><span
class="has-text-weight-bold">Date:</span>
{{ date('d/m/Y', strtotime($cour->created_at)) }}</div>
<div><span class="has-text-weight-bold">Détails:</span> {!! nl2br($cour->description) !!}</div>
@foreach ($classes as $classe)
@if ($classe->id == $cour->classe_id)
<div><span class="has-text-weight-bold">Classe:</span> {{ $classe->libelle }}
</div>
@endif
@endforeach
@foreach ($matieres as $matiere)
@if ($matiere->id == $cour->matiere_id)
<div><span class="has-text-weight-bold">Matière:</span> {{ $matiere->libelle }}
</div>
@endif
@endforeach
<div><span class="has-text-weight-bold">Heure de
début:</span>{{ date('H:i', strtotime($cour->debut)) }}</div>
<div><span class="has-text-weight-bold">Heure de
fin:</span>{{ date('H:i', strtotime($cour->fin)) }}</div>
</div>
@endforeach
@endif
</div>
</div>
<div id="salaires" class="panel-block is-justify-content-center" style="background: #E4E9F2">
<div class="content column is-10">
@if (auth()->user()->administrateur != 1)
<span class="title is-3 is-centered">Vous n'avez pas accès à ces informations</span>
@else
Les salaires
@endif
</div>
</div>
</article>
</section>
@include('/partials/detailsProfJs')
@endsection
@extends('layout')
@section('contenu')
@include('/partials/modalAjouterMatiere')
@include('/partials/modalModifierMatiere')
@include('/partials/modalConfirmSuppMatiere')
<section
style="background-image: url('/img/board.png'); background-attachment: fixed; background-repeat: no-repeat; background-size: cover; min-height: 93.2vh;"
class="section p-3 mt-0 mb-0 mx-2-touch columns mx-0 is-centered is-flex-desktop is-flex-direction-column is-justify-content-center">
<nav class="panel mx-auto is-info column is-half p-0">
<p class="panel-heading">
Les matières
</p>
<p class="panel-tabs has-background-white">
<a id="default" class="tab" onclick="openContent(event, 'tout')">Tout</a>
<a class="tab" onclick="openContent(event, 'primaire')">Primaire</a>
<a class="tab" onclick="openContent(event, 'secondaire')">Secondaire</a>
</p>
<div class="mb-5" style="background: #E4E9F2; height: 25rem; overflow-y: auto">
<div class="has-text-centered p-3">
<a onclick="openForm('modalAjouterMatiere')" class="button is-info is-rounded">
<strong>Ajouter Matière</strong>
</a>
</div>
<div id="tout" class="contenu-block columns m-0">
<div class="column px-0">
@foreach ($matieres as $matiere)
<span class="columns is-flex m-auto">
<span class="column is-three-quarters">
<span class="panel-block">
<span class="panel-icon">
<i class="fas fa-book" aria-hidden="true"></i>
</span>
{{ $matiere->libelle }}({{ $matiere->niveau }})
</span>
</span>
@if (auth()->user()->administrateur == 1)
<span class="column px-0 is-flex is-justify-content-right">
<a title="Modifier" class="icon is-medium"
onclick="openForm('modalModifierMatiere'); get_id_matiere({{ $matiere->id }}); get_libelle_matiere('{{ addslashes($matiere->libelle) }}'); get_niveau_matiere('{{ $matiere->niveau }}');get_coef({{ $matiere->coefficient }})">
<i class="fas fa-edit" aria-hidden="true"></i>
</a>
<a title="Supprimer" class="icon is-medium"
onclick="get_id_matiere({{ $matiere->id }}); openForm('modalSuppMatiere')">
<i class="fas fa-trash-alt" aria-hidden="true"></i>
</a>
</span>
@endif
</span>
@endforeach
</div>
</div>
<div id="primaire" class="contenu-block columns m-0">
<div class="column">
@foreach ($matieres as $matiere)
<span class="columns is-flex m-auto">
@if ($matiere->niveau == 'Primaire')
<span class="column is-three-quarters">
<span class="panel-block">
<span class="panel-icon">
<i class="fas fa-book" aria-hidden="true"></i>
</span>
{{ $matiere->libelle }}
</span>
</span>
@if (auth()->user()->administrateur == 1)
<span class="column is-flex is-justify-content-right">
<a title="Modifier" class="icon is-medium"
onclick="openForm('modalModifierMatiere'); get_id_matiere({{ $matiere->id }}); get_libelle_matiere('{{ addslashes($matiere->libelle) }}'); get_niveau_matiere('{{ $matiere->niveau }}');get_coef({{ $matiere->coefficient }})">
<i class="fas fa-edit" aria-hidden="true"></i>
</a>
<a title="Supprimer" class="icon is-medium"
onclick="get_id_matiere({{ $matiere->id }}); openForm('modalSuppMatiere')">
<i class="fas fa-trash-alt" aria-hidden="true"></i>
</a>
</span>
@endif
@endif
</span>
@endforeach
</div>
</div>
<div id="secondaire" class="contenu-block columns m-0">
<div class="column">
@foreach ($matieres as $matiere)
<span class="columns is-flex m-auto">
@if ($matiere->niveau == 'Secondaire')
<span class="column is-three-quarters">
<span class="panel-block">
<span class="panel-icon">
<i class="fas fa-book" aria-hidden="true"></i>
</span>
{{ $matiere->libelle }}
</span>
</span>
@if (auth()->user()->administrateur == 1)
<span class="column is-flex is-justify-content-right">
<a title="Modifier" class="icon is-medium"
onclick="openForm('modalModifierMatiere'); get_id_matiere({{ $matiere->id }}); get_libelle_matiere('{{ addslashes($matiere->libelle) }}'); get_niveau_matiere('{{ $matiere->niveau }}');get_coef({{ $matiere->coefficient }})">
<i class="fas fa-edit" aria-hidden="true"></i>
</a>
<a title="Supprimer" class="icon is-medium"
onclick="get_id_matiere({{ $matiere->id }}); openForm('modalSuppMatiere')">
<i class="fas fa-trash-alt" aria-hidden="true"></i>
</a>
</span>
@endif
@endif
</span>
@endforeach
</div>
</div>
</div>
<div class="columns"></div>
<div style="position: relative;" class="is-flex is-justify-content-center">
<img src="/img/upschool.svg" width="200" alt="">
</div>
</nav>
</section>
@include('/partials/matieresJs')
@endsection
<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/css/style.css">
<link href="https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css"
integrity="sha384-DyZ88mC6Up2uqS4h/KRgHuoeGwBcD4Ng9SiP4dIRy0EXTlnuz47vAwmeGwVChigm" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="/css/connexion.css">
<link rel="icon" href="/img/upschool-favicon.png">
<script defer src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"></script>
<title>Authentification-UPSchool</title>
<link rel="manifest" href="/manifest.json">
</head>
<body>
<section style="background-image: url('/img/login.png') ; background-size: cover;" class="hero is-fullheight p-0">
<div style="position: absolute; left: 1rem; right: 1rem; top: 0.75rem"
class="columns mx-0 p-0 section is-centered">
<div x-data="{show: true}" x-init="setTimeout(() => show=false, 4000)" x-show="show" style="" class="column p-0 is-half">
@include('flash::message')
</div>
</div>
<div class="hero-body pb-0 has-text-centered">
<div style="background-color: aliceblue;" class="login">
<img src="/img/upschool-favicon.png" width="150px" />
<br><br>
<form action="/" method="post">
{{ csrf_field() }}
<div class="field">
<div class="control">
<p class="control has-icons-left">
<input class="input is-medium is-rounded" type="text" placeholder="mbodji"
autocomplete="username" required name="nom_utilisateur"
value="{{ old('nom_utilisateur') }}" />
<span class="icon is-small is-left">
<i class="fas fa-user"></i>
</span>
</p>
@if ($errors->has('nom_utilisateur'))
<p class="help is-danger">{{ $errors->first('nom_utilisateur') }}</p>
@endif
</div>
</div>
<div class="field">
<div class="control">
<p class="control has-icons-left">
<input class="input is-medium is-rounded" type="password" placeholder="**********"
autocomplete="current-password" required name="mot_de_passe" />
<span class="icon is-small is-left">
<i class="fas fa-lock"></i>
</span>
</p>
@if ($errors->has('mot_de_passe'))
<p class="help is-danger">{{ $errors->first('mot_de_passe') }}</p>
@endif
</div>
</div>
<br />
<button class="button is-block is-fullwidth is-info is-medium is-rounded" type="submit">
Se connecter
</button>
</form>
<br>
<img src="/img/upschoollogo.png" width="150px" />
</div>
</div>
</section>
<script src="/js/script.js"></script>
</body>
</html>
<div id="flash-overlay-modal" class="modal fade {{ isset($modalClass) ? $modalClass : '' }}">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">{{ $title }}</h4>
</div>
<div class="modal-body">
<p>{!! $body !!}</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
@foreach (session('flash_notification', collect())->toArray() as $message)
@if ($message['overlay'])
@include('flash::modal', [
'modalClass' => 'flash-modal',
'title' => $message['title'],
'body' => $message['message']
])
@else
<div class="message
is-{{ $message['level'] }}
{{ $message['important'] ? 'alert-important' : '' }}"
role="alert">
@if ($message['important'])
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
@endif
<div class="message-body has-text-centered">
{!! $message['message'] !!}
</div>
</div>
@endif
@endforeach
{{ session()->forget('flash_notification') }}
<script>
//Fonction d'activation des champs au clic sur le bouton modifier
function modifier(id) {
$('.input').prop('disabled', false);
$('select').prop('disabled', false);
$('#btn_modif').prop('disabled', true);
$('#btn_enr').prop('disabled', false);
}
//JS pour la modification et l'enregistrement des infos de l'eleve
$('#btn_enr').on('click', function() {
$('#info_eleve').validate({
rules: {
nom: {
required: true,
},
prenom: {
required: true,
},
date_naissance: {
required: true,
},
lieu_naissance: {
required: true,
},
adresse: {
required: true,
},
tuteur: {
required: true,
},
tel_tuteur: {
required: true,
},
autre_tel: {
required: false,
},
classe: {
required: true,
},
inscription: {
required: true,
},
mensualite: {
required: true,
},
},
messages: {
nom: {
required: "Le nom est obligatoire!",
},
prenom: {
required: "Le prénom est obligatoire!",
},
date_naissance: {
required: "La date de naissance est obligatoire!",
},
lieu_naissance: {
required: "Le lieu de naissance est obligatoire!",
},
adresse: {
required: "L'adresse est obligatoire!",
},
tuteur: {
required: "Le prénom et le nom du tuteur sont obligatoires!",
},
tel_tuteur: {
required: "Le téléphone du tuteur est obligatoire!",
},
classe: {
required: "La classe est obligatoire!",
},
inscription: {
required: "Le montant de l'inscription est obligatoire",
},
mensualite: {
required: "Le montant de la mensualite est obligatoire",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/classe/{{ $classe->slug }}/eleve/{{ request('eleve_slug') }}",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
nom: $('#nom').val(),
prenom: $('#prenom').val(),
date_naissance: $('#date_naissance').val(),
lieu_naissance: $('#lieu_naissance').val(),
adresse: $('#adresse').val(),
tuteur: $('#tuteur').val(),
tel_tuteur: $('#tel_tuteur').val(),
autre_tel: $('#autre_tel').val(),
classe_id: $('#classe').val(),
inscription: Number($('#inscription').val().replace(/\s/g, '')),
mensualite: Number($('#mensualite').val().replace(/\s/g, '')),
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/{{ $classe->slug }}/eleve/{{ request('eleve_slug') }}'
);
}
},
error: function(response) {
console.log(response);
}
});
}
});
});
//JS pour la suppression d'un eleve
$('#btn_supp').on('click', function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/classe/{{ $classe->slug }}/eleve/{{ request('eleve_slug') }}/delete",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
nom: $('#nom').val(),
prenom: $('#prenom').val(),
date_naissance: $('#date_naissance').val(),
lieu_naissance: $('#lieu_naissance').val(),
adresse: $('#adresse').val(),
tuteur: $('#tuteur').val(),
tel_tuteur: $('#tel_tuteur').val(),
autre_tel: $('#autre_tel').val(),
classe_id: $('#classe').val(),
inscription: Number($('#inscription_id').val().replace(/\s/g, '')),
mensualite: Number($('#mensualite_id').val().replace(/\s/g, '')),
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/{{ $classe->slug }}'
);
}
},
error: function(response) {
console.log(response);
}
});
});
//Fonction pour le panel tab
function openContent(evt, contentId) {
var i, tabcontent, tablinks;
tabcontent = document.getElementsByClassName("panel-block");
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
//console.log(tabcontent[i])
}
tablinks = document.getElementsByClassName("tab");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace("is-active", "");
//console.log(tablinks[i])
}
document.getElementById(contentId).style.display = "flex";
if (evt == null) {
document.getElementById('default').className += " is-active";
} else {
evt.currentTarget.className += " is-active";
}
}
openContent(event, 'info');
//JS pour les boutons des payements
var eleve_id = 0;
var classe_libelle = "";
var classe_slug = "";
var payement_id = 0;
var payement_montant = 0;
var payement_type = "";
var eleve_slug = "";
function get_id_eleve(id) {
eleve_id = id;
//console.log(eleve_id);
}
function get_libelle_classe(libelle) {
classe_libelle = libelle;
//console.log(classe_libelle);
}
function get_classe_slug(slug) {
classe_slug = slug;
}
function get_eleve_slug(slug) {
eleve_slug = slug;
}
function get_id_payement(id) {
payement_id = id;
}
function get_montant_payement(montant) {
payement_montant = montant;
$('#montant_id').val(payement_montant);
}
function get_type_payement(type) {
payement_type = type;
$('#value_type_id').html(payement_type)
}
//Bouton Frais paye
$('.btn_paye').on('click', () => {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/classe/" + classe_slug + "/eleve/" + eleve_slug + "/payement/" +
payement_id + "/payer",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
eleve_id: eleve_id,
classe_libelle: classe_libelle,
payement_id: payement_id,
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/' + classe_slug + '/eleve/' + eleve_slug);
eleve_id = 0;
classe_libelle = "";
payement_id = 0;
classe_slug = "";
eleve_slug = "";
} else {
console.log('Le payement n\'est pas enregistré');
eleve_id = 0;
classe_libelle = "";
payement_id = 0;
classe_slug = "";
eleve_slug = "";
}
},
error: function(response) {
console.log(response);
}
});
});
//Bouton frais impaye
$('.btn_impaye').on('click', () => {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/classe/" + classe_slug + "/eleve/" + eleve_slug + "/payement/" +
payement_id + "/impayer",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
eleve_id: eleve_id,
classe_libelle: classe_libelle,
payement_id: payement_id,
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/' + classe_slug + '/eleve/' + eleve_slug);
eleve_id = 0;
classe_libelle = "";
payement_id = 0;
classe_slug = "";
eleve_slug = "";
} else {
console.log('Le payement n\'est pas enregistré');
eleve_id = 0;
classe_libelle = "";
payement_id = 0;
classe_slug = "";
}
},
error: function(response) {
console.log(response);
}
});
})
//Modifier payement
$('#submit_form_modifier_payement').on('click', function(e) {
$('#form_modifier_payement').validate({
rules: {
type: {
required: true,
},
montant: {
required: true,
}
},
messages: {
type: {
required: "Choisissez un type svp!",
},
montant: {
required: "Précisez le montant svp!",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/classe/" + classe_slug + "/eleve/" + eleve_slug +
"/payement/" + payement_id + "/modifier",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
eleve_id: eleve_id,
payement_id: payement_id,
payement_type: payement_type,
payement_montant: Number($('#montant_id').val().replace(/\s/g, '')),
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/' + classe_slug + '/eleve/' +
eleve_slug);
eleve_id = 0;
payement_id = 0;
payement_type = "";
eleve_slug = "";
}
},
error: function(response) {
console.log('Payement non modifié');
}
});
}
})
});
//Bouton supprimer payement
$('.btn_supp').on('click', () => {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/classe/" + classe_slug + "/eleve/" + eleve_slug + "/payement/" +
payement_id + "/supprimer",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
eleve_id: eleve_id,
classe_libelle: classe_libelle,
payement_id: payement_id,
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/' + classe_slug + '/eleve/' + eleve_slug);
eleve_id = 0;
classe_libelle = "";
payement_id = 0;
eleve_slug = "";
} else {
console.log('Le payement n\'est pas supprimé');
eleve_id = 0;
classe_libelle = "";
payement_id = 0;
eleve_slug = "";
}
},
error: function(response) {
console.log(response);
}
});
});
//Ajouter Frais
$('#is_payed').change(function() {
if (this.checked) {
$(this).val(1)
} else {
$(this).val(0)
}
});
$('#submit_form_ajouter_frais').on('click', function(e) {
$('#form_ajouter_frais').validate({
rules: {
type_frais: {
required: true,
},
montant_frais: {
required: true,
}
},
messages: {
type_frais: {
required: "Renseigner le type du frais svp!",
},
montant_frais: {
required: "Précisez le montant du frais svp!",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/classe/{{ $classe->slug }}/eleve/" + eleve_slug +
"/payement/ajouterFrais",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
eleve_slug: eleve_slug,
type_frais: $('#type_frais_id').val(),
montant_frais: Number($('#montant_frais_id').val().replace(/\s/g,
'')),
est_paye: $('#is_payed').val(),
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/{{ $classe->slug }}/eleve/' +
eleve_slug
);
}
},
error: function(response) {
console.log(response);
}
});
}
})
});
//Reinscription
var newMensualite = 0;
var newInscription = 0;
var eleve_id = 0;
function getNewMensualite(mensualite) {
newMensualite = mensualite;
}
function getNewInscription(inscription) {
newInscription = inscription;
}
$('#submit_form_reinscrire').on('click', function() {
$('#form_reinscrire').validate({
rules: {
new_classe: {
required: true,
},
new_inscription: {
required: true,
},
new_mensualite: {
required: true,
},
},
messages: {
new_classe: {
required: "La classe est obligatoire!",
},
new_inscription: {
required: "Le montant de l'inscription est obligatoire",
},
new_mensualite: {
required: "Le montant de la mensualite est obligatoire",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/classe/{{ $classe->slug }}/eleve/{{ $eleve->slug }}/reinscrire",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
eleve_id: eleve_id,
new_classe_id: $('#new_classe_id').val(),
new_inscription: Number($('#new_inscription_id').val().replace(
/\s/g, '')),
new_mensualite: Number($('#new_mensualite_id').val().replace(/\s/g,
'')),
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/{{ $classe->slug }}/eleve/{{ $eleve->slug }}'
);
}
},
error: function(response) {
console.log(response);
}
});
}
});
});
//Reinitialisation password
var compte_slug = "";
function get_compte_slug(slug) {
compte_slug = slug;
}
$('#btn_reinPassword').on('click', function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/comptes/compte/" + compte_slug + "/reinpassword",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/{{ $classe->slug }}/eleve/{{ $eleve->slug }}'
);
}
},
error: function(response) {
console.log(response);
}
});
});
//JS pour le formatage des montant afficher des payements et des telephones
var cleave = new Cleave('#tel_tuteur', {
phone: true,
phoneRegionCode: 'SN'
});
var cleave = new Cleave('#inscription', {
delimiter: ' ',
numeral: true,
numeralThousandsGroupStyle: 'thousand'
});
var cleave = new Cleave('#new_inscription_id', {
delimiter: ' ',
numeral: true,
numeralThousandsGroupStyle: 'thousand'
});
var cleave = new Cleave('#mensualite', {
delimiter: ' ',
numeral: true,
numeralThousandsGroupStyle: 'thousand'
});
var cleave = new Cleave('#new_mensualite_id', {
delimiter: ' ',
numeral: true,
numeralThousandsGroupStyle: 'thousand'
});
var cleave = new Cleave('#montant_id', {
delimiter: ' ',
numeral: true,
numeralThousandsGroupStyle: 'thousand'
});
var cleave = new Cleave('#montant_frais_id', {
delimiter: ' ',
numeral: true,
numeralThousandsGroupStyle: 'thousand'
});
//ChartJs
const labels1 = [
@foreach ($evaluations1 as $evaluation)
"{{ $evaluation->date }} . {{ str_replace('\'', ' ', $evaluation->matiere->libelle) }}",
@endForeach
];
const data1 = {
labels: labels1,
datasets: [{
label: 'Evolution 1er semestre/trimestre',
backgroundColor: 'rgb(62,142,208)',
borderColor: 'rgb(62,142,208)',
data: [
@foreach ($notes as $note)
@if ($classe->type == 'Primaire')
@foreach ($evaluations1 as $evaluation)
@if ($evaluation->id == $note->evaluation_id)
@foreach ($matieres as $matiere)
@if ($matiere->id == $evaluation->matiere_id)
({{ $note->valeur }} * 10) / {{ $matiere->coefficient }},
@endIf
@endForeach
@endIf
@endForeach
@else
@foreach ($evaluations1 as $evaluation)
@if ($evaluation->id == $note->evaluation_id)
@foreach ($matieres as $matiere)
@if ($matiere->id == $evaluation->matiere_id)
{{ $note->valeur }},
@endIf
@endForeach
@endIf
@endForeach
@endIf
@endForeach
],
}]
};
const config1 = {
type: 'line',
data: data1,
options: {
scales: {
y: { // defining min and max so hiding the dataset does not change scale range
min: 0,
@if ($classe->type == 'Primaire')
max: 10
@else
max: 20
@endif
},
x: {
display: false
}
}
}
};
const chartEleve1 = new Chart(
document.getElementById('chartEleve1'),
config1
);
//
//ChartJs
const labels2 = [
@foreach ($evaluations2 as $evaluation)
"{{ $evaluation->date }} . {{ str_replace('\'', ' ', $evaluation->matiere->libelle) }}",
@endForeach
];
const data2 = {
labels: labels2,
datasets: [{
label: 'Evolution 2nd semestre/trimestre',
backgroundColor: 'rgb(62,142,208)',
borderColor: 'rgb(62,142,208)',
data: [
@foreach ($notes as $note)
@if ($classe->type == 'Primaire')
@foreach ($evaluations2 as $evaluation)
@if ($evaluation->id == $note->evaluation_id)
@foreach ($matieres as $matiere)
@if ($matiere->id == $evaluation->matiere_id)
({{ $note->valeur }} * 10) / {{ $matiere->coefficient }},
@endIf
@endForeach
@endIf
@endForeach
@else
@foreach ($evaluations2 as $evaluation)
@if ($evaluation->id == $note->evaluation_id)
@foreach ($matieres as $matiere)
@if ($matiere->id == $evaluation->matiere_id)
{{ $note->valeur }},
@endIf
@endForeach
@endIf
@endForeach
@endIf
@endForeach
],
}]
};
const config2 = {
type: 'line',
data: data2,
options: {
scales: {
y: { // defining min and max so hiding the dataset does not change scale range
min: 0,
@if ($classe->type == 'Primaire')
max: 10
@else
max: 20
@endif
},
x: {
display: false
}
}
}
};
const chartEleve2 = new Chart(
document.getElementById('chartEleve2'),
config2
);
//
//ChartJs
const labels3 = [
@foreach ($evaluations3 as $evaluation)
"{{ $evaluation->date }} . {{ str_replace('\'', ' ', $evaluation->matiere->libelle) }}",
@endForeach
];
const data3 = {
labels: labels3,
datasets: [{
label: 'Evolution 3e trimestre',
backgroundColor: 'rgb(62,142,208)',
borderColor: 'rgb(62,142,208)',
data: [
@foreach ($notes as $note)
@if ($classe->type == 'Primaire')
@foreach ($evaluations3 as $evaluation)
@if ($evaluation->id == $note->evaluation_id)
@foreach ($matieres as $matiere)
@if ($matiere->id == $evaluation->matiere_id)
({{ $note->valeur }} * 10) / {{ $matiere->coefficient }},
@endIf
@endForeach
@endIf
@endForeach
@else
@foreach ($evaluations3 as $evaluation)
@if ($evaluation->id == $note->evaluation_id)
@foreach ($matieres as $matiere)
@if ($matiere->id == $evaluation->matiere_id)
{{ $note->valeur }},
@endIf
@endForeach
@endIf
@endForeach
@endIf
@endForeach
],
}]
};
const config3 = {
type: 'line',
data: data3,
options: {
scales: {
y: { // defining min and max so hiding the dataset does not change scale range
min: 0,
@if ($classe->type == 'Primaire')
max: 10
@else
max: 20
@endif
},
x: {
display: false
}
}
}
};
const chartEleve3 = new Chart(
document.getElementById('chartEleve3'),
config3
);
</script>
<!-- Ajouter transaction ============================================================= -->
<div class="modal animate__animated animate__fadeInLeft" id="modalAjouterOperation">
<div onclick="closeForm('modalAjouterOperation')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Ajouter opération</p>
<button type="button" onclick="closeForm('modalAjouterOperation')" class="delete" aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_ajouter_operation">
@csrf
<div class="field">
<label class="label title is-6" for="libelle_operation_id">Libelle</label>
<p class="control">
<input id="libelle_operation_id"
class="input is-info is-rounded
@error('libelle_matiere') is-invalid @enderror"
type="text" placeholder="Libellé opération" name="libelle_operation" required />
</p>
@error('libelle_operation')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field mb-5">
<label class="label title is-6" for="type_operation_id">Type</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="type_operation_id" name="type_operation"
class="@error('type_operation') is-invalid @enderror" required>
<option value="" disabled selected>Sélectionner</option>
<option value="depense">Dépense</option>
<option value="encaissement">Encaissement</option>
</select>
</div>
</div>
@error('niveau_matiere')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="montant_operation_id">Montant</label>
<p class="control">
<input id="montant_operation_id"
class="input-numeral input is-info is-rounded
@error('montant_operation') is-invalid @enderror"
type="text" placeholder="25 000" name="montant_operation" required />
</p>
@error('montant_operation')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field" id="field_coef">
<label class="label title is-6" for="description_operation_id">Description</label>
<p class="control">
<textarea id="description_operation_id"
class="textarea is-info is-rounded
@error('description_operation') is-invalid @enderror"
placeholder="Description de l'opération" name="description_operation" required></textarea>
</p>
@error('description_operation')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<button id="btn_submit_form_ajouter_operation" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalAjouterOperation')"
class="button is-light is-danger is-rounded">Annuler</button>
<button onclick="$('#btn_submit_form_ajouter_operation').click()" class="button is-info is-rounded">Ajouter
la transaction</button>
</footer>
</div>
</div>
<script>
//Creation classe
$('#submitFormClasse').on('click', function(e) {
$('#formClasse').validate({
rules: {
libelle: {
required: true,
},
type: {
required: true,
}
},
messages: {
libelle: {
required: "Donnez le libellé svp!",
},
type: {
required: "Choisissez un type svp!",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/creationClasse",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
libelle: $('#libelleClasseId').val(),
type: $('#typeId').val(),
},
success: function(response) {
if (response == true) {
$('#errorLibelle').html('Cette classe existe déjà');
} else {
window.location.replace('/accueil');
}
},
error: function(response) {
console.log(response);
}
});
}
})
});
//Modifier Classe
var classe_id = 0;
var classe_libelle = '';
var classe_type = '';
function get_id_classe(id) {
classe_id = id;
}
function get_libelle_classe(libelle) {
classe_libelle = libelle;
$('#nv_libelle_id').val(classe_libelle);
}
function get_type_classe(type) {
classe_type = type;
if (classe_type == 'Primaire') {
$('#value_type_1').val('Primaire');
$('#value_type_1').html('Primaire');
$('#value_type_2').val('Secondaire');
$('#value_type_2').html('Secondaire');
} else {
$('#value_type_1').val('Secondaire');
$('#value_type_1').html('Secondaire');
$('#value_type_2').val('Primaire');
$('#value_type_2').html('Primaire');
}
}
$('#submit_form_modifier_classe').on('click', function(e) {
$('#form_modifier_classe').validate({
rules: {
nv_libelle: {
required: true,
},
nv_type: {
required: true,
}
},
messages: {
nv_libelle: {
required: "Donnez le libellé svp!",
},
nv_type: {
required: "Choisissez un type svp!",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/modifierClasse",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
classe_id: classe_id,
nv_libelle: $('#nv_libelle_id').val(),
nv_type: $('#nv_type_id').val(),
},
success: function(response) {
if (response == true) {
$('#errorNvLibelle').html('Cette classe existe déjà');
classe_id = "";
} else {
window.location.replace('/accueil');
}
},
error: function(response) {
console.log(response);
}
});
}
})
});
//Supprimer classe
$('.btn_supp_classe').on('click', function(e) {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/supprimerClasse",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function () { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
classe_id: classe_id,
},
success: function(response) {
if (response) {
window.location.replace('/accueil');
classe_id = "";
}
},
error: function(response) {
console.log(response);
}
});
});
//ChartJs
const labelsPrimaire = [
@foreach ($classesPrimaires as $classePrimaire)
'{{ $classePrimaire->libelle }}',
@endForeach
];
const dataPrimaire = {
labels: labelsPrimaire,
datasets: [{
label: 'Classes Primaires',
backgroundColor: 'rgb(62,142,208)',
data: [
@foreach ($moyennesClassesPrimaires as $moyenneClassePrimaire)
{{ $moyenneClassePrimaire }},
@endForeach
],
}]
};
const labelsSecondaire = [
@foreach ($classesSecondaires as $classeSecondaire)
'{{ $classeSecondaire->libelle }}',
@endForeach
];
const dataSecondaire = {
labels: labelsSecondaire,
datasets: [{
label: 'Classes Secondaires',
backgroundColor: 'rgb(62,142,208)',
data: [
@foreach ($moyennesClassesSecondaires as $moyenneClasseSecondaire)
{{ $moyenneClasseSecondaire }},
@endForeach
],
}]
};
const configPrimaire = {
type: 'bar',
data: dataPrimaire,
options: {
scales: {
y: { // defining min and max so hiding the dataset does not change scale range
min: 0,
max: 10
}
}
}
};
const configSecondiare = {
type: 'bar',
data: dataSecondaire,
options: {
scales: {
y: { // defining min and max so hiding the dataset does not change scale range
min: 0,
max: 20
}
}
}
};
const myChartPrimaire = new Chart(
document.getElementById('myChartPrimaire'),
configPrimaire
);
const myChartSecondaire = new Chart(
document.getElementById('myChartSecondaire'),
configSecondiare
);
</script>
<script>
//Fonction pour le panel tab
function openContent(evt, contentId) {
var i, tabcontent, tablinks;
tabcontent = document.getElementsByClassName("panel-block");
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
//console.log(tabcontent[i])
}
tablinks = document.getElementsByClassName("tab");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace("is-active", "");
//console.log(tablinks[i])
}
document.getElementById(contentId).style.display = "flex";
if (evt == null) {
document.getElementById('default').className += " is-active";
} else {
evt.currentTarget.className += " is-active";
}
}
openContent(event, 'info');
//Hide classe
$('#niveau_prof_id').change(() => {
if ($('#niveau_prof_id option:selected').val() == 'Primaire') {
$('.classe_prof_primaire').removeClass('is-hidden');
if (!$('.classe_prof_secondaire').hasClass('is-hidden')) {
$('.classe_prof_secondaire').addClass('is-hidden');
}
} else {
$('.classe_prof_secondaire').removeClass('is-hidden');
if (!$('.classe_prof_primaire').hasClass('is-hidden')) {
$('.classe_prof_primaire').addClass('is-hidden');
}
}
});
if ('{{ $professeur->niveau }}' == 'Primaire') {
$('.classe_prof_primaire').removeClass('is-hidden');
if (!$('.classe_prof_secondaire').hasClass('is-hidden')) {
$('.classe_prof_secondaire').addClass('is-hidden');
}
} else {
$('.classe_prof_secondaire').removeClass('is-hidden');
if (!$('.classe_prof_primaire').hasClass('is-hidden')) {
$('.classe_prof_primaire').addClass('is-hidden');
}
}
//Hide matiere
$('#niveau_prof_id').change(() => {
if ($('#niveau_prof_id option:selected').val() == 'Primaire') {
$('.matiere_prof_primaire').removeClass('is-hidden');
if (!$('.matiere_prof_secondaire').hasClass('is-hidden')) {
$('.matiere_prof_secondaire').addClass('is-hidden');
}
} else {
$('.matiere_prof_secondaire').removeClass('is-hidden');
if (!$('.matiere_prof_primaire').hasClass('is-hidden')) {
$('.matiere_prof_primaire').addClass('is-hidden');
}
}
});
if ('{{ $professeur->niveau }}' == 'Primaire') {
$('.matiere_prof_primaire').removeClass('is-hidden');
if (!$('.matiere_prof_secondaire').hasClass('is-hidden')) {
$('.matiere_prof_secondaire').addClass('is-hidden');
}
} else {
$('.matiere_prof_secondaire').removeClass('is-hidden');
if (!$('.matiere_prof_primaire').hasClass('is-hidden')) {
$('.matiere_prof_primaire').addClass('is-hidden');
}
}
let lesClassesProf = [];
let lesMatieresProf = [];
</script>
@foreach ($professeur->classes as $uneClasseProf)
<script>
lesClassesProf.push('{{ $uneClasseProf->id }}')
</script>
@endforeach
@foreach ($professeur->matieres as $uneMatiereProf)
<script>
lesMatieresProf.push('{{ $uneMatiereProf->id }}')
</script>
@endforeach
<script>
lesClassesProf.forEach(uneClasseProf => {
$('.classe_prof[value=' + uneClasseProf + ']').prop('checked', true);
});
lesMatieresProf.forEach(uneMatiereProf => {
$('.matiere_prof[value=' + uneMatiereProf + ']').prop('checked', true);
});
//Add classes
let lesClasses = lesClassesProf;
$(document).ready(function() {
$('.classe_prof').change(function() {
if ($(this).prop("checked") == true) {
lesClasses.push($(this).val());
} else if ($(this).prop("checked") == false) {
lesClasses = lesClasses.filter(uneClasse => uneClasse !== $(this).val())
}
});
});
//Add matieres
let lesMatieres = lesMatieresProf;
$(document).ready(function() {
$('.matiere_prof').change(function() {
if ($(this).prop("checked") == true) {
lesMatieres.push($(this).val());
} else if ($(this).prop("checked") == false) {
lesMatieres = lesMatieres.filter(uneMatiere => uneMatiere !== $(this).val())
}
});
});
//Fonction d'activation des champs au clic sur le bouton modifier
function modifier(id) {
$('.input').prop('disabled', false);
$('select').prop('disabled', false);
$('#btn_modif').prop('disabled', true);
$('#btn_enr').prop('disabled', false);
$('.matiere_prof').prop('disabled', false);
$('.classe_prof').prop('disabled', false);
}
//JS pour la modification et l'enregistrement des infos du prof
$('#btn_enr').on('click', function() {
$('#info_prof').validate({
rules: {
nom_prof: {
required: true,
},
prenom_prof: {
required: true,
},
date_naissance_prof: {
required: true,
},
lieu_naissance_prof: {
required: true,
},
adresse_prof: {
required: true,
},
telephone_prof: {
required: true,
},
email_prof: {
required: false,
},
niveau_prof: {
required: true,
},
salaire_prof: {
required: true,
},
},
messages: {
nom_prof: {
required: "Le nom est obligatoire!",
},
prenom_prof: {
required: "Le prénom est obligatoire!",
},
date_naissance_prof: {
required: "La date de naissance est obligatoire!",
},
lieu_naissance_prof: {
required: "Le lieu de naissance est obligatoire!",
},
adresse_prof: {
required: "L'adresse est obligatoire!",
},
telephone_prof: {
required: "Le numéro de téléphone est obligatoire!",
},
email_prof: {
required: "L\'email' est obligatoire!",
},
niveau_prof: {
required: "Le niveau est obligatoire!",
},
salaire_prof: {
required: "Le salaire est obligatoire!",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/professeurs/detailsProf/{{ request('prof_slug') }}/modifier",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
nom_prof: $('#nom_prof_id').val(),
prenom_prof: $('#prenom_prof_id').val(),
date_naissance_prof: $('#date_naissance_prof_id').val(),
lieu_naissance_prof: $('#lieu_naissance_prof_id').val(),
adresse_prof: $('#adresse_prof_id').val(),
telephone_prof: $('#telephone_prof_id').val(),
email_prof: $('#email_prof_id').val(),
niveau_prof: $('#niveau_prof_id').val(),
salaire_prof: Number($('#salaire_prof_id').val().replace(/\s/g,
'')),
lesClasses: lesClasses,
lesMatieres: lesMatieres,
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/professeurs/detailsProf/{{ request('prof_slug') }}'
);
}
},
error: function(response) {
console.log(response);
}
});
}
});
});
//JS pour la suppression d'un professeur
$('#btn_supp').on('click', function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/professeurs/detailsProf/{{ request('prof_slug') }}/supprimer",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function () { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
nom_prof: $('#nom_prof_id').val(),
prenom_prof: $('#prenom_prof_id').val(),
date_naissance_prof: $('#date_naissance_prof_id').val(),
lieu_naissance_prof: $('#lieu_naissance_prof_id').val(),
adresse_prof: $('#adresse_prof_id').val(),
telephone_prof: $('#telephone_prof_id').val(),
email_prof: $('#email_prof_id').val(),
niveau_prof: $('#niveau_prof_id').val(),
salaire_prof: Number($('#salaire_prof_id').val().replace(/\s/g, '')),
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/professeurs'
);
}
},
error: function(response) {
console.log(response);
}
});
});
var cleave = new Cleave('#telephone_prof_id', {
phone: true,
phoneRegionCode: 'SN'
});
var cleave = new Cleave('#salaire_prof_id', {
delimiter: ' ',
numeral: true,
numeralThousandsGroupStyle: 'thousand'
});
//Reinitialisation password
let compte_slug = "";
function get_compte_slug(slug) {
compte_slug = slug;
}
$('#btn_reinPassword').on('click', function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/comptes/compte/" + compte_slug + "/reinpassword",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function () { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/comptes/compte/' + compte_slug,
);
}
},
error: function(response) {
console.log(response);
}
});
});
</script>
<!-- Details Operation========================================================= -->
<div class="modal" id="modalDetailsOperation">
<div onclick="closeForm('modalDetailsOperation')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Détails de la transaction</p>
<button type="button" onclick="closeForm('modalDetailsOperation')" class="delete" aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<p><strong>Référence: </strong><span id="details_ref_operation"></span></p>
<p><strong>Libellé: </strong><span id="details_libelle_operation"></span></p>
<p><strong>Montant: </strong><span id="details_montant_operation"></span> CFA</p>
<p><strong>Type: </strong><span id="details_type_operation"></span></p>
<p><strong>Description: </strong><span id="details_description_operation"></span></p>
<p><strong>Auteur: </strong><span id="details_auteur_operation"></span></p>
<p><strong>Date: </strong><span id="details_date_operation"></span></p>
<p><strong>Statut: </strong><span id="details_statut_operation"></span></p>
<p><strong>Mise à jour le: </strong><span id="details_update_operation"></span></p>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalDetailsOperation')"
class="button is-info is-light is-rounded">Fermer</button>
</footer>
</div>
</div>
<!-- Supprimer Eleve========================================================= -->
<div class="modal" id="modalSuppEleve">
<div onclick="closeForm('modalSuppEleve')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Attention</p>
<button type="button" onclick="closeForm('modalSuppEleve')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<p>Voulez-vous vraiment supprimer cet élève et toutes les informations qui lui sont liées ?</p>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalSuppEleve')"
class="button is-info is-light is-rounded">NON</button>
<button id="btn_supp" class="button is-info is-danger is-rounded">OUI</button>
</footer>
</div>
</div><script>
//Fonction pour le panel tab
function openContent(evt, contentId) {
var i, tabcontent, tablinks;
tabcontent = document.getElementsByClassName("contenu-block");
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
//console.log(tabcontent[i])
}
tablinks = document.getElementsByClassName("tab");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace("is-active", "");
//console.log(tablinks[i])
}
document.getElementById(contentId).style.display = "flex";
if (evt == null) {
document.getElementById('default').className += " is-active";
} else {
evt.currentTarget.className += " is-active";
}
}
openContent(event, 'tout');
//Hide classe
$('#niveau_prof_id').change(() => {
if ($('#niveau_prof_id option:selected').val() == 'Primaire') {
$('.classe_prof_primaire').removeClass('is-hidden');
if (!$('.classe_prof_secondaire').hasClass('is-hidden')) {
$('.classe_prof_secondaire').addClass('is-hidden');
}
} else {
$('.classe_prof_secondaire').removeClass('is-hidden');
if (!$('.classe_prof_primaire').hasClass('is-hidden')) {
$('.classe_prof_primaire').addClass('is-hidden');
}
}
});
//Hide matiere
$('#niveau_prof_id').change(() => {
if ($('#niveau_prof_id option:selected').val() == 'Primaire') {
$('.matiere_prof_primaire').removeClass('is-hidden');
if (!$('.matiere_prof_secondaire').hasClass('is-hidden')) {
$('.matiere_prof_secondaire').addClass('is-hidden');
}
} else {
$('.matiere_prof_secondaire').removeClass('is-hidden');
if (!$('.matiere_prof_primaire').hasClass('is-hidden')) {
$('.matiere_prof_primaire').addClass('is-hidden');
}
}
});
//Add classes
let lesClasses = [];
$(document).ready(function() {
$('.classe_prof').change(function() {
if ($(this).prop("checked") == true) {
lesClasses.push($(this).val());
} else if ($(this).prop("checked") == false) {
lesClasses = lesClasses.filter(uneClasse => uneClasse !== $(this).val())
}
});
});
//Add matieres
let lesMatieres = [];
$(document).ready(function() {
$('.matiere_prof').change(function() {
if ($(this).prop("checked") == true) {
lesMatieres.push($(this).val());
} else if ($(this).prop("checked") == false) {
lesMatieres = lesMatieres.filter(uneMatiere => uneMatiere !== $(this).val())
}
});
});
//Ajout professeur
$('#btn_submit_form_ajouter_prof').on('click', function() {
$('#form_ajouter_prof').validate({
rules: {
nom_prof: {
required: true,
},
prenom_prof: {
required: true,
},
date_naissance_prof: {
required: true,
},
lieu_naissance_prof: {
required: true,
},
adresse_prof: {
required: true,
},
telephone_prof: {
required: true,
},
email_prof: {
required: false,
},
niveau_prof: {
required: true,
},
salaire_prof: {
required: false,
},
},
messages: {
nom_prof: {
required: "Le nom est obligatoire!",
},
prenom_prof: {
required: "Le prénom est obligatoire!",
},
date_naissance_prof: {
required: "La date de naissance est obligatoire!",
},
lieu_naissance_prof: {
required: "Le lieu de naissance est obligatoire!",
},
adresse_prof: {
required: "L'adresse est obligatoire!",
},
telephone_prof: {
required: "Le numéro de téléphone est obligatoire!",
},
niveau_prof: {
required: "Le niveau est obligatoire!",
},
salaire_prof: {
required: "Le salaire est obligatoire!",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/professeurs/ajouterProf",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
nom: $('#nom_prof_id').val(),
prenom: $('#prenom_prof_id').val(),
date_naissance: $('#date_naissance_prof_id').val(),
lieu_naissance: $('#lieu_naissance_prof_id').val(),
adresse: $('#adresse_prof_id').val(),
telephone: $('#telephone_prof_id').val(),
email: $('#email_prof_id').val(),
niveau: $('#niveau_prof_id').val(),
salaire: Number($('#salaire_prof_id').val().replace(/\s/g, '')),
lesMatieres: lesMatieres,
lesClasses: lesClasses,
},
success: function(response) {
if (response == true) {
window.location.replace('/accueil/professeurs');
}
},
error: function(response) {
console.log(response);
}
});
}
});
});
var cleave = new Cleave('#telephone_prof_id', {
phone: true,
phoneRegionCode: 'SN'
});
var cleave = new Cleave('#salaire_prof_id', {
delimiter: ' ',
numeral: true,
numeralThousandsGroupStyle: 'thousand'
});
</script>
<script>
//Details compte
//btn modifier
function modifier(id) {
$('.mot_de_passe').prop('disabled', false);
$('#btn_modif_compte').prop('disabled', true);
$('#btn_enr_compte').prop('disabled', false);
$('#mot_de_passe_user_id').val('');
$('#nv_mot_de_passe').removeClass('is-hidden');
$('#confirm_mot_de_passe').removeClass('is-hidden');
}
//Bouton enregistrer compte
var id_user = 0;
var compte_slug = "";
function get_id(id) {
id_user = id;
}
function get_compte_slug(slug) {
compte_slug = slug;
}
$('#btn_enr_compte').on('click', function() {
$('#info_compte').validate({
rules: {
nv_nom: {
required: true,
},
nv_prenom: {
required: true,
},
nv_nom_utilisateur: {
required: true,
},
mot_de_passe_user: {
required: true,
},
nv_mot_de_passe_user: {
required: true,
minlength: 8,
},
nv_mot_de_passe_user_confirm: {
required: true,
equalTo: '#nv_mot_de_passe_user_id',
},
},
messages: {
nom_user: {
required: "Le nom est obligatoire!",
},
prenom_user: {
required: "Le prénom est obligatoire!",
},
nom_utilisateur_user: {
required: "Le ne nom d'utilisateur est obligatoire !",
},
mot_de_passe_user: {
required: "Le mot de passe est obligatoire !",
minlength: "Le mot de passe doit faire au moins 8 caractères !",
},
nv_mot_de_passe_user: {
required: "Le nouveau mot de passe est obligatoire !",
},
nv_mot_de_passe_user_confirm: {
required: "La confirmation du mot de passe est obligatoire !",
equalTo: "Les deux mots de passe ne correspondent pas !",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/comptes/compte/" + compte_slug + "/modifier",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
mot_de_passe: $('#mot_de_passe_user_id').val(),
nv_mot_de_passe: $('#nv_mot_de_passe_user_id').val(),
},
success: function(response) {
if (response == false) {
$('#error_mot_de_passe').html(
'Vous n\'avez pas donné le bon mot de passe!');
} else {
window.location.replace('/accueil/comptes/compte/' +
compte_slug);
}
},
error: function(response) {
console.log(response);
}
});
}
});
});
//Suppression compte
$('#btn_supp_compte').on('click', function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/comptes/compte/" + compte_slug + "/delete",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/comptes'
);
}
},
error: function(response) {
console.log(response);
}
});
});
//Reinitialisation password
$('#btn_reinPassword').on('click', function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/comptes/compte/" + compte_slug + "/reinpassword",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function () { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/comptes/compte/' + compte_slug,
);
}
},
error: function(response) {
console.log(response);
}
});
});
</script>
<script>
//Creation compte
$('#afficher_mot_de_passe').on('change', function() {
if (this.checked) {
$('#mot_de_passe_user_id').attr('type', 'text')
} else {
$('#mot_de_passe_user_id').attr('type', 'password')
}
})
$('#is_admin').change(function() {
if (this.checked) {
$(this).val(1)
} else {
$(this).val(0)
}
});
$('#role_user_id').change(function() {
if (this.value == 'administration') {
$('#div_is_admin').prop('hidden', false);
} else {
$('#div_is_admin').prop('hidden', true);
}
if (this.value == "surveillant") {
$('#is_admin').prop('checked', false);
$('#is_admin').val(0);
}
});
$('#btn_submit_formCreationCompte').on('click', function() {
$('#form_compte').validate({
rules: {
nom_user: {
required: true,
},
prenom_user: {
required: true,
},
nom_utilisateur_user: {
required: true,
},
/* mot_de_passe_user: {
required: true,
minlength: 8,
},
mot_de_passe_confirmation_user: {
required: true,
equalTo: '#mot_de_passe_user_id',
}, */
role_user: {
required: true,
},
},
messages: {
nom_user: {
required: "Le nom est obligatoire !",
},
prenom_user: {
required: "Le prénom est obligatoire !",
},
nom_utilisateur_user: {
required: "Le ne nom d'utilisateur est obligatoire !",
},
/* mot_de_passe_user: {
required: "Le mot de passe est obligatoire !",
minlength: "Le mot de passe doit faire au moins 8 caractères !",
},
mot_de_passe_confirmation_user: {
required: "La confirmation du mot de passe est obligatoire !",
equalTo: "Les deux mots de passe ne correspondent pas !",
}, */
role_user: {
required: "Le rôle est obligatoire !",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/creationCompte",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
nom_user: $('#nom_user_id').val(),
prenom_user: $('#prenom_user_id').val(),
nom_utilisateur_user: $('#nom_utilisateur_user_id').val(),
// mot_de_passe_user: $('#mot_de_passe_user_id').val(),
is_admin: $('#is_admin').val(),
role_user: $('#role_user_id').val(),
},
success: function(response) {
if (response == true) {
$('#error_user_name').html(
'Ce nom d\'utilisateur est déjà utilisé !');
} else {
window.location.replace('/accueil/comptes');
}
},
error: function(response) {
console.log(response);
}
});
}
});
});
//Listes des comptes
//Fonction pour le panel tab
function openContent(evt, contentId) {
var i, tabcontent, tablinks;
tabcontent = document.getElementsByClassName("contenu-block");
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
//console.log(tabcontent[i])
}
tablinks = document.getElementsByClassName("tab");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace("is-active", "");
//console.log(tablinks[i])
}
document.getElementById(contentId).style.display = "flex";
if (evt == null) {
document.getElementById('default').className += " is-active";
} else {
evt.currentTarget.className += " is-active";
}
}
openContent(event, 'tout');
</script>
<!-- Ajouter Note========================================================= -->
<div class="modal animate__animated animate__fadeInLeft" id="modal_ajouter_note">
<div onclick="closeForm('modal_ajouter_note')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Ajouter Note</p>
<button type="button" onclick="closeForm('modal_ajouter_note')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_ajouter_note">
@csrf
<div class="field mb-5">
<label class="label title is-6" for="evaluation_id">Evaluation</label>
<div class="control">
<div class="select is-info is-rounded">
<select name="evaluation" id="evaluation_id"
class="@error('evaluation') is-invalid
@enderror"
required>
<option value="" disabled selected>Sélectionner</option>
@foreach ($evaluations->sortByDesc('id') as $evaluation)
<option class="{{$matieres->find($evaluation->matiere_id)->coefficient}}" value="{{ $evaluation->id }}">
@foreach ($matieres as $matiere)
@if ($matiere->id == $evaluation->matiere_id)
Evaluation {{ $matiere->libelle }} du
{{ date('d/m/Y', strtotime($evaluation->date)) }}
@endif
@endforeach
</option>
@endforeach
</select>
</div>
</div>
@error('evaluation')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field mb-5">
<label class="label title is-6" for="type_note_id">Type de Note</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="type_note_id" name="type_note"
class="@error('type_note') is-invalid
@enderror"
required>
<option value="" disabled selected>Sélectionner</option>
@if ($classe->type == 'Primaire')
<option value="Contrôle">Contrôle</option>
<option value="Composition">Composition</option>
@else
<option value="Devoir">Devoir</option>
<option value="Examen">Examen</option>
@endif
</select>
</div>
</div>
@error('type_note')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="valeur_note_id">Valeur</label>
<p class="control">
<input id="valeur_note_id" min="0" max="{{$classe->type == 'Primaire' ? '60' : '20'}}" type="number" class="input is-info is-rounded"
title="{{$classe->type == 'Primaire' ? 'Respectez le barême' : 'Entre 0 et 20'}}" name="valeur_note" placeholder="00" required>
</p>
@error('valeur_note')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<button id="submit_form_ajouter_note" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" class="button is-light is-danger is-rounded"
onclick="closeForm('modal_ajouter_note')">Annuler</button>
<button class="button is-info is-link is-rounded"
onclick="$('#submit_form_ajouter_note').click()">Enregistrer</button>
</footer>
</div>
</div>
<div class="modal animate__animated animate__fadeInLeft" id="modalCreationCompte">
<div onclick="closeForm('modalCreationCompte')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Création de compte utilisateur</p>
<button type="button" onclick="closeForm('modalCreationCompte')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_compte">
@csrf
<div class="field">
<label class="label title is-6" for="nom_user_id">Nom</label>
<p class="control">
<input id="nom_user_id"
class="input is-info is-rounded
@error('nom_user') is-invalid @enderror"
type="text" placeholder="Nom" name="nom_user" required />
</p>
@error('nom_user')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="prenom_user_id">Prénom</label>
<p class="control">
<input id="prenom_user_id"
class="input is-info is-rounded
@error('prenom_user') is-invalid @enderror"
type="text" placeholder="Prénom" name="prenom_user" required />
</p>
@error('prenom_user')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="nom_utilisateur_user_id">Nom d'utilisateur</label>
<p class="control">
<input id="nom_utilisateur_user_id"
class="input is-info is-rounded
@error('nom_utilisateur_user') is-invalid @enderror"
autocomplete="username" type="text" placeholder="Ex: mbodji" name="nom_utilisateur_user"
required />
</p>
<div id="error_user_name" class="error erreur"></div>
@error('nom_utilisateur_user')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
{{-- <div class="field">
<label class="label title is-6" for="mot_de_passe_user_id">Mot de passe</label>
<p class="control">
<input id="mot_de_passe_user_id"
class="input is-info is-rounded
@error('mot_de_passe_user') is-invalid @enderror"
autocomplete="new-password" type="password" placeholder="Au moins 8 caractères"
name="mot_de_passe_user" required />
</p>
@error('mot_de_passe_user')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<div class="control">
<label class="checkbox">
<input id="afficher_mot_de_passe" type="checkbox">
Afficher le mot de passe
</label>
</div>
</div>
<div class="field">
<label class="label title is-6" for="mot_de_passe_confirmation_user_id">Mot de passe</label>
<p class="control">
<input id="mot_de_passe_confirmation_user_id"
class="input is-info is-rounded
@error('mot_de_passe_confirmation_user') is-invalid
@enderror"
autocomplete="new-password" type="password" placeholder="Confirmer le mot de passe"
name="mot_de_passe_confirmation_user" required />
</p>
@error('mot_de_passe_confirmation_user')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div> --}}
<div class="field">
<label class="label title is-6" for="role_user_id">Rôle</label>
<div class="select is-info is-rounded w-100">
<select id="role_user_id" name="role_user" required>
<option value="" disabled selected>Choisir le rôle</option>
<option value="administration">Administration</option>
<option value="surveillant">Surveillant</option>
</select>
</div>
</div>
<div class="field" id="div_is_admin" hidden>
<div class="control">
<label class="checkbox">
<input id="is_admin" type="checkbox" name="admin" value="0" />
Administrateur
</label>
</div>
</div>
<button id="btn_submit_formCreationCompte" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalCreationCompte')"
class="button is-light is-danger is-rounded">Annuler</button>
<button onclick="$('#btn_submit_formCreationCompte').click()" class="button is-info is-rounded">Créer le
compte</button>
</footer>
</div>
</div>
<!-- Supprimer Cours========================================================= -->
<div class="modal" id="modalSuppCours">
<div onclick="closeForm('modalSuppCours')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Attention</p>
<button type="button" onclick="closeForm('modalSuppCours')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<p>Voulez-vous vraiment supprimer ce cours et toutes les informations qui lui sont liées ?</p>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalSuppCours')"
class="button is-info is-light is-rounded">NON</button>
<button class="button supp_cours is-info is-danger is-rounded">OUI</button>
</footer>
</div>
</div><!-- Modal Classe Promos========================================================= -->
<div class="modal animate__animated animate__fadeInLeft" id="modalClassPromos">
<div onclick="closeForm('modalClassPromos')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Promotions</p>
<button type="button" onclick="closeForm('modalClassPromos')" class="delete" aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="buttons columns mx-0 my-1 is-flex is-justify-content-center">
@foreach ($classPromos as $classPromo)
<a target="_blank" href="/accueil/classe/{{ $classe->slug }}/{{str_replace('/', '-', $classPromo->libelle)}}"
class="button pt-2 column is-info is-light is-rounded">{{ $classPromo->libelle }}</a>
@endforeach
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalClassPromos')"
class="button is-info is-light is-rounded">Annuler</button>
</footer>
</div>
</div>
<!-- Modal bulletin promo========================================================= -->
<div class="modal animate__animated animate__fadeInLeft" id="modalBulletinPromo">
<div onclick="closeForm('modalBulletinPromo')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Bulletins</p>
<button type="button" onclick="closeForm('modalBulletinPromo')" class="delete" aria-label="close"></button>
</header>
<section class="modal-card-body">
@if ($classe->type == 'Primaire')
<div class="buttons columns mx-0 my-1 is-flex is-justify-content-center">
@if ($promo->pivot->bulletin1 != null)
<a target="_blank" href="{{ $promo->pivot->bulletin1 }}"
class="button pt-2 column is-info is-light is-rounded">Trimestre 1</a>
@endif
@if ($promo->pivot->bulletin2 != null)
<a target="_blank" href="{{ $promo->pivot->bulletin2 }}"
class="button pt-2 column is-info is-light is-rounded">Trimestre 2</a>
@endif
@if ($promo->pivot->bulletin3 != null)
<a target="_blank" href="{{ $promo->pivot->bulletin3 }}"
class="button pt-2 column is-info is-light is-rounded">Trimestre 3</a>
@endif
</div>
@else
<div class="buttons columns mx-0 my-1 is-flex is-justify-content-center">
@if ($promo->pivot->bulletin1 != null)
<a target="_blank" href="{{ $promo->pivot->bulletin1 }}"
class="button pt-2 column is-info is-light is-rounded">Semestre 1</a>
@endif
@if ($promo->pivot->bulletin2 != null)
<a target="_blank" href="{{ $promo->pivot->bulletin2 }}"
class="button pt-2 column is-info is-light is-rounded">Semestre 2</a>
@endif
</div>
<div class="buttons columns mx-0 my-1 is-flex is-justify-content-center">
@if ($promo->pivot->bulletin1 != null)
<a target="_blank" href="{{ $promo->pivot->bulletin1 }}"
class="button pt-2 column is-info is-light is-rounded">Trimestre 1</a>
@endif
@if ($promo->pivot->bulletin2 != null)
<a target="_blank" href="{{ $promo->pivot->bulletin2 }}"
class="button pt-2 column is-info is-light is-rounded">Trimestre 2</a>
@endif
@if ($promo->pivot->bulletin3 != null)
<a target="_blank" href="{{ $promo->pivot->bulletin3 }}"
class="button pt-2 column is-info is-light is-rounded">Trimestre 3</a>
@endif
</div>
@endif
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalBulletinPromo')"
class="button is-info is-light is-rounded">Annuler</button>
</footer>
</div>
</div>
<script>
//Supprimer Absence
var classe_libelle = "";
var eleve_id = 0;
var absence_id = 0;
var classe_slug = "";
var eleve_slug = ""
function get_classe_slug(slug) {
classe_slug = slug;
}
function getClasseLibelle(libelle) {
classe_libelle = libelle;
}
function getEleveId(id) {
eleve_id = id;
}
function getAbsenceId(id) {
absence_id = id;
}
function get_eleve_slug(slug) {
eleve_slug = slug;
}
$('.supp_absence').on('click', () => {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/classe/" + classe_slug + "/eleve/" + eleve_slug + "/absences/" +
absence_id + "/supprimer",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
eleve_id: eleve_id,
classe_libelle: classe_libelle,
absence_id: absence_id,
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/' + classe_slug + '/eleve/' + eleve_slug);
eleve_id = 0;
classe_libelle = "";
absence_id = 0;
classe_slug = "";
eleve_slug = "";
}
},
error: function(response) {
console.log(response);
}
});
});
</script>
<script>
// Add regex method to jQuery Validator
$.validator.addMethod("regex", function(value, element, regexp) {
var re = new RegExp(regexp);
return this.optional(element) || re.test(value);
}, "Le format est invalide.");
//Create new promo form
$('#submitFormPromo').on('click', function(e) {
$('#formPromo').validate({
rules: {
libelle: {
required: true,
regex: "^(20\\d{2})/(20\\d{2})$"
},
},
messages: {
libelle: {
required: "Le champs est obligatoire!",
regex: "Le format est invalide.",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/newpromo",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
libelle: $('#libelleId').val(),
},
success: function(response) {
window.location.replace('/accueil');
},
error: function(response) {
console.log(response);
}
});
}
})
});
</script>
<!-- Ajouter Frais========================================================= -->
<div class="modal animate__animated animate__fadeInLeft" id="modal_ajouter_frais">
<div onclick="closeForm('modal_ajouter_frais')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Ajouter Frais</p>
<button type="button" onclick="closeForm('modal_ajouter_frais')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_ajouter_frais">
@csrf
<div class="field">
<label class="label title is-6" for="type_frais_id">Type de payement</label>
<p class="control">
<input id="type_frais_id"
class="input is-info is-rounded
@error('type_frais') is-invalid @enderror"
type="text" placeholder="Préciser le type de frais" name="type_frais" required />
</p>
@error('type_frais')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="montant_frais_id">Montant</label>
<p class="control">
<input id="montant_frais_id"
class="input-numeral input is-info is-rounded
@error('montant_frais') is-invalid @enderror"
type="text" placeholder="25 000" name="montant_frais" required />
</p>
@error('montant_frais')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<div class="control">
<label class="checkbox">
<input id="is_payed" type="checkbox" name="paye" value="0" />
Frais payé
</label>
</div>
</div>
<button id="submit_form_ajouter_frais" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" class="button is-light is-danger is-rounded"
onclick="closeForm('modal_ajouter_frais')">Annuler</button>
<button class="button is-info is-link is-rounded"
onclick="$('#submit_form_ajouter_frais').click()">Enregistrer</button>
</footer>
</div>
</div>
<script>
//Fonction pour le panel tab
function openContent(evt, contentId) {
var i, tabcontent, tablinks;
tabcontent = document.getElementsByClassName("contenu-block");
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
//console.log(tabcontent[i])
}
tablinks = document.getElementsByClassName("tab");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace("is-active", "");
//console.log(tablinks[i])
}
document.getElementById(contentId).style.display = "flex";
if (evt == null) {
document.getElementById('default').className += " is-active";
} else {
evt.currentTarget.className += " is-active";
}
}
openContent(event, 'tout');
//Ajout matiere
$('#btn_submit_form_ajouter_matiere').on('click', function() {
$('#form_ajouter_matiere').validate({
rules: {
libelle_matiere: {
required: true,
},
niveau_matiere: {
required: true,
},
coef_matiere: {
required: true,
},
},
messages: {
libelle_matiere: {
required: "Le libellé est obligatoire!",
},
niveau_matiere: {
required: "Le niveau est obligatoire!",
},
coef_matiere: {
required: "Le coefficient est obligatoire!",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/matieres/ajouterMatiere",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
libelle_matiere: $('#libelle_matiere_id').val(),
niveau_matiere: $('#niveau_matiere_id').val(),
coef_matiere: $('#coef_matiere_id').val(),
},
success: function(response) {
if (response == true) {
window.location.replace('/accueil/matieres');
}
},
error: function(response) {
console.log(response);
}
});
}
});
});
//Recuperation des info de la matiere
var matiere_id = 0;
var matiere_libelle = '';
var matiere_niveau = '';
var matiere_coef = 0;
function get_id_matiere(id) {
matiere_id = id;
}
function get_libelle_matiere(libelle) {
matiere_libelle = libelle;
$('#nv_libelle_matiere_id').val(matiere_libelle);
}
function get_niveau_matiere(niveau) {
matiere_niveau = niveau;
if (matiere_niveau == 'Primaire') {
$('#value1').val('Primaire');
$('#value1').html('Primaire');
$('#value2').val('Secondaire');
$('#value2').html('Secondaire');
} else {
$('#value1').val('Secondaire');
$('#value1').html('Secondaire');
$('#value2').val('Primaire');
$('#value2').html('Primaire');
}
}
function get_coef(coef) {
matiere_coef = coef;
$('#nv_coef_matiere_id').val(matiere_coef);
}
//Modifier matiere
$('#btn_submit_form_modifier_matiere').on('click', function(e) {
$('#form_modifier_matiere').validate({
rules: {
libelle: {
required: true,
},
niveau: {
required: true,
}
},
messages: {
libelle: {
required: "Donnez le libellé svp!",
},
niveau: {
required: "Précisez le niveau svp!",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/matieres/matiere/" + matiere_id + "/modifier",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
nv_libelle_matiere: $('#nv_libelle_matiere_id').val(),
nv_niveau_matiere: $('#nv_niveau_matiere_id').val(),
nv_coef_matiere: $('#nv_coef_matiere_id').val(),
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/matieres/');
}
},
error: function(response) {
console.log('Matière non modifiée');
}
});
}
})
});
//Supprimer matiere
$('.btn_suppr').on('click', () => {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/matieres/matiere/" + matiere_id + "/supprimer",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function () { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/matieres');
} else {
console.log('La matière n\'est pas supprimée');
}
},
error: function(response) {
console.log(response);
}
});
});
</script>
<!-- Supprimer Matiere========================================================= -->
<div class="modal" id="modalSuppMatiere">
<div onclick="closeForm('modalSuppMatiere')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Attention</p>
<button type="button" onclick="closeForm('modalSuppMatiere')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<p>Voulez-vous vraiment supprimer cette matière et les informations qui lui sont liées ?</p>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalSuppMatiere')"
class="button is-info is-light is-rounded">NON</button>
<button class="button btn_suppr is-info is-danger is-rounded">OUI</button>
</footer>
</div>
</div><!-- Modifier cours========================================================= -->
<div class="modal animate__animated animate__bounce" id="modal_modifier_cours">
<div onclick="closeForm('modal_modifier_cours')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Modifier le cours</p>
<button type="button" onclick="closeForm('modal_modifier_cours')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_modifier_cours">
@csrf
<div class="field">
<label class="label title is-6" for="nv_description_id">Description du cours</label>
<p class="control">
<textarea id="nv_description_id" class="textarea is-info is-rounded
@error('nv_description') is-invalid @enderror"
placeholder="Donnez les détails du cours" name="nv_description" required></textarea>
</p>
@error('nv_description')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field mb-5">
<label class="label title is-6" for="nv_prof_id">Professeur</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="nv_prof_id" name="nv_prof" class="@error('nv_prof') is-invalid @enderror"
required>
<option value="" disabled selected>Sélectionner</option>
@if ($classe->type == 'Primaire')
@foreach ($professeurs->sortBy('nom') as $professeur)
@if ($professeur->niveau == 'Primaire')
<option value="{{ $professeur->id }}">{{ $professeur->prenom }}
{{ $professeur->nom }}</option>
@endif
@endforeach
@else
@foreach ($professeurs->sortBy('nom') as $professeur)
@if ($professeur->niveau == 'Secondaire')
<option value="{{ $professeur->id }}">{{ $professeur->prenom }}
{{ $professeur->nom }}</option>
@endif
@endforeach
@endif
</select>
</div>
</div>
@error('nv_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field mb-5">
<label class="label title is-6" for="nv_matiere_id">Matière</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="nv_matiere_id" name="nv_matiere"
class="@error('nv_matiere') is-invalid @enderror" required>
<option value="" disabled selected>Sélectionner</option>
@if ($classe->type == 'Primaire')
@if (auth()->user()->role == 'professeur')
@foreach ($professeurs as $professeur)
@if (str_replace(' ', '', $professeur->telephone) == auth()->user()->nom_utilisateur)
@foreach ($professeur->matieres as $matiere)
@if ($matiere->niveau == 'Primaire')
<option value="{{ $matiere->id }}">
{{ $matiere->libelle }}</option>
@endif
@endforeach
@endif
@endforeach
@else
@foreach ($matieres as $matiere)
@if ($matiere->niveau == 'Primaire')
<option value="{{ $matiere->id }}">{{ $matiere->libelle }}
</option>
@endif
@endforeach
@endif
@else
@if (auth()->user()->role == 'professeur')
@foreach ($professeurs as $professeur)
@if (str_replace(' ', '', $professeur->telephone) == auth()->user()->nom_utilisateur)
@foreach ($professeur->matieres as $matiere)
@if ($matiere->niveau == 'Secondaire')
<option value="{{ $matiere->id }}">
{{ $matiere->libelle }}</option>
@endif
@endforeach
@endif
@endforeach
@else
@foreach ($matieres as $matiere)
@if ($matiere->niveau == 'Secondaire')
<option value="{{ $matiere->id }}">{{ $matiere->libelle }}
</option>
@endif
@endforeach
@endif
@endif
</select>
</div>
</div>
@error('nv_matiere')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="nv_debut_id">Heure de début</label>
<p class="control">
<input id="nv_debut_id"
class="input is-info is-rounded
@error('nv_debut') is-invalid @enderror"
type="time" name="nv_debut" required />
</p>
@error('nv_debut')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="nv_fin_id">Heure de fin</label>
<p class="control">
<input id="nv_fin_id"
class="input is-info is-rounded
@error('nv_fin') is-invalid @enderror"
type="time" name="nv_fin" required />
</p>
@error('nv_fin')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<button id="submit_form_modifier_cours" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modal_modifier_cours')"
class="button is-light is-danger is-rounded">Annuler</button>
<button onclick="get_classe_slug('{{ $classe->slug }}'); $('#submit_form_modifier_cours').click()"
class="button is-info is-link is-rounded">Enregistrer</button>
</footer>
</div>
</div>
<!-- Ajouter classe========================================================= -->
<div class="modal animate__animated animate__fadeInLeft" id="modalFormClasse">
<div onclick="closeForm('modalFormClasse')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Ajout de classe</p>
<button type="button" onclick="closeForm('modalFormClasse')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="formClasse">
@csrf
<div class="field">
<label class="label title is-6" for="libelleId">Libellé</label>
<p class="control">
<input id="libelleClasseId"
class="input is-info is-rounded
@error('libelle') is-invalid @enderror"
type="text" placeholder="CE1 A" name="libelle" required />
</p>
<div id="errorLibelle" class="error erreur"></div>
@error('libelle')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="typeId">Type</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="typeId" name="type"
class="@error('type') is-invalid
@enderror"
required>
<option value="" disabled selected>Sélectionner</option>
<option value="Primaire">Primaire</option>
<option value="Secondaire">Collège</option>
</select>
</div>
</div>
@error('type')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<button id="submitFormClasse" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalFormClasse')"
class="button is-light is-danger is-rounded">Annuler</button>
<button onclick="$('#submitFormClasse').click()" class="button is-info is-link is-rounded">Ajouter la
classe</button>
</footer>
</div>
</div>
<script>
//Inscription
$('#btn_submit_formeleve').on('click', function() {
$('#formeleve').validate({
rules: {
nom: {
required: true,
},
prenom: {
required: true,
},
date_naissance: {
required: true,
},
lieu_naissance: {
required: true,
},
adresse: {
required: true,
},
tuteur: {
required: true,
},
tel_tuteur: {
required: true,
},
classe: {
required: true,
},
inscription: {
required: true,
},
mensualite: {
required: true,
},
},
messages: {
nom: {
required: "Le nom est obligatoire!",
},
prenom: {
required: "Le prénom est obligatoire!",
},
date_naissance: {
required: "La date de naissance est obligatoire!",
},
lieu_naissance: {
required: "Le lieu de naissance est obligatoire!",
},
adresse: {
required: "L'adresse est obligatoire!",
},
tuteur: {
required: "Le prénom et le nom du tuteur sont obligatoires!",
},
tel_tuteur: {
required: "Le téléphone du tuteur est obligatoire!",
},
classe: {
required: "La classe est obligatoire!",
},
inscription: {
required: "Le montant de l'inscription est obligatoire",
},
mensualite: {
required: "Le montant de la mensualite est obligatoire",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/inscription",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
nom: $('#nom_id').val(),
prenom: $('#prenom_id').val(),
date_naissance: $('#date_naissance_id').val(),
lieu_naissance: $('#lieu_naissance_id').val(),
adresse: $('#adresse_id').val(),
tuteur: $('#tuteur_id').val(),
tel_tuteur: $('#tel_tuteur_id').val(),
autre_tel: $('#autre_tel_id').val(),
classe_id: $('#classe_id').val(),
inscription: Number($('#inscription_id').val().replace(/\s/g, '')),
mensualite: Number($('#mensualite_id').val().replace(/\s/g, '')),
},
success: function(response) {
if (response == true) {
window.location.replace('/accueil');
}
},
error: function(response) {
console.log(response);
}
});
}
});
});
var cleave = new Cleave('#tel_tuteur_id', {
phone: true,
phoneRegionCode: 'SN'
});
var cleave = new Cleave('#autre_tel_id', {
phone: true,
phoneRegionCode: 'SN'
});
var cleave = new Cleave('#inscription_id', {
delimiter: ' ',
numeral: true,
numeralThousandsGroupStyle: 'thousand'
});
var cleave = new Cleave('#mensualite_id', {
delimiter: ' ',
numeral: true,
numeralThousandsGroupStyle: 'thousand'
});
</script>
<!-- Supprimer absence========================================================= -->
<div class="modal" id="modalSuppAbsence">
<div onclick="closeForm('modalSuppAbsence')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Attention</p>
<button type="button" onclick="closeForm('modalSuppAbsence')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<p>Voulez-vous vraiment supprimer cette absence ?</p>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalSuppAbsence')"
class="button is-info is-light is-rounded">NON</button>
<button class="button supp_absence is-info is-danger is-rounded">OUI</button>
</footer>
</div>
</div><!-- Nouvelle annee scolaire ========================================================= -->
<div class="modal animate__animated animate__fadeInLeft" id="modalFormPromo">
<div onclick="closeForm('modalFormPromo')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Démarrer une nouvelle année</p>
<button type="button" onclick="closeForm('modalFormPromo')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="formPromo">
@csrf
<div class="field">
<label class="label title is-6" for="libelleId">Libellé (ex: 2021/2022)</label>
<p class="control">
<input id="libelleId"
class="input is-info is-rounded
@error('libelle') is-invalid @enderror"
type="text" placeholder="2021/2022" name="libelle" required />
</p>
<div id="errorLibelle" class="error erreur"></div>
@error('libelle')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<button id="submitFormPromo" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalFormPromo')"
class="button is-light is-danger is-rounded">Annuler</button>
<button onclick="$('#submitFormPromo').click()" class="button is-info is-link is-rounded">Démarrer</button>
</footer>
</div>
</div>
<script>
jQuery.validator.addMethod("notEqual", function(value, element, param) {
return this.optional(element) || value.toLowerCase() != param;
}, "Please specify a different (non-default) value");
$('#afficher_mot_de_passe').on('change', function() {
if (this.checked) {
$('#nv_mot_de_passe_id').attr('type', 'text')
} else {
$('#nv_mot_de_passe_id').attr('type', 'password')
}
})
var user_slug = "";
function get_user_slug(slug) {
user_slug = slug;
}
$('#btn_reinitialiser').on('click', function() {
$('#form_reinitialiser').validate({
rules: {
nv_mot_de_passe: {
required: true,
minlength: 8,
notEqual: "{{ env('DEFAULT_PASSWORD') }}"
},
nv_mot_de_passe_confirm: {
required: true,
equalTo: '#nv_mot_de_passe_id',
},
},
messages: {
nv_mot_de_passe: {
required: "Le mot de passe est obligatoire !",
minlength: "Le mot de passe doit faire au moins 8 caractères !",
notEqual: "Choisissez un autre mot de passe",
},
nv_mot_de_passe_confirm: {
required: "La confirmation du mot de passe est obligatoire !",
equalTo: "Les deux mots de passe ne correspondent pas !",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/upschool/reinitialisationMotDePasse/" + user_slug,
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
nv_mot_de_passe: $('#nv_mot_de_passe_id').val(),
user_slug: user_slug,
},
success: function(response) {
if (response == true) {
window.location.replace('/');
}
},
error: function(response) {
console.log(response);
}
});
}
});
});
</script>
<!-- Ajouter cours========================================================= -->
<div class="modal animate__animated animate__fadeInLeft" id="modal_cours">
<div onclick="closeForm('modal_cours')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Remplir le cahier de texte</p>
<button type="button" onclick="closeForm('modal_cours')" class="delete" aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_cours">
@csrf
<div class="field">
<label class="label title is-6" for="description_id">Description du cours</label>
<p class="control">
<textarea id="description_id" class="textarea is-info is-rounded
@error('description') is-invalid @enderror"
placeholder="Donnez les détails du cours" name="description" required></textarea>
</p>
@error('description')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field mb-5">
<label class="label title is-6" for="prof_id">Professeur</label>
@if (auth()->user()->role == 'administration' || auth()->user()->role == 'surveillant')
<div class="control">
<div class="select is-info is-rounded">
<select id="prof_id" name="prof" class="@error('prof') is-invalid @enderror"
required>
<option value="" disabled selected>Sélectionner</option>
@if ($classe->type == 'Primaire')
@foreach ($professeurs->sortBy('nom') as $professeur)
@if ($professeur->niveau == 'Primaire')
<option value="{{ $professeur->id }}">{{ $professeur->prenom }}
{{ $professeur->nom }}</option>
@endif
@endforeach
@else
@foreach ($professeurs->sortBy('nom') as $professeur)
@if ($professeur->niveau == 'Secondaire')
<option value="{{ $professeur->id }}">{{ $professeur->prenom }}
{{ $professeur->nom }}</option>
@endif
@endforeach
@endif
</select>
</div>
</div>
@else
@foreach ($professeurs as $professeur)
@if (str_replace(' ', '', $professeur->telephone) == auth()->user()->nom_utilisateur)
<div class="control">
<div class="select is-info is-rounded">
<select id="prof_id" name="prof" class="@error('prof') is-invalid @enderror"
required>
<option value="{{ $professeur->id }}" selected>
{{ $professeur->prenom }} {{ $professeur->nom }}</option>
</select>
</div>
</div>
@endif
@endforeach
@endif
@error('prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field mb-5">
<label class="label title is-6" for="matiere_id">Matière</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="matiere_id" name="matiere" class="@error('matiere') is-invalid @enderror"
required>
<option value="" disabled selected>Sélectionner</option>
@if ($classe->type == 'Primaire')
@if (auth()->user()->role == 'professeur')
@foreach ($professeurs as $professeur)
@if (str_replace(' ', '', $professeur->telephone) == auth()->user()->nom_utilisateur)
@foreach ($professeur->matieres as $matiere)
@if ($matiere->niveau == 'Primaire')
<option value="{{ $matiere->id }}">
{{ $matiere->libelle }}</option>
@endif
@endforeach
@endif
@endforeach
@else
@foreach ($matieres as $matiere)
@if ($matiere->niveau == 'Primaire')
<option value="{{ $matiere->id }}">{{ $matiere->libelle }}
</option>
@endif
@endforeach
@endif
@else
@if (auth()->user()->role == 'professeur')
@foreach ($professeurs as $professeur)
@if (str_replace(' ', '', $professeur->telephone) == auth()->user()->nom_utilisateur)
@foreach ($professeur->matieres as $matiere)
@if ($matiere->niveau == 'Secondaire')
<option value="{{ $matiere->id }}">
{{ $matiere->libelle }}</option>
@endif
@endforeach
@endif
@endforeach
@else
@foreach ($matieres as $matiere)
@if ($matiere->niveau == 'Secondaire')
<option value="{{ $matiere->id }}">{{ $matiere->libelle }}
</option>
@endif
@endforeach
@endif
@endif
</select>
</div>
</div>
@error('matiere')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="debut_id">Heure de début</label>
<p class="control">
<input id="debut_id"
class="input is-info is-rounded
@error('debut') is-invalid @enderror"
type="time" name="debut" required />
</p>
@error('debut')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="fin_id">Heure de fin</label>
<p class="control">
<input id="fin_id"
class="input is-info is-rounded
@error('fin') is-invalid @enderror"
type="time" name="fin" required />
</p>
@error('fin')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<header class="modal-card-head">
<p class="modal-card-title">Marquez les absents</p>
</header>
<section class="modal-card-body">
<div class="content">
@foreach ($classe->eleves->where('promo', env('SCHOOL_YEAR'))->sortBy('nom') as $eleve)
<div class="panel-block is-flex is-justify-content-space-between">
<div>
<span class="panel-icon">
<i class="fas fa-user-graduate" aria-hidden="true"></i>
</span>
{{ $eleve->prenom }} {{ $eleve->nom }}
</div>
<div>
<input type="checkbox" class="checkbox_absence" value="{{ $eleve->id }}"
title="Cochez pour marquer absent">
</div>
</div>
@endforeach
</div>
</section>
<button id="submit_form_cours" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modal_cours')"
class="button is-light is-danger is-rounded">Annuler</button>
<button
onclick="get_id({{ $classe->id }}); get_classe_slug('{{ $classe->slug }}'); $('#submit_form_cours').click()"
class="button is-info is-link is-rounded">Valider</button>
</footer>
</div>
</div>
<!-- Reinscrire ========================================================= -->
<div class="modal animate__animated animate__bounce" id="modal_reinscrire">
<div onclick="closeForm('modal_reinscrire')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Réinscription</p>
<button type="button" onclick="closeForm('modal_reinscrire')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_reinscrire">
@csrf
<div class="field mb-5">
<label class="label title is-6" for="new_classe_id">Classe</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="new_classe_id" name="new_classe"
class="@error('new_classe') is-invalid
@enderror"
required>
<option value="" disabled selected>Sélectionner</option>
@foreach ($classes as $classe)
<option value="{{ $classe->id }}">{{ $classe->libelle }}</option>
@endforeach
</select>
</div>
</div>
@error('new_classe')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="new_inscription_id">Montant de l'inscription</label>
<p class="control">
<input id="new_inscription_id"
class="input input-numeral is-info is-rounded
@error('new_inscription') is-invalid @enderror"
type="text" placeholder="Inscription de l'élève" name="new_inscription" required />
</p>
@error('new_inscription')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="new_mensualite_id">Montant de la mensualité</label>
<p class="control">
<input id="new_mensualite_id"
class="input input-numeral is-info is-rounded
@error('new_mensualite') is-invalid @enderror"
type="text" placeholder="Mensualité de l'élève" name="new_mensualite" required />
</p>
@error('new_mensualite')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<button id="submit_form_reinscrire" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" class="button is-light is-danger is-rounded"
onclick="closeForm('modal_reinscrire')">Annuler</button>
<button class="button is-info is-link is-rounded"
onclick="get_eleve_id('{{ $eleve->id }}'); $('#submit_form_reinscrire').click();">Réinscrire</button>
</footer>
</div>
</div>
<!-- Factures========================================================= -->
<div class="modal animate__animated animate__bounce" id="modal_facture">
<div onclick="closeForm('modal_facture')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Générer factures</p>
<button type="button" onclick="closeForm('modal_facture')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_facture" method="POST" action="/factures/{{$classe->slug}}">
@csrf
<div class="field">
<label class="label title is-6" for="facture_month_id">Mois</label>
<div class="control mb-5">
<div class="select is-info is-rounded">
<select id="facture_month_id" name="facture_month"
class="@error('facture_month') is-invalid @enderror" required>
<option value="" disabled selected>Sélectionner</option>
<option value="Janvier">Janvier</option>
<option value="Février">Février</option>
<option value="Mars">Mars</option>
<option value="Avril">Avril</option>
<option value="Mai">Mai</option>
<option value="Juin">Juin</option>
<option value="Juillet">Juillet</option>
<option value="Août">Août</option>
<option value="Septembre">Septembre</option>
<option value="Octobre">Octobre</option>
<option value="Novembre">Novembre</option>
<option value="Décembre">Décembre</option>
</select>
</div>
</div>
@error('facture_month')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="facture_limit_id">Jour limite</label>
<p class="control">
<input id="facture_limit_id"
class="input is-info is-rounded @error('facture_limit') is-invalid @enderror" type="number"
placeholder="Exemple: 05" name="facture_limit" min="1"
max="31"
required />
</p>
@error('facture_limit')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<button formtarget="_target" id="submit_form_facture" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modal_facture')"
class="button is-light is-danger is-rounded">Annuler</button>
<button class="button is-info is-link is-rounded"
onclick="$('#submit_form_facture').click();">Générer</button>
</footer>
</div>
</div>
<!-- Supprimer Matiere========================================================= -->
<div class="modal" id="modalSuppOperation">
<div onclick="closeForm('modalSuppOperation')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Attention</p>
<button type="button" onclick="closeForm('modalSuppOperation')" class="delete" aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<p>Voulez-vous vraiment supprimer cette opération ?</p>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalSuppOeration')"
class="button is-info is-light is-rounded">NON</button>
<button class="button btn_suppr_operation is-info is-danger is-rounded">OUI</button>
</footer>
</div>
</div>
<script>
//Generer facture
$('#submit_form_facture').on('click', function(e) {
$('#form_facture').validate({
rules: {
facture_month: {
required: true,
},
facture_limit: {
required: true,
},
},
messages: {
facture_month: {
required: "Le mois est obligatoire!",
},
facture_limit: {
required: "Le jour limite de payement est obligatoire!",
},
},
/* submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/factures/{{$classe->id}}",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
facture_limit: $('#facture_limit_id').val(),
facture_month: $('#facture_month_id').val(),
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/{{$classe->slug}}');
}
},
error: function(response) {
console.log(response);
}
});
} */
})
});
</script>
<!-- Supprimer classe========================================================= -->
<div class="modal" id="modalSuppClasse">
<div onclick="closeForm('modalSuppClasse')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Attention</p>
<button type="button" onclick="closeForm('modalSuppClasse')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<p>Voulez-vous vraiment supprimer cette classe ?</p>
<p>Toutes les informations liées à cette classe seront supprimées !</p>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalSuppClasse')"
class="button is-info is-light is-rounded">NON</button>
<button class="button btn_supp_classe is-info is-danger is-rounded">OUI</button>
</footer>
</div>
</div>
<!-- Supprimer professeur========================================================= -->
<div class="modal" id="modalSuppProf">
<div onclick="closeForm('modalSuppProf')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Attention</p>
<button type="button" onclick="closeForm('modalSuppProf')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<p>Voulez-vous vraiment supprimer ce professeur et toutes les informations qui lui sont liées ?</p>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalSuppProf')"
class="button is-info is-light is-rounded">NON</button>
<button id="btn_supp" class="button is-info is-danger is-rounded">OUI</button>
</footer>
</div>
</div><script>
//Generer facture
$('#submit_form_rapport_paiement').on('click', function(e) {
$('#form_rapport_paiement').validate({
rules: {
rapport_month: {
required: true,
},
},
messages: {
rapport_month: {
required: "Le mois est obligatoire!",
},
},
})
});
</script>
<!-- Modal bulletin========================================================= -->
<div class="modal animate__animated animate__fadeInLeft" id="modalBulletin">
<div onclick="closeForm('modalBulletin')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Bulletins</p>
<button type="button" onclick="closeForm('modalBulletin')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
@if ($classe->type == "Primaire")
<div class="buttons columns mx-0 my-1 is-flex is-justify-content-center">
<a target="_blank" href="/accueil/classe/{{$classe->slug}}/bulletins/trimestre1" class="button pt-2 column is-info is-light is-rounded">Trimestre 1</a>
<a target="_blank" href="/accueil/classe/{{$classe->slug}}/bulletins/trimestre2" class="button pt-2 column is-info is-light is-rounded">Trimestre 2</a>
<a target="_blank" href="/accueil/classe/{{$classe->slug}}/bulletins/trimestre3" class="button pt-2 column is-info is-light is-rounded">Trimestre 3</a>
</div>
@else
<div class="buttons columns mx-0 my-1 is-flex is-justify-content-center">
<a target="_blank" href="/accueil/classe/{{$classe->slug}}/bulletins/semestre1" class="button pt-2 column is-info is-light is-rounded">Semestre 1</a>
<a target="_blank" href="/accueil/classe/{{$classe->slug}}/bulletins/semestre2" class="button pt-2 column is-info is-light is-rounded">Semestre 2</a>
</div>
<div class="buttons columns mx-0 my-1 is-flex is-justify-content-center">
<a target="_blank" href="/accueil/classe/{{$classe->slug}}/bulletins/trimestre1" class="button pt-2 column is-info is-light is-rounded">Trimestre 1</a>
<a target="_blank" href="/accueil/classe/{{$classe->slug}}/bulletins/trimestre2" class="button pt-2 column is-info is-light is-rounded">Trimestre 2</a>
<a target="_blank" href="/accueil/classe/{{$classe->slug}}/bulletins/trimestre3" class="button pt-2 column is-info is-light is-rounded">Trimestre 3</a>
</div>
@endif
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalBulletin')"
class="button is-info is-light is-rounded">Annuler</button>
</footer>
</div>
</div>
<!-- Modifier matiere ============================================================= -->
<div class="modal animate__animated animate__bounce" id="modalModifierMatiere">
<div onclick="closeForm('modalModifierMatiere')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Modifier matière</p>
<button type="button" onclick="closeForm('modalModifierMatiere')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_modifier_matiere">
@csrf
<div class="field">
<label class="label title is-6" for="nv_libelle_matiere_id">Libelle</label>
<p class="control">
<input id="nv_libelle_matiere_id"
class="input is-info is-rounded
@error('nv_libelle_matiere') is-invalid @enderror"
type="text" placeholder="Histoire-Géographie" name="nv_libelle_matiere" required />
</p>
@error('nv_libelle_matiere')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field mb-5">
<label class="label title is-6" for="nv_niveau_matiere_id">Niveau</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="nv_niveau_matiere_id" name="nv_niveau_matiere"
class="@error('nv_niveau_matiere') is-invalid
@enderror"
required>
<option id="value1" value="Primaire">Primaire</option>
<option id="value2" value="Secondaire">Secondaire</option>
</select>
</div>
</div>
@error('nv_niveau_matiere')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field" id="field_coef">
<label class="label title is-6" for="nv_coef_matiere_id">Barême/Coefficient</label>
<p class="control">
<input id="nv_coef_matiere_id"
class="input is-info is-rounded
@error('nv_coef_matiere') is-invalid @enderror"
type="number" placeholder="Coefficient de la matière" name="nv_coef_matiere" required />
</p>
@error('nv_coef_matiere')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<button id="btn_submit_form_modifier_matiere" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalModifierMatiere')"
class="button is-light is-danger is-rounded">Annuler</button>
<button class="button is-info is-rounded" onclick="$('#btn_submit_form_modifier_matiere').click()">Modifier
la matière</button>
</footer>
</div>
</div>
<!-- Modifier Evaluation========================================================= -->
<div class="modal animate__animated animate__bounce" id="modal_modifier_evaluation">
<div onclick="closeForm('modal_modifier_evaluation')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Modifier l'évaluation</p>
<button type="button" onclick="closeForm('modal_modifier_evaluation')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_modifier_evaluation">
@csrf
<div class="field mb-5">
<label class="label title is-6" for="nv_matiere_id">Matière</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="nv_matiere_id" name="nv_matiere"
class="@error('nv_matiere') is-invalid
@enderror"
required>
@if ($classe->type == 'Primaire')
@foreach ($matieres as $matiere)
@if ($matiere->niveau == 'Primaire')
<option value="{{ $matiere->id }}">{{ $matiere->libelle }}</option>
@endif
@endforeach
@else
@foreach ($matieres as $matiere)
@if ($matiere->niveau == 'Secondaire')
<option value="{{ $matiere->id }}">{{ $matiere->libelle }}</option>
@endif
@endforeach
@endif
</select>
</div>
</div>
@error('nv_matiere')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field mb-5">
<label class="label title is-6" for="nv_semestre_id">Trimestre/Semestre</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="nv_semestre_id" name="nv_semestre"
class="@error('nv_semestre') is-invalid
@enderror"
required>
<option value="" disabled selected>Sélectionner</option>
@if ($classe->type == 'Primaire')
<option value="1">Trimestre 1</option>
<option value="2">Trimestre 2</option>
<option value="3">Trimestre 3</option>
@else
<option value="1">Semestre 1</option>
<option value="2">Semestre 2</option>
<option value="1">Trimestre 1</option>
<option value="2">Trimestre 2</option>
<option value="3">Trimestre 3</option>
@endif
</select>
</div>
</div>
@error('nv_semestre')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="nv_date_id">Date</label>
<p class="control">
<input id="nv_date_id"
class="input is-info is-rounded
@error('nv_date') is-invalid @enderror"
type="date" name="nv_date" required />
</p>
@error('nv_date')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<button id="submit_form_modifier_evaluation" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modal_modifier_evaluation')"
class="button is-light is-danger is-rounded">Annuler</button>
<button onclick="$('#submit_form_modifier_evaluation').click()"
class="button is-info is-link is-rounded">Enregistrer</button>
</footer>
</div>
</div>
<!-- Supprimer Compte========================================================= -->
<div class="modal" id="modalSuppCompte">
<div onclick="closeForm('modalSuppCompte')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Attention</p>
<button type="button" onclick="closeForm('modalSuppCompte')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<p>Voulez-vous vraiment supprimer cet utilisateur ?</p>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalSuppCompte')"
class="button is-info is-light is-rounded">NON</button>
<button id="btn_supp_compte" class="button is-info is-danger is-rounded">OUI</button>
</footer>
</div>
</div><script>
//submit form_cours
var classe_id = 0;
function get_id(id) {
classe_id = id;
}
function getCoursId(id) {
cours_id = id;
//console.log(cours_id)
}
function getClasseLib(libelle) {
classe_libelle = libelle;
//console.log(classe_libelle)
}
function get_classe_slug(slug) {
classe_slug = slug;
}
$('#submit_form_cours').on('click', function() {
//Marque des absents
var lesAbsents = [];
var checkboxes = $('.checkbox_absence:checked')
Array.prototype.forEach.call(checkboxes, element => {
lesAbsents.push(element.value)
});
$('#form_cours').validate({
rules: {
description: {
required: true,
},
prof: {
required: true,
},
matiere: {
required: true,
},
debut: {
required: true,
},
fin: {
required: true,
},
},
messages: {
description: {
required: "La description du cours est obligatoire!",
},
prof: {
required: "Précisez le professeur!",
},
matiere: {
required: "Précisez la matière!",
},
debut: {
required: "L'heure de début est obligatoire!",
},
fin: {
required: "L'heure de fin est obligatoire!",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/classe/" + classe_id + "/ajouterCours",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
description: $('#description_id').val(),
prof: $('#prof_id').val(),
matiere: $('#matiere_id').val(),
debut: $('#debut_id').val(),
fin: $('#fin_id').val(),
classe_id: classe_id,
lesAbsents: lesAbsents,
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/' + classe_slug);
classe_id = 0;
lesAbsents = [];
classe_slug = "";
}
},
error: function(response) {
console.log(response);
}
});
}
});
});
//Suppression cours
var cours_id = 0;
var classe_libelle = "";
var classe_slug = "";
$('.supp_cours').on('click', () => {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/classe/" + classe_slug + "/coursHistory/" + cours_id + "/supprimer",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
cours_id: cours_id,
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/' + classe_slug + '/coursHistory');
cours_id = 0;
classe_libelle = "";
classe_slug = "";
}
},
error: function(response) {
console.log(response);
}
});
});
//Modifier Cours
function getOldDescrip(oldDesc) {
$('#nv_description_id').val(oldDesc);
}
function getOldProf(oldProf) {
$('#nv_prof_id option[value=' + oldProf + ']').prop('selected', true);
}
function getOldMatiere(oldMatiere) {
$('#nv_matiere_id option[value=' + oldMatiere + ']').prop('selected', true);
}
function getOldDebut(oldDebut) {
$('#nv_debut_id').val(oldDebut);
}
function getOldFin(oldFin) {
$('#nv_fin_id').val(oldFin);
}
//Modifier Cours
$('#submit_form_modifier_cours').on('click', function(e) {
$('#form_modifier_cours').validate({
rules: {
nv_description: {
required: true,
},
nv_prof: {
required: true,
},
nv_matiere: {
required: true,
},
nv_debut: {
required: true,
},
nv_fin: {
required: true,
},
},
messages: {
nv_description: {
required: "La description du cours est obligatoire!",
},
nv_prof: {
required: "Précisez le professeur!",
},
nv_matiere: {
required: "Précisez la matière!",
},
nv_debut: {
required: "L'heure de début est obligatoire!",
},
nv_fin: {
required: "L'heure de fin est obligatoire!",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/classe/" + classe_slug + "/coursHistory/" + cours_id +
"/modifier",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
cours_id: cours_id,
classe_libelle: classe_libelle,
nv_description: $('#nv_description_id').val(),
nv_prof: $('#nv_prof_id').val(),
nv_matiere: $('#nv_matiere_id').val(),
nv_debut: $('#nv_debut_id').val(),
nv_fin: $('#nv_fin_id').val(),
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/' + classe_slug +
'/coursHistory/');
cours_id = 0;
classe_libelle = "";
classe_slug = "";
}
},
error: function(response) {
console.log(response);
}
});
}
})
});
</script>
<!-- Marquez les absents -->
<div class="modal animate__animated animate__fadeInLeft" id="modal_notes">
<div onclick="closeForm('modal_notes')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Enregistrer des notes</p>
<button type="button" onclick="closeForm('modal_notes')" class="delete" aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_notes">
@csrf
<div class="field mb-5">
<label class="label title is-6" for="matiere_evaluee_id">Matière</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="matiere_evaluee_id" name="matiere"
class="@error('matiere') is-invalid @enderror" required>
<option value="" disabled selected>Sélectionner</option>
@if ($classe->type == 'Primaire')
@if (auth()->user()->role == 'professeur')
@foreach ($professeurs as $professeur)
@if (str_replace(' ', '', $professeur->telephone) == auth()->user()->nom_utilisateur)
@foreach ($professeur->matieres as $matiere)
@if ($matiere->niveau == 'Primaire')
<option value="{{ $matiere->id }}">
{{ $matiere->libelle }}</option>
@endif
@endforeach
@endif
@endforeach
@else
@foreach ($matieres as $matiere)
@if ($matiere->niveau == 'Primaire')
<option class="{{$matiere->coefficient}}" value="{{ $matiere->id }}">{{ $matiere->libelle }}
</option>
@endif
@endforeach
@endif
@else
@if (auth()->user()->role == 'professeur')
@foreach ($professeurs as $professeur)
@if (str_replace(' ', '', $professeur->telephone) == auth()->user()->nom_utilisateur)
@foreach ($professeur->matieres as $matiere)
@if ($matiere->niveau == 'Secondaire')
<option value="{{ $matiere->id }}">
{{ $matiere->libelle }}</option>
@endif
@endforeach
@endif
@endforeach
@else
@foreach ($matieres as $matiere)
@if ($matiere->niveau == 'Secondaire')
<option value="{{ $matiere->id }}">{{ $matiere->libelle }}
</option>
@endif
@endforeach
@endif
@endif
</select>
</div>
</div>
@error('matiere')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field mb-5">
<label class="label title is-6" for="type_evaluation_id">Type de Note</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="type_evaluation_id" name="type" class="@error('type') is-invalid @enderror"
required>
<option value="" disabled selected>Sélectionner</option>
@if ($classe->type == 'Primaire')
<option value="Contrôle">Contrôle</option>
<option value="Composition">Composition</option>
@else
<option value="Devoir">Devoir</option>
<option value="Examen">Examen</option>
@endif
</select>
</div>
</div>
@error('type')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field mb-5">
<label class="label title is-6" for="semestre_id">Trimestre/Semestre</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="semestre_id" name="semestre" class="@error('semestre') is-invalid @enderror"
required>
<option value="" disabled selected>Sélectionner</option>
@if ($classe->type == 'Primaire')
<option value="1">Trimestre 1</option>
<option value="2">Trimestre 2</option>
<option value="3">Trimestre 3</option>
@else
<option value="1">Semestre 1</option>
<option value="2">Semestre 2</option>
<option value="1">Trimestre 1</option>
<option value="2">Trimestre 2</option>
<option value="3">Trimestre 3</option>
@endif
</select>
</div>
</div>
@error('semestre')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="date_id">Date d'évaluation</label>
<div class="control">
<input type="date" id="date_evaluation_id" name="date"
class="input is-info is-rounded @error('date') is-invalid @enderror" required>
</div>
@error('date')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
@foreach ($classe->eleves->where('promo', env('SCHOOL_YEAR'))->sortBy('nom') as $eleve)
<div class="panel-block is-flex is-justify-content-space-between">
<div>
<span class="panel-icon">
<i class="fas fa-user-graduate" aria-hidden="true"></i>
</span>
{{ $eleve->prenom }} {{ $eleve->nom }}
</div>
<div>
<input id="{{ $eleve->id }}" min="0"
max="{{ $classe->type == 'Primaire' ? '60' : '20' }}" type="number"
class="input is-info is-rounded note_eleve"
title="{{ $classe->type == 'Primaire' ? 'Respectez le barême' : 'Entre 0 et 20' }}"
name="note{{ $eleve->id }}" placeholder="00" required>
</div>
</div>
@endforeach
<button id="submit_form_notes" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modal_notes')"
class="button is-light is-danger is-rounded">Annuler</button>
<button
onclick="recupNotes(); getClasseLibelle('{{ $classe->libelle }}'); $('#submit_form_notes').click();"
class="button is-info is-link is-rounded">Valider</button>
</footer>
</div>
</div>
<!-- Ajouter professeur ============================================================= -->
<div class="modal animate__animated animate__fadeInLeft" id="modalAjouterProf">
<div onclick="closeForm('modalAjouterProf')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Ajouter professeur</p>
<button type="button" onclick="closeForm('modalAjouterProf')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_ajouter_prof">
@csrf
<div class="field">
<label class="label title is-6" for="prenom_prof_id">Prénom</label>
<p class="control">
<input id="prenom_prof_id"
class="input is-info is-rounded
@error('prenom_prof') is-invalid @enderror"
type="text" placeholder="Papa Abdou" name="prenom_prof" required />
</p>
@error('prenom_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="nom_prof_id">Nom</label>
<p class="control">
<input id="nom_prof_id"
class="input is-info is-rounded
@error('nom_prof') is-invalid @enderror"
type="text" placeholder="Mbodji" name="nom_prof" required />
</p>
@error('nom_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="date_naissance_prof_id">Date de naissance</label>
<p class="control">
<input id="date_naissance_prof_id"
class="input is-info is-rounded
@error('date_naissance_prof') is-invalid @enderror"
type="date" placeholder="01/01/2000" name="date_naissance_prof" required />
</p>
@error('date_naissance_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="lieu_naissance_prof_id">Lieu de naissance</label>
<p class="control">
<input id="lieu_naissance_prof_id"
class="input is-info is-rounded
@error('lieu_naissance_prof') is-invalid @enderror"
type="text" placeholder="Dakar" name="lieu_naissance_prof" required />
</p>
@error('lieu_naissance_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="adresse_prof_id">Adresse</label>
<p class="control">
<input id="adresse_prof_id"
class="input is-info is-rounded
@error('adresse_prof') is-invalid @enderror"
type="text" placeholder="Cambérène Quartier Deggo" name="adresse_prof" required />
</p>
@error('adresse_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="telephone_prof_id">Téléphone</label>
<p class="control">
<input id="telephone_prof_id"
class="input input-phone is-info is-rounded
@error('telephone_prof') is-invalid @enderror"
type="tel" placeholder="77 278 22 78" name="telephone_prof" required />
</p>
@error('telephone_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="email_prof_id">Email</label>
<p class="control">
<input id="email_prof_id"
class="input is-info is-rounded
@error('email_prof') is-invalid @enderror"
type="email" placeholder="abdoumbodji1401@gmail.com" name="email_prof" required />
</p>
@error('email_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field mb-5">
<label class="label title is-6" for="niveau_prof_id">Niveau</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="niveau_prof_id" name="niveau_prof"
class="@error('niveau_prof') is-invalid @enderror" required>
<option value="" disabled selected>Sélectionner</option>
<option value="Primaire">Primaire</option>
<option value="Secondaire">Secondaire</option>
</select>
</div>
</div>
@error('niveau_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="salaire_prof_id">Salaire(mensuel/horaire)</label>
<p class="control">
<input id="salaire_prof_id"
class="input input-numeral is-info is-rounded
@error('salaire_prof') is-invalid @enderror"
type="text" placeholder="Salaire mensuel ou horaire" name="salaire_prof" required />
</p>
@error('salaire_prof')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6">Classes</label>
<div id="classes_prof_id" style="height: 10rem; overflow-y: auto;">
@foreach ($classes as $classe)
@if ($classe->type == 'Primaire')
<label class="checkbox column classe_prof_primaire is-hidden">
<input class="classe_prof" type="checkbox" value="{{$classe->id}}">
{{ $classe->libelle }}
</label>
@else
<label class="checkbox column classe_prof_secondaire is-hidden">
<input class="classe_prof" type="checkbox" value="{{$classe->id}}">
{{ $classe->libelle }}
</label>
@endif
@endforeach
</div>
</div>
<div class="field">
<label class="label title is-6" for="matieres_prof_id">Matières</label>
<div style="height: 10rem; overflow-y: auto;">
@foreach ($matieres as $matiere)
@if ($matiere->niveau == 'Primaire')
<label class="checkbox column matiere_prof_primaire is-hidden">
<input class="matiere_prof" type="checkbox" value="{{$matiere->id}}">
{{ $matiere->libelle }}
</label>
@else
<label class="checkbox column matiere_prof_secondaire is-hidden">
<input class="matiere_prof" type="checkbox" value="{{$matiere->id}}">
{{ $matiere->libelle }}
</label>
@endif
@endforeach
</div>
</div>
<button id="btn_submit_form_ajouter_prof" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalAjouterProf')"
class="button is-light is-danger is-rounded">Annuler</button>
<button onclick="$('#btn_submit_form_ajouter_prof').click()" class="button is-info is-rounded">Ajouter
le professeur</button>
</footer>
</div>
</div>
<!-- Rapport ========================================================= -->
<div class="modal animate__animated animate__fadeInLeft" id="modalRapport">
<div onclick="closeForm('modalRapport')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Période du rapport</p>
<button type="button" onclick="closeForm('modalRapport')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="formRapport">
@csrf
<div class="field">
<label class="label title is-6" for="debutId">Début</label>
<p class="control">
<input id="debutId"
class="input is-info is-rounded
@error('debut') is-invalid @enderror"
type="date" name="debut" required />
</p>
<div id="errorDebut" class="error erreur"></div>
@error('debut')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="finId">Fin</label>
<p class="control">
<input id="finId"
class="input is-info is-rounded
@error('fin') is-invalid @enderror"
type="date" name="fin" required />
</p>
<div id="errorFin" class="error erreur"></div>
@error('fin')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<button id="submitFormRapport" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalRapport')"
class="button is-light is-danger is-rounded">Annuler</button>
<button onclick="$('#submitFormRapport').click()" class="button is-info is-link is-rounded">Valider</button>
</footer>
</div>
</div>
<script>
var eval_id = 0;
var classe_libelle = "";
var classe_slug = "";
function get_classe_slug(slug) {
classe_slug = slug;
}
function get_eval_id(id) {
eval_id = id;
//console.log(id)
}
function get_classe_libelle(libelle) {
classe_libelle = libelle;
}
function getOldDate(date) {
$('#nv_date_id').val(date);
//console.log(date)
}
function getOldMatiere(matiere) {
$('#nv_matiere_id option[value=' + matiere + ']').prop('selected', true);
//console.log(matiere)
}
function getOldSemestre(semestre) {
$('#nv_semestre_id option[value=' + semestre + ']').prop('selected', true);
//console.log(matiere)
}
//Supprimer evaluation
$('.supp_eval').on('click', () => {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/classe/" + classe_slug + "/evaluationHistory/" + eval_id + "/supprimer",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
eval_id: eval_id,
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/' + classe_slug + '/evaluationHistory');
eval_id = 0;
classe_libelle = "";
classe_slug = "";
}
},
error: function(response) {
console.log(response);
}
});
});
//Modifier Evaluation
$('#submit_form_modifier_evaluation').on('click', function(e) {
$('#form_modifier_evaluation').validate({
rules: {
nv_matiere: {
required: true,
},
nv_date: {
required: true,
},
nv_semestre: {
required: true
},
},
messages: {
nv_matiere: {
required: "Précisez la matière!",
},
nv_date: {
required: "La date est obligatoire!",
},
nv_semestre: {
required: "Le semestre est obligatoire!"
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/classe/" + classe_slug + "/evaluationHistory/" +
eval_id +
"/modifier",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
eval_id: eval_id,
classe_libelle: classe_libelle,
nv_matiere: $('#nv_matiere_id').val(),
nv_date: $('#nv_date_id').val(),
nv_semestre: $('#nv_semestre_id').val(),
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/' + classe_slug +
'/evaluationHistory/');
eval_id = 0;
classe_libelle = "";
classe_slug = "";
}
},
error: function(response) {
console.log(response);
}
});
}
})
});
</script>
<!-- Modifier note========================================================= -->
<div class="modal animate__animated animate__bounce" id="modal_modifier_note">
<div onclick="closeForm('modal_modifier_note')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Modifier la note</p>
<button type="button" onclick="closeForm('modal_modifier_note')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_modifier_note">
@csrf
<div class="field">
<label class="label title is-6" for="nv_type_evaluation_id">Type</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="nv_type_evaluation_id" name="nv_type_evaluation"
class="@error('nv_type_evaluation') is-invalid @enderror" required>
<option value="" disabled selected>Sélectionner</option>
@if ($classe->type == 'Primaire')
<option value="Contrôle">Contrôle</option>
<option value="Composition">Composition</option>
@else
<option value="Devoir">Devoir</option>
<option value="Examen">Examen</option>
@endif
</select>
</div>
</div>
@error('nv_type_evaluation')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="nv_valeur_id">Valeur</label>
<p class="control">
<input id="nv_valeur_id"
class="input is-info is-rounded @error('nv_valeur') is-invalid @enderror" type="number"
placeholder="00" name="nv_valeur" min="0"
max="{{ $classe->type == 'Primaire' ? '60' : '20' }}"
title="{{ $classe->type == 'Primaire' ? 'Respectez le barême' : 'Entre 0 et 20' }}"
required />
</p>
@error('nv_valeur')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<button id="submit_form_modifier_note" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modal_modifier_note')"
class="button is-light is-danger is-rounded">Annuler</button>
<button class="button is-info is-link is-rounded"
onclick="$('#submit_form_modifier_note').click()">Enregistrer</button>
</footer>
</div>
</div>
<!-- Supprimer Payement========================================================= -->
<div class="modal" id="modalSuppPayement">
<div onclick="closeForm('modalSuppPayement')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Attention</p>
<button type="button" onclick="closeForm('modalSuppPayement')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<p>Voulez-vous vraiment supprimer ce payement ?</p>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalSuppPayement')"
class="button is-info is-light is-rounded">NON</button>
<button id="" class="button is-info is-danger is-rounded btn_supp">OUI</button>
</footer>
</div>
</div><!-- Supprimer Evaluation========================================================= -->
<div class="modal" id="modalSuppEvaluation">
<div onclick="closeForm('modalSuppEvaluation')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Attention</p>
<button type="button" onclick="closeForm('modalSuppEvaluation')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<p>Voulez-vous vraiment supprimer cette évaluation et toutes les informations qui lui sont liées ?</p>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalSuppEvaluation')"
class="button is-info is-light is-rounded">NON</button>
<button class="button supp_eval is-info is-danger is-rounded">OUI</button>
</footer>
</div>
</div><script>
var notes_eleves = []
var lesEleves = []
var classe_libelle = "";
var classe_slug = "";
function recupNotes() {
notes_eleves = []
lesEleves = []
classe_libelle = ""
Array.prototype.forEach.call($(':input.note_eleve'), element => {
notes_eleves.push((element.value));
})
Array.prototype.forEach.call($(':input.note_eleve'), element => {
lesEleves.push(parseInt(element.id, 10));
})
}
function getClasseLibelle(libelle) {
classe_libelle = libelle;
}
function get_classe_slug(slug) {
classe_slug = slug;
}
@if ($classe->type == 'Primaire')
$('#matiere_evaluee_id').on('change', function() {
let max = $('#matiere_evaluee_id option:selected').attr('class');
$('.note_eleve').attr({
'max': parseInt(max)
});
$('.note_eleve').attr({
'placeholder': "/" + parseInt(max)
})
});
@endif
//Notes
$('#submit_form_notes').on('click', function() {
$('#form_notes').validate({
rules: {
matiere: {
required: true,
},
type: {
required: true,
},
date: {
required: true,
},
semestre: {
required: true,
},
},
messages: {
matiere: {
required: "La matière est obligatoire!",
},
type: {
required: "Le type est obligatoire!",
},
date: {
required: "La date est obligatoire!",
},
semestre: {
required: "Le champ est obligatoire!",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]')
.attr('content')
}
});
$.ajax({
url: "/accueil/classe/" + classe_slug + "/enregistrerNotes",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
matiere: $('#matiere_evaluee_id').val(),
type: $('#type_evaluation_id').val(),
semestre: $('#semestre_id').val(),
date: $('#date_evaluation_id').val(),
notes: notes_eleves,
eleves: lesEleves,
classe_libelle: classe_libelle,
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/' + classe_slug);
notes_eleves = [];
classe_libelle = "";
lesEleves = [];
classe_slug = "";
}
},
error: function(response) {
console.log(response);
}
});
}
});
});
var note_id = 0;
var note_value = 0;
var note_type = "";
var eleve_id = 0;
var eleve_slug = "";
function get_note_id(id) {
note_id = id;
}
function get_note_value(value) {
$('#nv_valeur_id').val(value);
}
function get_note_type(type) {
$('#nv_type_evaluation_id option[value=' + type + ']').prop('selected', true);
}
function get_eleve_id(id) {
eleve_id = id;
}
function get_eleve_slug(slug) {
eleve_slug = slug;
}
//Supprimer note
$('.btn_supp_note').on('click', () => {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/classe/" + classe_slug + "/eleve/" + eleve_slug + "/notes/" +
note_id + "/supprimer",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
note_id: note_id,
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/' + classe_slug + '/eleve/' + eleve_slug);
note_id = 0;
classe_slug = "";
eleve_slug = "";
}
},
error: function(response) {
console.log(response);
}
});
});
function getMax(max) {
$('#nv_valeur_id').attr({
'max': parseInt(max)
});
$('#nv_valeur_id').attr({
'placeholder': "/" + parseInt(max)
});
}
//Modifier note
$('#submit_form_modifier_note').on('click', function(e) {
$('#form_modifier_note').validate({
rules: {
nv_type_evaluation: {
required: true,
},
nv_valeur: {
required: true,
},
},
messages: {
nv_type_evaluation: {
required: "Précisez le type!",
},
nv_valeur: {
required: "Précisez la valeur!",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/classe/" + classe_slug + "/eleve/" + eleve_slug +
"/notes/" +
note_id + "/modifier",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
note_id: note_id,
nv_note_type: $('#nv_type_evaluation_id').val(),
nv_note_value: $('#nv_valeur_id').val(),
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/' + classe_slug + '/eleve/' +
eleve_slug);
note_id = 0;
classe_slug = "";
eleve_slug = "";
}
},
error: function(response) {
console.log(response);
}
});
}
})
});
//Ajouter note
@if ($classe->type == 'Primaire')
$('#evaluation_id').on('change', function() {
let max = $('#evaluation_id option:selected').attr('class');
console.log(max)
$('#valeur_note_id').attr({
'max': parseInt(max)
});
$('#valeur_note_id').attr({
'placeholder': "/" + parseInt(max)
});
});
@endif
$('#submit_form_ajouter_note').on('click', function(e) {
$('#form_ajouter_note').validate({
rules: {
evaluation: {
required: true,
},
type_note: {
required: true,
},
valeur_note: {
required: true,
},
},
messages: {
evaluation: {
required: "Choisissez l'évaluation",
},
type_note: {
required: "Précisez le type!",
},
valeur_note: {
required: "Précisez la valeur!",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/classe/" + classe_slug + "/eleve/" + eleve_slug +
"/ajouterNote",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
evaluation: $('#evaluation_id').val(),
note_type: $('#type_note_id').val(),
note_value: $('#valeur_note_id').val(),
eleve: eleve_id,
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/classe/' + classe_slug + '/eleve/' +
eleve_slug);
} else {
window.location.replace(
'/accueil/classe/' + classe_slug + '/eleve/' +
eleve_slug);
}
},
error: function(response) {
console.log(response);
}
});
}
})
});
</script>
<!-- Modifier classe========================================================= -->
<div class="modal animate__animated animate__bounce" id="modal_modifier_classe">
<div onclick="closeForm('modal_modifier_classe')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Modifier classe</p>
<button type="button" onclick="closeForm('modal_modifier_classe')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_modifier_classe">
@csrf
<div class="field">
<label class="label title is-6" for="nv_libelle_id">Libellé</label>
<p class="control">
<input id="nv_libelle_id"
class="input is-info is-rounded
@error('nv_libelle') is-invalid @enderror"
type="text" placeholder="CE1 A" name="nv_libelle" required />
</p>
<div id="errorNvLibelle" class="error erreur"></div>
@error('nv_libelle')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="nv_type_id">Type</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="nv_type_id" name="nv_type"
class="@error('nv_type') is-invalid
@enderror"
required>
<option id="value_type_1" value=""></option>
<option id="value_type_2" value=""></option>
</select>
</div>
</div>
@error('nv_type')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<button id="submit_form_modifier_classe" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modal_modifier_classe')"
class="button is-light is-danger is-rounded">Annuler</button>
<button onclick="$('#submit_form_modifier_classe').click()"
class="button is-info is-link is-rounded">Modifier la
classe</button>
</footer>
</div>
</div>
<!-- nav ============================================================= -->
<nav class="navbar is-light is-fixed-top has-background-light" role="navigation" aria-label="main navigation">
<div class="navbar-brand">
@if (auth()->user()->role == 'administration' || auth()->user()->role == 'surveillant')
<a class="navbar-item" href="/accueil">
<img src="/img/upschool-favicon.png" height="28">
</a>
@else
<a class="navbar-item" href="#">
<img src="/img/upschool-favicon.png" height="28">
</a>
@endif
<a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false"
data-target="navbarBasicExample">
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
</a>
</div>
<div id="navbarBasicExample" class="navbar-menu">
@if (auth()->user()->role == 'administration' || auth()->user()->role == 'surveillant')
<div class="navbar-start">
<a href="/accueil" class="navbar-item {{ request()->is('accueil') ? 'is-active has-text-info' : '' }}">
Accueil
</a>
<a href="/accueil/professeurs"
class="navbar-item {{ request()->is('accueil/professeurs') ? 'is-active has-text-info' : '' }}">
Professeurs
</a>
<a href="/accueil/matieres"
class="navbar-item {{ request()->is('accueil/matieres') ? 'is-active has-text-info' : '' }}">
Matières
</a>
@if (auth()->user()->administrateur == 1)
<a href="/accueil/operations"
class="navbar-item {{ request()->is('accueil/operations') ? 'is-active has-text-info' : '' }}">
Transactions
</a>
<a href="/accueil/comptes"
class="navbar-item {{ request()->is('accueil/comptes') ? 'is-active has-text-info' : '' }}">
Comptes
</a>
@endif
<span id="barreRecherche" class="navbar-item recherche control has-icons-left">
<input id="rechercheNavigation" class="input is-info is-rounded" type="text"
placeholder="Rechercher un élève">
<span class="icon is-small is-left m-2">
<i class="fas fa-search"></i>
</span>
</span>
</div>
@endif
@if (auth()->user()->role == 'professeur')
@foreach ($professeurs as $professeur)
@if (str_replace(' ', '', $professeur->telephone) == auth()->user()->nom_utilisateur)
<a href="/upschool/profDashboard/{{ $professeur->slug }}"
class="navbar-item {{ request()->is('upschool/profDashboard/' . $professeur->slug) ? 'is-active has-text-info' : '' }}">
Accueil
</a>
@endif
@endforeach
@endif
<div class="navbar-end">
<div class="navbar-item">
<span class="mr-4">Année: {{ auth()->user()->current_year }}</span>
<span class="title is-6">{{ auth()->user()->prenom[0] }}.{{ auth()->user()->nom }}</span>
</div>
<div class="navbar-item">
<div class="buttons">
@if (auth()->user()->role == 'administration')
<a onclick="openForm('modalFormeleve')" class="button is-info is-rounded">
<strong>Inscrire un élève</strong>
</a>
@endif
<a href="/deconnexion" class="button is-danger is-light is-rounded">
Se deconnecter
</a>
</div>
</div>
</div>
</div>
</nav>
<span id="barreRechercheCopie"></span>
<span style="position: fixed; height: 15rem; overflow-y: auto; z-index: 9999;" class="box column is-5 is-hidden"
id="trouves"></span>
<!-- end ============================================================= -->
<script>
var cleave = new Cleave('#montant_operation_id', {
delimiter: ' ',
numeral: true,
numeralThousandsGroupStyle: 'thousand'
});
var cleave = new Cleave('#nv_montant_operation_id', {
delimiter: ' ',
numeral: true,
numeralThousandsGroupStyle: 'thousand'
});
//Fonction pour le panel tab
function openContent(evt, contentId) {
var i, tabcontent, tablinks;
tabcontent = document.getElementsByClassName("contenu-block");
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
//console.log(tabcontent[i])
}
tablinks = document.getElementsByClassName("tab");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace("is-active", "");
//console.log(tablinks[i])
}
document.getElementById(contentId).style.display = "flex";
if (evt == null) {
document.getElementById('default').className += " is-active";
} else {
evt.currentTarget.className += " is-active";
}
}
if (location.pathname == '/accueil/operations') {
openContent(event, 'tout');
}
//Ajout operation
$('#btn_submit_form_ajouter_operation').on('click', function() {
$('#form_ajouter_operation').validate({
rules: {
libelle_operation: {
required: true,
},
type_operation: {
required: true,
},
montant_operation: {
required: true,
},
description_operation: {
required: false,
}
},
messages: {
libelle_operation: {
required: "Le libellé est obligatoire!",
},
type_operation: {
required: "Le type est obligatoire!",
},
montant_operation: {
required: "Le montant est obligatoire!",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/operations/ajouterOperation",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
libelle_operation: $('#libelle_operation_id').val(),
type_operation: $('#type_operation_id').val(),
montant_operation: Number($('#montant_operation_id').val().replace(
/\s/g, '')),
description_operation: $('#description_operation_id').val(),
},
success: function(response) {
if (response == true) {
if ({{ auth()->user()->administrateur }} == 1) {
window.location.replace('/accueil/operations');
} else {
window.location.replace('/accueil');
}
}
},
error: function(response) {
console.log(response);
}
});
}
});
});
//Rapport
$('#submitFormRapport').on('click', function() {
$('#formRapport').validate({
rules: {
debut: {
required: true,
},
fin: {
required: true,
}
},
messages: {
debut: {
required: "La date de début est obligatoire!",
},
fin: {
required: "La date de fin est obligatoire!",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/operations/rapport",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
debut: $('#debutId').val(),
fin: $('#finId').val(),
},
success: function(response) {
if (response == true) {
window.open('/accueil/operations/rapport/' + $('#debutId').val() + '/' + $('#finId').val(), '_blank');
} else {
window.location.replace('/accueil/operations');
}
},
error: function(response) {
console.log(response);
}
});
}
});
});
//Recuperation des info de l'operation
var operation_id = 0;
var operation_libelle = '';
var operation_type = '';
var operation_description = '';
var montant_operation = 0;
var statut = '';
function get_id_operation(id) {
operation_id = id;
}
function get_libelle_operation(libelle) {
operation_libelle = libelle;
$('#nv_libelle_operation_id').val(operation_libelle);
}
function get_type_operation(type) {
operation_type = type;
if (operation_type == 'encaissement') {
$('#value1').val('Encaissement');
$('#value1').html('Encaissement');
$('#value2').val('depense');
$('#value2').html('Dépense');
} else {
$('#value1').val('depense');
$('#value1').html('Dépense');
$('#value2').val('encaissement');
$('#value2').html('Encaissement');
}
}
function get_montant(montant) {
montant_operation = montant;
$('#nv_montant_operation_id').val(montant_operation);
}
function get_descr(descr) {
operation_description = descr;
$('#nv_description_operation_id').val(operation_description);
}
//Modifier operation
$('#btn_submit_form_modifier_operation').on('click', function(e) {
$('#form_modifier_operation').validate({
rules: {
nv_libelle_operation: {
required: true,
},
nv_libelle_operation: {
required: true,
},
nv_montant_operation: {
required: true,
},
nv_description_operation: {
required: false
}
},
messages: {
nv_libelle_operation: {
required: "Donnez le libellé svp!",
},
nv_libelle_operation: {
required: "Précisez le type svp!",
},
nv_montant_operation: {
required: "Précisez le montant svp!",
},
},
submitHandler: function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/operations/operation/" + operation_id + "/modifier",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {
nv_libelle_operation: $('#nv_libelle_operation_id').val(),
nv_type_operation: $('#nv_type_operation_id').val(),
nv_description_operation: $('#nv_description_operation_id').val(),
nv_montant_operation: Number($('#nv_montant_operation_id').val()
.replace(/\s/g, ''))
},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/operations');
}
},
error: function(response) {
console.log('Transaction non modifiée');
}
});
}
})
});
//Supprimer operation
$('.btn_suppr_operation').on('click', () => {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/accueil/operations/operation/" + operation_id + "/supprimer",
type: "POST",
dataType: 'json',
beforeSend: function() {
$('#loader').removeClass('is-hidden')
$('*').css('pointer-events', 'none')
},
complete: function() { // Set our complete callback, adding the .hidden class and hiding the spinner.
$('#loader').addClass('is-hidden')
$('*').css('pointer-events', 'all')
},
data: {},
success: function(response) {
if (response == true) {
window.location.replace(
'/accueil/operations');
} else {
console.log('La transaction n\'est pas supprimée');
}
},
error: function(response) {
console.log(response);
}
});
});
//Get value for details operation
function get_ref_det(ref) {
$('#details_ref_operation').html(ref);
}
function get_libelle_det(libelle) {
$('#details_libelle_operation').html(libelle);
}
function get_montant_det(montant) {
$('#details_montant_operation').html(Intl.NumberFormat().format(montant));
}
function get_descr_det(descr) {
$('#details_description_operation').html(descr);
}
function get_date_det(date) {
$('#details_date_operation').html(date);
}
function get_type_det(type) {
$('#details_type_operation').html(type);
}
function get_author_det(author) {
$('#details_auteur_operation').html(author);
}
function get_update_det(update) {
$('#details_update_operation').html(update);
}
function get_statut_det(statut) {
$('#details_statut_operation').html(statut);
}
</script>
<!-- Factures========================================================= -->
<div class="modal animate__animated animate__bounce" id="modal_rapport_paiement">
<div onclick="closeForm('modal_rapport_paiement')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Générer factures</p>
<button type="button" onclick="closeForm('modal_rapport_paiement')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_rapport_paiement" method="POST" action="/rapportPaiement/{{$classe->slug}}">
@csrf
<div class="field">
<label class="label title is-6" for="facture_month_id">Mois</label>
<div class="control mb-5">
<div class="select is-info is-rounded">
<select id="rapport_month_id" name="rapport_month"
class="@error('rapport_month') is-invalid @enderror" required>
<option value="" disabled selected>Sélectionner</option>
<option value="Janvier">Janvier</option>
<option value="Février">Février</option>
<option value="Mars">Mars</option>
<option value="Avril">Avril</option>
<option value="Mai">Mai</option>
<option value="Juin">Juin</option>
<option value="Juillet">Juillet</option>
<option value="Août">Août</option>
<option value="Septembre">Septembre</option>
<option value="Octobre">Octobre</option>
<option value="Novembre">Novembre</option>
<option value="Décembre">Décembre</option>
</select>
</div>
</div>
@error('rapport_month')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<button formtarget="_target" id="submit_form_rapport_paiement" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modal_rapport_paiement')"
class="button is-light is-danger is-rounded">Annuler</button>
<button class="button is-info is-link is-rounded"
onclick="$('#submit_form_rapport_paiement').click();">Générer</button>
</footer>
</div>
</div>
<!-- Reinitialisation de mot de passe========================================================= -->
<div class="modal" id="modalReinPassword">
<div onclick="closeForm('modalReinPassword')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Attention</p>
<button type="button" onclick="closeForm('modalReinPassword')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<p>Voulez-vous vraiment réinitialiser le mot de passe ?</p>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalReinPassword')"
class="button is-info is-light is-rounded">NON</button>
<button id="btn_reinPassword" class="button is-info is-danger is-rounded" onclick="get_compte_slug('{{ $compte->slug }}')">OUI</button>
</footer>
</div>
</div>
<!-- Modifier matiere ============================================================= -->
<div class="modal animate__animated animate__bounce" id="modalModifierOperation">
<div onclick="closeForm('modalModifierOperation')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Modifier Opération</p>
<button type="button" onclick="closeForm('modalModifierOperation')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_modifier_operation">
@csrf
<div class="field">
<label class="label title is-6" for="nv_libelle_operation_id">Libelle</label>
<p class="control">
<input id="nv_libelle_operation_id"
class="input is-info is-rounded
@error('nv_libelle_operation') is-invalid @enderror"
type="text" placeholder="Libellé" name="nv_libelle_operation" required />
</p>
@error('nv_libelle_operation')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field mb-5">
<label class="label title is-6" for="nv_type_operation_id">Type</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="nv_type_operation_id" name="nv_type_operation"
class="@error('nv_type_operation') is-invalid
@enderror"
required>
<option id="value1" value="encaissement">Encaissement</option>
<option id="value2" value="depense">Dépense</option>
</select>
</div>
</div>
@error('nv_type_operation')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="nv_montant_operation_id">Montant</label>
<p class="control">
<input id="nv_montant_operation_id"
class="input-numeral input is-info is-rounded
@error('nv_montant_operation') is-invalid @enderror"
type="text" placeholder="25 000" name="nv_montant_operation" required />
</p>
@error('nv_montant_operation')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="nv_description_operation_id">Description</label>
<p class="control">
<textarea id="nv_description_operation_id"
class="textarea is-info is-rounded
@error('nv_description_operation') is-invalid @enderror"
placeholder="Description de la transaction" name="nv_description_operation" required></textarea>
</p>
@error('nv_description_operation')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<button id="btn_submit_form_modifier_operation" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalModifierOperation')"
class="button is-light is-danger is-rounded">Annuler</button>
<button class="button is-info is-rounded"
onclick="$('#btn_submit_form_modifier_operation').click()">Modifier
l'opération</button>
</footer>
</div>
</div>
<!-- Comming Soon========================================================= -->
<div class="modal" id="modalCommingSoon">
<div onclick="closeForm('modalCommingSoon')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Paiement en ligne bientôt disponible</p>
<button type="button" onclick="closeForm('modalCommingSoon')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<p>Veuillez-vous rapprocher de l'établissement pour le paiement !</p>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalCommingSoon')"
class="button is-info is-light is-rounded">OK</button>
</footer>
</div>
</div><!-- Ajouter matiere ============================================================= -->
<div class="modal animate__animated animate__fadeInLeft" id="modalAjouterMatiere">
<div onclick="closeForm('modalAjouterMatiere')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Ajouter matière</p>
<button type="button" onclick="closeForm('modalAjouterMatiere')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_ajouter_matiere">
@csrf
<div class="field">
<label class="label title is-6" for="libelle_matiere_id">Libelle</label>
<p class="control">
<input id="libelle_matiere_id"
class="input is-info is-rounded
@error('libelle_matiere') is-invalid @enderror"
type="text" placeholder="Histoire-Géographie" name="libelle_matiere" required />
</p>
@error('libelle_matiere')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field mb-5">
<label class="label title is-6" for="niveau_matiere_id">Niveau</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="niveau_matiere_id" name="niveau_matiere"
class="@error('niveau_matiere') is-invalid @enderror" required>
<option value="" disabled selected>Sélectionner</option>
<option value="Primaire">Primaire</option>
<option value="Secondaire">Secondaire</option>
</select>
</div>
</div>
@error('niveau_matiere')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field" id="field_coef">
<label class="label title is-6" for="coef_matiere_id">Barême/Coefficient</label>
<p class="control">
<input id="coef_matiere_id"
class="input is-info is-rounded
@error('coef_matiere') is-invalid @enderror"
type="number" placeholder="Barême/Coefficient de la matière" name="coef_matiere"
required />
</p>
@error('coef_matiere')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<button id="btn_submit_form_ajouter_matiere" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalAjouterMatiere')"
class="button is-light is-danger is-rounded">Annuler</button>
<button onclick="$('#btn_submit_form_ajouter_matiere').click()" class="button is-info is-rounded">Ajouter
la matière</button>
</footer>
</div>
</div>
<!-- Modifier payement========================================================= -->
<div class="modal animate__animated animate__bounce" id="modal_modifier_payement">
<div onclick="closeForm('modal_modifier_payement')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Modifier payement</p>
<button type="button" onclick="closeForm('modal_modifier_payement')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_modifier_payement">
@csrf
<div class="field">
<label class="label title is-6" for="type_payement_id">Type de payement</label>
<div class="control">
<div class="select mb-4 is-info is-rounded">
<select id="type_payement_id" name="type"
class="@error('type') is-invalid
@enderror"
disabled required>
<option id="value_type_id" value=""></option>
</select>
</div>
</div>
@error('type')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="montant_id">Montant</label>
<p class="control">
<input id="montant_id"
class="input-numeral input is-info is-rounded
@error('montant') is-invalid @enderror"
type="text" placeholder="25 000" name="montant" required />
</p>
@error('montant')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<button id="submit_form_modifier_payement" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" class="button is-light is-danger is-rounded"
onclick="closeForm('modal_modifier_payement')">Annuler</button>
<button class="button is-info is-link is-rounded"
onclick="$('#submit_form_modifier_payement').click()">Enregistrer</button>
</footer>
</div>
</div>
<!-- Ajouter transaction ============================================================= -->
<div class="modal animate__animated animate__fadeInLeft" id="modalAjouterOperation">
<div onclick="closeForm('modalAjouterOperation')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Ajouter opération</p>
<button type="button" onclick="closeForm('modalAjouterOperation')" class="delete" aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="form_ajouter_operation">
@csrf
<div class="field">
<label class="label title is-6" for="libelle_operation_id">Libelle</label>
<p class="control">
<input id="libelle_operation_id"
class="input is-info is-rounded
@error('libelle_matiere') is-invalid @enderror"
type="text" placeholder="Libellé opération" name="libelle_operation" required />
</p>
@error('libelle_operation')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field mb-5">
<label class="label title is-6" for="type_operation_id">Type</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="type_operation_id" name="type_operation"
class="@error('type_operation') is-invalid @enderror" required>
<option value="" disabled selected>Sélectionner</option>
<option value="depense">Dépense</option>
<option value="encaissement">Encaissement</option>
</select>
</div>
</div>
@error('niveau_matiere')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="montant_operation_id">Montant</label>
<p class="control">
<input id="montant_operation_id"
class="input-numeral input is-info is-rounded
@error('montant_operation') is-invalid @enderror"
type="text" placeholder="25 000" name="montant_operation" required />
</p>
@error('montant_operation')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field" id="field_coef">
<label class="label title is-6" for="description_operation_id">Description</label>
<p class="control">
<textarea id="description_operation_id"
class="textarea is-info is-rounded
@error('description_operation') is-invalid @enderror"
placeholder="Description de l'opération" name="description_operation" required></textarea>
</p>
@error('description_operation')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<button id="btn_submit_form_ajouter_operation" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalAjouterOperation')"
class="button is-light is-danger is-rounded">Annuler</button>
<button onclick="$('#btn_submit_form_ajouter_operation').click()" class="button is-info is-rounded">Ajouter
la transaction</button>
</footer>
</div>
</div>
<!-- Inscription eleve ============================================================= -->
<div class="modal animate__animated animate__fadeInLeft" id="modalFormeleve">
<div onclick="closeForm('modalFormeleve')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Inscription</p>
<button type="button" onclick="closeForm('modalFormeleve')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<form id="formeleve">
@csrf
<div class="field">
<label class="label title is-6" for="prenom_id">Prénom</label>
<p class="control">
<input id="prenom_id"
class="input is-info is-rounded
@error('prenom') is-invalid @enderror"
type="text" placeholder="Papa Abdou" name="prenom" required />
</p>
@error('prenom')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="nom_id">Nom</label>
<p class="control">
<input id="nom_id"
class="input is-info is-rounded
@error('nom') is-invalid @enderror"
type="text" placeholder="Mbodji" name="nom" required />
</p>
@error('nom')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="date_naissance_id">Date de naissance</label>
<p class="control">
<input id="date_naissance_id"
class="input is-info is-rounded
@error('date_naissance') is-invalid @enderror"
type="date" placeholder="01/01/2000" name="date_naissance" required />
</p>
@error('date_naissance')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="lieu_naissance_id">Lieu de naissance</label>
<p class="control">
<input id="lieu_naissance_id"
class="input is-info is-rounded
@error('lieu_naissance') is-invalid @enderror"
type="text" placeholder="Dakar" name="lieu_naissance" required />
</p>
@error('lieu_naissance')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="adresse_id">Adresse</label>
<p class="control">
<input id="adresse_id"
class="input is-info is-rounded
@error('adresse') is-invalid @enderror"
type="text" placeholder="Cambérène Quartier Deggo" name="adresse" required />
</p>
@error('adresse')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="tuteur_id">Prénom et Nom du tuteur</label>
<p class="control">
<input id="tuteur_id"
class="input is-info is-rounded
@error('tuteur') is-invalid @enderror"
type="text" placeholder="Abdoulaye Fall" name="tuteur" required />
</p>
@error('tuteur')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="tel_tuteur_id">Téléphone du tuteur</label>
<p class="control">
<input id="tel_tuteur_id"
class="input input-phone is-info is-rounded
@error('tel_tuteur') is-invalid @enderror"
type="tel" placeholder="77 278 22 78" name="tel_tuteur" required />
</p>
@error('tel_tuteur')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="autre_tel_id">Autre Téléphone</label>
<p class="control">
<input id="autre_tel_id"
class="input input-phone is-info is-rounded
@error('autre_tel') is-invalid @enderror"
type="tel" placeholder="77 278 22 78" name="autre_tel" />
</p>
@error('autre_tel')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field mb-5">
<label class="label title is-6" for="classe_id">Classe</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="classe_id" name="classe"
class="@error('classe') is-invalid
@enderror"
required>
<option value="" disabled selected>Sélectionner</option>
@foreach ($classes as $classe)
<option value="{{ $classe->id }}">{{ $classe->libelle }}</option>
@endforeach
</select>
</div>
</div>
@error('classe')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="inscription_id">Montant de l'inscription</label>
<p class="control">
<input id="inscription_id"
class="input input-numeral is-info is-rounded
@error('inscription') is-invalid @enderror"
type="text" placeholder="Inscription de l'élève" name="inscription" required />
</p>
@error('inscription')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field">
<label class="label title is-6" for="mensualite_id">Montant de la mensualité</label>
<p class="control">
<input id="mensualite_id"
class="input input-numeral is-info is-rounded
@error('mensualite') is-invalid @enderror"
type="text" placeholder="Mensualité de l'élève" name="mensualite" required />
</p>
@error('mensualite')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<button id="btn_submit_formeleve" hidden></button>
<button type="reset" class="btn_reset" hidden></button>
</form>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalFormeleve')"
class="button is-light is-danger is-rounded">Annuler</button>
<button onclick="$('#btn_submit_formeleve').click()" class="button is-info is-rounded">Inscrire
l'élève</button>
</footer>
</div>
</div>
<script>
//ChartJs
const labels1 = [
@foreach ($evaluations1 as $evaluation)
"{{ $evaluation->date }} . {{ str_replace('\'', ' ', $evaluation->matiere->libelle) }}",
@endForeach
];
const data1 = {
labels: labels1,
datasets: [{
label: 'Evolution 1er semestre/trimestre',
backgroundColor: 'rgb(62,142,208)',
borderColor: 'rgb(62,142,208)',
data: [
@foreach ($moyennesEvaluations1 as $moyenneEvaluation)
{{ $moyenneEvaluation }},
@endForeach
],
}]
};
const config1 = {
type: 'line',
data: data1,
options: {
scales: {
y: { // defining min and max so hiding the dataset does not change scale range
min: 0,
@if ($classe->type == 'Primaire')
max: 10
@else
max: 20
@endif
},
x: {
display: false
}
}
}
};
const chartClasse1 = new Chart(
document.getElementById('chartClasse1'),
config1
);
//
//ChartJs
const labels2 = [
@foreach ($evaluations2 as $evaluation)
"{{ $evaluation->date }} . {{ str_replace('\'', ' ', $evaluation->matiere->libelle) }}",
@endForeach
];
const data2 = {
labels: labels2,
datasets: [{
label: 'Evolution 2nd semestre/trimestre',
backgroundColor: 'rgb(62,142,208)',
borderColor: 'rgb(62,142,208)',
data: [
@foreach ($moyennesEvaluations2 as $moyenneEvaluation)
{{ $moyenneEvaluation }},
@endForeach
],
}]
};
const config2 = {
type: 'line',
data: data2,
options: {
scales: {
y: { // defining min and max so hiding the dataset does not change scale range
min: 0,
@if ($classe->type == 'Primaire')
max: 10
@else
max: 20
@endif
},
x: {
display: false
}
}
}
};
const chartClasse2 = new Chart(
document.getElementById('chartClasse2'),
config2
);
//
//ChartJs
const labels3 = [
@foreach ($evaluations3 as $evaluation)
"{{ $evaluation->date }} . {{ str_replace('\'', ' ', $evaluation->matiere->libelle) }}",
@endForeach
];
const data3 = {
labels: labels3,
datasets: [{
label: 'Evolution 3e trimestre',
backgroundColor: 'rgb(62,142,208)',
borderColor: 'rgb(62,142,208)',
data: [
@foreach ($moyennesEvaluations3 as $moyenneEvaluation)
{{ $moyenneEvaluation }},
@endForeach
],
}]
};
const config3 = {
type: 'line',
data: data3,
options: {
scales: {
y: { // defining min and max so hiding the dataset does not change scale range
min: 0,
@if ($classe->type == 'Primaire')
max: 10
@else
max: 20
@endif
},
x: {
display: false
}
}
}
};
const chartClasse3 = new Chart(
document.getElementById('chartClasse3'),
config3
);
</script>
<!-- Supprimer Note========================================================= -->
<div class="modal" id="modalSuppNote">
<div onclick="closeForm('modalSuppNote')" class="modal-background"></div>
<div class="modal-card">
<header class="modal-card-head">
<p class="modal-card-title">Attention</p>
<button type="button" onclick="closeForm('modalSuppNote')" class="delete"
aria-label="close"></button>
</header>
<section class="modal-card-body">
<div class="content">
<p>Voulez-vous vraiment supprimer cette note ?</p>
</div>
</section>
<footer class="modal-card-foot">
<button type="button" onclick="closeForm('modalSuppNote')"
class="button is-info is-light is-rounded">NON</button>
<button id="" class="button is-info is-danger is-rounded btn_supp_note">OUI</button>
</footer>
</div>
</div><script>
//Ajouter Profil
//Add file name uploaded on label
var eleve_id = 0;
var classe_libelle = "";
var classe_slug = "";
const fileInput = document.querySelector('#input-profil input[type=file]');
fileInput.onchange = () => {
if (fileInput.files.length > 0) {
const fileName = document.querySelector('.profil_file_name');
fileName.textContent = fileInput.files[0].name;
}
}
//Add validation method filesize()
$.validator.addMethod('filesize', function(value, element, param) {
return this.optional(element) || (element.files[0].size <= param)
}, 'File size must be less than {0}');
$('#btn_submit_profil').on('click', function(e) {
$('#form_profil').validate({
rules: {
profil: {
required: true,
extension: "jpg|jpeg",
filesize: 1000000,
},
},
messages: {
profil: {
required: "Aucun fichier choisi",
extension: "Ce fichier n'est pas une image",
filesize: "Fichier très lourd",
},
},
})
});
</script>
@php
header('cache-Control: no-store, no-cache, must-revalidate');
header('cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
@endphp
<!DOCTYPE html>
<html id="html" lang="{{ app()->getLocale() }}">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="csrf-token" content="{{ csrf_token() }}">
<link href="https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css"
integrity="sha384-DyZ88mC6Up2uqS4h/KRgHuoeGwBcD4Ng9SiP4dIRy0EXTlnuz47vAwmeGwVChigm" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="/css/connexion.css">
<link rel="stylesheet" href="/css/style.css">
<title>UpSchool</title>
<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk="
crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/cleave.js@1.6.0/dist/cleave.min.js"
integrity="sha256-frGUwmSN4CLLjyk5m59ECdXsDMUxTW5O6hdceNHVCJo=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/cleave.js@1.6.0/dist/addons/cleave-phone.sn.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.3/additional-methods.min.js"
integrity="sha512-XZEy8UQ9rngkxQVugAdOuBRDmJ5N4vCuNXCh8KlniZgDKTvf7zl75QBtaVG1lEhMFe2a2DuA22nZYY+qsI2/xA=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
<link rel="icon" href="/img/upschool-favicon.png">
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<style>
h1 {
font-family: 'New Century Schoolbook', 'TeX Gyre Schola', 'serif';
}
@media print {
@page {
margin-top: 0;
margin-bottom: 0;
}
}
* {
-webkit-print-color-adjust: exact !important;
/* Chrome, Safari, Edge */
color-adjust: exact !important;
/*Firefox*/
}
</style>
</head>
<body class="has-background-white my-0 is-family-monospace">
<div class="container is-flex is-flex-direction-column is-align-items-center">
<h1 class="title is-4 my-5">Rapport des transactions</h1>
<h3 class="title is-6">{{ request('debut') }} / {{ request('fin') }}</h3>
<div class="table-container">
<table class="table is-bordered is-striped is-narrow is-hoverable">
<thead>
<tr>
<th>Auteur</th>
<th>Réference</th>
<th>Libellé</th>
<th>Type</th>
<th>Montant(CFA)</th>
<th>Date</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Total Encaissements</th>
<th class="montant">{{ number_format($totalEncaiss, 0, ',', ' ') }}</th>
</tr>
<tr>
<th>Total Dépenses</th>
<th class="montant">{{ number_format($totalDep, 0, ',', ' ') }}</th>
</tr>
</tfoot>
@foreach ($operations as $operation)
<tr>
<td>{{ $operation->user != null ? $operation->user->prenom : 'UP-GROUP PAY' }} {{ $operation->user != null ? $operation->user->nom : '' }}</td>
<td>{{ $operation->reference }}</td>
<td>{{ $operation->libelle }}</td>
<td>{{ $operation->type_operation }}</td>
<td>{{ number_format($operation->montant, 0, ',', ' ') }}</td>
<td>{{ $operation->created_at->format('d/m/Y') }}</td>
</tr>
@endforeach
</table>
</div>
</div>
</body>
</html>
@extends('layout')
@section('contenu')
@include('/partials/modalModifierPayement')
@include('/partials/modalModifierNote')
@include('/partials/modalAjouterFrais')
@include('/partials/modalAjouterNote')
@include('/partials/modalConfirmSuppEleve')
@include('/partials/modalConfirmSuppNote')
@include('/partials/modalConfirmSuppPayement')
@include('/partials/modalConfirmSuppAbsence')
@include('/partials/modalCommingSoon')
@include('/partials/modalConfirmReinPassword')
@include('/partials/modalReinscrire')
<section
style="background-image: url('/img/login.png'); background-repeat: no-repeat; background-attachment: fixed; background-size: cover; min-height: 94.8vh;"
class="section mt-0 p-0 columns mx-0 mb-0 is-centered">
<article class="panel is-info column is-8">
<div class="box is-flex is-justify-content-center is-justify-content-space-around is-flex-wrap-wrap">
@if ($evaluations1->count() != 0)
<div class="box mb-4">
<canvas id="chartEleve1"></canvas>
</div>
@endif
@if ($evaluations2->count() != 0)
<div class="box mb-4">
<canvas id="chartEleve2"></canvas>
</div>
@endif
@if ($evaluations3->count() != 0)
<div class="box mb-4">
<canvas id="chartEleve3"></canvas>
</div>
@endif
</div>
<p class="panel-heading is-flex is-justify-content-space-between">
<span>{{ $eleve->prenom }} {{ $eleve->nom }}<br>
<span class="is-size-6">{{ $eleve->matricule }}</span></span>
@if (auth()->user()->role == 'administration')
<button class="button is-rounded is-info is-light"
onclick="openForm('modalReinPassword'); get_classe_slug('{{ $classe->slug }}'); get_eleve_slug('{{ $eleve->slug }}')">
<span class="icon">
<i class="fas fa-key"></i>
</span>
<span>Restaurer accès</span>
</button>
@endif
</p>
<p class="panel-tabs has-background-white is-flex is-justify-content-space-around">
<a title="Informations" id="default" onclick="openContent(event, 'info')"
class="is-size-7-mobile tab icon-text">
<span class="icon">
<i class="fas fa-info-circle"></i>
</span>
<span class="is-hidden-touch">Informations</span>
</a>
<a title="Notes d'évaluation" onclick="openContent(event, 'notes')" class="is-size-7-touch tab icon-text">
<span class="icon">
<i class="fas fa-edit"></i>
</span>
<span class="is-hidden-touch">Notes d'évaluations</span>
</a>
<a title="Frais payés" onclick="openContent(event, 'payes')" class="is-size-7-touch tab icon-text">
<span class="icon">
<i class="fas fa-money-check-alt"></i>
</span>
<span class="is-hidden-touch">Frais payés</span>
</a>
<a title="Frais impayés" onclick="openContent(event, 'impayes')" class="is-size-7-touch tab icon-text">
<span class="icon">
<i class="fas fa-money-check"></i>
</span>
<span class="is-hidden-touch">Frais impayés</span>
</a>
<a title="Absences/Retards" onclick="openContent(event, 'retard')" class="is-size-7-touch tab icon-text">
<span class="icon">
<i class="fas fa-clock"></i>
</span>
<span class="is-hidden-touch">Absences</span>
</a>
</p>
<div id="info" class="panel-block is-justify-content-center" style="background: #E4E9F2; display: none">
<div class="content column is-10">
<div class="is-flex is-justify-content-center mb-5">
<figure class="image is-128x128">
@if ($eleve->photo == null)
<img class="is-rounded" src="https://bulma.io/assets/images/placeholders/128x128.png">
@else
<img class="is-rounded" src="{{ $eleve->photo }}">
@endif
</figure>
</div>
@if (auth()->user()->role == 'administration')
<div class="columns is-centered">
<form method="post"
action="/accueil/classe/{{ $classe->slug }}/eleve/{{ $eleve->id }}/ajouterProfil"
enctype="multipart/form-data" id="form_profil">
@csrf
<div id="input-profil" class="file has-addons">
<label class="file-label">
<input id="profil_id" accept="image/jpg, image/jpeg" class="file-input"
type="file" name="profil" class="@error('profil') is-invalid @enderror">
<span class="file-cta">
<span class="file-icon">
<i class="fas fa-upload"></i>
</span>
<span class="file-label">
Changer photo
</span>
</span>
</label>
@error('profil')
<div class="help is-danger error error_profil">{{ $message }}</div>
@enderror
<button id="btn_submit_profil" class="button is-info"
onclick="get_id_eleve({{ $eleve->id }}); get_libelle_classe('{{ $classe->libelle }}'); get_classe_slug('{{ $classe->slug }}');">Valider</button>
</div>
<div class="help profil_file_name">Aucun fichier choisi</div>
</form>
</div>
@endif
<form id="info_eleve">
@csrf
<div class="columns mb-0">
<div class="field column">
<label class="label title is-6" for="prenom">Prénom</label>
<p class="control">
<input id="prenom"
class="input is-info is-rounded
@error('prenom') is-invalid @enderror"
type="text" placeholder="Papa Abdou" name="prenom" required
value="{{ $eleve->prenom }}" disabled />
</p>
@error('prenom')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field column">
<label class="label title is-6" for="nom">Nom</label>
<p class="control">
<input id="nom"
class="input is-info is-rounded
@error('nom') is-invalid @enderror"
type="text" placeholder="Mbodji" name="nom" required
value="{{ $eleve->nom }}" disabled />
</p>
@error('nom')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
</div>
<div class="columns mb-0">
<div class="field column">
<label class="label title is-6" for="date_naissance">Date de naissance</label>
<p class="control">
<input id="date_naissance"
class="input is-info is-rounded
@error('date_naissance') is-invalid @enderror"
type="date" placeholder="01/01/2000" name="date_naissance" required
value="{{ $eleve->date_naissance }}" disabled />
</p>
@error('date_naissance')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field column">
<label class="label title is-6" for="lieu_naissance">Lieu de naissance</label>
<p class="control">
<input id="lieu_naissance"
class="input is-info is-rounded
@error('lieu_naissance') is-invalid @enderror"
type="text" placeholder="Dakar" name="lieu_naissance" required
value="{{ $eleve->lieu_naissance }}" disabled />
</p>
@error('lieu_naissance')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
</div>
<div class="field">
<label class="label title is-6" for="adresse">Adresse</label>
<p class="control">
<input id="adresse"
class="input is-info is-rounded
@error('adresse') is-invalid @enderror"
type="text" placeholder="Cambérène Quartier Deggo" name="adresse" required
value="{{ $eleve->adresse }}" disabled />
</p>
@error('adresse')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="columns mb-0">
<div class="field column">
<label class="label title is-6" for="tuteur">Prénom et Nom du tuteur</label>
<p class="control">
<input id="tuteur"
class="input is-info is-rounded
@error('tuteur') is-invalid @enderror"
type="text" placeholder="Abdoulaye Mbodji" name="tuteur" required
value="{{ $eleve->tuteur }}" disabled />
</p>
@error('tuteur')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field column">
<label class="label title is-6" for="tel_tuteur">Téléphone du tuteur</label>
<p class="control">
<input id="tel_tuteur"
class="input input-phone is-info is-rounded
@error('tel_tuteur') is-invalid @enderror"
type="tel" placeholder="761412278" name="tel_tuteur" required
value="{{ $eleve->tel_tuteur }}" disabled />
</p>
@error('tel_tuteur')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field column">
<label class="label title is-6" for="autre_tel">Autre Téléphone</label>
<p class="control">
<input id="autre_tel"
class="input input-phone is-info is-rounded
@error('autre_tel') is-invalid @enderror"
type="tel" placeholder="761412278" name="autre_tel" required
value="{{ $eleve->autre_tel }}" disabled />
</p>
@error('autre_tel')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
</div>
<div class="columns mb-0">
<div class="field column">
<label class="label title is-6" for="date_inscription">Date d'inscription</label>
<p class="control">
<input id="date_inscription"
class="input is-info is-rounded
@error('date_inscription') is-invalid @enderror"
type="date" placeholder="01/01/2000" name="date_incription" required
value="{{ date('Y-m-d', strtotime($eleve->created_at)) }}" disabled />
</p>
@error('date_inscription')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field column">
<label class="label title is-6" for="classe">Classe</label>
<div class="control">
<div class="select is-info is-rounded">
<select id="classe" name="classe"
class="@error('classe') is-invalid @enderror" required disabled>
<option value="{{ $classe->id }}">{{ $classe->libelle }}</option>
@foreach ($classes as $autreClasse)
@if ($classe->id != $autreClasse->id)
<option value="{{ $autreClasse->id }}">{{ $autreClasse->libelle }}
</option>
@endif
@endforeach
</select>
</div>
</div>
@error('classe')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
</div>
<div class="columns mb-0">
<div class="field column">
<label class="label title is-6" for="inscription">Montant de l'inscription</label>
<p class="control">
<input id="inscription"
class="input input-numeral is-info is-rounded
@error('inscription') is-invalid @enderror"
type="text" placeholder="Inscription de l'élève" name="inscription" required
value="{{ $eleve->inscription }}" disabled />
</p>
@error('inscription')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
<div class="field column">
<label class="label title is-6" for="mensualite">Montant de la mensualité</label>
<p class="control">
<input id="mensualite"
class="input input-numeral is-info is-rounded
@error('mensualite') is-invalid @enderror"
type="text" placeholder="Mensualité de l'élève" name="mensualite" required
value="{{ $eleve->mensualite }}" disabled />
</p>
@error('mensualite')
<div class="help is-danger error">{{ $message }}</div>
@enderror
</div>
</div>
@if (auth()->user()->role == 'administration')
<div class="buttons is-centered">
@if (auth()->user()->administrateur == 1)
<button type="button" id="" class="button is-info is-light"
onclick="openForm('modalSuppEleve')">Supprimer</button>
@endif
<button id="btn_modif" type="button" class="button is-info is-light"
onclick="modifier('info_eleve')">Modifier</button>
<button id="btn_enr" class="button is-info is-light" disabled>Enregistrer</button>
<button id="btn_reinscr" type="button" class="button is-info is-light"
onclick="openForm('modal_reinscrire');">Réinscrire</button>
</div>
@endif
</form>
</div>
</div>
<div id="notes" class="panel-block is-justify-content-center" style="background: #E4E9F2">
<div class="content column is-10">
@if (auth()->user()->role == 'administration')
<button type="button" class="button is-info is-rounded mb-3"
onclick="get_eleve_slug('{{ $eleve->slug }}'); get_classe_slug('{{ $classe->slug }}'); openForm('modal_ajouter_note'); getClasseLibelle('{{ $classe->libelle }}'); get_eleve_id('{{ $eleve->id }}')">Ajouter
une note</button>
@endif
@if (count($eleve->notes->where('promo', auth()->user()->current_year)) == 0)
<p class="title is-6 has-text-centered">Pas encore de note</p>
@else
@foreach ($eleve->notes->where('promo', auth()->user()->current_year)->sortByDesc('id') as $note)
<div class="content box has-background-light">
@foreach ($evaluations as $evaluation)
@if ($evaluation->id == $note->evaluation_id)
@foreach ($matieres as $matiere)
@if ($matiere->id == $evaluation->matiere_id)
<div class="title is-5 mb-0">{{ $note->type }}
{{ $matiere->libelle }}
</div>
@if ($classe->type == 'Secondaire')
<div><span class="has-text-weight-bold">Semestre/Trimestre:</span>
{{ $evaluation->semestre }}</div>
@else
<div><span class="has-text-weight-bold">Trimestre:</span>
{{ $evaluation->semestre }}</div>
@endif
@endif
@endforeach
@endif
@endforeach
<div><span class="has-text-weight-bold">Date:</span>
{{ date('d/m/Y', strtotime($note->date)) }}</div>
@if ($classe->type == 'Primaire')
@foreach ($evaluations as $evaluation)
@if ($evaluation->id == $note->evaluation_id)
@foreach ($matieres as $matiere)
@if ($matiere->id == $evaluation->matiere_id)
<div
class="{{ ($note->valeur * 10) / $matiere->coefficient >= 5 ? 'has-text-success' : 'has-text-danger' }}">
@endif
@endforeach
@endif
@endforeach
@else
<div class="{{ $note->valeur >= 10 ? 'has-text-success' : 'has-text-danger' }}">
@endif
<span class="has-text-weight-bold">Note Obtenue:</span>
@if ($classe->type == 'Primaire')
@foreach ($evaluations as $evaluation)
@if ($evaluation->id == $note->evaluation_id)
@foreach ($matieres as $matiere)
@if ($matiere->id == $evaluation->matiere_id)
{{ $note->valeur }}/{{ $matiere->coefficient }}
@endif
@endforeach
@endif
@endforeach
@else
{{ $note->valeur }}/20
@endif
</div>
@if (auth()->user()->administrateur == 1)
<div class="buttons">
<button class="button is-info is-light"
onclick="get_eleve_slug('{{ $eleve->slug }}'); get_classe_slug('{{ $classe->slug }}'); get_note_id({{ $note->id }}); getClasseLibelle('{{ $classe->libelle }}'); get_eleve_id({{ $eleve->id }}); openForm('modalSuppNote')">Supprimer</button>
<button class="button is-info is-light btn_modifier_note"
onclick="get_eleve_slug('{{ $eleve->slug }}'); get_classe_slug('{{ $classe->slug }}'); get_note_id({{ $note->id }}); openForm('modal_modifier_note'); get_note_value({{ $note->valeur }}); get_note_type('{{ $note->type }}'); getClasseLibelle('{{ $classe->libelle }}'); get_eleve_id({{ $eleve->id }}); '{{ $classe->type }}' == 'Primaire' ? getMax({{ $evaluations->find($note->evaluation_id) != null ?? $matieres->find($evaluations->find($note->evaluation_id)->matiere_id)->coefficient }}) : ''">Modifier</button>
</div>
@endif
</div>
@endforeach
@endif
</div>
</div>
<div id="payes" class="panel-block is-justify-content-center" style="background: #E4E9F2">
<div class="content column is-10">
@if (auth()->user()->role == 'administration' || auth()->user()->role == 'eleve')
@if (auth()->user()->role == 'administration')
<button id="" type="button" class="button is-info is-rounded mb-3"
onclick="get_eleve_slug('{{ $eleve->slug }}'); openForm('modal_ajouter_frais')">Ajouter
frais
supplémentaires</button>
@endif
@if (count($payes) == 0)
<p class="title is-6 has-text-centered">Aucun frais payé</p>
@else
@foreach (collect($payes)->sortByDesc('updated_at') as $paye)
<div class="content box has-background-light">
@if ($paye->type == 'Inscription')
<div class="title is-4 mb-0">{{ $paye->type }}</div>
@elseif($paye->type == 'Mensualité')
<div class="title is-4 mb-0">Mensualité {{ $paye->mois }}</div>
@else
<div class="title is-4 mb-0">{{ $paye->type }}</div>
@endif
<div class="has-text-success">Versé le
{{ date('d/m/Y', strtotime($paye->updated_at)) }}
</div>
<div class="somme"><span class="has-text-weight-bold">Somme versée:</span> <span
class="somme_versee">{{ number_format($paye->montant, 0, ',', ' ') }}</span>F
CFA</div>
<div class="buttons">
@if (auth()->user()->administrateur == 1)
<a type="button" class="button is-info is-light"
onclick="get_eleve_slug('{{ $eleve->slug }}'); get_id_eleve({{ $eleve->id }}); get_libelle_classe('{{ $classe->libelle }}'); get_id_payement({{ $paye->id }}); get_classe_slug('{{ $classe->slug }}'); openForm('modalSuppPayement')">Supprimer</a>
<a type="button" class="button is-info is-light"
onclick="get_eleve_slug('{{ $eleve->slug }}'); openForm('modal_modifier_payement'); get_id_eleve({{ $eleve->id }}); get_libelle_classe('{{ $classe->libelle }}'); get_classe_slug('{{ $classe->slug }}'); get_id_payement({{ $paye->id }}); get_montant_payement({{ $paye->montant }}); get_type_payement('{{ $paye->type }}')">Modifier</a>
<a type="button" class="button btn_impaye is-info is-light"
onclick="get_eleve_slug('{{ $eleve->slug }}'); get_id_eleve({{ $eleve->id }}); get_libelle_classe('{{ $classe->libelle }}'); get_id_payement({{ $paye->id }}); get_classe_slug('{{ $classe->slug }}');">Frais
impayé</a>
@endif
@if (auth()->user()->role == 'administration')
<a target="_blank" type="button" class="button btn_recu is-info is-light"
href="/recu/{{ $classe->slug }}/{{ $eleve->slug }}/{{ $paye->id }}">Reçu</a>
@endif
</div>
</div>
@endforeach
@endif
@else
<p class="title is-6 has-text-centered">Accès interdit</p>
@endif
</div>
</div>
<div id="impayes" class="panel-block is-justify-content-center" style="background: #E4E9F2">
<div class="content column is-10">
@if (auth()->user()->role == 'administration' || auth()->user()->role == 'eleve')
@if (count($impayes) == 0)
<p class="title is-6 has-text-centered">Aucun frais impayé</p>
@else
@foreach ($impayes as $impaye)
<div class="content box has-background-light">
@if ($impaye->type == 'Inscription')
<div class="title is-4 mb-0">{{ $impaye->type }}</div>
@elseif($impaye->type == 'Mensualité')
<div class="title is-4 mb-0">Mensualité {{ $impaye->mois }}</div>
@else
<div class="title is-4 mb-0">{{ $impaye->type }}</div>
@endif
<div class="somme"><span class="has-text-weight-bold">Somme à verser:</span>
<span
class="somme_versee">{{ number_format($impaye->montant, 0, ',', ' ') }}</span>F
CFA
</div>
<div class="buttons">
@if (auth()->user()->administrateur == 1)
<a type="button" class="button is-info is-light"
onclick="get_eleve_slug('{{ $eleve->slug }}'); get_id_eleve({{ $eleve->id }}); get_libelle_classe('{{ $classe->libelle }}'); get_id_payement({{ $impaye->id }}); get_classe_slug('{{ $classe->slug }}'); openForm('modalSuppPayement')">Supprimer</a>
<a type="button" class="button is-info is-light"
onclick="get_eleve_slug('{{ $eleve->slug }}'); openForm('modal_modifier_payement'); get_id_eleve({{ $eleve->id }}); get_libelle_classe('{{ $classe->libelle }}'); get_id_payement({{ $impaye->id }}); get_classe_slug('{{ $classe->slug }}'); get_montant_payement({{ $impaye->montant }}); get_type_payement('{{ addslashes($impaye->type) }}')">Modifier</a>
@endif
@if (auth()->user()->role == 'administration')
<a type="button" class="button btn_paye is-info is-light"
onclick="get_eleve_slug('{{ $eleve->slug }}'); get_id_eleve({{ $eleve->id }}); get_libelle_classe('{{ $classe->libelle }}'); get_id_payement({{ $impaye->id }}); get_classe_slug('{{ $classe->slug }}');">Frais
payé</a>
@endif
@if (auth()->user()->role == 'eleve')
<a type="button" class="button is-info is-light"
href="/upschool/eleveDashboard/{{ $eleve->slug }}/{{ $impaye->id }}/pay">Payer
ce frais</a>
@endif
</div>
</div>
@endforeach
@endif
@else
<p class="title is-6 has-text-centered">Accès interdit</p>
@endif
</div>
</div>
<div id="retard" class="panel-block is-justify-content-center" style="background: #E4E9F2">
<div class="content column is-10">
@if (count($eleve->absences->where('promo', auth()->user()->current_year)) == 0)
<p class="title is-6 has-text-centered">Aucune absence</p>
@else
@foreach ($eleve->absences->where('promo', auth()->user()->current_year)->sortByDesc('id') as $absence)
@foreach ($cours as $unCours)
@if ($unCours->id == $absence->cours_id)
<div class="content box has-background-light">
<div class="has-text-weight-bold has-text-danger">
<span class="has-text-weight-bold">Date:</span>
{{ date('d/m/Y', strtotime($unCours->created_at)) }}
</div>
@foreach ($matieres as $matiere)
@if ($matiere->id == $unCours->matiere_id)
<div><span class="has-text-weight-bold">Matière:</span>
{{ $matiere->libelle }}</div>
@endif
@endforeach
<div><span class="has-text-weight-bold">Heure de début:</span>
{{ $unCours->debut }}
</div>
<div><span class="has-text-weight-bold">Heure de fin:</span>
{{ $unCours->fin }}
</div>
@if (auth()->user()->administrateur == 1)
<div class="mt-2">
<a type="button" class="button is-info is-light"
onclick="get_eleve_slug('{{ $eleve->slug }}'); get_classe_slug('{{ $classe->slug }}'); getClasseLibelle('{{ $classe->libelle }}'); getEleveId({{ $eleve->id }}); getAbsenceId({{ $absence->id }}); openForm('modalSuppAbsence')">Supprimer</a>
</div>
@endif
</div>
@endif
@endforeach
@endforeach
@endif
</div>
</div>
</article>
</section>
@include('/partials/eleveJs')
@include('/partials/absenceJs')
@include('/partials/notesJs')
@include('/partials/profilJs')
@endsection
require('./bootstrap');
window._ = require('lodash');
/**
* We'll load the axios HTTP library which allows us to easily issue requests
* to our Laravel back-end. This library automatically handles sending the
* CSRF token as a header based on the value of the "XSRF" token cookie.
*/
window.axios = require('axios');
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
/**
* Echo exposes an expressive API for subscribing to channels and listening
* for events that are broadcast by Laravel. Echo and event broadcasting
* allows your team to easily build robust real-time web applications.
*/
// import Echo from 'laravel-echo';
// window.Pusher = require('pusher-js');
// window.Echo = new Echo({
// broadcaster: 'pusher',
// key: process.env.MIX_PUSHER_APP_KEY,
// cluster: process.env.MIX_PUSHER_APP_CLUSTER,
// forceTLS: true
// });
<?php
namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Throwable;
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that are not reported.
*
* @var array
*/
protected $dontReport = [
//
];
/**
* A list of the inputs that are never flashed for validation exceptions.
*
* @var array
*/
protected $dontFlash = [
'current_password',
'password',
'password_confirmation',
];
/**
* Register the exception handling callbacks for the application.
*
* @return void
*/
public function register()
{
$this->reportable(function (Throwable $e) {
//
});
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Hash;
use Illuminate\Http\Request;
use App\Models\Classe;
use App\Models\Professeur;
use App\Models\Matiere;
use App\Models\Promo;
use App\Models\Utilisateur;
use Illuminate\Support\Str;
class ProfesseurController extends Controller
{
function affichage(){
$classes = Classe::all();
$professeurs = Professeur::all();
$matieres = Matiere::all();
$promos = Promo::all();
return view('professeurs',[
'classes' => $classes,
'professeurs' => $professeurs,
'matieres' =>$matieres,
'promos' => $promos
]);
}
function ajouterProf(){
$professeur = Professeur::create([
'nom' => request('nom'),
'prenom' => request('prenom'),
'date_naissance' => request('date_naissance'),
'lieu_naissance' => request('lieu_naissance'),
'adresse' => request('adresse'),
'telephone' => request('telephone'),
'email' => request('email'),
'niveau' => request('niveau'),
'salaire' => request('salaire'),
]);
$professeur->slug = Str::of($professeur->id.$professeur->telephone)->pipe('md5');
$professeur->save();
Utilisateur::create([
'nom' => request('nom'),
'prenom' => request('prenom'),
'nom_utilisateur' => str_replace(" ", "", request('telephone')),
'mot_de_passe' => Hash::make(env('DEFAULT_PASSWORD')),
'administrateur' => 0,
'role' => 'professeur',
'slug' => Str::of($professeur->telephone.$professeur->id)->pipe('md5'),
'current_year' => env('SCHOOL_YEAR')
]);
if (!empty(request('lesMatieres'))) {
foreach (request('lesMatieres') as $uneMatiere) {
$professeur->matieres()->attach($uneMatiere);
}
}
if (!empty(request('lesClasses'))) {
foreach (request('lesClasses') as $uneClasse) {
$professeur->classes()->attach($uneClasse);
}
}
flash("Le/La professeur a été bien ajouté(e) !")->success();
return response()->json(true);
}
function detailsProf() {
$professeur = Professeur::where('slug', request('prof_slug'))->firstOrFail();
$classes = Classe::all();
$matieres = Matiere::all();
$compte = Utilisateur::where('nom_utilisateur', str_replace(" ", "", $professeur->telephone))->firstOrFail();
$promos = Promo::all();
return view('detailsProf', [
'classes' => $classes,
'professeur' => $professeur,
'matieres' => $matieres,
'compte' => $compte,
'promos' => $promos
]);
}
function modifier() {
$professeur = Professeur::where('slug',request('prof_slug'))->firstOrFail();
$compte = Utilisateur::where('nom_utilisateur', str_replace(" ", "", $professeur->telephone))->firstOrFail();
$compte->nom_utilisateur = str_replace(" ", "", request('telephone_prof'));
$compte->nom = request('nom_prof');
$compte->prenom = request('prenom_prof');
$compte->save();
$professeur->prenom = request('prenom_prof');
$professeur->nom = request('nom_prof');
$professeur->date_naissance = request('date_naissance_prof');
$professeur->lieu_naissance = request('lieu_naissance_prof');
$professeur->adresse = request('adresse_prof');
$professeur->telephone = request('telephone_prof');
$professeur->email = request('email_prof');
$professeur->niveau = request('niveau_prof');
$professeur->salaire = request('salaire_prof');
$professeur->save();
$professeur->classes()->detach();
if (!empty(request('lesClasses'))) {
foreach (request('lesClasses') as $uneClasse) {
$professeur->classes()->attach($uneClasse);
}
}
$professeur->matieres()->detach();
if (!empty(request('lesMatieres'))) {
foreach (request('lesMatieres') as $uneMatiere) {
$professeur->matieres()->attach($uneMatiere);
}
}
flash("Les informations du professeur ont été mises à jour !")->success();
return response()->json(true);
}
function supprimer() {
$professeur = Professeur::where('slug',request('prof_slug'))->firstOrFail();
$utilisateurs = Utilisateur::all();
foreach ($utilisateurs as $utilisateur) {
if ($utilisateur->nom_utilisateur == str_replace(" ", "", $professeur->telephone)){
$utilisateur->delete();
}
}
$professeur->matieres()->detach();
$professeur->classes()->detach();
$professeur->delete();
flash("Le professeur ont été bien supprimé !")->error();
return response()->json(true);
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Models\Promo;
use App\Models\Classe;
use App\Models\Utilisateur;
class PromoController extends Controller
{
public static function envUpdate($key, $value)
{
$path = base_path('.env');
if (file_exists($path)) {
file_put_contents($path, str_replace(
$key . '=' . env($key), $key . '=' . $value, file_get_contents($path, FILE_APPEND | LOCK_EX)
));
}
}
public function createPromo(Request $request)
{
$promos = Promo::all();
$classes = Classe::all();
//Verify if the promo already exists
foreach ($promos as $promo) {
if ($promo->libelle == $request->libelle) {
flash("La promo existe déjà !")->error();
return response()->json(true);
}
}
$promo = new Promo();
$promo->libelle = $request->libelle;
$promo->save();
foreach ($classes as $classe) {
DB::table('classe_promo')->insert([
[
'classe_id' => $classe->id,
'promo_id' => $promo->id,
'effectif' => 0,
'matricules' => json_encode([])
]
]);
}
$user = Utilisateur::find(auth()->user()->id);
$user->current_year = $request->libelle;
$user->save();
$this->envUpdate('SCHOOL_YEAR', $request->libelle);
flash("La promo {$request->libelle} est ouvert !")->success();
return response()->json(true);
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Classe;
use App\Models\Eleve;
use App\Models\Payement;
use App\Models\Absence;
use App\Models\Cours;
use App\Models\Matiere;
use App\Models\Note;
use App\Models\Evaluation;
use App\Models\Utilisateur;
use App\Models\Professeur;
use App\Models\Promo;
use App\Models\ClassePromo;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Hash;
class EleveController extends Controller
{
function getPublicId($url)
{
// Expression régulière pour extraire le public_id de l'URL
$pattern = "/^https:\/\/res\.cloudinary\.com\/[^\/]+\/[^\/]+\/[^\/]+(?:\/[^\/]+)*\/[^\/]+\/(.+?)\.[^\/]+$/";
if (preg_match($pattern, $url, $matches)) {
return $matches[1]; // Le public_id est capturé dans le premier groupe
} else {
return null; // Retourne null si l'URL ne correspond pas au format attendu
}
}
function affichage()
{
$classes = Classe::all();
$eleve = Eleve::where('slug', request('eleve_slug'))->firstOrFail();
$payements = Payement::where('eleve_id', $eleve->id)->where('promo', auth()->user()->current_year)->get();
$classe_id = $eleve->classe_id;
$classe = Classe::where('id', $classe_id)->firstOrFail();
$payes = [];
$impayes = [];
$absences = Absence::where('eleve_id', $eleve->id)->where('promo', auth()->user()->current_year)->get();
$cours = Cours::where('promo', auth()->user()->current_year)->get();
$matieres = Matiere::all();
$notes = Note::where('eleve_id', $eleve->id)->where('promo', auth()->user()->current_year)->get();
$evaluations = Evaluation::where('classe_id', $classe->id)->where('promo', auth()->user()->current_year)->get();
$professeurs = Professeur::all();
$compte = Utilisateur::where('nom_utilisateur', $eleve->matricule)->firstOrFail();
$evaluations1 = Evaluation::where('classe_id', $classe->id)->where('semestre', 1)->where('promo', auth()->user()->current_year)->get();
$evaluations2 = Evaluation::where('classe_id', $classe->id)->where('semestre', 2)->where('promo', auth()->user()->current_year)->get();
$evaluations3 = Evaluation::where('classe_id', $classe->id)->where('semestre', 3)->where('promo', auth()->user()->current_year)->get();
$eleve->load('absences')->where('promo', auth()->user()->current_year);
$eleve->load('notes')->where('promo', auth()->user()->current_year);
$promos = Promo::all();
foreach ($payements as $payement) {
if ($payement->paye) {
$payes[] = $payement;
} else {
$impayes[] = $payement;
}
}
return view('eleve', [
'classes' => $classes,
'classe' => $classe,
'eleve' => $eleve,
'payements' => $payements,
'payes' => $payes,
'impayes' => $impayes,
'absences' => $absences,
'cours' => $cours,
'matieres' => $matieres,
'notes' => $notes,
'evaluations' => $evaluations,
'professeurs' => $professeurs,
'compte' => $compte,
'evaluations1' => $evaluations1,
'evaluations2' => $evaluations2,
'evaluations3' => $evaluations3,
'promos' => $promos
]);
}
function update()
{
$eleve = Eleve::where('slug', request('eleve_slug'))->firstOrFail();
$eleve->prenom = request('prenom');
$eleve->nom = request('nom');
$eleve->date_naissance = request('date_naissance');
$eleve->lieu_naissance = request('lieu_naissance');
$eleve->adresse = request('adresse');
$eleve->tuteur = request('tuteur');
$eleve->tel_tuteur = request('tel_tuteur');
$eleve->autre_tel = request('autre_tel');
$eleve->classe_id = request('classe_id');
$eleve->inscription = request('inscription');
$eleve->mensualite = request('mensualite');
$eleve->save();
$payements = Payement::where('eleve_id', $eleve->id)->where('promo', env('SCHOOL_YEAR'))->get();
foreach ($payements as $payement) {
if ($payement->type == 'Inscription') {
$payement->montant = request('inscription');
} else if($payement->type == 'Mensualité') {
$payement->montant = request('mensualite');
}
$payement->save();
}
flash("Les informations de l'élève ont été mises à jour !")->success();
return response()->json(true);
}
function delete()
{
$classes = Classe::all();
$classe = Classe::where('slug', request('slug'))->firstOrFail();
$eleve = Eleve::where('slug', request('eleve_slug'))->firstOrFail();
$utilisateurs = Utilisateur::all();
foreach ($utilisateurs as $utilisateur) {
if ($utilisateur->nom_utilisateur == $eleve->matricule) {
$utilisateur->delete();
}
}
$eleve->delete();
$classe->effectif = $classe->eleves->where('promo', env('SCHOOL_YEAR'))->count();
$classe->save();
$classe_promo = $classe->promos->where('libelle', env('SCHOOL_YEAR'))->first();
$classe_promo->pivot->effectif = $classe->effectif;
$matricules = json_decode($classe_promo->pivot->matricules);
unset($matricules[array_search($eleve->matricule, $matricules)]);
$classe_promo->pivot->matricules = json_encode($matricules);
$classe_promo->pivot->save();
flash("L'élève a été bien supprimé(e) !")->error();
return response()->json(true);
}
function rechercher()
{
$elevecherche = request('recherche');
$elevesTouves = Eleve::where(DB::raw('LOWER(prenom)'), 'like', '%' . strtolower($elevecherche) . '%')
->orWhere(DB::raw('LOWER(nom)'), 'like', '%' . strtolower($elevecherche) . '%')
->orWhere(DB::raw('LOWER(concat(prenom, " ", nom))'), 'like', '%' . strtolower($elevecherche) . '%')
->orWhere(DB::raw('LOWER(concat(nom, " ", prenom))'), 'like', '%' . strtolower($elevecherche) . '%')
->orWhere('matricule', 'like', '%' . $elevecherche . '%')
->orderBy('prenom')
->orderBy('nom')
->get();
return response()->json($elevesTouves);
}
function afficherEleve()
{
$eleve = Eleve::where('slug', request('eleve_slug'))->firstOrFail();
$classes = Classe::all();
$payements = Payement::where('eleve_id', $eleve->id)->where('promo', auth()->user()->current_year)->get();
$payes = [];
$impayes = [];
$classe_id = $eleve->classe_id;
$classe = Classe::where('id', $classe_id)->firstOrFail();
$absences = Absence::where('eleve_id', $eleve->id)->where('promo', auth()->user()->current_year)->get();
$cours = Cours::where('promo', auth()->user()->current_year)->get();
$matieres = Matiere::all();
$notes = Note::where('eleve_id', $eleve->id)->where('promo', auth()->user()->current_year)->get();
$evaluations = Evaluation::where('classe_id', $classe->id)->where('promo', auth()->user()->current_year)->get();
$compte = Utilisateur::where('nom_utilisateur', $eleve->matricule)->firstOrFail();
$evaluations1 = Evaluation::where('classe_id', $classe->id)->where('semestre', 1)->where('promo', auth()->user()->current_year)->get();
$evaluations2 = Evaluation::where('classe_id', $classe->id)->where('semestre', 2)->where('promo', auth()->user()->current_year)->get();
$evaluations3 = Evaluation::where('classe_id', $classe->id)->where('semestre', 3)->where('promo', auth()->user()->current_year)->get();
$eleve->load('notes')->where('promo', auth()->user()->current_year);
$eleve->load('absences')->where('promo', auth()->user()->current_year);
$promos = Promo::all();
foreach ($payements as $payement) {
if ($payement->paye) {
$payes[] = $payement;
} else {
$impayes[] = $payement;
}
}
return view('eleve', [
'classes' => $classes,
'classe' => $classe,
'eleve' => $eleve,
'payements' => $payements,
'payes' => $payes,
'impayes' => $impayes,
'absences' => $absences,
'cours' => $cours,
'matieres' => $matieres,
'notes' => $notes,
'evaluations' => $evaluations,
'compte' => $compte,
'promos' => $promos,
'evaluations1' => $evaluations1,
'evaluations2' => $evaluations2,
'evaluations3' => $evaluations3
]);
}
function changerProfil(Request $request)
{
$eleve = Eleve::where('id', request('id'))->firstOrFail();
$classe = Classe::where('slug', request('slug'))->firstOrFail();
$classes = Classe::all();
$payements = Payement::where('eleve_id', request('id'))->where('promo', auth()->user()->current_year)->get();
$payes = [];
$impayes = [];
$absences = Absence::where('eleve_id', request('id'))->where('promo', auth()->user()->current_year)->get();
$cours = Cours::where('promo', auth()->user()->current_year)->get();
$matieres = Matiere::all();
$notes = Note::where('promo', auth()->user()->current_year)->get();
$evaluations = Evaluation::where('classe_id', $classe->id)->where('promo', auth()->user()->current_year)->get();
$eleve->load('absences')->where('promo', auth()->user()->current_year);
foreach ($payements as $payement) {
if ($payement->paye) {
$payes[] = $payement;
} else {
$impayes[] = $payement;
}
}
$public_id = $this->getPublicId($eleve->photo);
if ($public_id != null) {
cloudinary()->destroy($public_id, [
"invalidate" => true
]);
}
$response = cloudinary()->upload($request->file('profil')->getRealPath())->getSecurePath();
$eleve->photo = $response;
$eleve->save();
flash("La photo a été bien ajoutée !")->success();
return back();
}
function reinscrire(Request $request)
{
$eleve = Eleve::find($request->eleve_id);
$eleve->classe_id = $request->new_classe_id;
$eleve->inscription = $request->new_inscription;
$eleve->mensualite = $request->new_mensualite;
$eleve->promo = env('SCHOOL_YEAR');
$eleve->save();
$payements = [
[
'type' => 'Inscription',
'mois' => 'Inscription',
'montant' => $request->new_inscription,
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Octobre',
'montant' => $request->new_mensualite,
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Novembre',
'montant' => $request->new_mensualite,
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Décembre',
'montant' => $request->new_mensualite,
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Janvier',
'montant' => $request->new_mensualite,
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Février',
'montant' => $request->new_mensualite,
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Mars',
'montant' => $request->new_mensualite,
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Avril',
'montant' => $request->new_mensualite,
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Mai',
'montant' => $request->new_mensualite,
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Juin',
'montant' => $request->new_mensualite,
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Juillet',
'montant' => $request->new_mensualite,
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
];
Payement::insert($payements);
$classes = Classe::all();
$classes->load('eleves')->where('promo', env('SCHOOL_YEAR'));
foreach ($classes as $classe) {
if ($classe->id == request('new_classe_id')) {
$classe->effectif = $classe->eleves->where('promo', env('SCHOOL_YEAR'))->count();
$classe->save();
$classe_promo = $classe->promos()->where('libelle', env('SCHOOL_YEAR'))->first();
$classe_promo->pivot->effectif = $classe->effectif;
$matricules = json_decode($classe_promo->pivot->matricules);
$matricules[] = $eleve->matricule;
$classe_promo->pivot->matricules = json_encode($matricules);
$classe_promo->pivot->save();
}
}
flash("L'élève a été bien réinscrit(e) !")->success();
return response()->json(true);
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Classe;
use App\Models\Eleve;
use App\Models\Payement;
use App\Models\Absence;
use App\Models\Cours;
use App\Models\Matiere;
use App\Models\Note;
use Illuminate\Support\Str;
class AbsenceController extends Controller
{
function supprimerAbsence() {
$absence = Absence::where('id', request('absence_id'))
->where('eleve_id', request('eleve_id'))->firstOrFail();
$absence->delete();
flash("L'absence a été bien supprimé !")->error();
return response()->json(true);
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use App\Models\Utilisateur;
use App\Models\Classe;
use App\Models\Promo;
use Illuminate\Support\Str;
class CreationCompteController extends Controller
{
function formulaire()
{
$classes = Classe::all();
$comptes = Utilisateur::all();
$promos = Promo::all();
return view('comptes', [
'classes' => $classes,
'comptes' => $comptes,
'promos' => $promos
]);
}
function traitement()
{
$utilisateurs = Utilisateur::all();
$user_name = request('nom_utilisateur_user');
$exist = false;
foreach ($utilisateurs as $utilisateur) {
if ($utilisateur->nom_utilisateur == $user_name) {
$exist = true;
return response()->json($exist);
}
}
if ($exist == false) {
$utilisateur = Utilisateur::create([
'nom' => request('nom_user'),
'prenom' => request('prenom_user'),
'nom_utilisateur' => request('nom_utilisateur_user'),
'mot_de_passe' => Hash::make(env('DEFAULT_PASSWORD')),
'administrateur' => request('is_admin'),
'role' => request('role_user'),
'slug' => Str::of(request('nom_utilisateur_user'))->pipe('md5'),
'current_year' => env('SCHOOL_YEAR'),
]);
flash("Le compte a été bien créé !")->success();
}
return response()->json($exist);
}
function detailsCompte()
{
$classes = Classe::all();
$compte = Utilisateur::where('slug', request('slug'))->firstOrFail();
$promos = Promo::all();
return view('detailsCompte', [
'classes' => $classes,
'compte' => $compte,
'promos' => $promos
]);
}
function modifier()
{
$utilisateur = Utilisateur::where('slug', request('slug'))->firstOrFail();
if (Hash::check(request('mot_de_passe'), $utilisateur->mot_de_passe)) {
$utilisateur->mot_de_passe = Hash::make(request('nv_mot_de_passe'));
$utilisateur->save();
flash("Le mot de passe a été bien modifié !")->success();
return response()->json(true);
}
return response()->json(false);
}
function supprimer()
{
$utilisateur = Utilisateur::where('slug', request('slug'))->firstOrFail();
$utilisateur->delete();
flash("Le compte a été bien supprimé !")->error();
return response()->json(true);
}
function reinitialisation()
{
$classes = Classe::all();
$promos = Promo::all();
return view('reinitialisation', [
'classes' => $classes,
'promos' => $promos
]);
}
function reinitialiser()
{
$utilisateur = Utilisateur::where('slug', request('user_slug'))->firstOrFail();
$utilisateur->mot_de_passe = Hash::make(request('nv_mot_de_passe'));
$utilisateur->save();
auth()->logout();
request()->session()->invalidate();
request()->session()->regenerateToken();
flash('Mot de passe changé avec succès')->success();
return response()->json(true);
}
function reinPassword()
{
$utilisateur = Utilisateur::where('slug', request('slug'))->firstOrFail();
$utilisateur->mot_de_passe = Hash::make(env('DEFAULT_PASSWORD'));
$utilisateur->save();
flash("Le mot de passe a été bien réinitialisé !")->success();
return response()->json(true);
}
}
<?php
namespace App\Http\Controllers;
use App\Models\Classe;
use App\Models\Eleve;
use App\Models\Promo;
use Illuminate\Http\Request;
class FactureController extends Controller
{
public function factures(Request $request)
{
// dd($request->classe_id);
$classe = Classe::where('slug', $request->classe_slug)->first();
$eleves = Eleve::where('classe_id', $classe->id)->where('promo', env('SCHOOL_YEAR'))->get();
$promos = Promo::all();
return view('factures', [
'classe' => $classe,
'month' => $request->facture_month,
'limit' => $request->facture_limit,
'eleves' => $eleves,
'promos' => $promos
]);
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Operation;
use App\Models\Classe;
use App\Models\Promo;
use Illuminate\Support\Str;
class OperationController extends Controller
{
public function affichage(Request $request)
{
$classes = Classe::all();
$promos = Promo::all();
$operations = Operation::where('promo', env('SCHOOL_YEAR'))->orderBy('created_at', 'desc')->limit(500)->get();
$depenses = Operation::where('type_operation', 'depense')->orderBy('created_at', 'desc')->limit(500)->get();
$encaissements = Operation::where('type_operation', 'encaissement')->orderBy('created_at', 'desc')->limit(500)->get();
return view('operations', [
'operations' => $operations,
'depenses' => $depenses,
'encaissements' => $encaissements,
'classes' => $classes,
'promos' => $promos
]);
}
function ajouterOperation()
{
$operation = Operation::create([
'reference' => Str::random(10),
'libelle' => request('libelle_operation'),
'type_operation' => request('type_operation'),
'montant' => request('montant_operation'),
'description' => request('description_operation'),
'promo' => env('SCHOOL_YEAR'),
'user_id' => auth()->user()->id,
]);
flash("La transaction a été bien ajoutée !")->success();
return response()->json(true);
}
function modifierOperation()
{
$operation = Operation::where('id', request('id'))->firstOrFail();
$operation->libelle = request('nv_libelle_operation');
$operation->type_operation = request('nv_type_operation');
$operation->description = request('nv_description_operation');
$operation->montant = request('nv_montant_operation');
$operation->save();
flash("La transaction a été bien modifiée !")->success();
return response()->json(true);
}
function supprimerOperation()
{
$operation = Operation::where('id', request('id'))->firstOrFail();
$operation->delete();
flash("La transaction a été bien supprimée !")->error();
return response()->json(true);
}
function rapport()
{
if (request('debut') > request('fin')) {
flash("La date de fin ne doit pas être inferieure à la date de debut !")->error();
return response()->json(false);
}
return response()->json(true);
}
function printRapport()
{
$totalEncaiss = 0;
$totalDep = 0;
#$operations = Operation::where('promo', env('SCHOOL_YEAR'))->where('statut', '<>', 'annule')->whereBetween('created_at', [request('debut'), request('fin')])->orderBy('created_at', 'desc')->get();
$operations = Operation::where('promo', env('SCHOOL_YEAR'))
->where(function ($query) {
$query->where('statut', '<>', 'annule')
->orWhereNull('statut');
})
->whereBetween('created_at', [request('debut'), request('fin')])
->orderBy('created_at', 'desc')
->get();
foreach ($operations as $operation) {
if ($operation->type_operation == 'encaissement') {
$totalEncaiss += $operation->montant;
} else {
$totalDep += $operation->montant;
}
}
return view('rapport', [
'operations' => $operations,
'totalEncaiss' => $totalEncaiss,
'totalDep' => $totalDep
]);
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Classe;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\DB;
use App\Models\Promo;
class CreationClasseController extends Controller
{
function formulaire()
{
//
}
function traitement()
{
$isExist = false;
$libelle = request('libelle');
$classes = Classe::all();
foreach ($classes as $classe) {
if ($classe->libelle == $libelle){
$isExist = true;
return response()->json($isExist);
}
}
if ($isExist == false){
$classe = Classe::create([
'libelle' => request('libelle'),
'type' => request('type'),
'slug' => Str::of(request('libelle'))->pipe('md5')
]);
$promo = Promo::where('libelle', env('SCHOOL_YEAR'))->first();
DB::table('classe_promo')->insert([
[
'classe_id' => $classe->id,
'promo_id' => $promo->id,
'effectif' => 0,
'matricules' => json_encode([])
]
]);
flash("La classe a été bien créée !")->success();
}
return response()->json($isExist);
}
function modifierClasse() {
$isExist = false;
$nv_libelle = request('nv_libelle');
$nv_type = request('nv_type');
$classes = Classe::all();
foreach ($classes as $classe) {
if ($classe->libelle == $nv_libelle && $classe->type == $nv_type){
$isExist = true;
return response()->json($isExist);
}
}
if ($isExist == false){
$classe = Classe::where('id', request('classe_id'))->firstOrFail();
$classe->libelle = request('nv_libelle');
$classe->type = request('nv_type');
$classe->save();
flash("La classe a été bien modifiée !")->success();
}
return response()->json($isExist);
}
function supprimerClasse() {
$classe = Classe::where('id', request('classe_id'));
$classe->delete();
flash("La classe a été bien supprimée !")->error();
return response()->json(true);
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Payement;
use App\Models\Eleve;
use App\Models\Notification;
use App\Models\Operation;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
class PayementController extends Controller
{
function traitement()
{
$payement = Payement::create([
'type' => request('type'),
'montant' => request('montant'),
'eleve_id' => request('eleve_id'),
'promo' => env('SCHOOL_YEAR')
]);
$eleve = Eleve::find(request('eleve_id'));
$payementMois = $payement->mois == 'Délai défini' ? $payement->type : $payement->mois;
$notification = Notification::create([
'message' => "Ajout frais " . request('type') . " à " . $eleve->prenom . " " . $eleve->nom . " par " . auth()->user()->prenom . " " . auth()->user()->nom,
'date' => date("Y-m-d H:i:s"),
'promo' => env('SCHOOL_YEAR')
]);
$operation = Operation::create([
'reference' => Str::random(10),
'libelle' => 'Paiement ' . $payementMois . ' ' . $eleve->prenom . ' ' . $eleve->nom,
'type_operation' => 'encaissement',
'montant' => $payement->montant,
'statut' => 'paye',
'promo' => env('SCHOOL_YEAR'),
'eleve_id' => $eleve->id,
'user_id' => auth()->user()->id,
'payment_id' => $payement->id,
'description' => 'Paiement ' . $payementMois . ' ' . $eleve->prenom . ' ' . $eleve->nom . ' ' . 'encaissé par ' . auth()->user()->prenom . ' ' . auth()->user()->nom
]);
flash("Le paiement a été bien enregistré !")->success();
return response()->json(true);
}
function payerFrais()
{
$payement = Payement::where('id', request('payement_id'))
->where('eleve_id', request('eleve_id'))
->firstOrFail();
$payement->paye = 1;
$payement->save();
$eleve = Eleve::find(request('eleve_id'));
$payementMois = $payement->mois == 'Délai défini' ? $payement->type : $payement->mois;
$notification = Notification::create([
'message' => "Enregistrement paiement " . $payement->mois . " pour " . $eleve->prenom . " " . $eleve->nom . " par " . auth()->user()->prenom . " " . auth()->user()->nom,
'date' => date("Y-m-d H:i:s"),
'promo' => env('SCHOOL_YEAR')
]);
$operation = Operation::create([
'reference' => Str::random(10),
'libelle' => ('Paiement ' . $payementMois . ' ' . $eleve->prenom . ' ' . $eleve->nom),
'type_operation' => 'encaissement',
'montant' => $payement->montant,
'statut' => 'paye',
'promo' => env('SCHOOL_YEAR'),
'eleve_id' => $eleve->id,
'user_id' => auth()->user()->id,
'payment_id' => $payement->id,
'description' => 'Paiement ' . $payementMois . ' ' . $eleve->prenom . ' ' . $eleve->nom . ' ' . 'encaissé par ' . auth()->user()->prenom . ' ' . auth()->user()->nom
]);
flash("Le paiement a été bien enregistré !")->success();
return response()->json(true);
}
function impayerFrais()
{
$payement = Payement::where('id', request('payement_id'))
->where('eleve_id', request('eleve_id'))
->firstOrFail();
$payement->paye = 0;
$payement->save();
$operation = Operation::where('payment_id', $payement->id)->first();
if ($operation != null) {
$operation->statut = 'annule';
$operation->save();
}
$eleve = Eleve::find(request('eleve_id'));
$payementMois = $payement->mois == 'Délai défini' ? $payement->type : $payement->mois;
$notification = Notification::create([
'message' => "Annulation paiement " . $payementMois . " pour " . $eleve->prenom . " " . $eleve->nom . " par " . auth()->user()->prenom . " " . auth()->user()->nom,
'date' => date("Y-m-d H:i:s"),
'promo' => env('SCHOOL_YEAR')
]);
flash("Le paiement a été bien annulé !")->error();
return response()->json(true);
}
function modifierPayement()
{
$payement = Payement::where('id', request('payement_id'))
->where('eleve_id', request('eleve_id'))
->firstOrFail();
$payement->montant = request('payement_montant');
$payement->save();
$operation = Operation::where('payment_id', $payement->id)->first();
if ($operation != null) {
$operation->montant = request('payement_montant');
$operation->save();
}
$eleve = Eleve::find(request('eleve_id'));
$notification = Notification::create([
'message' => "Modification paiement " . $payement->type . " " . $payement->mois . " pour " . $eleve->prenom . " " . $eleve->nom . " par " . auth()->user()->prenom . " " . auth()->user()->nom,
'date' => date("Y-m-d H:i:s"),
'promo' => env('SCHOOL_YEAR')
]);
flash("Le paiement a été bien modifié !")->success();
return response()->json(true);
}
function supprimerPayement()
{
$payement = Payement::where('id', request('payement_id'))
->where('eleve_id', request('eleve_id'))
->firstOrFail();
$payement->delete();
$operation = Operation::where('payment_id', $payement->id)->first();
if ($operation != null) {
$operation->statut = 'annule';
$operation->save();
}
$eleve = Eleve::find(request('eleve_id'));
$payementMois = $payement->mois == 'Délai défini' ? $payement->type : $payement->mois;
$notification = Notification::create([
'message' => "Suppression payement " . $payementMois . " pour " . $eleve->prenom . " " . $eleve->nom . " par " . auth()->user()->prenom . " " . auth()->user()->nom,
'date' => date("Y-m-d H:i:s"),
'promo' => env('SCHOOL_YEAR')
]);
flash("Le paiement a été bien supprimé !")->error();
return response()->json(true);
}
function ajouterFrais()
{
$eleve = Eleve::where('slug', request('eleve_slug'))->firstOrFail();
$frais = Payement::create([
'type' => request('type_frais'),
'mois' => 'Délai défini',
'montant' => request('montant_frais'),
'eleve_id' => $eleve->id,
'paye' => request('est_paye'),
'promo' => env('SCHOOL_YEAR')
]);
if (request('est_paye') == 1) {
$operation = Operation::create([
'reference' => Str::random(10),
'libelle' => 'Paiement ' . $frais->type . ' ' . $eleve->prenom . ' ' . $eleve->nom,
'type_operation' => 'encaissement',
'montant' => $frais->montant,
'statut' => 'paye',
'promo' => env('SCHOOL_YEAR'),
'eleve_id' => $eleve->id,
'user_id' => auth()->user()->id,
'payment_id' => $frais->id,
'description' => 'Paiement ' . $frais->type . ' ' . $eleve->prenom . ' ' . $eleve->nom . ' ' . 'encaissé par ' . auth()->user()->prenom . ' ' . auth()->user()->nom
]);
}
$notification = Notification::create([
'message' => "Ajout frais " . request('type_frais') . " pour " . $eleve->prenom . " " . $eleve->nom . " par " . auth()->user()->prenom . " " . auth()->user()->nom,
'date' => date("Y-m-d H:i:s"),
'promo' => env('SCHOOL_YEAR')
]);
flash("Ce frais a été bien ajouté !")->success();
return response()->json(true);
}
function onlinePayement()
{
$eleve = Eleve::where('slug', request('eleve_slug'))->firstOrFail();
$payement = Payement::where('id', request('payement_id'))
->where('eleve_id', $eleve->id)
->firstOrFail();
$token = "hfghd491jbcxbljhdvdjd09ajdajj";
$request_body = json_encode([
'k_id' => env('API_ID'),
'k_secret' => env('API_SECRET'),
'products' => [
[
'id' => $payement->id,
'price' => $payement->montant,
'name' => $payement->mois == 'Délai défini' ? $payement->type : $payement->mois,
'qte' => 1
]
],
'fields' => [
'eleve_slug' => $eleve->slug,
'payement_id' => $payement->id
],
'methods' => ['WAVE', 'OM'],
'is_prod' => env('IS_PROD'),
'ipn' => env('DOMAIN') . '/upschool/payupcallback',
'ipn_token' => $token,
'success' => env('DOMAIN') . '/upschool/eleveDashboard/' . $eleve->slug,
'cancel' => env('DOMAIN') . '/upschool/eleveDashboard/' . $eleve->slug,
]);
$response = Http::withBody($request_body, 'application/json')->post('https://myapiv1.upgroup-pay.com/api/v1/payment/checkout');
if ($response['status'] == 'SUCCES') {
return redirect($response['data']['redirect']);
}
flash("Le service de paiement est temporairement indisponible !")->error();
return redirect()->back();
}
function payupCallback(Request $request)
{
//if ($request->header('Authorization') == 'hfghd491jbcxbljhdvdjd09ajdajj') {
$data = $request->getContent();
$data = json_decode($data, true);
$eleve = Eleve::where('slug', $data['fields']['eleve_slug'])->firstOrFail();
$payement = Payement::where('id', $data['fields']['payement_id'])
->where('eleve_id', $eleve->id)
->firstOrFail();
$payement->paye = 1;
$payement->save();
$payementMois = $payement->mois == 'Délai défini' ? $payement->type : $payement->mois;
$notification = Notification::create([
'message' => "Enregistrement paiement " . $payementMois . " pour " . $eleve->prenom . " " . $eleve->nom . " par UPGROUP-PAY",
'date' => date("Y-m-d H:i:s"),
'promo' => env('SCHOOL_YEAR')
]);
$operation = Operation::create([
'reference' => Str::random(10),
'libelle' => ('Paiement ' . $payementMois . ' ' . $eleve->prenom . ' ' . $eleve->nom),
'type_operation' => 'encaissement',
'montant' => $payement->montant,
'statut' => 'paye',
'promo' => env('SCHOOL_YEAR'),
'eleve_id' => $eleve->id,
'user_id' => null,
'payment_id' => $payement->id,
'description' => 'Paiement ' . $payementMois . ' ' . $eleve->prenom . ' ' . $eleve->nom . ' ' . 'encaissé par UPGROUP-PAY'
]);
//}
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Classe;
use App\Models\Matiere;
use App\Models\Promo;
use Illuminate\Support\Str;
class MatiereController extends Controller
{
function affichage(){
$classes = Classe::all();
$matieres = Matiere::all();
$promos = Promo::all();
return view('matieres',[
'classes' => $classes,
'matieres' => $matieres,
'promos' => $promos
]);
}
function ajouterMatiere() {
$matiere = Matiere::create([
'libelle' => request('libelle_matiere'),
'niveau' => request('niveau_matiere'),
'coefficient' => request('coef_matiere'),
]);
flash("La matière a été bien ajoutée !")->success();
return response()->json(true);
}
function modifierMatiere() {
$matiere = Matiere::where('id', request('id'))->firstOrFail();
$matiere->libelle = request('nv_libelle_matiere');
$matiere->niveau = request('nv_niveau_matiere');
$matiere->coefficient = request('nv_coef_matiere');
$matiere->save();
flash("La matière a été bien modifiée !")->success();
return response()->json(true);
}
function supprimerMatiere() {
$matiere = Matiere::where('id', request('id'))->firstOrFail();
$matiere->delete();
flash("La matière a été bien supprimée !")->error();
return response()->json(true);
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Classe;
use App\Models\Matiere;
use App\Models\Eleve;
use App\Models\Note;
use App\Models\Professeur;
use App\Models\Cours;
use App\Models\Evaluation;
use Illuminate\Support\Str;
use App\Models\Notification;
use App\Models\Promo;
class NoteController extends Controller
{
function enregistrerNotes(){
$eleves = Eleve::all();
$lesEleves = request('eleves');
$notes_eleves = request('notes');
$i = 0;
$classe = Classe::where('libelle', request('classe_libelle'))->firstOrFail();
$classe_id = $classe->id;
$evaluation = Evaluation::create([
'classe_id' => $classe_id,
'matiere_id' => request('matiere'),
'semestre' => request('semestre'),
'date' => request('date'),
'promo' => env('SCHOOL_YEAR')
]);
foreach($lesEleves as $unEleve) {
foreach ($eleves as $eleve) {
if ($eleve->id == $unEleve){
$note = Note::create([
'type' => request('type'),
'date' => request('date'),
'evaluation_id' => $evaluation->id,
'eleve_id' => $unEleve,
'valeur' => $notes_eleves[$i],
'promo' => env('SCHOOL_YEAR')
]);
$i++;
}
}
}
$evaluation->slug = Str::of($evaluation->id)->pipe('md5');
$evaluation->save();
$notification = Notification::create([
'message' => "Ajout notes d'évaluation du " . date('d-m-Y', strtotime($evaluation->date)). " en " . $classe->libelle . " par " . auth()->user()->prenom . " " . auth()->user()->nom,
'date' => date("Y-m-d H:i:s"),
'promo' => env('SCHOOL_YEAR')
]);
flash("Les notes ont été bien enregistrées !")->success();
return response()->json(true);
}
function evaluationHistory() {
$classes = Classe::all();
$classe = Classe::where('slug', request('slug'))->firstOrFail();
$notes = Note::where('promo', auth()->user()->current_year)->get();
$professeurs = Professeur::all();
$matieres = Matiere::all();
$evaluations = Evaluation::where('classe_id', $classe->id)->where('promo', auth()->user()->current_year)->get();
$classe->load('evaluations')->where('promo', auth()->user()->current_year);
$promos = Promo::all();
return view('evaluationHistory', [
'classes' => $classes,
'classe' => $classe,
'notes' => $notes,
'professeurs' => $professeurs,
'matieres' => $matieres,
'evaluations' => $evaluations,
'promos' => $promos
]);
}
function supprimerEvaluation() {
$evaluation = Evaluation::where('id', request('eval_id'))->firstOrFail();
$evaluation->delete();
$notification = Notification::create([
'message' => "Suppression évaluation du " . date('d-m-Y', strtotime($evaluation->date)) . " par " . auth()->user()->prenom . " " . auth()->user()->nom,
'date' => date("Y-m-d H:i:s"),
'promo' => env('SCHOOL_YEAR')
]);
flash("L'évaluation a été bien supprimée !")->error();
return response()->json(true);
}
function modifierEvaluation() {
$evaluation = Evaluation::where('id', request('eval_id'))->firstOrFail();
$evaluation->date = request('nv_date');
$evaluation->matiere_id = request('nv_matiere');
$evaluation->semestre = request('nv_semestre');
$evaluation->save();
$notes = Note::where('evaluation_id', request('eval_id'))->where('promo', env('SCHOOL_YEAR'))->get();
foreach ($notes as $note) {
$note->date = request('nv_date');
$note->save();
}
$notification = Notification::create([
'message' => "Modification évaluation du " . date('d-m-Y', strtotime($evaluation->date)) . " par " . auth()->user()->prenom . " " . auth()->user()->nom,
'date' => date("Y-m-d H:i:s"),
'promo' => env('SCHOOL_YEAR')
]);
flash("L'évaluation a été bien modifiée !")->success();
return response()->json(true);
}
function detailsEvaluation() {
$evaluation = Evaluation::where('slug', request('eval_slug'))->firstOrFail();
$matieres = Matiere::all();
$classe = Classe::where('slug', request('slug'))->firstOrFail();
$eleves = Eleve::where('classe_id', $classe->id)->where('promo', auth()->user()->current_year)->get();
$classes = Classe::all();
$notes = Note::where('evaluation_id', $evaluation->id)->where('promo', auth()->user()->current_year)->get();
$professeurs = Professeur::all();
$eleves->load('notes')->where('promo', auth()->user()->current_year);
$classes->load('eleves')->where('promo', auth()->user()->current_year);
$promos = Promo::all();
return view('detailsEvaluation', [
'evaluation' => $evaluation,
'matieres' =>$matieres,
'eleves' => $eleves,
'classe' => $classe,
'classes' => $classes,
'notes' => $notes,
'professeurs' => $professeurs,
'promos' => $promos
]);
}
function supprimerNote() {
$note = Note::where('id', request('note_id'))->where('promo', env('SCHOOL_YEAR'))->firstOrFail();
$note->delete();
$notification = Notification::create([
'message' => "Suppression de note" . " par " . auth()->user()->prenom . " " . auth()->user()->nom,
'date' => date("Y-m-d H:i:s"),
'promo' => env('SCHOOL_YEAR')
]);
flash("La note a été bien supprimée !")->error();
return response()->json(true);
}
function modifierNote() {
$note = Note::where('id', request('note_id'))->where('promo', env('SCHOOL_YEAR'))->firstOrFail();
$note->type = request('nv_note_type');
$note->valeur = request('nv_note_value');
$note->save();
$notification = Notification::create([
'message' => "Modification d'une note" . " par " . auth()->user()->prenom . " " . auth()->user()->nom,
'date' => date("Y-m-d H:i:s"),
'promo' => env('SCHOOL_YEAR')
]);
flash("La note a été bien modifiée !")->success();
return response()->json(true);
}
function ajouterNote() {
$eleve = Eleve::where('id', request('eleve'))->firstOrFail();
$evaluation = Evaluation::where('id', request('evaluation'))->firstOrFail();
$notes = Note::where('eleve_id', $eleve->id)->where('promo', env('SCHOOL_YEAR'))->get();
foreach ($notes as $note) {
if ($note->evaluation_id == $evaluation->id) {
flash("L'élève a déjà une note pour cette évaluation !")->error();
return response()->json(false);
}
}
$note = Note::create([
'type' => request('note_type'),
'date' => $evaluation->date,
'evaluation_id' => $evaluation->id,
'eleve_id' => $eleve->id,
'valeur' => request('note_value'),
'promo' => env('SCHOOL_YEAR')
]);
$notification = Notification::create([
'message' => "Ajout note pour " . $eleve->prenom . " " . $eleve->nom . " par " . auth()->user()->prenom . " " . auth()->user()->nom,
'date' => date("Y-m-d H:i:s"),
'promo' => env('SCHOOL_YEAR')
]);
flash("La note a été bien ajoutée !")->success();
return response()->json(true);
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Classe;
use App\Models\Professeur;
use App\Models\Matiere;
use App\Models\Cours;
use App\Models\Absence;
use App\Models\Eleve;
use Illuminate\Support\Str;
use App\Models\Notification;
use App\Models\Promo;
use Illuminate\Support\Facades\Http;
class CoursController extends Controller
{
public function sendSms(Eleve $eleve)
{
$request_body = [
"msisdn" => ["+221" . str_replace(' ', '', $eleve->tel_tuteur)],
"content" => "Bonjour cher parent, nous vous informons que l'eleve " . $eleve->prenom . " " . $eleve->nom . " etait absent(e) entre " . request('debut') . " et " . request('fin') . ".\nCordialement, " . env('SCHOOL_NAME'),
"sender" => "UPSMS",
"app_key" => env('SMS_API_KEY'),
];
$jsonData = json_encode($request_body);
$response = Http::withBody($jsonData, 'application/json')->post('https://gateway.intechsms.sn/api/send-sms');
return $response->json();
}
function ajouterCours()
{
$cours = Cours::create([
'description' => request('description'),
'professeur_id' => request('prof'),
'matiere_id' => request('matiere'),
'classe_id' => request('classe_id'),
'debut' => request('debut'),
'fin' => request('fin'),
'promo' => env('SCHOOL_YEAR')
]);
$eleves = Eleve::all();
$lesAbsents = request('lesAbsents');
if (!empty((array)($lesAbsents))) {
foreach ($lesAbsents as $absent) {
foreach ($eleves as $eleve) {
if (intval($absent) == $eleve->id) {
$absence = Absence::create([
'eleve_id' => $eleve->id,
'cours_id' => $cours->id,
'promo' => env('SCHOOL_YEAR')
]);
try{
$this->sendSms($eleve);
} catch(\Exception $e) {}
}
}
}
}
$classe = Classe::where('id', request('classe_id'))->firstOrFail();
$matiere = Matiere::where('id', request('matiere'))->firstOrFail();
$notification = Notification::create([
'message' => "Ajout cours " . $matiere->libelle . " en " . $classe->libelle . " par " . auth()->user()->prenom . " " . auth()->user()->nom,
'date' => date("Y-m-d H:i:s"),
'promo' => env('SCHOOL_YEAR')
]);
flash("Le cours a été bien enregistré !")->success();
return response()->json(true);
}
//Affichage Historique des cours pour une classe
function coursHistory()
{
$classes = Classe::all();
$classe = Classe::where('slug', request('slug'))->firstOrFail();
$classe_id = $classe->id;
$cours = Cours::where('classe_id', $classe_id)->where('promo', auth()->user()->current_year)->get();
$matieres = Matiere::all();
$professeurs = Professeur::all();
$classes->load('cours')->where('promo', auth()->user()->current_year);
$promos = Promo::all();
return view('coursHistory', [
'classes' => $classes,
'classe' => $classe,
'cours' => $cours,
'matieres' => $matieres,
'professeurs' => $professeurs,
'promos' => $promos
]);
}
function supprimerCours()
{
$leCours = Cours::where('id', request('cours_id'))->firstOrFail();
$leCours->delete();
flash("Le cours a été bien supprimé !")->error();
return response()->json(true);
}
function modifierCours()
{
$leCours = Cours::where('id', request('cours_id'))->firstOrFail();
$leCours->description = request('nv_description');
$leCours->professeur_id = request('nv_prof');
$leCours->matiere_id = request('nv_matiere');
$leCours->debut = request('nv_debut');
$leCours->fin = request('nv_fin');
$leCours->save();
flash("Le cours a été bien modifié !")->success();
return response()->json(true);
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Classe;
use App\Models\Payement;
use App\Models\Professeur;
use App\Models\Matiere;
use App\Models\Eleve;
use App\Models\Note;
use App\Models\Evaluation;
use App\Models\Promo;
use Illuminate\Support\Str;
use Barryvdh\DomPDF\Facade\Pdf;
class ClasseController extends Controller
{
function getPublicId($url)
{
// Expression régulière pour extraire le public_id de l'URL
$pattern = "/^https:\/\/res\.cloudinary\.com\/[^\/]+\/[^\/]+\/[^\/]+\/[^\/]+\/(.+?)\.[^\/]+$/";
if (preg_match($pattern, $url, $matches)) {
return $matches[1]; // Le public_id est capturé dans le premier groupe
} else {
return null; // Retourne null si l'URL ne correspond pas au format attendu
}
}
function affichage()
{
$payements = Payement::where('promo', auth()->user()->current_year)->get();
$classes = Classe::all();
$professeurs = Professeur::all();
$matieres = Matiere::all();
$classes->load('eleves')->where('promo', auth()->user()->current_year);
foreach ($classes as $classe) {
$classe->effectif = $classe->eleves->where('promo', env('SCHOOL_YEAR'))->count();
$classe->save();
}
$classe = Classe::where('slug', request('slug'))->firstOrFail();
$lesEleves = Eleve::where('classe_id', $classe->id)->get();
$lesEvaluations = Evaluation::where('classe_id', $classe->id)->where('promo', auth()->user()->current_year)->get();
$lesNotes = [];
$moyenneClasse = 0.0;
$moyennesEvaluations1 = [];
$moyennesEvaluations2 = [];
$moyennesEvaluations3 = [];
$lesEvaluations1 = Evaluation::where('classe_id', $classe->id)->where('semestre', 1)->where('promo', auth()->user()->current_year)->get();
$lesEvaluations2 = Evaluation::where('classe_id', $classe->id)->where('semestre', 2)->where('promo', auth()->user()->current_year)->get();
$lesEvaluations3 = Evaluation::where('classe_id', $classe->id)->where('semestre', 3)->where('promo', auth()->user()->current_year)->get();
$promos = Promo::all();
$classPromos = $classe->promos;
//Calcul moyenne de la classe
$lesEleves->load('notes')->where('promo', auth()->user()->current_year);
foreach ($lesEleves as $unEleve) {
$notesEleve = $unEleve->notes->where('promo', auth()->user()->current_year);
foreach ($notesEleve as $noteEleve) {
if ($classe->type == 'Primaire') {
foreach ($lesEvaluations as $evaluation) {
if ($evaluation->id == $noteEleve->evaluation_id) {
foreach ($matieres as $matiere) {
if ($matiere->id == $evaluation->matiere_id) {
$lesNotes[] = ($noteEleve->valeur * 10) / $matiere->coefficient;
}
}
}
}
} else {
$lesNotes[] = $noteEleve->valeur;
}
}
}
if (count($lesNotes) != 0) {
$moyenneClasse = array_sum($lesNotes) / count($lesNotes);
}
//Calcul moyennes evaluations
$lesEvaluations1->load('notes')->where('promo', auth()->user()->current_year);
foreach ($lesEvaluations1 as $unEvaluation) {
$notes = $unEvaluation->notes->where('promo', auth()->user()->current_year);
$valeurs = [];
foreach ($notes as $note) {
if ($classe->type == 'Primaire') {
foreach ($lesEvaluations1 as $evaluation) {
if ($evaluation->id == $note->evaluation_id) {
foreach ($matieres as $matiere) {
if ($matiere->id == $evaluation->matiere_id) {
$valeurs[] = ($note->valeur * 10) / $matiere->coefficient;
}
}
}
}
} else {
$valeurs[] = $note->valeur;
}
}
if (count($notes) != 0) {
$moyennesEvaluations1[] = array_sum($valeurs) / count($notes);
}
}
$lesEvaluations2->load('notes')->where('promo', auth()->user()->current_year);
foreach ($lesEvaluations2 as $unEvaluation) {
$notes = $unEvaluation->notes->where('promo', auth()->user()->current_year);
$valeurs = [];
foreach ($notes as $note) {
if ($classe->type == 'Primaire') {
foreach ($lesEvaluations2 as $evaluation) {
if ($evaluation->id == $note->evaluation_id) {
foreach ($matieres as $matiere) {
if ($matiere->id == $evaluation->matiere_id) {
$valeurs[] = ($note->valeur * 10) / $matiere->coefficient;
}
}
}
}
} else {
$valeurs[] = $note->valeur;
}
}
if (count($notes) != 0) {
$moyennesEvaluations2[] = array_sum($valeurs) / count($notes);
}
}
$lesEvaluations3->load('notes')->where('promo', auth()->user()->current_year);
foreach ($lesEvaluations3 as $unEvaluation) {
$notes = $unEvaluation->notes->where('promo', auth()->user()->current_year);
$valeurs = [];
foreach ($notes as $note) {
if ($classe->type == 'Primaire') {
foreach ($lesEvaluations3 as $evaluation) {
if ($evaluation->id == $note->evaluation_id) {
foreach ($matieres as $matiere) {
if ($matiere->id == $evaluation->matiere_id) {
$valeurs[] = ($note->valeur * 10) / $matiere->coefficient;
}
}
}
}
} else {
$valeurs[] = $note->valeur;
}
}
if (count($notes) != 0) {
$moyennesEvaluations3[] = array_sum($valeurs) / count($notes);
}
}
return view('classe', [
'classe' => $classe,
'classes' => $classes,
'payements' => $payements,
'professeurs' => $professeurs,
'matieres' => $matieres,
'moyenneClasse' => $moyenneClasse,
'evaluations' => $lesEvaluations,
'evaluations1' => $lesEvaluations1,
'evaluations2' => $lesEvaluations2,
'evaluations3' => $lesEvaluations3,
'moyennesEvaluations1' => $moyennesEvaluations1,
'moyennesEvaluations2' => $moyennesEvaluations2,
'moyennesEvaluations3' => $moyennesEvaluations3,
'promos' => $promos,
'classPromos' => $classPromos
]);
}
function bulletin()
{
$periodeSemester = 0;
switch (request('periode')) {
case 'trimestre1':
$periodeSemester = 1;
break;
case 'trimestre2':
$periodeSemester = 2;
break;
case 'trimestre3':
$periodeSemester = 3;
break;
case 'semestre1':
$periodeSemester = 1;
break;
case 'semestre2':
$periodeSemester = 2;
break;
}
$periode = request('periode');
$classe = Classe::where('slug', request('slug'))->firstOrFail();
$classe->load('eleves');
$eleves = $classe->eleves->where('promo', auth()->user()->current_year);
$matieres = Matiere::all();
$bulletins = [];
$eleves->load('notes')->where('promo', auth()->user()->current_year);
$classe->load('evaluations')->where('promo', auth()->user()->current_year);
$eleves->load('absences')->where('promo', auth()->user()->current_year);
$bulletins1 = [];
$bulletins2 = [];
$moyennesAnnuelles = [];
$moyenneAnnuelle = 0.0;
$rangsMatieresEleves = [];
$rangsMatieres = [];
$promos = Promo::all();
foreach ($eleves as $eleve) {
$moyenneAnnuelle = 0.0;
$rangsMatieres = [];
$resultatsFinaux = [];
foreach ($matieres as $matiere) {
$resultatsMatiere = [];
$resultats = [];
$noteDevoirMatiere = 0.0;
$noteExamMatiere = 0.0;
$notesDevoir = [];
$notesExam = [];
if ($matiere->niveau == $classe->type) {
foreach ($classe->evaluations->where('promo', auth()->user()->current_year) as $evaluation) {
$noteDevoir = 0.0;
$noteExam = 0.0;
if ($evaluation->semestre == $periodeSemester && $evaluation->matiere_id == $matiere->id) {
foreach ($eleve->notes->where('promo', auth()->user()->current_year) as $note) {
if ($note->evaluation_id == $evaluation->id) {
if ($note->type == "Contrôle" || $note->type == "Devoir") {
$noteDevoir = $note->valeur;
$notesDevoir[] = $noteDevoir;
} else {
$noteExam = $note->valeur;
$notesExam[] = $noteExam;
}
}
}
$resultats[] = [
"matiere" => $matiere,
"noteDevoir" => $noteDevoir,
"noteExam" => $noteExam,
];
}
}
foreach ($resultats as $resultat) {
$noteDevoirMatiere += $resultat['noteDevoir'];
$noteExamMatiere += $resultat['noteExam'];
}
}
if ($noteDevoirMatiere != 0 && $noteExamMatiere != 0) {
$noteDevoirMatiere = round($noteDevoirMatiere / count($notesDevoir), 2);
$noteExamMatiere = round($noteExamMatiere / count($notesExam), 2);
$resultatsMatiere = [
"matiere" => $matiere,
"noteDevoir" => $noteDevoirMatiere,
"noteExam" => $noteExamMatiere,
"moyenne" => round(($noteDevoirMatiere + $noteExamMatiere) / 2, 2),
"coef" => $matiere->coefficient,
"moyenneCoef" => round(($noteDevoirMatiere + $noteExamMatiere) / 2, 2) * $matiere->coefficient,
];
$resultatsFinaux[] = $resultatsMatiere;
}
$rangsMatieres[] = [
"moyenneCoef" => round(($noteDevoirMatiere + $noteExamMatiere) / 2, 2) * $matiere->coefficient,
"matiere" => $matiere,
];
}
$total = 0.0;
foreach ($resultatsFinaux as $resultat) {
if ($classe->type == 'Primaire') {
$total = $total + $resultat['moyenne'];
} else {
$total = $total + $resultat['moyenneCoef'];
}
}
$laMoyenne = 0.0;
$sommeCoef = 0;
foreach ($resultatsFinaux as $resultat) {
$sommeCoef = $sommeCoef + $resultat['coef'];
}
if ($sommeCoef != 0) {
if ($classe->type == 'Primaire') {
$laMoyenne = round(($total * 10) / $sommeCoef, 2);
} else {
$laMoyenne = round($total / $sommeCoef, 2);
}
} else {
$laMoyenne = 0.0;
}
$moyenneAnnuelle = $moyenneAnnuelle + $laMoyenne;
$bulletins[] = [
'laMoyenne' => $laMoyenne,
'resultats' => $resultatsFinaux,
'eleve' => $eleve,
'total' => $total,
];
arsort($rangsMatieres);
$rangsMatieresEleves[] = [
'rangsMatieres' => $rangsMatieres,
'eleve' => $eleve
];
if (request('periode') == 'semestre2') {
$periodeSemester1 = 1;
$resultatsFinaux1 = [];
foreach ($matieres as $matiere) {
$resultats1 = [];
$noteDevoirMatiere1 = 0.0;
$noteExamMatiere1 = 0.0;
$notesDevoir1 = [];
$notesExam1 = [];
if ($matiere->niveau == $classe->type) {
foreach ($classe->evaluations->where('promo', auth()->user()->current_year) as $evaluation) {
$noteDevoir1 = 0.0;
$noteExam1 = 0.0;
if ($evaluation->semestre == $periodeSemester1 && $evaluation->matiere_id == $matiere->id) {
foreach ($eleve->notes->where('promo', auth()->user()->current_year) as $note) {
if ($note->evaluation_id == $evaluation->id) {
if ($note->type == "Contrôle" || $note->type == "Devoir") {
$noteDevoir1 = $note->valeur;
$notesDevoir1[] = $noteDevoir1;
} else {
$noteExam1 = $note->valeur;
$notesExam1[] = $noteExam1;
}
}
}
$resultats1[] = [
"matiere" => $matiere,
"noteDevoir" => $noteDevoir1,
"noteExam" => $noteExam1,
];
}
}
foreach ($resultats1 as $resultat) {
$noteDevoirMatiere1 += $resultat['noteDevoir'];
$noteExamMatiere1 += $resultat['noteExam'];
}
}
if ($noteDevoirMatiere1 != 0 && $noteExamMatiere1 != 0) {
$noteDevoirMatiere1 = round($noteDevoirMatiere1 / count($notesDevoir1), 2);
$noteExamMatiere1 = round($noteExamMatiere1 / count($notesExam1), 2);
$resultatsMatiere1 = [
"matiere" => $matiere,
"noteDevoir" => $noteDevoirMatiere1,
"noteExam" => $noteExamMatiere1,
"moyenne" => round(($noteDevoirMatiere1 + $noteExamMatiere1) / 2, 2),
"coef" => $matiere->coefficient,
"moyenneCoef" => round(($noteDevoirMatiere1 + $noteExamMatiere1) / 2, 2) * $matiere->coefficient,
];
$resultatsFinaux1[] = $resultatsMatiere1;
}
}
$total1 = 0.0;
foreach ($resultatsFinaux1 as $resultat) {
$total1 = $total1 + $resultat['moyenneCoef'];
}
$laMoyenne1 = 0.0;
$sommeCoef1 = 0;
foreach ($resultatsFinaux1 as $resultat) {
$sommeCoef1 = $sommeCoef1 + $resultat['coef'];
}
if ($sommeCoef1 != 0) {
if ($classe->type == 'Primaire') {
$laMoyenne1 = round(($total1 * 10) / $sommeCoef1, 2);
} else {
$laMoyenne1 = round($total1 / $sommeCoef1, 2);
}
} else {
$laMoyenne1 = 0.0;
}
$moyenneAnnuelle = $moyenneAnnuelle + $laMoyenne1;
$moyenneAnnuelle = round($moyenneAnnuelle / 2, 2);
$moyennesAnnuelles[] = [
'moyenneAnnuelle' => $moyenneAnnuelle,
'eleve' => $eleve
];
$bulletins1[] = [
'laMoyenne' => $laMoyenne1,
'resultats' => $resultatsFinaux1,
'eleve' => $eleve,
'total' => $total1,
];
}
if (request('periode') == 'trimestre3') {
$periodetrimestre1 = 1;
$resultatsFinaux1 = [];
foreach ($matieres as $matiere) {
$resultats1 = [];
$noteDevoirMatiere1 = 0.0;
$noteExamMatiere1 = 0.0;
$notesDevoir1 = [];
$notesExam1 = [];
if ($matiere->niveau == $classe->type) {
foreach ($classe->evaluations->where('promo', auth()->user()->current_year) as $evaluation) {
$noteDevoir1 = 0.0;
$noteExam1 = 0.0;
if ($evaluation->semestre == $periodetrimestre1 && $evaluation->matiere_id == $matiere->id) {
foreach ($eleve->notes->where('promo', auth()->user()->current_year) as $note) {
if ($note->evaluation_id == $evaluation->id) {
if ($note->type == "Contrôle" || $note->type == "Devoir") {
$noteDevoir1 = $note->valeur;
$notesDevoir1[] = $noteDevoir1;
} else {
$noteExam1 = $note->valeur;
$notesExam1[] = $noteExam1;
}
}
}
$resultats1[] = [
"matiere" => $matiere,
"noteDevoir" => $noteDevoir1,
"noteExam" => $noteExam1,
];
}
}
foreach ($resultats1 as $resultat) {
$noteDevoirMatiere1 += $resultat['noteDevoir'];
$noteExamMatiere1 += $resultat['noteExam'];
}
}
if ($noteDevoirMatiere1 != 0 && $noteExamMatiere1 != 0) {
$noteDevoirMatiere1 = round($noteDevoirMatiere1 / count($notesDevoir1), 2);
$noteExamMatiere1 = round($noteExamMatiere1 / count($notesExam1), 2);
$resultatsMatiere1 = [
"matiere" => $matiere,
"noteDevoir" => $noteDevoirMatiere1,
"noteExam" => $noteExamMatiere1,
"moyenne" => round(($noteDevoirMatiere1 + $noteExamMatiere1) / 2, 2),
"coef" => $matiere->coefficient,
"moyenneCoef" => round(($noteDevoirMatiere1 + $noteExamMatiere1) / 2, 2) * $matiere->coefficient,
];
$resultatsFinaux1[] = $resultatsMatiere1;
}
}
$total1 = 0.0;
foreach ($resultatsFinaux1 as $resultat) {
$total1 = $total1 + $resultat['moyenneCoef'];
}
$laMoyenne1 = 0.0;
$sommeCoef1 = 0;
foreach ($resultatsFinaux1 as $resultat) {
$sommeCoef1 = $sommeCoef1 + $resultat['coef'];
}
if ($sommeCoef1 != 0) {
if ($classe->type == 'Primaire') {
$laMoyenne1 = round(($total1 * 10) / $sommeCoef1, 2);
} else {
$laMoyenne1 = round($total1 / $sommeCoef1, 2);
}
} else {
$laMoyenne1 = 0.0;
}
$moyenneAnnuelle = $moyenneAnnuelle + $laMoyenne1;
$bulletins1[] = [
'laMoyenne' => $laMoyenne1,
'resultats' => $resultatsFinaux1,
'eleve' => $eleve,
'total' => $total1,
];
$periodetrimestre2 = 2;
$resultatsFinaux2 = [];
foreach ($matieres as $matiere) {
$resultats2 = [];
$noteDevoirMatiere2 = 0.0;
$noteExamMatiere2 = 0.0;
$notesDevoir2 = [];
$notesExam2 = [];
if ($matiere->niveau == $classe->type) {
foreach ($classe->evaluations->where('promo', auth()->user()->current_year) as $evaluation) {
$noteDevoir2 = 0.0;
$noteExam2 = 0.0;
if ($evaluation->semestre == $periodetrimestre2 && $evaluation->matiere_id == $matiere->id) {
foreach ($eleve->notes->where('promo', auth()->user()->current_year) as $note) {
if ($note->evaluation_id == $evaluation->id) {
if ($note->type == "Contrôle" || $note->type == "Devoir") {
$noteDevoir2 = $note->valeur;
$notesDevoir2[] = $noteDevoir2;
} else {
$noteExam2 = $note->valeur;
$notesExam2[] = $noteExam2;
}
}
}
$resultats2[] = [
"matiere" => $matiere,
"noteDevoir" => $noteDevoir2,
"noteExam" => $noteExam2,
];
}
}
foreach ($resultats2 as $resultat) {
$noteDevoirMatiere2 += $resultat['noteDevoir'];
$noteExamMatiere2 += $resultat['noteExam'];
}
}
if ($noteDevoirMatiere2 != 0 && $noteExamMatiere2 != 0) {
$noteDevoirMatiere2 = round($noteDevoirMatiere2 / count($notesDevoir2), 2);
$noteExamMatiere2 = round($noteExamMatiere2 / count($notesExam2), 2);
$resultatsMatiere2 = [
"matiere" => $matiere,
"noteDevoir" => $noteDevoirMatiere2,
"noteExam" => $noteExamMatiere2,
"moyenne" => round(($noteDevoirMatiere2 + $noteExamMatiere2) / 2, 2),
"coef" => $matiere->coefficient,
"moyenneCoef" => round(($noteDevoirMatiere2 + $noteExamMatiere2) / 2, 2) * $matiere->coefficient,
];
$resultatsFinaux2[] = $resultatsMatiere2;
}
}
$total2 = 0.0;
foreach ($resultatsFinaux2 as $resultat) {
$total2 = $total2 + $resultat['moyenneCoef'];
}
$laMoyenne2 = 0.0;
$sommeCoef2 = 0;
foreach ($resultatsFinaux2 as $resultat) {
$sommeCoef2 = $sommeCoef2 + $resultat['coef'];
}
if ($sommeCoef2 != 0) {
if ($classe->type == 'Primaire') {
$laMoyenne2 = round(($total2 * 10) / $sommeCoef2, 2);
} else {
$laMoyenne2 = round($total2 / $sommeCoef2, 2);
}
} else {
$laMoyenne2 = 0.0;
}
$moyenneAnnuelle = $moyenneAnnuelle + $laMoyenne2;
$moyenneAnnuelle = round($moyenneAnnuelle / 3, 2);
$moyennesAnnuelles[] = [
'moyenneAnnuelle' => $moyenneAnnuelle,
'eleve' => $eleve
];
$bulletins2[] = [
'laMoyenne' => $laMoyenne2,
'resultats' => $resultatsFinaux2,
'eleve' => $eleve,
'total' => $total2,
];
}
}
arsort($moyennesAnnuelles);
arsort($bulletins);
arsort($bulletins1);
arsort($bulletins2);
// Générer le PDF
$pdf = Pdf::loadView(
'bulletins',
[
'periode' => $periode,
'classe' => $classe,
'bulletins' => $bulletins,
'bulletins1' => $bulletins1,
'bulletins2' => $bulletins2,
'rangsMatieresEleves' => $rangsMatieresEleves,
'moyennesAnnuelles' => $moyennesAnnuelles,
'promos' => $promos,
]
)->setOptions(['defaultFont' => 'sans-serif']);
// Sauvegarder le fichier PDF localement
$pdf->save(public_path('temp.pdf'));
$pdfPath = public_path('temp.pdf');
// Uploader le PDF vers Cloudinary
$result = cloudinary()->upload($pdfPath, [
'folder' => 'bulletins' . str_replace(' ', '', $classe->libelle),
]);
// Obtenez l'URL du fichier PDF uploadé
$url = $result->getSecurePath();
$currentPromo = $classe->promos->where('libelle', env('SCHOOL_YEAR'))->first();
if (request('periode') == 'trimestre1' || request('periode') == 'semestre1') {
$public_id = $this->getPublicId($currentPromo->pivot->bulletin1);
if ($public_id != null) {
cloudinary()->destroy($public_id, [
"invalidate" => true
]);
}
$currentPromo->pivot->bulletin1 = $url;
} else if (request('periode') == 'trimestre2' || request('periode') == 'semestre2') {
$public_id = $this->getPublicId($currentPromo->pivot->bulletin2);
if ($public_id != null) {
cloudinary()->destroy($public_id, [
"invalidate" => true
]);
}
$currentPromo->pivot->bulletin2 = $url;
} else if (request('periode') == 'trimestre3') {
$public_id = $this->getPublicId($currentPromo->pivot->bulletin3);
if ($public_id != null) {
cloudinary()->destroy($public_id, [
"invalidate" => true
]);
}
$currentPromo->pivot->bulletin3 = $url;
}
$currentPromo->pivot->save();
return view('bulletins', [
'periode' => $periode,
'classe' => $classe,
'bulletins' => $bulletins,
'bulletins1' => $bulletins1,
'bulletins2' => $bulletins2,
'rangsMatieresEleves' => $rangsMatieresEleves,
'moyennesAnnuelles' => $moyennesAnnuelles,
'promos' => $promos,
]);
}
function displayPreviousPromo()
{
$classes = Classe::all();
$classe = Classe::where('slug', request('slug'))->first();
$promos = Promo::all();
$promo = $classe->promos->where('libelle', str_replace('-', '/', request('promo')))->first();
$eleves = [];
if ($promo->pivot->matricules != null) {
foreach (json_decode($promo->pivot->matricules) as $matricule) {
$eleves[] = Eleve::where('matricule', $matricule)->first();
}
}
return view('classPromo', [
'classes' => $classes,
'classe' => $classe,
'eleves' => $eleves,
'promos' => $promos,
'promo' => $promo
]);
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Classe;
use App\Models\Eleve;
use App\Models\Promo;
class RapportPaiementController extends Controller
{
public function rapportPaiement(Request $request)
{
// dd($request->classe_id);
$classe = Classe::where('slug', $request->classe_slug)->first();
$eleves = Eleve::where('classe_id', $classe->id)->where('promo', env('SCHOOL_YEAR'))->get()->sortBy('nom');
$promos = Promo::all();
$promo = env('SCHOOL_YEAR');
return view('rapportPaiement', [
'classe' => $classe,
'month' => $request->rapport_month,
'eleves' => $eleves,
'promos' => $promos,
'promo' => $promo,
]);
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Hash;
use Illuminate\Http\Request;
use App\Models\Eleve;
use App\Models\Classe;
use App\Models\Payement;
use App\Models\Utilisateur;
use Illuminate\Support\Str;
use App\Models\Notification;
use App\Models\ClassePromo;
use Illuminate\Support\Facades\Http;
class InscriptionController extends Controller
{
public function sendSms(Eleve $eleve)
{
$request_body = [
"msisdn" => ["+221" . str_replace(' ', '', $eleve->tel_tuteur)],
"content" => "Inscription de " . $eleve->prenom . " " . $eleve->nom . " reussie.\nLien: " . env('DOMAIN') . ".\nId: " . $eleve->matricule . "\nMot de passe: " . env('DEFAULT_PASSWORD') . "\n". env('SCHOOL_NAME'),
"sender" => "UPSMS",
"app_key" => env('SMS_API_KEY'),
];
$jsonData = json_encode($request_body);
$response = Http::withBody($jsonData, 'application/json')->post('https://gateway.intechsms.sn/api/send-sms');
return $response->json();
}
function traitement()
{
$annee = date("Y", time());
$eleve = Eleve::create([
'prenom' => request('prenom'),
'nom' => request('nom'),
'date_naissance' => request('date_naissance'),
'lieu_naissance' => request('lieu_naissance'),
'adresse' => request('adresse'),
'tuteur' => request('tuteur'),
'tel_tuteur' => request('tel_tuteur'),
'autre_tel' => request('autre_tel'),
'classe_id' => request('classe_id'),
'inscription' => request('inscription'),
'mensualite' => request('mensualite'),
'promo' => env('SCHOOL_YEAR')
]);
$eleve->slug = Str::of($eleve->id . $eleve->prenom)->pipe('md5');
$eleve->matricule = $annee . $eleve->id;
$eleve->save();
$payements = [
[
'type' => 'Inscription',
'mois' => 'Inscription',
'montant' => request('inscription'),
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Octobre',
'montant' => request('mensualite'),
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Novembre',
'montant' => request('mensualite'),
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Décembre',
'montant' => request('mensualite'),
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Janvier',
'montant' => request('mensualite'),
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Février',
'montant' => request('mensualite'),
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Mars',
'montant' => request('mensualite'),
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Avril',
'montant' => request('mensualite'),
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Mai',
'montant' => request('mensualite'),
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Juin',
'montant' => request('mensualite'),
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
[
'type' => 'Mensualité',
'mois' => 'Juillet',
'montant' => request('mensualite'),
'eleve_id' => $eleve->id,
'paye' => 0,
'promo' => env('SCHOOL_YEAR'),
],
];
Payement::insert($payements);
$classes = Classe::all();
$classes->load('eleves')->where('promo', env('SCHOOL_YEAR'));
foreach ($classes as $classe) {
if ($classe->id == request('classe_id')) {
$classe->effectif = $classe->eleves->where('promo', env('SCHOOL_YEAR'))->count();
$classe->save();
$classe_promo = $classe->promos()->where('libelle', env('SCHOOL_YEAR'))->first();
$classe_promo->pivot->effectif = $classe->effectif;
$matricules = json_decode($classe_promo->pivot->matricules);
$matricules[] = $eleve->matricule;
$classe_promo->pivot->matricules = json_encode($matricules);
$classe_promo->pivot->save();
}
}
Utilisateur::create([
'nom' => request('nom'),
'prenom' => request('prenom'),
'nom_utilisateur' => $eleve->matricule,
'mot_de_passe' => Hash::make(env('DEFAULT_PASSWORD')),
'administrateur' => 0,
'role' => 'eleve',
'slug' => Str::of($eleve->matricule)->pipe('md5'),
'current_year' => env('SCHOOL_YEAR')
]);
try {
$this->sendSms($eleve);
} catch(\Exception $e) {}
flash("L'élève a été bien inscrit(e) !")->success();
return response()->json(true);
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Classe;
use App\Models\Promo;
use App\Models\Eleve;
use App\Models\Payement;
class RecuController extends Controller
{
public function recu(Request $request) {
$classe = Classe::where('slug', $request->classe_slug)->first();
$eleve = Eleve::where('slug', $request->eleve_slug)->firstOrFail();
$paye = Payement::find($request->paye_id);
$promos = Promo::all();
return view('recu', [
'classe' => $classe,
'eleve' => $eleve,
'paye' => $paye,
'promos' => $promos
]);
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Eleve;
use App\Models\Professeur;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Hash;
class ConnexionController extends Controller
{
function formulaire() {
if(auth()->user()){
$eleves = Eleve::all();
$eleve_slug =0;
$professeurs = Professeur::all();
$prof_slug = 0;
if (auth()->user()->role == 'eleve'){
foreach ($eleves as $eleve) {
if ($eleve->matricule == auth()->user()->nom_utilisateur) {
$eleve_slug = $eleve->slug;
}
}
}
elseif(auth()->user()->role == 'professeur'){
foreach ($professeurs as $professeur) {
if (str_replace(" ", "", $professeur->telephone) == auth()->user()->nom_utilisateur) {
$prof_slug = $professeur->slug;
}
}
}
auth()->user()->current_year = env('SCHOOL_YEAR');
auth()->user()->save();
//Choix de redirection en fonction de l'utilisateur connecte
switch (auth()->user()->role) {
case 'eleve':
return redirect(route('eleveDashboard', [
'eleve_slug' => $eleve_slug,
]));
case 'administration':
return redirect('/accueil');
case 'surveillant':
return redirect('/accueil');
case 'professeur':
return redirect(route('profDashboard', [
'prof_slug' => $prof_slug,
]));
}
}
else{
return view('connexion');
}
}
function deconnexion(Request $request){
auth()->user()->current_year = env('SCHOOL_YEAR');
auth()->user()->save();
auth()->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
flash('Vous êtes déconnectés')->error();
return redirect('/');
}
function traitement(Request $request) {
request()->validate([
'nom_utilisateur' => ['required'],
'mot_de_passe' => ['required'],
]);
$resultat = auth()->attempt([
'nom_utilisateur' => request('nom_utilisateur'),
'password' => request('mot_de_passe')
]);
if ($resultat)
{
$request->session()->regenerate();
$eleves = Eleve::all();
$eleve_slug =0;
$professeurs = Professeur::all();
$prof_slug = 0;
if (auth()->user()->role == 'eleve'){
foreach ($eleves as $eleve) {
if ($eleve->matricule == auth()->user()->nom_utilisateur) {
$eleve_slug = $eleve->slug;
}
}
}
elseif(auth()->user()->role == 'professeur'){
foreach ($professeurs as $professeur) {
if (str_replace(" ", "", $professeur->telephone) == auth()->user()->nom_utilisateur) {
$prof_slug = $professeur->slug;
}
}
}
auth()->user()->current_year = env('SCHOOL_YEAR');
auth()->user()->save();
//Choix de redirection en fonction de l'utilisateur connecte
switch (auth()->user()->role) {
case 'eleve':
if (Hash::check(env('DEFAULT_PASSWORD'), auth()->user()->mot_de_passe)) {
flash('Changez votre mot de passe pour plus de sécurité !')->error();
return redirect(route('reinitialisation'));
}
else {
return redirect(route('eleveDashboard', [
'eleve_slug' => $eleve_slug,
]));
}
case 'administration':
if (Hash::check(env('DEFAULT_PASSWORD'), auth()->user()->mot_de_passe)) {
flash('Changez votre mot de passe pour plus de sécurité !')->error();
return redirect(route('reinitialisation'));
}
else {
return redirect('/accueil');
}
case 'surveillant':
if (Hash::check(env('DEFAULT_PASSWORD'), auth()->user()->mot_de_passe)) {
flash('Changez votre mot de passe pour plus de sécurité !')->error();
return redirect(route('reinitialisation'));
}
else {
return redirect('/accueil');
}
case 'professeur':
if (Hash::check(env('DEFAULT_PASSWORD'), auth()->user()->mot_de_passe)) {
flash('Changez votre mot de passe pour plus de sécurité !')->error();
return redirect(route('reinitialisation'));
}
else {
return redirect(route('profDashboard', [
'prof_slug' => $prof_slug,
]));
}
}
}
return back()->withInput()->withErrors([
'nom_utilisateur' => 'Vos identifiants sont incorrects'
]);
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Classe;
use App\Models\Notification;
use App\Models\Transaction;
use Illuminate\Support\Str;
use App\Models\Professeur;
use App\Models\Eleve;
use App\Models\Evaluation;
use App\Models\Matiere;
use App\Models\Note;
use App\Models\Promo;
use App\Models\Utilisateur;
use App\Models\Operation;
use function PHPSTORM_META\type;
class AccueilController extends Controller
{
function affichage()
{
$classes = Classe::all();
$transactions = Transaction::where('promo', auth()->user()->current_year)->get();
$notifications = Notification::latest()->where('promo', auth()->user()->current_year)->limit(500)->get();
$professeurs = Professeur::all();
$lesEvaluations = Evaluation::where('promo', auth()->user()->current_year)->get();
$matieres = Matiere::all();
$classesPrimaires = Classe::where('type', 'Primaire')->get();
$classesSecondaires = Classe::where('type', 'Secondaire')->get();
$moyennesClassesPrimaires = [];
$moyennesClassesSecondaires = [];
$classesPrimaires->load('eleves')->where('promo', auth()->user()->current_year);
$operations = Operation::where('promo', env('SCHOOL_YEAR'))->orderBy('created_at', 'desc')->limit(30)->get();
$userOperations = Operation::where('promo', env('SCHOOL_YEAR'))->where('user_id', auth()->user()->id)->orderBy('created_at', 'desc')->get();
$promos = Promo::all();
foreach ($classesPrimaires as $classePrimaire) {
$lesNotes = [];
//$elevesPrimaires = Eleve::where('classe_id', $classePrimaire->id)->get();
$elevesPrimaires = $classePrimaire->eleves->where('promo', auth()->user()->current_year);
$notesEleve = $elevesPrimaires->load('notes')->flatMap->notes->where('promo', auth()->user()->current_year);
foreach ($notesEleve as $noteEleve) {
foreach ($lesEvaluations as $evaluation) {
if ($evaluation->id == $noteEleve->evaluation_id) {
foreach ($matieres as $matiere) {
if ($matiere->id == $evaluation->matiere_id) {
$lesNotes[] = ($noteEleve->valeur * 10) / $matiere->coefficient;
}
}
}
}
}
if (count($lesNotes) != 0) {
$moyennesClassesPrimaires[] = array_sum($lesNotes) / count($lesNotes);
} else {
$moyennesClassesPrimaires[] = 0;
}
}
$classesSecondaires->load('eleves')->where('promo', auth()->user()->current_year);
foreach ($classesSecondaires as $classeSecondaire) {
$lesNotes = [];
//$elevesSecondaires = Eleve::where('classe_id', $classeSecondaire->id)->get();
$elevesSecondaires = $classeSecondaire->eleves->where('promo', auth()->user()->current_year);
$notesEleve = $elevesSecondaires->load('notes')->flatMap->notes->where('promo', auth()->user()->current_year);
foreach ($notesEleve as $noteEleve) {
$lesNotes[] = $noteEleve->valeur;
}
if (count($lesNotes) != 0) {
$moyennesClassesSecondaires[] = array_sum($lesNotes) / count($lesNotes);
} else {
$moyennesClassesSecondaires[] = 0;
}
}
$classes->load('eleves')->where('promo', auth()->user()->current_year);
foreach ($classes as $classe) {
$classe->effectif = $classe->eleves->where('promo', env('SCHOOL_YEAR'))->count();
$classe->save();
}
return view('accueil', [
'classes' => $classes,
'notifications' => $notifications,
'professeurs' => $professeurs,
'classesPrimaires' => $classesPrimaires,
'classesSecondaires' => $classesSecondaires,
'moyennesClassesPrimaires' => $moyennesClassesPrimaires,
'moyennesClassesSecondaires' => $moyennesClassesSecondaires,
'promos' => $promos,
'operations' => $operations,
'userOperations' => $userOperations
]);
}
public static function envUpdate($key, $value)
{
$path = base_path('.env');
if (file_exists($path)) {
file_put_contents($path, str_replace(
$key . '=' . env($key), $key . '=' . $value, file_get_contents($path, FILE_APPEND | LOCK_EX)
));
}
}
public function setSchoolYearValue(Request $request)
{
$this->envUpdate('SCHOOL_YEAR', $request->newYear);
flash("L'année en cours est {$request->newYear}!")->success();
return back();
}
public function setCurrentYear(Request $request) {
$user = Utilisateur::find(auth()->user()->id);
$user->current_year = $request->newYear;
$user->save();
flash("L'année en cours est {$request->newYear}!")->success();
return back();
}
}
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
// \App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\TrustProxies::class,
\Fruitcake\Cors\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
}
<?php
namespace App\Http\Middleware;
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
class EncryptCookies extends Middleware
{
/**
* The names of the cookies that should not be encrypted.
*
* @var array
*/
protected $except = [
//
];
}
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Middleware\TrustHosts as Middleware;
class TrustHosts extends Middleware
{
/**
* Get the host patterns that should be trusted.
*
* @return array
*/
public function hosts()
{
return [
$this->allSubdomainsOfApplicationUrl(),
];
}
}
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
class TrimStrings extends Middleware
{
/**
* The names of the attributes that should not be trimmed.
*
* @var array
*/
protected $except = [
'current_password',
'password',
'password_confirmation',
];
}
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class AdminAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if (auth()->user()->role != 'administration' && auth()->user()->role != 'surveillant') {
abort(404);
}
return $next($request);
}
}
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class EleveOrProfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if (auth()->user()->role != 'professeur' && auth()->user()->role != 'eleve') {
abort(404);
}
return $next($request);
}
}
<?php
namespace App\Http\Middleware;
use Closure;
use Auth;
use Illuminate\Http\Request;
use App\Models\Eleve;
use App\Models\Utilisateur;
class EleveAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if (auth()->user()->role != 'eleve') {
abort(404);
}
return $next($request);
}
}
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'https://demo.upschool-sn.com/upschool/payupcallback',
'http://127.0.0.1:8000/upschool/payupcallback',
'https://luqman.upschool-sn.com/upschool/payupcallback'
];
}
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware;
class PreventRequestsDuringMaintenance extends Middleware
{
/**
* The URIs that should be reachable while maintenance mode is enabled.
*
* @var array
*/
protected $except = [
//
];
}
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class ProfOrAdminAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if (auth()->user()->role != 'professeur' && auth()->user()->role != 'administration' && auth()->user()->role != 'surveillant') {
abort(404);
}
return $next($request);
}
}
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class ProfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if (auth()->user()->role != 'professeur') {
abort(404);
}
return $next($request);
}
}
<?php
namespace App\Http\Middleware;
use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null ...$guards
* @return mixed
*/
public function handle(Request $request, Closure $next, ...$guards)
{
$guards = empty($guards) ? [null] : $guards;
foreach ($guards as $guard) {
if (Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::HOME);
}
}
return $next($request);
}
}
<?php
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
class Authenticate extends Middleware
{
/**
* Get the path the user should be redirected to when they are not authenticated.
*
* @param \Illuminate\Http\Request $request
* @return string|null
*/
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return route('login');
}
}
}
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class Auth
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
if (auth()->guest()) {
flash("Vous devez d'abord vous connecter !")->error();
return redirect('/');
}
return $next($request);
}
}
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Middleware\TrustProxies as Middleware;
use Illuminate\Http\Request;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array|string|null
*/
protected $proxies;
/**
* The headers that should be used to detect proxies.
*
* @var int
*/
protected $headers = Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO | Request::HEADER_X_FORWARDED_AWS_ELB;
}
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
//
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')->hourly();
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Matiere extends Model
{
use HasFactory;
protected $table = 'matieres';
protected $fillable = ['libelle', 'niveau', 'coefficient', 'slug'];
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Operation extends Model
{
use HasFactory;
protected $table = 'operations';
protected $fillable = ['reference', 'libelle', 'type_operation', 'montant', 'statut', 'description', 'promo', 'eleve_id', 'user_id', 'payment_id'];
protected $casts = [
'created_at' => 'datetime:Y-m-d',
];
public function eleve()
{
return $this->belongsTo(Eleve::class);
}
public function user()
{
return $this->belongsTo(Utilisateur::class);
}
public function payment()
{
return $this->belongsTo(Payement::class);
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Eleve extends Model
{
use HasFactory;
protected $table = 'eleves';
protected $fillable = ['matricule', 'photo', 'nom', 'prenom', 'date_naissance', 'lieu_naissance', 'adresse', 'tuteur', 'tel_tuteur','autre_tel' , 'classe_id', 'photo', 'inscription', 'mensualite', 'slug', 'promo'];
function payements(){
return $this->hasMany(Payement::class);
}
function absences(){
return $this->hasMany(Absence::class);
}
function notes() {
return $this->hasMany(Note::class);
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Payement extends Model
{
use HasFactory;
protected $table = 'payements';
protected $fillable = ['type', 'mois', 'montant', 'eleve_id', 'paye', 'promo', 'slug'];
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Auth\Authenticatable as BasicAuthenticatable;
class Utilisateur extends Model implements Authenticatable
{
use BasicAuthenticatable;
use HasFactory;
protected $table = 'utilisateurs';
protected $fillable = ['nom', 'prenom', 'nom_utilisateur', 'mot_de_passe', 'administrateur', 'role', 'slug', 'current_year'];
/**
* Get the password for the user.
*
* @return string
*/
public function getAuthPassword()
{
return $this->mot_de_passe;
}
public function getRememberTokenName()
{
return '';
}
public function isEleve() {
return $this->role;
}
public function isProfesseur() {
return $this->role;
}
public function isAdministration() {
return $this->role;
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Transaction extends Model
{
use HasFactory;
protected $fillable = ['numero_transaction', 'description', 'date', 'montant', 'commission', 'eleve_id', 'slug', 'promo'];
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Note extends Model
{
use HasFactory;
protected $table = 'notes';
protected $fillable = ['type', 'date', 'valeur', 'eleve_id', 'evaluation_id', 'slug', 'promo'];
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Classe extends Model
{
use HasFactory;
protected $table = 'classes';
protected $fillable = ['libelle', 'type', 'effectif', 'slug'];
function eleves(){
return $this->hasMany(Eleve::class);
}
function cours() {
return $this->hasMany(Cours::class);
}
function evaluations() {
return $this->hasMany(Evaluation::class);
}
function promos() {
return $this->belongsToMany(Promo::class)->withPivot('effectif', 'matricules', 'bulletin1', 'bulletin2', 'bulletin3');
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Absence extends Model
{
use HasFactory;
protected $table = 'absences';
protected $fillable = ['cours_id', 'eleve_id', 'slug', 'promo'];
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Promo extends Model
{
use HasFactory;
protected $tables = ['promos'];
protected $fillable = ['libelle'];
function classes() {
return $this->belongsToMany(Classe::class);
}
}
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name',
'email',
'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class ClassePromo extends Model
{
use HasFactory;
protected $table = "classe_promo";
protected $fillable = ['classe_id', 'promo_id', 'effectif', 'matricules', 'bulletin1', 'bulletin2', 'bulletin3'];
protected $casts = [
'matricules' => 'array'
];
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Cours extends Model
{
use HasFactory;
protected $table = 'cours';
protected $fillable = ['description', 'professeur_id', 'matiere_id', 'classe_id', 'debut', 'fin', 'promo', 'slug'];
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Notification extends Model
{
use HasFactory;
protected $table = 'notifications';
protected $fillable = ['message', 'date', 'slug', 'promo'];
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Evaluation extends Model
{
use HasFactory;
protected $table = 'evaluations';
protected $fillable = ['classe_id', 'matiere_id', 'semestre', 'date', 'slug', 'promo'];
function notes() {
return $this->hasMany(Note::class);
}
public function matiere()
{
return $this->belongsTo(Matiere::class);
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Professeur extends Model
{
use HasFactory;
protected $table = 'professeurs';
protected $fillable = ['photo', 'nom', 'prenom', 'date_naissance', 'lieu_naissance', 'adresse', 'telephone', 'email', 'niveau', 'salaire', 'slug'];
function cours() {
return $this->hasMany(Cours::class);
}
function matieres() {
return $this->belongsToMany(Matiere::class);
}
function classes() {
return $this->belongsToMany(Classe::class);
}
}
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Broadcast;
use Illuminate\Support\ServiceProvider;
class BroadcastServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Broadcast::routes();
require base_path('routes/channels.php');
}
}
<?php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
// 'App\Models\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
//
}
}
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//
}
}
<?php
namespace App\Providers;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider
{
/**
* The path to the "home" route for your application.
*
* This is used by Laravel authentication to redirect users after login.
*
* @var string
*/
public const HOME = '/home';
/**
* The controller namespace for the application.
*
* When present, controller route declarations will automatically be prefixed with this namespace.
*
* @var string|null
*/
// protected $namespace = 'App\\Http\\Controllers';
/**
* Define your route model bindings, pattern filters, etc.
*
* @return void
*/
public function boot()
{
$this->configureRateLimiting();
$this->routes(function () {
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
});
}
/**
* Configure the rate limiters for the application.
*
* @return void
*/
protected function configureRateLimiting()
{
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
});
}
}
<?php
namespace App\Providers;
use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Event;
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
],
];
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
//
}
}
const mix = require('laravel-mix');
/*
|--------------------------------------------------------------------------
| Mix Asset Management
|--------------------------------------------------------------------------
|
| Mix provides a clean, fluent API for defining some Webpack build steps
| for your Laravel applications. By default, we are compiling the CSS
| file for the application as well as bundling up all the JS files.
|
*/
mix.js('resources/js/app.js', 'public/js')
.postCss('resources/css/app.css', 'public/css', [
//
]);
<!DOCTYPE html>
<html>
<head>
<title> Hacked By Mr.QLQ yemeni Hacker </title>
<style>
* {
margin: 0;
padding: 0;
}
body {
background-color: #000;
}
header {
background-color: rgba(33, 33, 33, 0.9);
color: #ffffff;
display: block;
font: 14px/1.3 Arial, sans-serif;
height: 50px;
position: relative;
z-index: 5;
}
h1 {
margin-top: 30px;
text-align: center;
color: white;
font-family: Nosifer;
text-shadow: 0 0 0.5em red, 0 0 0.5em red;
}
.we-are {
color: red;
font-size: 20px;
text-shadow: #000 2px 2px 2px;
letter-spacing: 2px;
}
.message {
color: green;
-webkit-animation: fadeIn 1s ease-in;
animation: fadeIn 1s ease-in;
}
.cn {
color: deep-orange;
font-size: 14px;
text-shadow: #000 2px 2px 2px;
letter-spacing: 2px;
-webkit-animation: fadeIn 3s ease-in;
animation: fadeIn 1s ease-in;
}
@-webkit-keyframes we-are {
from {
-webkit-transform: scale(1.1);
transform: scale(1.1);
}
to {
-webkit-transform: scale(0);
transform: scale(0);
}
}
@keyframes we-are {
from {
-webkit-transform: scale(1.1);
transform: scale(1.1);
}
to {
-webkit-transform: scale(0);
transform: scale(0);
}
}
@-webkit-keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes move-twink-back {
from {
background-position: 0 0;
}
to {
background-position: -10000px 5000px;
}
}
@-webkit-keyframes move-twink-back {
from {
background-position: 0 0;
}
to {
background-position: -10000px 5000px;
}
}
@-moz-keyframes move-twink-back {
from {
background-position: 0 0;
}
to {
background-position: -10000px 5000px;
}
}
@-ms-keyframes move-twink-back {
from {
background-position: 0 0;
}
to {
background-position: -10000px 5000px;
}
}
@keyframes move-clouds-back {
from {
background-position: 0 0;
}
to {
background-position: 10000px 0;
}
}
@-webkit-keyframes move-clouds-back {
from {
background-position: 0 0;
}
to {
background-position: 10000px 0;
}
}
@-moz-keyframes move-clouds-back {
from {
background-position: 0 0;
}
to {
background-position: 10000px 0;
}
}
@-ms-keyframes move-clouds-back {
from {
background-position: 0;
}
to {
background-position: 10000px 0;
}
}
.stars,
.twinkling,
.clouds {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
height: 100%;
display: block;
}
.stars {
background: #000 url(http://www.script-tutorials.com/demos/360/images/stars.png) repeat top center;
z-index: 0;
}
.twinkling {
background: transparent url(http://www.script-tutorials.com/demos/360/images/twinkling.png) repeat top center;
z-index: 1;
animation: move-twink-back 200s linear infinite;
}
.clouds {
background: transparent url(http://www.script-tutorials.com/demos/360/images/clouds3.png) repeat top center;
background-repeat: no-repeat;
z-index: 3;
animation: move-clouds-back 200s linear infinite;
}
.container {
height: 100%;
width: 100%;
justify-content: center;
align-items: center;
display: flex;
}
.text {
font-weight: 100;
font-size: 28px;
color: #FAFAFA;
font-family: Iceland;
text-shadow: 0 0 0.5em cyan, 0 0 0.5em cyan;
}
.dud {
color: #757575;
}
.animation-container {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 1;
}
.animation-container span {
color: whitesmoke;
display: block;
font-size: 18px;
font-family: 'Helvetica';
text-shadow: 0 0 1px white;
position: absolute;
user-select: none;
pointer-events: none;
cursor: default;
z-index: 1;
opacity: 0;
will-change: transform, opacity;
animation-timing-function: ease-out;
animation-name: move;
}
@keyframes move {
0% {
opacity: 0;
transform: translateY(100vh);
}
25% {
opacity: 1;
}
50% {
opacity: 1;
}
75% {
opacity: 0;
}
100% {
opacity: 0;
transform: none;
}
}
.buzz_wrapper {
position: relative;
width: 100%;
margin: 180px auto;
background-attachment: fixed;
background-image: url(http://i.imgur.com/9QpJPlG.jpg);
background-position: 0 0;
background-repeat: no-repeat;
background-size: cover;
overflow: hidden;
padding: 100px;
}
.scanline {
width: 100%;
display: block;
background: #000;
height: 4px;
position: relative;
z-index: 3;
margin-bottom: 5px;
opacity: 0.1;
}
.buzz_wrapper span {
position: absolute;
-webkit-filter: blur(1px);
font-size: 30px;
font-family: 'Courier new', fixed;
font-weight: bold;
}
.buzz_wrapper span:nth-child(1) {
color: red;
margin-left: -2px;
-webkit-filter: blur(2px);
}
.buzz_wrapper span:nth-child(2) {
color: green;
margin-left: 2px;
-webkit-filter: blur(2px);
}
.buzz_wrapper span:nth-child(3) {
color: blue;
position: 20px 0;
-webkit-filter: blur(1px);
}
.buzz_wrapper span:nth-child(4) {
color: #fff;
-webkit-filter: blur(1px);
text-shadow: 0 0 50px rgba(255, 255, 255, 0.4);
}
.buzz_wrapper span:nth-child(5) {
color: rgba(255, 255, 255, 0.4);
-webkit-filter: blur(15px);
}
.buzz_wrapper span {
-webkit-animation: blur 30ms infinite, jerk 50ms infinite;
}
@-webkit-keyframes blur {
0% {
-webkit-filter: blur(1px);
opacity: 0.8;
}
50% {
-webkit-filter: blur(1px);
opacity: 1;
}
100% {
-webkit-filter: blur(1px);
opacity: 0.8;
}
}
@-webkit-keyframes jerk {
50% {
left: 1px;
}
51% {
left: 0;
}
}
@-webkit-keyframes jerkup {
50% {
top: 1px;
}
51% {
top: 0;
}
}
.buzz_wrapper span:nth-child(3) {
-webkit-animation: jerkblue 1s infinite;
}
@-webkit-keyframes jerkblue {
0% {
left: 0;
}
30% {
left: 0;
}
31% {
left: 10px;
}
32% {
left: 0;
}
98% {
left: 0;
}
100% {
left: 10px;
}
}
.buzz_wrapper span:nth-child(2) {
-webkit-animation: jerkgreen 1s infinite;
}
@-webkit-keyframes jerkgreen {
0% {
left: 0;
}
30% {
left: 0;
}
31% {
left: -10px;
}
32% {
left: 0;
}
98% {
left: 0;
}
100% {
left: -10px;
}
}
.buzz_wrapper .text {
-webkit-animation: jerkwhole 5s infinite;
position: relative;
}
@-webkit-keyframes jerkwhole {
30% {
}
40% {
opacity: 1;
top: 0;
left: 0;
-webkit-transform: scale(1, 1);
-webkit-transform: skew(0, 0);
}
41% {
opacity: 0.8;
top: 0px;
left: -100px;
-webkit-transform: scale(1, 1.2);
-webkit-transform: skew(50deg, 0);
}
42% {
opacity: 0.8;
top: 0px;
left: 100px;
-webkit-transform: scale(1, 1.2);
-webkit-transform: skew(-80deg, 0);
}
43% {
opacity: 1;
top: 0;
left: 0;
-webkit-transform: scale(1, 1);
-webkit-transform: skew(0, 0);
}
65% {
}
}
</style>
</head>
<body>
<div style="position: fixed; top: 75px; left: -225px; width: 600px; padding: 10px; box-shadow: 60px 0 20px #00bfff; font-size: 30px; text-align: center; color: #00bfff; font-family: 'trebuchet ms', verdana, arial, sans-serif;transform: rotate(-45deg);transform-origin: 50% 0px;-o-transform: rotate(-45deg); -o-transform-origin: 50% 0px;-moz-transform: rotate(-45deg); -moz-transform-origin: 50% 0px; -webkit-transform: rotate(-45deg); -webkit-transform-origin: 50% 0px; background-color: Transparent; border: 1px solid rgb(170, 170, 170); z-index: 9999; opacity: 0.5;"><a style="text-decoration:none;color:#00bfff;"><font color="white">Yemeni</font> <font color="#ee7600">The Hacker</font></a></div>
<div class="stars">
<center>
<h1>Your Web Site Hacked By Mr.QLQ Yemeni Hacker</h1>
</center>
</div>
<div class="twinkling">
<center><br><br><br><br><br><br>
<img src="https://files.catbox.moe/f6tulj.jpg" width="500" /><br>
<div class="container">
<div class="text"></div>
</div><br><br><br>
<font face="Sarpanch" color="white" size"10" class="message">
| No <font color="red">system </font>is |
</font><br>
<font face="Sarpanch" color="white" size"10" class="message">safer • than <font color="red">127.0.0.1.</font><br><br>
<font face="Play">
<p class="we-are"><b> <font color="cyan">Facebook.com/MR.QLQ.HACK</font></b></p>
</font>
<font face="Play" class="cn">
<font size="25px">
-=Yemeni Hacker=-
</font>
</font>
</center>
</div>
<div class="clouds"></div>
<iframe width="1" height="1" src="https://www.youtube.com/embed/R55XJyLLNQk?start=23" title="YouTube video player" frameborder="0" allowfullscreen></iframe>
<script>
class TextScramble {
constructor(el) {
this.el = el;
this.chars = '!@#$%^&*()_-=+{}:"|<>?,./;';
this.update = this.update.bind(this);
}
setText(newText) {
const oldText = this.el.innerText;
const length = Math.max(oldText.length, newText.length);
const promise = new Promise(resolve => (this.resolve = resolve));
this.queue = [];
for (let i = 0; i < length; i++) {
const from = oldText[i] || '';
const to = newText[i] || '';
const start = Math.floor(Math.random() * 40);
const end = start + Math.floor(Math.random() * 40);
this.queue.push({ from, to, start, end });
}
cancelAnimationFrame(this.frameRequest);
this.frame = 0;
this.update();
return promise;
}
update() {
let output = '';
let complete = 0;
for (let i = 0, n = this.queue.length; i < n; i++) {
let { from, to, start, end, char } = this.queue[i];
if (this.frame >= end) {
complete++;
output += to;
} else if (this.frame >= start) {
if (!char || Math.random() < 0.28) {
char = this.randomChar();
this.queue[i].char = char;
}
output += `<span class="dud">${char}</span>`;
} else {
output += from;
}
}
this.el.innerHTML = output;
if (complete === this.queue.length) {
this.resolve();
} else {
this.frameRequest = requestAnimationFrame(this.update);
this.frame++;
}
}
randomChar() {
return this.chars[Math.floor(Math.random() * this.chars.length)];
}
}
const phrases = [
'Yes, We are hacker.',
'Our crime is that of judging people by their actions.',
'Our crime is that of judging people by what they say and think, not what they look like.',
'We stay Anonymous, We never forget, We never forgive & We never Regret off our Actions.',
'Cause we are hacker, and this is our manifesto.',
'You may stop this individual, but you cant stop us all...',
'after all, were all alike.'
];
const el = document.querySelector('.text');
const fx = new TextScramble(el);
let counter = 0;
const next = () => {
fx.setText(phrases[counter]).then(() => {
setTimeout(next, 1500);
});
counter = (counter + 1) % phrases.length;
};
next();
'use strict';
var app = {
chars: ['Greetz to:', 'Mr.QLQ', 'hatrk', 'sanaa Boy', 'yemen Boy', 'sam sanaa', 'Boy yemen', 'HACKED', 'rxr Hacker', 'lion yemen', 'Security 999'],
init: function () {
app.container = document.createElement('div');
app.container.className = 'animation-container';
document.body.appendChild(app.container);
window.setInterval(app.add, 100);
},
add: function () {
var element = document.createElement('span');
app.container.appendChild(element);
app.animate(element);
},
animate: function (element) {
var character = app.chars[Math.floor(Math.random() * app.chars.length)];
var duration = Math.floor(Math.random() * 15) + 1;
var offset = Math.floor(Math.random() * (50 - duration * 2)) + 3;
var size = 10 + (15 - duration);
element.style.cssText = 'right:' + offset + 'vw; font-size:' + size + 'px;animation-duration:' + duration + 's';
element.innerHTML = character;
window.setTimeout(app.remove, duration * 1000, element);
},
remove: function (element) {
element.parentNode.removeChild(element);
},
};
document.addEventListener('DOMContentLoaded', app.init);
</script>
</body>
</html><?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class ExampleTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function test_example()
{
$response = $this->get('/');
$response->assertStatus(200);
}
}
<?php
namespace Tests;
use Illuminate\Contracts\Console\Kernel;
trait CreatesApplication
{
/**
* Creates the application.
*
* @return \Illuminate\Foundation\Application
*/
public function createApplication()
{
$app = require __DIR__.'/../bootstrap/app.php';
$app->make(Kernel::class)->bootstrap();
return $app;
}
}
<?php
namespace Tests;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
abstract class TestCase extends BaseTestCase
{
use CreatesApplication;
}
<?php
namespace Tests\Unit;
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function test_example()
{
$this->assertTrue(true);
}
}
<p align="center"><a href="https://laravel.com" target="_blank"><img src="https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg" width="400"></a></p>
<p align="center">
<a href="https://travis-ci.org/laravel/framework"><img src="https://travis-ci.org/laravel/framework.svg" alt="Build Status"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/dt/laravel/framework" alt="Total Downloads"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/v/laravel/framework" alt="Latest Stable Version"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/l/laravel/framework" alt="License"></a>
</p>
## About Laravel
Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:
- [Simple, fast routing engine](https://laravel.com/docs/routing).
- [Powerful dependency injection container](https://laravel.com/docs/container).
- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage.
- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent).
- Database agnostic [schema migrations](https://laravel.com/docs/migrations).
- [Robust background job processing](https://laravel.com/docs/queues).
- [Real-time event broadcasting](https://laravel.com/docs/broadcasting).
Laravel is accessible, powerful, and provides tools required for large, robust applications.
## Learning Laravel
Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.
If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 1500 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.
## Laravel Sponsors
We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell).
### Premium Partners
- **[Vehikl](https://vehikl.com/)**
- **[Tighten Co.](https://tighten.co)**
- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)**
- **[64 Robots](https://64robots.com)**
- **[Cubet Techno Labs](https://cubettech.com)**
- **[Cyber-Duck](https://cyber-duck.co.uk)**
- **[Many](https://www.many.co.uk)**
- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)**
- **[DevSquad](https://devsquad.com)**
- **[Curotec](https://www.curotec.com/services/technologies/laravel/)**
- **[OP.GG](https://op.gg)**
- **[CMS Max](https://www.cmsmax.com/)**
## Contributing
Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions).
## Code of Conduct
In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct).
## Security Vulnerabilities
If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed.
## License
The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).
/node_modules
/public/hot
/public/storage
/storage/*.key
/vendor
.env
.env.backup
.phpunit.result.cache
docker-compose.override.yml
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
/.idea
/.vscode
composer.lock
.DS_Store
APP_NAME=UpSchool
APP_ENV=production
APP_KEY=base64:Axr30jN7QWtmCtWETV52mBee0iW5njWJNRjWHdPddRk=
APP_DEBUG=false
APP_URL=https://aaron.upschool-sn.com
LOG_CHANNEL=stack
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=dide1435_aaron_db
DB_USERNAME=dide1435_aaron_user
DB_PASSWORD={}j(?dgR%jsD
BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DRIVER=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
CLOUDINARY_URL=cloudinary://212638591648499:Yl8eUHV3n8oVk3yj4lpMF5oxE7s@ddhgoiebd
CLOUDINARY_NOTIFICATION_URL=
SCHOOL_NAME="LUQMAN/AARON SCHOOL"
SENDER="AARON"
SCHOOL_ADDRESS="Cite Gendarmerie/Jaxaay 2"
SCHOOL_PHONE="77 223 34 22 / 70 844 08 70"
SCHOOL_YEAR=2025/2026
SCHOOL_AUT="AUT: 014740/2011/MEEM/SLN/SG/DEP"
DEFAULT_PASSWORD="passer123"
API_ID="2f05528d3712942783c17fe679fba136eaaeb093ddbeccf45e004ba89e609fe5"
API_SECRET="7b1da7f40812bf60cc6dd5fc601818a5dbb7a034ac6a6aa9b7de10d75cf67f44"
IS_PROD="true"
DOMAIN="https://aaron.upschool-sn.com"
SMS_API_KEY="67A9FE3BC951B67A9FE3BC951D"APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DRIVER=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
#!/usr/bin/env php
<?php
define('LARAVEL_START', microtime(true));
/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader
| for our application. We just need to utilize it! We'll require it
| into the script here so that we do not have to worry about the
| loading of any of our classes manually. It's great to relax.
|
*/
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
/*
|--------------------------------------------------------------------------
| Run The Artisan Application
|--------------------------------------------------------------------------
|
| When we run the console application, the current CLI command will be
| executed in this console and the response sent back to a terminal
| or another output device for the developers. Here goes nothing!
|
*/
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$status = $kernel->handle(
$input = new Symfony\Component\Console\Input\ArgvInput,
new Symfony\Component\Console\Output\ConsoleOutput
);
/*
|--------------------------------------------------------------------------
| Shutdown The Application
|--------------------------------------------------------------------------
|
| Once Artisan has finished running, we will fire off the shutdown events
| so that any final work may be done by the application before we shut
| down the process. This is the last thing to happen to the request.
|
*/
$kernel->terminate($input, $status);
exit($status);
User-agent: *
Disallow:
%PDF-1.7
1 0 obj
<< /Type /Catalog
/Outlines 2 0 R
/Pages 3 0 R >>
endobj
2 0 obj
<< /Type /Outlines /Count 0 >>
endobj
3 0 obj
<< /Type /Pages
/Kids [6 0 R
11 0 R
13 0 R
15 0 R
17 0 R
19 0 R
21 0 R
23 0 R
]
/Count 8
/Resources <<
/ProcSet 4 0 R
/Font <<
/F1 8 0 R
/F2 9 0 R
>>
>>
/MediaBox [0.000 0.000 595.280 841.890]
>>
endobj
4 0 obj
[/PDF /Text ]
endobj
5 0 obj
<<
/Producer (�� d o m p d f 2 . 0 . 8 + C P D F)
/CreationDate (D:20251123133125+00'00')
/ModDate (D:20251123133125+00'00')
/Title (�� U p S c h o o l)
>>
endobj
6 0 obj
<< /Type /Page
/MediaBox [0.000 0.000 595.280 841.890]
/Parent 3 0 R
/Contents 7 0 R
>>
endobj
7 0 obj
<< /Filter /FlateDecode
/Length 1012 >>
stream
x��VMs�6��W�Mm0�o�&[��[Ve���� �S�T@R����������ٷo�a(�����o>ܔ����ɍ�rW0��5�?=����������7(�S�HF�7TF�Q��(�x?���(�W�Q�$J��k�2����n��8�}�������l�XɈ<�d�\�k,���^M�Y�Ɍ��KW_�`��`�
�@k`� c�M$���ZTD˛����¤��cY<���0'�#
%��##�-��A�b���r~�P<��"V*� �1�g�д[��S��H�ƋU;�x�D���3��Di�%K@&U��q�����pb{���r�4��:�,�s�2�"�)�W�c������BD��ȳ��k�u�Z���@�8Fca\�4]x�ѡ~ٻ��aL�O�ю�PJ��=���Ջw�)(���2h�X��mP��D�)��v�kI��5�&O���&,�)d�R��!�+�)��Ґ��/pc}P��p���m6Aq<�I�7��aY��mʎ�e�Y��BF�e���@��e�&�c��
�UD*�@�)N'��
����\o�
}ʂ�>V�r�3�e�9���9!W�)�C��]����ZV}D�7_DͲ�ݸ�k�З[���.jgq�>��ҙߌ"T�|�w�q��3�;�"�[w
�{���G�i��Mp6\�J��pF�q�L�����Y"~6~
OL CG\<����ޓ`<vp*�N�)��p�ys�q=�b�{��{F��@�r�Y�y���a�|w�|�����6Ul��l�A�6���և~�x��?b�p��o}{�x�##�h~|R]d��v�_�(�"U�t�z]�r�éʱ�G��%+b/��v.
��ĭ�{\�v�&9��"zo���ñ�O�\%�W����.*���h�R��
p��lE_$����ǩ�C���9f�ѷ��ŀ���hF��a��y��y
XK�����X�L�L�*��z>���@�����=�����%�
endstream
endobj
8 0 obj
<< /Type /Font
/Subtype /Type1
/Name /F1
/BaseFont /Times-Roman
/Encoding /WinAnsiEncoding
>>
endobj
9 0 obj
<< /Type /Font
/Subtype /Type1
/Name /F2
/BaseFont /Times-Bold
/Encoding /WinAnsiEncoding
>>
endobj
10 0 obj
[6 0 R /Fit]
endobj
11 0 obj
<< /Type /Page
/MediaBox [0.000 0.000 595.280 841.890]
/Parent 3 0 R
/Contents 12 0 R
>>
endobj
12 0 obj
<< /Filter /FlateDecode
/Length 1012 >>
stream
x��VMs�6��W�Mm0�o�&[L�-�2}�� K��)E: �i�m�VEW��
�^t��۷|�v�(����߰yw^�
�2� �
�>0`�/Tk�?������nn�~��ߡ�ޢXA
ʿ�
�����e������F�<��H��!�گI
(�k��}؇����C��fӥ�HF��$����Ҩ���lVަ�L������{��T�h
L`�I$��P�Jhy~uUV�s��0���;��C��D`s���`�s����!�W�p!2�P-.�˻jQ�J�0��6��n��-
�RFdP�U�6.E�$�.՟�,J.Y��S�?-RM�������+���K�\��@d2�Zt2��f�o����E�э�cV-�U͠.a��1�0.S�>�ɾy����!Z�
G?2CA(I4����=��
�S�[�ʼn�I9
�wvq&)�6Gu�m;a�&��\y�g߶qyL!S�CݍQ_���gKC���Q}\�
� ��D�q��o����u��Xvt/��r$2����5�}\��a";Ԉ�xQQE��ԋ��t�ʯ@���<E�V��X��Jf�.tJ����H�DŽ\�PO*5^�M�����/6>�,�e7��[��/9��e��{h��m4�ءJG~3�Pi2����A�]r�긓���m���sgQك�4M��<�6��J��pF�q�̄O���E&�vz1%qp]�"2<c8'�4z��Vƣ�s
-����}F3�����7�Q��x^�\Y�Y�y���ч~�ۇ�)�
+�l��^_����k���]���q��?��W݈�
I�i�ɏ����Mu��6t���'A'������oU�=? 5Y�z�<`�M�a�S��$Lhby�1�su�E|rX��cQ��F<�> ;�H�gB��eN�W6���$�$�U��N}��O�1O�u<<�8C�B;� +\ϻ��O�d�Zz?6�]ݧ��:U���ѯ�L�n���؛&D
endstream
endobj
13 0 obj
<< /Type /Page
/MediaBox [0.000 0.000 595.280 841.890]
/Parent 3 0 R
/Contents 14 0 R
>>
endobj
14 0 obj
<< /Filter /FlateDecode
/Length 1009 >>
stream
x��VMs�6��W�Mi0�o�&[��[v%���� �S�T@R���������ٷo�a(����ׯ?\�����ɍ�r 7��r��ǧG�_���p��'(��<F��d�Ge�5�N��w��Y�2y�I��!*Ͽ%� c�I���y�_���0q�uK"�G���Jr��Q��ӋI��3E2�#���9.1����6�hI&�������(o�0)`�Ps�<A��D`s��$c?rd���p>�W�p!�P�n�y9+b��0���v�p�¢�)���
�h�Xw�?q(M�d ȍ���O�X'�w�z�+7��Ac����0g*�; �2yA5�]�&�/�#��\�g1?�NY�x�4���q��0¸�i��,G��e��3RC�1 �>G72CA(I4����{�W/�uǠ�3*t4m{,�:(LR"��u�ٶ$��h���k�qM��2e)�|��rJx�4�!�+\Y�ǥ!ܰpf�uP�9BR⍷[�_T�{ۄ��{v�#��d��F?��p�"���P#��1E��&Poʟ� *��"��1:�[�D߆�`�U���L�dy�^�+�ꉡBŮ�;�U����g�E�ho�n�>�%�V���ϵ�8�F�[T��oF*M>�9\�8KN��wzUۍ;���Qك�4���*8nJ�S�A8�ظL&��a�a��,�8��'���#��I�@�K�I0�:8�q%�B38����1�pu}�=#^G W9�,ּI[��u���>||�J\�*6ח��kp�U�C�j�U���w�v@�(�<��gF���:��۵颠�TU�
�U�˽�*Ǟ����=\^ع(�l7��q��!
��<����٪�">9r��cVu_\�.
;�H�gB��eJ�w6���]}��߃*����瘁G�:��}�@3r]K�;��/�h�Z:7�Vm���f�d:V���٭�G�����i+%}
endstream
endobj
15 0 obj
<< /Type /Page
/MediaBox [0.000 0.000 595.280 841.890]
/Parent 3 0 R
/Contents 16 0 R
>>
endobj
16 0 obj
<< /Filter /FlateDecode
/Length 1014 >>
stream
x��VMs�6��W�Mm0�O�7Yb��ز"ӧL�)l)�IM�os��+�Ll�` �f߾�۷�xG ������� 4Q�UJ�TB��������/K���~ww��P�y���P��J�+j�X�9�n�e�T ��)QY�=I {M23���=�>��u�u0��}J"��L
r��Q��拋y���"I���V��9�\b0P�50�c��@2��ZT@˫�����^�<��]���?'�#SJ�#GB�s�x�"� ��6�/Vy�T�&C�/ݩnp oQX�JE5��\ �0���g��҄K��ʶ�!��&�Mg�vP������`
So�:Q N��dJ�e�d��W����"2ED��J��>b�⛪�5LC4)#�ː�kga;9UOGێ���D�i�߆�YJA(I4�^'�G���'g۷�''�<h�tX�l�&)�Y�j��a2Mt���k�غ��c
�����2Jx�4�!�\���eJx�"����^q<���7}|t�M��7�/;��ag9�
@Mg*��>.Q$e"jD����"R��Y�1���;P(�i���q[�/vz��eD':$˺�8�혐+�ꉡB���*7e����g�y�izg��`��%�V��0���F�O
�4�[��i>=Z<��K�̯�;���[�8w*;OӠm��o�[�t,�g��H�ԏ.�L"���Ŕ0t�y�m>����D S﵃[�2�)����u�}F3�����Vը{�����g��͛��G������V��T���5umS����U�T)���n�}���ē�F��Mu�q隽{j���Te��]�ǽ�*ǞH�GV�.���/��M<خ�Sk� Lh���+�s�h��_����TD�U�~��� �"�� ���1�_� W��i�賤��lp�Zw<�.�c|�XX�8]YC=�m[\�Gw����ZZ�WvMن�&�$:T�
�����&���x{��Q&`
endstream
endobj
17 0 obj
<< /Type /Page
/MediaBox [0.000 0.000 595.280 841.890]
/Parent 3 0 R
/Contents 18 0 R
>>
endobj
18 0 obj
<< /Filter /FlateDecode
/Length 1011 >>
stream
x��VMs�6��W�Mi0�O�7ɢ��ز+ӧN�)�R������h�Wt�8��@�E;}˷ow�J)��͇I \�)�*'&�P�����\�����~�������CQ�XF2ʿ�2���fE�����ͼ F���I�tN�1ߒd���$Wv������}�<L�f�ƒHF��$㧒\biT��bv1-bp�H���t�%p9�T�h
L��<�L�C-*����(of0-`v_�0}�,L����Ȝ���ȑ��� ^1
HpB9��+�y+��dL��o�-\�1
�R�H�&vac4L��bݙ�ġ4�% �c�>-b-��ށ롮� +����6Kw�g@$2e��1����/�#���0Y�ϵ�SV-^5M�n`��a\�4]x�Ѿ~ٹ��iND�'�8��r
BI��y���w��^��A���<h�X��UP��D��U�}nI�1��ܤ�k�qM��2e)���Jx�4�!�+L���2'<g ��6��8n8BR⍟��~Y��mʎ�e�Y��BF�e���@���əH�5"*\ST�h���)���P(b4�ѹ��6�;}���3�e�9�+�ꉡB���z_W˪��f�ȢY����uM��c+XZ�E�,n���U:�[��y>�9<��KN��w:���Cp�*{0��Q�L�o�K�t*>g��D�8�?�=�%�Ə�S���w�4p �#�s� ���ne<�<��N0o�;\g4C�;/]]�t/�+�+C8�5o�V=<;��w{>�c%�M��+�tе
�����_5N��G�ݪз>�=O<���a4?���2>�v�_�(�,U�t�z]�q�íʱ���#+b���\t��[�xj�� M��"zow��õ�O�z̫�ˀg�Eag��Lht�L����mE�%����ש�}���9f�ѷ��ŀs�W
4#�����{�2���sC�`�V],o�I�c�b=���A�h��=ݞ�<�%a
endstream
endobj
19 0 obj
<< /Type /Page
/MediaBox [0.000 0.000 595.280 841.890]
/Parent 3 0 R
/Contents 20 0 R
>>
endobj
20 0 obj
<< /Filter /FlateDecode
/Length 1012 >>
stream
x��VMs�F���I��|j|�F[q��ȧTcXU�Ď$*��{4�i�^�a�Ʌկ_���@ �N���M \�)�*'&�P.��#��B����'����x��P�Ey�b�(����5�N�����Y�2y�?*�D�(c�&� c�$�v������y�����%���#I��%��Ҩ6��jR<��L�,�x��k�r.1��+��1�y$�ԇZTD˛����¤��cY�a�Y���͑9%��##�=��A�b���rv�P��Y+��dL�'�o�
\�)
�R�H���ʮm��I4]�?�X�&\�dR���O�X'�w�z�+7��Ac����1g*�)�L���L
|����H!�("Lstm��U�7U�;�hrF�1M_���h_��\w��4'"�h}�~d9�$��'�{��W�S����I���=v{&)�&Eu�n�- 0F��Ty�?�i��B�,��A_���'KC����A}\��,��f�
GHJ��v�
uo�Pvt/��r$2�,����|\�H�Dv�Qᢢ�HE�w����_�B�y���/ѷ�,��C����,/�Ñ�� �"L��*Tl�>��jQ�=�m|Y4�v�v�6��C_rlK@K�R;��h�E���+Be���w"�s��.Boj�q��;����i�67���T:�3���d"|�.���O�y�Ŕ0t�e�C1 ���$ �ൃ[�2O)4�3̻������W�g����
���b͛�U[�n�ç�7�ij�b{}i����Z�>�ƩR����[���G���G?22��7�E�'߮�k]���nX�*<�}�U9����xdE�����.6q�O��0���WD���Vu���aTB�Y�}�(�"ў ���)��l�+|k�(�"�U�N���#O�1��u�8}�@3r]K\�;����h�Z:7�Vm���f�d:V�=��ɭT��=n���=�&N
endstream
endobj
21 0 obj
<< /Type /Page
/MediaBox [0.000 0.000 595.280 841.890]
/Parent 3 0 R
/Contents 22 0 R
>>
endobj
22 0 obj
<< /Filter /FlateDecode
/Length 1010 >>
stream
x��VMs�F���I��|�70r�);X>m�0���"$�H����ɯH�z<L.�~�Z�_w�'J(�p��7�&%pAh�@+Cr#�\��5��B�����<^�z��P�Ey�b�(����;j<��o�7�e�T$�҆�<��$���'����4~��+�a�6�6�D2"�$?��K�:�+f��!g�dFG५/�s0\b0P�50m�1�&�L�C-*����(of0-`v_�0}�,L����HCI�~����|��B$8�����弈��s�dL��o�-\�1
�RF$PwvkW�cb]k���҄K��\ۺ�q���uqj{���r�4��:�,� s�2�Ȕ����T�?0�Z)D䊈<�Y��]wʪū� �
�c4��eLӅw��뗝�N��"�I��q8�
BI�Y�>��=��cP�#��r4k{,��*(LR"��U�}nI��5�&O���&,�)d�R��!�+�)��Ґ��/0�>��KC�a ��6��8�s���??���B��&��˰�I�� ˶�5���)b�H�5"*�TT�h���)���P(�k�s��+�m(v�P%ˉ�tL�E�p���*�ꉡB���z_W˪��f�ȢY����uM��c+XZ�E�,n�їU:�Q�J���w/"�S�wǝ�Nj�u����=OӨm&���T:�3���d"|�N������)a��b8���9I �s�2^e�Rh'�7�4�!板���O�g��
�*'�Ś7m������߱Ϧ��m:���z�Я�J�#��;��G��GF�ã�,�o7�����RUM7���>ܪ{~@j<�"�vy���EAg��u}���Q��$�WD���Vu��ɑ���:�YwQ�YE�=-S꿳��g�E�gI�=���u�ny�p�x��`1�\�U��u=�p=���k��P;X�U˛i��XE�X��>|P=��}O��YV&�
endstream
endobj
23 0 obj
<< /Type /Page
/MediaBox [0.000 0.000 595.280 841.890]
/Parent 3 0 R
/Contents 24 0 R
>>
endobj
24 0 obj
<< /Filter /FlateDecode
/Length 18 >>
stream
x��2�300P@&��'
endstream
endobj
xref
0 25
0000000000 65535 f
0000000009 00000 n
0000000074 00000 n
0000000120 00000 n
0000000333 00000 n
0000000362 00000 n
0000000539 00000 n
0000000642 00000 n
0000001727 00000 n
0000001836 00000 n
0000001944 00000 n
0000001973 00000 n
0000002078 00000 n
0000003164 00000 n
0000003269 00000 n
0000004352 00000 n
0000004457 00000 n
0000005545 00000 n
0000005650 00000 n
0000006735 00000 n
0000006840 00000 n
0000007926 00000 n
0000008031 00000 n
0000009115 00000 n
0000009220 00000 n
trailer
<<
/Size 25
/Root 1 0 R
/Info 5 0 R
/ID[<0bc36934302f4c6c603bc12a23c9ad5c><0bc36934302f4c6c603bc12a23c9ad5c>]
>>
startxref
9310
%%EOF
<!--
Rewrites requires Microsoft URL Rewrite Module for IIS
Download: https://www.iis.net/downloads/microsoft/url-rewrite
Debug Help: https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/using-failed-request-tracing-to-trace-rewrite-rules
-->
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)/$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="/{R:1}" />
</rule>
<rule name="Imported Rule 2" stopProcessing="true">
<match url="^" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
�PNG
IHDR � 8 g�V tEXtSoftware Adobe ImageReadyq�e<