Compare commits
10 Commits
559ceda346
...
3b8bba2b57
Author | SHA1 | Date |
---|---|---|
|
3b8bba2b57 | |
|
7d33d1dbad | |
|
600a99ee8f | |
|
88382a73e3 | |
|
23c912fa51 | |
|
58e5eadb1e | |
|
d73f0a3b62 | |
|
32812ff119 | |
|
d2039c3ab8 | |
|
495bedc6fd |
11
.env.example
11
.env.example
|
@ -15,6 +15,14 @@ DB_DATABASE=iLink_notifications
|
|||
DB_USERNAME=root
|
||||
DB_PASSWORD=vps@2017GA
|
||||
|
||||
MAIL_HOST=mail.ilink-app.com
|
||||
MAIL_USERNAME=noreply@ilink-app.com
|
||||
MAIL_PASSWORD=ilink2017GA
|
||||
MAIL_FROM_ADDRESS=noreply@ilink-app.com
|
||||
MAIL_FROM_NAME="iLink World"
|
||||
MAIL_ENCRYPTION=tls
|
||||
|
||||
|
||||
CACHE_DRIVER=file
|
||||
QUEUE_CONNECTION=sync
|
||||
|
||||
|
@ -23,3 +31,6 @@ ACCEPTED_KEYS=RfXvPQzQRgwpzQYPnLfWpZzgx4QseHlg
|
|||
ONESIGNAL_REST_API_KEY=OWU0NTRhNzItMjAzNy00YTc4LTlhMDUtYTU4MmNlNGZmMmU3
|
||||
ONESIGNAL_USER_AUTH_KEY=
|
||||
ONESIGNAL_APP_ID=e8e7251f-713d-4658-9510-86d877fa6a7c
|
||||
|
||||
WALLET_SERVICE_BASE_URL =https://ilink-app.com
|
||||
WALLET_SERVICE_KEY=yhSTSSqIO1uSE1icu09edPOeSFGxIDjo
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Throwable;
|
||||
|
||||
class MailController extends Controller
|
||||
{
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
// Log::info("consturct mail");
|
||||
}
|
||||
|
||||
public function send(Request $request)
|
||||
{
|
||||
$this->validate($request,[
|
||||
'title' => 'required|string',
|
||||
'message' => 'required|string',
|
||||
'email' => 'required|email'
|
||||
]);
|
||||
|
||||
$title = $request->input('title');
|
||||
try {
|
||||
$recipients = [$request->input('email')];
|
||||
Mail::mailer('smtp')->raw($request->input('message'), function ($message) use ($recipients, $title) {
|
||||
$message->subject($title);
|
||||
$message->to($recipients);
|
||||
});
|
||||
} catch (Throwable $t) {
|
||||
Log::error('-------- Mail not sent -----------');
|
||||
Log::error($t->getMessage().'\n'.$t->getTraceAsString());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -32,9 +32,9 @@ class NotificationController extends Controller
|
|||
]);
|
||||
$notifications = [];
|
||||
if (isset($request->user_code))
|
||||
$notifications = Notification::where('user_code', $request->user_code)->get();
|
||||
$notifications = Notification::where('user_code', $request->user_code)->orderBy('date' , 'DESC')->get();
|
||||
elseif (isset($request->agent_code))
|
||||
$notifications = Notification::where('agent_code', $request->agent_code)->get();
|
||||
$notifications = Notification::where('agent_code', $request->agent_code)->orderBy('date' , 'DESC')->get();
|
||||
|
||||
foreach ($notifications as $notif) {
|
||||
$notif->data = json_decode($notif->data);
|
||||
|
@ -43,5 +43,12 @@ class NotificationController extends Controller
|
|||
return $this->successResponse($notifications);
|
||||
}
|
||||
|
||||
public function readNotification($id_notif){
|
||||
$notif = Notification::findOrFail($id_notif);
|
||||
$notif->read = true;
|
||||
$notif->save();
|
||||
return $this->successResponse('Success');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -6,9 +6,11 @@ use App\Models\Notification;
|
|||
use App\Models\OnesignalAgent;
|
||||
use App\Models\OnesignalUser;
|
||||
use App\Traits\ApiResponser;
|
||||
use GuzzleHttp\Exception\GuzzleException;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Http\Request;
|
||||
use Berkayk\OneSignal\OneSignalFacade;
|
||||
use Mockery\Matcher\Not;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class OneSignalController extends Controller
|
||||
{
|
||||
|
@ -26,47 +28,112 @@ class OneSignalController extends Controller
|
|||
public function addUserPlayerID(Request $request){
|
||||
$this->validate($request , [
|
||||
'user_code'=> 'required',
|
||||
'player_id'=> 'required'
|
||||
'player_id'=> 'required',
|
||||
'set_default' => 'required|boolean'
|
||||
]);
|
||||
|
||||
$saveUser = OnesignalUser::where('user_code',$request->user_code)->where('player_id',$request->player_id)->first();
|
||||
if(!$saveUser){
|
||||
$records = OnesignalUser::where('user_code',$request->user_code)->get();
|
||||
if($request->set_default){
|
||||
foreach ($records as $r){
|
||||
$r->delete();
|
||||
}
|
||||
$user = new OnesignalUser();
|
||||
$user->fill($request->all());
|
||||
$user->save();
|
||||
}else{
|
||||
|
||||
$saveUser = OnesignalUser::where('user_code',$request->user_code)->where('player_id',$request->player_id)->first();
|
||||
if(!$saveUser){
|
||||
if(sizeof($records)>0)
|
||||
return $this->errorResponse(trans('errors.phone_already_associated'), Response::HTTP_CREATED);
|
||||
|
||||
$request->set_default = true;
|
||||
return $this->addUserPlayerID($request);
|
||||
}else{
|
||||
if(sizeof($records)>1)
|
||||
return $this->errorResponse(trans('errors.phone_already_associated'), Response::HTTP_CREATED);
|
||||
}
|
||||
}
|
||||
return $this->successResponse('Player ID saved');
|
||||
|
||||
return $this->successResponse(trans('messages.player_id_saved'));
|
||||
}
|
||||
|
||||
public function addAgentPlayerID(Request $request){
|
||||
$this->validate($request , [
|
||||
'code_membre'=> 'required',
|
||||
'player_id'=> 'required'
|
||||
'player_id'=> 'required',
|
||||
'set_default' => 'required|boolean'
|
||||
]);
|
||||
|
||||
$saveUser = OnesignalAgent::where('code_membre',$request->code_membre)->where('player_id',$request->player_id)->first();
|
||||
if(!$saveUser){
|
||||
$user = new OnesignalAgent();
|
||||
$user->fill($request->all());
|
||||
$user->save();
|
||||
$codes = [];
|
||||
// Recuperer tous les codes agents de l'agent
|
||||
$client = new \GuzzleHttp\Client([
|
||||
'base_uri' => env('WALLET_SERVICE_BASE_URL'),
|
||||
]);
|
||||
$headers = [
|
||||
'Authorization' => env('WALLET_SERVICE_KEY'),
|
||||
];
|
||||
try {
|
||||
$result = $client->request('GET', '/agent_codes/'.$request->code_membre, ['headers' => $headers]);
|
||||
$response = json_decode($result->getBody()->getContents());
|
||||
if($response)
|
||||
$codes = $response->response;
|
||||
} catch (GuzzleException $e) {
|
||||
Log::error($e->getMessage());
|
||||
}
|
||||
return $this->successResponse('Player ID saved');
|
||||
|
||||
if($request->set_default){
|
||||
foreach ($codes as $code){
|
||||
|
||||
$records = OnesignalAgent::where('code_membre',$code->code_membre)->get();
|
||||
foreach ($records as $r){
|
||||
$r->delete();
|
||||
}
|
||||
$user = new OnesignalAgent();
|
||||
$user->code_membre = $code->code_membre;
|
||||
$user->player_id = $request->player_id;
|
||||
$user->save();
|
||||
}
|
||||
}else{
|
||||
|
||||
$records = OnesignalAgent::where('code_membre',$request->code_membre)->get();
|
||||
|
||||
$saveUser = OnesignalAgent::where('code_membre',$request->code_membre)->where('player_id',$request->player_id)->first();
|
||||
|
||||
if(!$saveUser){
|
||||
if(sizeof($records)>0)
|
||||
return $this->errorResponse(trans('errors.phone_already_associated'), Response::HTTP_CREATED);
|
||||
|
||||
$request->set_default = true;
|
||||
return $this->addAgentPlayerID($request);
|
||||
}else{
|
||||
if(sizeof($records)>1)
|
||||
return $this->errorResponse(trans('errors.phone_already_associated'), Response::HTTP_CREATED);
|
||||
}
|
||||
}
|
||||
|
||||
return $this->successResponse(trans('messages.player_id_saved'));
|
||||
}
|
||||
|
||||
public function pushMessageToOneUser(Request $request){
|
||||
$this->validate($request , [
|
||||
'user_code'=> 'required',
|
||||
'message'=> 'required',
|
||||
'data'=>'required'
|
||||
'data'=>'required',
|
||||
'date' => 'required|date|date_format:Y-m-d H:i:s',
|
||||
'not_saved'=>'nullable|boolean',
|
||||
]);
|
||||
|
||||
$not_saved = $request->input('not_saved');
|
||||
$userIds = OnesignalUser::where('user_code',$request->user_code)->get();
|
||||
$notif = new Notification();
|
||||
$notif->user_code = $request->user_code;
|
||||
$notif->message = $request->message;
|
||||
$notif->data = json_encode($request->data);
|
||||
$notif->read = false;
|
||||
$notif->save();
|
||||
if(!$not_saved){
|
||||
$notif = new Notification();
|
||||
$notif->user_code = $request->user_code;
|
||||
$notif->message = $request->message;
|
||||
$notif->data = json_encode($request->data);
|
||||
$notif->date = $request->date;
|
||||
$notif->read = false;
|
||||
$notif->save();
|
||||
}
|
||||
if($userIds){
|
||||
foreach ($userIds as $userId){
|
||||
OneSignalFacade::async()->sendNotificationToUser($request->message, $userId->player_id, $url = null, $request->data);
|
||||
|
@ -76,4 +143,29 @@ class OneSignalController extends Controller
|
|||
|
||||
return $this->successResponse('Notification delivered');
|
||||
}
|
||||
|
||||
public function pushMessageToOneAgent(Request $request){
|
||||
$this->validate($request , [
|
||||
'agent_code'=> 'required',
|
||||
'message'=> 'required',
|
||||
'data'=>'required',
|
||||
'date' => 'required|date|date_format:Y-m-d H:i:s'
|
||||
]);
|
||||
|
||||
$userIds = OnesignalAgent::where('code_membre',$request->agent_code)->get();
|
||||
$notif = new Notification();
|
||||
$notif->agent_code = $request->agent_code;
|
||||
$notif->message = $request->message;
|
||||
$notif->data = json_encode($request->data);
|
||||
$notif->date = $request->date;
|
||||
$notif->read = false;
|
||||
$notif->save();
|
||||
if($userIds){
|
||||
foreach ($userIds as $userId){
|
||||
OneSignalFacade::async()->sendNotificationToUser($request->message, $userId->player_id, $url = null, $request->data);
|
||||
}
|
||||
}
|
||||
|
||||
return $this->successResponse('Notification delivered');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class Localization
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
$enLangs=["en","en-US","en_US","ca","in","gb","GB","us","en-029","en-AU","en-BZ","en-CA","en-GB","en-IE","en-IN","en-JM","en-MY","en-NZ","en-PH","en-SG","en-TT","en-US","en-ZA","en-ZW","au","bz","ie","in","jm","my","nz","ph","sg","tt","za"];
|
||||
|
||||
// Check header request and determine localizaton
|
||||
if ($request->hasHeader('X-localization')){
|
||||
$local = $request->header('X-localization');
|
||||
$pos=strpos($local,"-");
|
||||
if($pos!=false){
|
||||
$local=strtolower(explode("-",$local)[0]);
|
||||
}
|
||||
$local= in_array($local, $enLangs) ? 'en' : 'fr';
|
||||
}else{
|
||||
$local ='fr';
|
||||
}
|
||||
// set laravel localization
|
||||
app()->setLocale($local);
|
||||
// continue request
|
||||
return $next($request);
|
||||
}
|
||||
}
|
|
@ -6,17 +6,19 @@
|
|||
|
||||
namespace App\Models;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* Class Notification
|
||||
*
|
||||
*
|
||||
* @property int $id
|
||||
* @property string $user_code
|
||||
* @property string $agent_code
|
||||
* @property string $message
|
||||
* @property string $data
|
||||
* @property int $read
|
||||
* @property Carbon $date
|
||||
*
|
||||
* @package App\Models
|
||||
*/
|
||||
|
@ -26,7 +28,12 @@ class Notification extends Model
|
|||
public $timestamps = false;
|
||||
|
||||
protected $casts = [
|
||||
'read' => 'int'
|
||||
'read' => 'int',
|
||||
'date' => 'datetime:Y-m-d H:i:s'
|
||||
];
|
||||
|
||||
protected $dates = [
|
||||
'date'
|
||||
];
|
||||
|
||||
protected $fillable = [
|
||||
|
@ -34,6 +41,7 @@ class Notification extends Model
|
|||
'agent_code',
|
||||
'message',
|
||||
'data',
|
||||
'read'
|
||||
'read',
|
||||
'date'
|
||||
];
|
||||
}
|
||||
|
|
|
@ -86,7 +86,8 @@ $app->alias('mailer', Illuminate\Contracts\Mail\MailQueue::class);
|
|||
|
||||
$app->middleware([
|
||||
// App\Http\Middleware\ExampleMiddleware::class
|
||||
App\Http\Middleware\AuthenticateAccess::class
|
||||
App\Http\Middleware\Localization::class,
|
||||
App\Http\Middleware\AuthenticateAccess::class
|
||||
]);
|
||||
|
||||
// $app->routeMiddleware([
|
||||
|
|
|
@ -8,7 +8,8 @@
|
|||
"php": "^7.2.5",
|
||||
"berkayk/onesignal-laravel": "^1.0",
|
||||
"illuminate/mail": "^7.22",
|
||||
"laravel/lumen-framework": "^7.0"
|
||||
"laravel/lumen-framework": "^7.0",
|
||||
"ext-json": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"fzaninotto/faker": "^1.9.1",
|
||||
|
|
|
@ -3,4 +3,5 @@ return [
|
|||
'model_not_found' => 'Does not exist any instance of :model with given id',
|
||||
'unexpected_error'=> 'Unexpected error. Try later',
|
||||
'service_unavailable' => 'Service unavailable',
|
||||
"phone_already_associated" => "You already have a phone associated . Do you want to change it ?",
|
||||
];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?php
|
||||
return [
|
||||
|
||||
"player_id_saved" => "Player ID saved",
|
||||
];
|
||||
|
|
|
@ -0,0 +1,151 @@
|
|||
<?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.',
|
||||
'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 may only contain letters.',
|
||||
'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.',
|
||||
'alpha_num' => 'The :attribute may 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.',
|
||||
'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 may not be greater than :max.',
|
||||
'file' => 'The :attribute may not be greater than :max kilobytes.',
|
||||
'string' => 'The :attribute may not be greater than :max characters.',
|
||||
'array' => 'The :attribute may 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.',
|
||||
],
|
||||
'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.',
|
||||
'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 zone.',
|
||||
'unique' => 'The :attribute has already been taken.',
|
||||
'uploaded' => 'The :attribute failed to upload.',
|
||||
'url' => 'The :attribute format is invalid.',
|
||||
'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' => [],
|
||||
|
||||
];
|
|
@ -3,4 +3,5 @@ return [
|
|||
'model_not_found' => 'Il n\'existe aucune instance de :model avec l\'id donné',
|
||||
'unexpected_error'=> 'Erreur inattendue. Essayer plus tard',
|
||||
'service_unavailable' => 'Service non disponible',
|
||||
"phone_already_associated" => "Vous avez déjà un téléphone associé. Voulez-vous le changer ?"
|
||||
];
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
return [
|
||||
|
||||
"player_id_saved" => "Player ID enregistré",
|
||||
""
|
||||
];
|
||||
|
|
|
@ -0,0 +1,168 @@
|
|||
<?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é.',
|
||||
'accepted_if' => 'Le champ :attribute doit être accepté quand :other a la valeur :value.',
|
||||
'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.',
|
||||
'declined' => 'Le champ :attribute doit être décliné.',
|
||||
'declined_if' => 'Le champ :attribute doit être décliné quand :other a la valeur :value.',
|
||||
'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 e-mail 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.',
|
||||
'prohibits' => 'Le champ :attribute interdit :other d\'être présent.',
|
||||
'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 e-mail',
|
||||
'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',
|
||||
],
|
||||
];
|
|
@ -1,5 +1,5 @@
|
|||
<?php
|
||||
|
||||
/** @var \Laravel\Lumen\Routing\Router $router */
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Application Routes
|
||||
|
@ -16,14 +16,17 @@
|
|||
// return $router->app->version();
|
||||
//});
|
||||
|
||||
// OneSingal Notification
|
||||
$router->post('send-mail', 'MailController@send');
|
||||
|
||||
// OneSingal Notification
|
||||
$router->group(['prefix'=>'/onesignal'], function () use ($router) {
|
||||
$router->post('pushToUser', 'OneSignalController@pushMessageToOneUser');
|
||||
$router->post('pushToAgent', 'OneSignalController@pushMessageToOneAgent');
|
||||
$router->post('saveUser', 'OneSignalController@addUserPlayerID');
|
||||
$router->post('saveAgent', 'OneSignalController@addAgentPlayerID');
|
||||
});
|
||||
|
||||
$router->group(['prefix'=>'/notifications'], function () use ($router) {
|
||||
$router->post('', 'NotificationController@getNotifcations');
|
||||
$router->put('update/{id_notif}', 'NotificationController@readNotification');
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue