Skip to content

Instantly share code, notes, and snippets.

@patrickmaciel
Created March 27, 2015 14:31
Show Gist options
  • Save patrickmaciel/f22a6f08226298f59611 to your computer and use it in GitHub Desktop.
Save patrickmaciel/f22a6f08226298f59611 to your computer and use it in GitHub Desktop.
phpfmt file error
<?php
use App\Services\Validators\Admin\MailingValidator;
class MailingsController extends \BaseController
{
/**
* Display a listing of the resource.
* GET /mailings
*
* @author Patrick Maciel <[email protected]>
* @versoin 1.0
* @since 3.0 (CRS - Seleção)
* @return Response
*/
public function index()
{
$mailings = \Mailing::with('requisicao')->paginate(20);
if (Request::isJson()) {
return Response::json([
'error' => false,
'mailings' => $mailings->toArray(),
'titulo' => 'Mailings',
200
]);
}
return \View::make('mailings.index')
->with('mailings', $mailings)
->with('titulo', 'Mailings');
}
/**
* Show the form for creating a new resource.
* GET /mailings/create
*
* @author Patrick Maciel <[email protected]>
* @versoin 1.0
* @since 3.0 (CRS - Seleção)
* @return Response
*/
public function create()
{
$requisicoes = Requisicao::ativo()->lists('nome', 'id');
if (Request::isJson()) {
return Response::json([
'error' => false,
'form' => true,
'requisicoes' => $requisicoes,
'titulo' => 'Novo Mailing',
200
]);
}
return \View::make('mailings.create', compact('requisicoes'))
->with('titulo', 'Novo Mailing');
}
/**
* Store a newly created resource in storage.
* POST /mailings
*
* @author Patrick Maciel <[email protected]>
* @versoin 1.0
* @since 3.0 (CRS - Seleção)
* @return Response
*/
public function store()
{
$validator = new MailingValidator;
if ($validator->passes()) {
$mailing = new \Mailing();
$mailing->requisicao_id = \Input::get('requisicao_id');
$mailing->nome = \Input::get('nome');
$mailing->descricao = \Input::get('descricao');
$mailing->ativo = \Input::get('ativo');
$mailing->login_sso = \Input::get('login_sso');
$mailing->data_inicio = \Input::get('data_inicio');
$mailing->data_fim = \Input::get('data_fim');
$mailing->sincronizado = \Input::get('sincronizado');
$mailing->concluido = \Input::get('concluido');
$mailing->contatos = \Input::get('contatos');
$mailing->sincronizados = \Input::get('sincronizados');
$mailing->rejeitados = \Input::get('rejeitados');
$mailing->contactados = \Input::get('contactados');
if ($mailing->save()) {
if (Request::isJson()) {
return Response::json([
'error' => false,
'flash' => ['success', 'Mailing salvo com sucesso'],
200
]);
}
\Session::flash('success', 'Mailing salvo com sucesso!');
return \Redirect::route('mailings.index');
}
if (Request::isJson()) {
return Response::json([
'error' => true,
'inputs' => Input::all(),
'flash' => ['error', 'Ocorreu um erro ao salvar este Mailing. Tente novamente.'],
200
]);
}
\Session::flash('error', 'Ocorreu um erro ao salvar este Mailing. Tente novamente.');
return \Redirect::back()
->withInput();
}
if (Request::isJson()) {
return Response::json([
'error' => true,
'inputs' => Input::all(),
'validation' => $validator->errors,
200
]);
}
return \Redirect::back()
->withInput()
->withErrors($validator->errors);
}
/**
* Display the specified resource.
* GET /mailings/{id}
*
* @param
* @author Patrick Maciel <[email protected]>
* @versoin 1.0
* @since 3.0 (CRS - Seleção)int $id
* @return Response
*/
public function show($id)
{
$mailing = \Mailing::with('requisicao')
->findOrFail($id);
$contatos = \Contato::getContatosByMailing($mailing->id);
if (Request::isJson()) {
return Response::json([
'error' => false,
'mailing' => $mailing,
'contatos' => $contatos,
'titulo' => $mailing->nome,
200
]);
}
return \View::make('mailings.show', compact('mailing', 'contatos'));
}
/**
* Show the form for editing the specified resource.
* GET /mailings/{id}/edit
*
* @param
* @author Patrick Maciel <[email protected]>
* @versoin 1.0
* @since 3.0 (CRS - Seleção)int $id
* @return Response
*/
public function edit($id)
{
$mailing = \Mailing::with('requisicao')
->findOrFail($id);
$requisicoes = Requisicao::ativo()->lists('nome', 'id');
if (Request::isJson()) {
return Response::json([
'error' => false,
'requisicoes' => $requisicoes,
'mailing' => $mailing,
'titulo' => 'Editar Mailing',
200
]);
}
return \View::make('mailings.edit', compact('mailing', 'requisicoes'))
->with('titulo', 'Editar Mailing');
}
/**
* Update the specified resource in storage.
* PUT /mailings/{id}
*
* @param
* @author Patrick Maciel <[email protected]>
* @versoin 1.0
* @since 3.0 (CRS - Seleção)int $id
* @return Response
*/
public function update($id)
{
$validator = new MailingValidator();
if ($validator->passes()) {
$mailing = \Mailing::findOrFail($id);
$mailing->requisicao_id = \Input::get('requisicao_id');
$mailing->nome = \Input::get('nome');
$mailing->descricao = \Input::get('descricao');
$mailing->ativo = \Input::get('ativo');
$mailing->login_sso = \Input::get('login_sso');
$mailing->data_inicio = \Input::get('data_inicio');
$mailing->data_fim = \Input::get('data_fim');
$mailing->concluido = \Input::get('concluido');
$mailing->contatos = \Input::get('contatos');
$mailing->sincronizados = \Input::get('sincronizados');
$mailing->rejeitados = \Input::get('rejeitados');
// Sempre sincronizar o mailing
$mailing->sincronizado = 0;
$contatos = \Contato::getContatosByMailing($mailing->id);
foreach($contatos as $contato) {
$contato->sincronizador_status_id = 2;
$contato->save();
}
if ($mailing->save()) {
if (Request::isJson()) {
return Response::json([
'error' => false,
'flash' => ['success', 'Mailing atualizado com sucesso'],
200
]);
}
\Session::flash('success', 'Mailing atualizado com sucesso!');
return \Redirect::route('mailings.index');
}
if (Request::isJson()) {
return Response::json([
'error' => true,
'inputs' => Input::all(),
'flash' => ['error', 'Ocorreu um erro ao atualizar o Mailing. Tente novamente.'],
200
]);
}
\Session::flash('error', 'Ocorreu um erro ao atualizar o Mailing. Tente novamente.');
return \Redirect::back()
->withInput();
}
if (Request::isJson()) {
return Response::json([
'error' => true,
'inputs' => Input::all(),
'validation' => $validator->errors,
200
]);
}
return \Redirect::back()
->withInput()
->withErrors($validator->errors);
}
/**
* Remove the specified resource from storage.
* DELETE /mailings/{id}
*
* @param
* @author Patrick Maciel <[email protected]>
* @versoin 1.0
* @since 3.0 (CRS - Seleção)int $id
* @return Response
*/
public function destroy($id)
{
$mailing = \Mailing::findOrFail($id);
if ($mailing->delete()) {
if (Request::isJson()) {
return Response::json([
'error' => false,
'flash' => ['success', 'Mailing excluído com sucesso'],
200
]);
}
\Session::flash('success', 'Mailing excluído com sucesso');
return \Redirect::back();
}
if (Request::isJson()) {
return Response::json([
'error' => true,
'flash' => ['error', 'Ocorreu um erro ao excluir o Mailing. Tente novamente.'],
200
]);
}
\Session::flash('error', 'Ocorreu um erro ao excluir o Mailing. Tente novamente.');
return \Redirect::back();
}
/**
* Action responsável filtrar os contatos para um mailing
*
* @author Patrick Maciel <[email protected]>
* @version 1.0
* @since 3.0 (CRS - Seleção)
* @return $this
*/
public function generate()
{
$requisicoes = \Requisicao::ativo()->lists('nome', 'id');
$resultadoStatus = \ResultadoStatus::ativo()->lists('nome', 'id');
$fontesDeCaptacao = \Campanha::ativo()->lists('nome', 'id');
$etapas = \Etapa::ativo()->lists('nome', 'id');
$crivos = \Crivo::ativo()->lists('nome', 'id');
$targets = \Target::ativo()->lists('nome', 'id');
$sexos = ['m' => 'Masculino', 'f' => 'Feminino'];
$tipoMailing = [
0 => 'Todos aptos',
1 => 'Apenas contatos não contactados (1a etapa somente)',
2 => 'Recontato (reprovados, desistentes, não compareceu)',
3 => 'Aprovados na etapa anterior'
];
$contatos = [];
if (Input::has('search')) {
$inputs = Input::all();
$inputs['quantidade'] = empty($inputs['quantidade']) ? 50 : $inputs['quantidade'];
$contatos = \Busca::filtraContatosParaMailing(Input::all());
if (empty($contatos) OR count($contatos) == 0) {
Session::flash('error', 'Nenhum contato e/ou candidato está apto a participar da requisição selecionada');
return Redirect::back()
->withInput();
}
}
return View::make('mailings.generate', compact(
'contatos', 'requisicoes', 'resultadoStatus', 'fontesDeCaptacao', 'etapas',
'sexos', 'crivos', 'targets', 'tipoMailing'
))
->with('titulo', 'Gerar Mailing');
}
/**
* Action responsável filtrar os contatos para um mailing
*
* @author Patrick Maciel <[email protected]>
* @version 1.0
* @since 3.0 (CRS - Seleção)
* @return $this
*/
public function storeFilteredMailing()
{
set_time_limit(300);
$contatos = [];
// Se contém o parâmetro get search, realiza a busca pelos contatos,
// baseados nso filtros selecionados
if (Input::has('search')) {
$contatos = \Busca::filtraContatosParaMailing(Input::all(), false);
if (empty($contatos) OR !count($contatos)) {
Session::flash('warning',
'O Mailing deve ter ao menos 1 contato para ser gerado');
return Redirect::back();
}
}
$validator = new MailingValidator;
if ($validator->passes()) {
$mailing = new \Mailing();
$mailing->requisicao_id = \Input::get('requisicao_id');
$mailing->nome = \Input::get('nome');
$mailing->descricao = \Input::get('descricao');
$mailing->ativo = \Input::get('ativo');
$mailing->login_sso = \Input::get('login_sso');
$mailing->data_inicio = \Input::get('data_inicio');
$mailing->data_fim = \Input::get('data_fim');
$mailing->sincronizado = \Input::get('sincronizado');
$mailing->concluido = \Input::get('concluido');
$mailing->contatos = \Input::get('contatos');
$mailing->sincronizados = \Input::get('sincronizados');
$mailing->rejeitados = \Input::get('rejeitados');
$mailing->contactados = \Input::get('contactados');
if ($mailing->save()) {
// Processo para sincronizar o mailing atual com os contatos filtrados
$mailing->contatos()->sync(array_map(function($obj) { return $obj->id; }, $contatos));
// $mailing->contatos()->update(['sincronizador_status_id' => 0]);
Mailing::setMailingContatosUsed($mailing->id);
// $mailing->contatos()->getRelatedIds())
Session::flash('success', 'Mailing gerado com sucesso');
return Redirect::route('mailings.index');
}
}
Session::flash('warning', 'Ocorreram erros de validação');
return Redirect::back()
->withInput()
->withErrors($validator->errors);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment