Skip to content

Instantly share code, notes, and snippets.

@tiagoandrepro
Last active July 30, 2018 16:37
Show Gist options
  • Save tiagoandrepro/604573a0cd18c2d23601a379390a9a21 to your computer and use it in GitHub Desktop.
Save tiagoandrepro/604573a0cd18c2d23601a379390a9a21 to your computer and use it in GitHub Desktop.
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use GuzzleHttp;
use Storage;
use Carbon\Carbon;
use App\Models\Subscriber;
use App\Models\Send;
use Auth;
use App\Jobs\UpdateProcessing;
class AddTableSend implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $messages;
protected $subscribers;
protected $user;
public function __construct($messages, $subscribers, $user)
{
$this->messages = $messages;
$this->subscribers = $subscribers;
$this->user = $user;
}
public function handle(Send $update)
{
$current = Carbon::now();
foreach($this->subscribers as $subscriber) {
foreach($this->messages as $message) {
$send = new Send;
$send->name = $message->name;
$send->message = $message->message;
$send->type = $message->type;
$send->user_id = $this->user;
$send->mobile = $subscriber->mobile;
$send->subscriber_id = $subscriber->id;
$send->save();
}
}
$subscribers2 = $update->getAllSend();
UpdateProcessing:: dispatch($subscribers2);
}
}
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use GuzzleHttp;
use Storage;
use Carbon\Carbon;
use App\Models\Subscriber;
use App\Models\Send;
class MessageSend implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $sends;
public function __construct($sends)
{
$this->sends = $sends;
}
public function handle(Send $update)
{
foreach($this->sends as $send) {
$current = Carbon::now();
$update->setDone($send->id);
Storage::append('MessageSend.log', "$send->id; $current; $send->mobile; $send->message");
}
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Auth;
use App\Models\Send;
use App\Models\Message;
use App\Models\Category;
use App\Jobs\AddTableSend;
use App\Models\Subscriber;
class SendController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
return view ('panel.send.index');
}
public function create()
{
$user = Auth::id();
$messages = Message::with('user')->where('user_id', $user)->get();
$categories = Category::with('user')->where('user_id', $user)->get();
return view('panel.send.create', compact('messages', 'categories'));
}
public function store(Request $request, Send $send)
{
$user = Auth::id();
$message = Message::where('id',$request->message)->get();
$subscribers = Subscriber::whereHas('category', function ($query){
return $query->where('id', 1);
})->get();
AddTableSend::dispatch($message, $subscribers, $user);
return redirect()->route('send.index')->with('message', "Suas mensagens estão sendo enviadas. Você receberá uma mensagem quando envio finalizar.!");
}
}
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use App\Models\Send;
class UpdateProcessing implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $subscribers;
public function __construct($subscribers)
{
$this->subscribers = $subscribers;
}
public function handle(Send $update)
{
foreach($this->subscribers as $send) {
$update->sendUpdate($send['id']);
}
$subscribers3 = $update->getAllQueue();
MessageSend::dispatch($subscribers3);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment